重点总结¶
机器学习¶
技术概念¶
按照用途和要解决的问题,机器学习算法可以分为有监督学习,无监督学习,强化学习3种类型。 其中,有监督学习又进一步细分为分类问题与回归问题,无监督学习算法分为聚类问题和数据降维问题。 概括起来,各类算法要解决的核心问题是:
分类算法 是什么
回归算法 是多少
聚类算法 怎么分
数据降维 怎么压
强化学习 怎么做
训练集数据量大小的要求¶
一个粗略的启发是,训练数据量不应小于模型可调参数数量若干倍(5或者10). 出自 PRML 第一章。
有监督学习与无监督学习¶
根据样本数据是否带有标签值,可以将机器学习算法分成有监督学习和无监督学习两类。 有监督学习的样本数据带有标签值,它从训练样本中学习得到一个模型,然后用这个模型对新的样本进行预测推断。有监督学习的典型代表是分类问题和回归问题。
无监督学习对没有标签的样本进行分析,发现样本集的结构或者分布规律。无监督学习的典型代表是聚类,表示学习,和数据降维,它们处理的样本都不带有标签值。
分类问题与回归问题¶
在有监督学习中,如果样本的标签是整数,则预测函数是一个向量到整数的映射,这称为分类问题。如果标签值是连续实数,则称为回归问题,此时预测函数是向量到实数的映射。
生成模型与判别模型¶
分类算法可以分成判别模型和生成模型。给定特征向量x与标签值y,生成模型对联合概率p(x,y)建模,判别模型对条件概率p(y|x)进行建模。 另外,不使用概率模型的分类器也被归类为判别模型,它直接得到预测函数而不关心样本的概率分布:
判别模型直接得到预测函数f(x),或者直接计算概率值p(y|x),比如SVM和logistic回归,softmax回归,判别模型只关心决策面,而不管样本的概率分布的密度。
生成模型计算p(x, y)或者p(x|y) ,通俗来说,生成模型假设每个类的样本服从某种概率分布,对这个概率分布进行建模。
机器学习中常见的生成模型有贝叶斯分类器,高斯混合模型,隐马尔可夫模型,受限玻尔兹曼机,生成对抗网络等。典型的判别模型有决策树,kNN算法,人工神经网络,支持向量机,logistic回归,AdaBoost算法等。
交叉验证¶
交叉验证(cross validation)是一种统计准确率的技术。 k折交叉验证将样本随机、均匀的分成k份,轮流用其中的k-1份训练模型,1份用于测试模型的准确率,用k个准确率的均值作为最终的准确率。
过拟合与欠拟合¶
欠拟合也称为欠学习,直观表现是训练得到的模型在训练集上表现差,没有学到数据的规律。引起欠拟合的原因有模型本身过于简单,例如数据本身是非线性的但使用了线性模型;特征数太少无法正确的建立映射关系。
过拟合也称为过学习,直观表现是在训练集上表现好,但在测试集上表现不好,推广泛化性能差。过拟合产生的根本原因是训练数据包含抽样误差,在训练时模型将抽样误差也进行了拟合。所谓抽样误差,是指抽样得到的样本集和整体数据集之间的偏差。引起过拟合的可能原因有:
模型本身过于复杂,拟合了训练样本集中的噪声。此时需要选用更简单的模型,或者对模型进行裁剪。训练样本太少或者缺乏代表性。此时需要增加样本数,或者增加样本的多样性。训练样本噪声的干扰,导致模型拟合了这些噪声,这时需要剔除噪声数据或者改用对噪声不敏感的模型。
偏差与方差分解¶
模型的泛化误差可以分解成偏差和方差。偏差是模型本身导致的误差,即错误的模型假设所导致的误差,它是模型的预测值的数学期望和真实值之间的差距.
方差是由于对训练样本集的小波动敏感而导致的误差。它可以理解为模型预测值的变化范围,即模型预测值的波动程度。
模型的总体误差可以分解为偏差的平方与方差之和:
如果模型过于简单,一般会有大的偏差和小的方差;反之如果模型复杂则会有大的方差但偏差很小。
其他阅读
正则化¶
为了防止过拟合,可以为损失函数加上一个惩罚项,对复杂的模型进行惩罚,强制让模型的参数值尽可能小以使得模型更简单,加入惩罚项之后损失函数为:
正则化被广泛应用于各种机器学习算法,如岭回归,LASSO回归,logistic回归,神经网络等。除了直接加上正则化项之外,还有其他强制让模型变简单的方法,如决策树的剪枝算法,神经网络训练中的dropout技术,提前终止技术等。
维数灾难¶
为了提高算法的精度,会使用越来越多的特征。当特征向量维数不高时,增加特征确实可以带来精度上的提升; 但是当特征向量的维数增加到一定值之后,继续增加特征反而会导致精度的下降,这一问题称为维数灾难。
目标函数¶
最优化¶
数学¶
概率论¶
基础概念¶
- 边缘概率:
PRML 1.2节 P17
优化算法¶
好的文章
列举常用的最优化方法¶
梯度下降法
牛顿法,
拟牛顿法
坐标下降法
梯度下降法的改进型如AdaDelta,AdaGrad,Adam,NAG等。
梯度下降法的关键点¶
梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:
根据函数的一阶泰勒展开,在负梯度方向,函数值是下降的。只要学习率设置的足够小,并且没有到达梯度为0的点处, 每次迭代时函数值一定会下降。需要设置学习率为一个非常小的正数的原因是要保证迭代之后的 \(\theta_{t+1}\) 位于迭代之前的值 \(\theta_{t}\) 的邻域内, 从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。
梯度下降法只能保证找到梯度为0的点,不能保证找到极小值点。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。
梯度下降法在机器学习中应用广泛,尤其是在深度学习中。 AdaDelta,AdaGrad,Adam,NAG等改进的梯度下降法都是用梯度构造更新项,区别在于更新项的构造方式不同。 对梯度下降法更全面的介绍可以阅读SIGAI之前的公众号文章 “理解梯度下降法” 。
牛顿法的关键点¶
牛顿法利用了函数的一阶和二阶导数信息,直接寻找梯度为0的点。牛顿法的迭代公式为:
其中H为Hessian矩阵,g为梯度向量。 牛顿法不能保证每次迭代时函数值下降,也不能保证收敛到极小值点。 在实现时,也需要设置学习率,原因和梯度下降法相同,是为了能够忽略泰勒展开中的高阶项。学习率的设置通常采用直线搜索(line search)技术。
在实现时,一般不直接求Hessian矩阵的逆矩阵,而是求解下面的线性方程组:
其解d称为牛顿方向。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。
牛顿法比梯度下降法有更快的收敛速度,但每次迭代时需要计算Hessian矩阵,并求解一个线性方程组,运算量大。 另外,如果Hessian矩阵不可逆,则这种方法失效。对牛顿法更全面的介绍可以阅读SIGAI之前的公众号文章 “理解牛顿法” 。
拉格朗日乘数法¶
拉格朗日乘数法是一个理论结果,用于求解带有等式约束的函数极值。对于如下问题:
构造拉格朗日乘子函数:
在最优点处对x和乘子变量的导数都必须为0:
解这个方程即可得到最优解。对拉格朗日乘数法更详细的讲解可以阅读任何一本高等数学教材。机器学习中用到拉格朗日乘数法的地方有:
主成分分析
线性判别分析
流形学习中的拉普拉斯特征映射
隐马尔科夫模型
凸优化¶
数值优化算法面临两个方面的问题:局部极值,鞍点。前者是梯度为0的点,也是极值点,但不是全局极小值; 后者连局部极值都不是,在鞍点处Hessian矩阵不定,即既非正定,也非负定。
凸优化通过对目标函数,优化变量的可行域进行限定,可以保证不会遇到上面两个问题。凸优化是一类特殊的优化问题,它要求:
优化变量的可行域是一个凸集
目标函数是一个凸函数
凸优化最好的一个性质是:所有局部最优解一定是全局最优解。 对于凸优化更详细的讲解可以阅读SIGAI之前的公众号文章 “理解凸优化” 。 机器学习中典型的凸优化问题有:
线性回归
岭回归
LASSO回归
Logistic回归
支持向量机
Softamx回归
拉格朗日对偶¶
对偶是最优化方法里的一种方法,它将一个最优化问题转换成另外一个问题,二者是等价的。拉格朗日对偶是其中的典型例子。对于如下带等式约束和不等式约束的优化问题:
与拉格朗日乘数法类似,构造广义拉格朗日函数:
\(\lambda_{i}\) 必须满足 \(\lambda_{i}\geq 0\) 的约束。原问题为:
即先固定住x,调整拉格朗日乘子变量,让函数L取极大值;然后控制变量x,让目标函数取极小值。原问题与我们要优化的原始问题是等价的。
对偶问题为:
和原问题相反,这里是先控制变量x,让函数L取极小值;然后控制拉格朗日乘子变量,让函数取极大值。
一般情况下,原问题的最优解大于等于对偶问题的最优解,这称为弱对偶。在某些情况下,原问题的最优解和对偶问题的最优解相等,这称为强对偶。
强对偶成立的一种条件是Slater条件: 一个凸优化问题如果存在一个候选x使得所有不等式约束都是严格满足的,即对于所有的i都有 \(g_{i}(x)< 0\) , 不等式不取等号,则强对偶成立,原问题与对偶问题等价。注意,Slater条件是强对偶成立的充分条件而非必要条件。
拉格朗日对偶在机器学习中的典型应用是支持向量机。
KKT条件¶
KKT条件是拉格朗日乘数法的推广,用于求解既带有等式约束,又带有不等式约束的函数极值。对于如下优化问题:
和拉格朗日对偶的做法类似,KKT条件构如下乘子函数:
\(\lambda\) 和 \(\mu\) 称为KKT乘子。在最优解处 \(x^{*}\) 应该满足如下条件:
- 等式约束 \(h_{j}(x^{*})= 0\) 和不等式约束 \(g_{k}(x^{*})\leq0\) 是本身应该满足的约束, \(\nabla_{x}L(x^{*})=0\)
和之前的拉格朗日乘数法一样。唯一多了关于 \(g_{i}(x)\) 的条件:
KKT条件只是取得极值的必要条件而不是充分条件。
特征值与特征向量¶
对于一个n阶矩阵A,如果存在一个数 \(\lambda\) 和一个非0向量X,满足:
则称lambda为矩阵A的特征值,X为该特征值对应的特征向量。根据上面的定义有下面线性方程组成立:
根据线性方程组的理论,要让齐次方程有非0解,系数矩阵的行列式必须为0,即:
上式左边的多项式称为矩阵的特征多项式。矩阵的迹定义为主对角线元素之和:
根据韦达定理,矩阵所有特征值的和为矩阵的迹:
同样可以证明,矩阵所有特征值的积为矩阵的行列式:
利用特征值和特征向量,可以将矩阵对角化,即用正交变换将矩阵化为对角阵。实对称矩阵一定可以对角化,半正定矩阵的特征值都大于等于0,在机器学习中,很多矩阵都满足这些条件。特征值和特征向量在机器学习中的应用包括:正态贝叶斯分类器、主成分分析,流形学习,线性判别分析,谱聚类等。
奇异值分解¶
矩阵对角化只适用于方阵,如果不是方阵也可以进行类似的分解,这就是奇异值分解,简称SVD。假设A是一个m x n的矩阵,则存在如下分解:
其中U为m x m的正交矩阵,其列称为矩阵A的左奇异向量; \(\Sigma\) 为m x n的对角矩阵, 除了主对角线 \(\sigma_{ii}\) 以外,其他元素都是0;V 为n x n的正交矩阵,其行称为矩阵A的右奇异向量。 U的列为 \(AA^T`的特征向量,V的列为 :math:`A^T A\) 的特征向量。
目标函数¶
最小平方法、均方误差、最小二乘¶
重要
最小平方解,对于离群点缺少鲁棒性,容易受到离群点的影响,会是得决策平面(或者回归中的拟合曲线)严重偏向离群点的方向
最小平方法在分类问题中存在很大缺陷,参照 PRML P134,结论,最小平方法不适合分类问题。
最大似然估计¶
有些应用中已知样本服从的概率分布,但是要估计分布函数的参数 \(\theta\) ,确定这些参数常用的一种方法是最大似然估计。
最大似然估计构造一个似然函数,通过让似然函数最大化,求解出 \(\theta\) 。 最大似然估计的直观解释是,寻求一组参数,使得给定的样本集出现的概率最大。
假设样本服从的概率密度函数为 \(p(x,\theta)\) ,其中X为随机变量,\(\theta\) 为要估计的参数。 给定一组样本 \(x_{i} ,i =1,...,l\) ,它们都服从这种分布,并且相互独立。最大似然估计构造如下似然函数:
其中 \(x_{i}\) 是已知量,这是一个关于 \(\theta\) 的函数,我们要让该函数的值最大化,这样做的依据是这组样本发生了, 因此应该最大化它们发生的概率,即似然函数。这就是求解如下最优化问题:
乘积求导不易处理,因此我们对该函数取对数,得到对数似然函数:
最后要求解的问题为:
最大似然估计在机器学习中的典型应用包括logistic回归,贝叶斯分类器,隐马尔科夫模型等。
小技巧
过拟合是最大似然的一个通用属性,通过贝叶斯方法,可以避免过拟合问题。 贝叶斯方法加入的先验,相当于惩罚项。
最大似然的缺陷
bias 偏移问题
最大似然和贝叶斯估计的区别¶
PRML 1.2.3节 P23
最大后验估计(MAP)仍然是点估计,就是最大化 似然*先验,也就是相当于 正则化+似然估计。
真正的贝叶斯思想,应该是求出后验概率分布,然后通过后验概率分布加权期望(积分)进行预测。
模型¶
贝叶斯分类器¶
贝叶斯分类器将样本判定为后验概率最大的类,它直接用贝叶斯公式解决分类问题。假设样本的特征向量为x,类别标签为y,根据贝叶斯公式,样本属于每个类的条件概率(后验概率)为:
分母p(x)对所有类都是相同的,分类的规则是将样本归到后验概率最大的那个类,不需要计算准确的概率值,只需要知道属于哪个类的概率最大即可,这样可以忽略掉分母。分类器的判别函数为:
在实现贝叶斯分类器时,需要知道每个类的条件概率分布p(x|y)即先验概率。一般假设样本服从正态分布。训练时确定先验概率分布的参数,一般用最大似然估计,即最大化对数似然函数。
如果假设特征向量的各个分量之间相互独立,则称为朴素贝叶斯分类器,此时的分类判别函数为:
实现时可以分为特征分量是离散变量和连续变量两种情况。贝叶斯分分类器是一种生成模型,可以处理多分类问题,是一种非线性模型。
EM算法¶
以上是简单的推导过程,EM算法的步骤是
首先,第一轮迭代t=0时,随机初始化待求参数 \(\pmb{\omega}^{(t)}\)
- E步,求解隐藏变量 \(\pmb{\theta}\) 的后验概率分布 \(g(\pmb{\theta} | \mathbf{Y},\pmb{\omega}^{(t)} )\)
\(\pmb{\theta}\) 本身是连续值,这时 \(g(\pmb{\theta} | \mathbf{Y},\pmb{\omega}^{(t)} )\) 就是概率密度函数,计算积分比较复杂。
所以可以把 \(\pmb{\theta}\) 离散化,这样 \(g(\pmb{\theta} | \mathbf{Y},\pmb{\omega}^{(t)} )\) 就是概率质量函数,只需要求出其概率分布,然后利用求和的方式计算全概率。
M步,极大化Q函数 \(Q(\pmb{\omega}^{(t+1)}|\pmb{\omega}^{(t)})\) 得到新的 \(\pmb{\omega}^{(t+1)}\)
- 重复E步和M步直到满足收敛条件
\(\pmb{\omega}\) 不再变化 \(|\pmb{\omega}^{(t+1)} - \pmb{\omega}^{(t)}|<\epsilon\)
对数似然函数不再变化 \(|lnL(\mathbf{Y}|\pmb{\omega}^{(t+1)}) - lnL(\mathbf{Y}|\pmb{\omega}^{(t)})|<\epsilon\)