接第一篇文章写
3.4 贝叶斯推断分析法
以L1和L2范数为例,所得结论可以推广到P范数中,首先需要知道:整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式。针对L1和L2范数还有结论:L2范数相当于给模型参数 设置一个协方差为1/alpha的零均值高斯先验分布,L1范数相当于给模型参数
设置一个参数为1/alpha的拉普拉斯先验分布。
为了讲清楚上述结论,需要具备几点前置知识点:(1) 高斯分布和拉普拉斯分布的定义和形状;(2) 贝叶斯定理;(3) 最大似然估计;(4) 最大后验估计。下面我对这4个知识点进行解释。
(1) 高斯分布和拉普拉斯分布
a) 高斯分布的概率密度函数定义为:
其中, 为数学期望,尺度参数
为标准差,
为随机变量,其图形为:
图7 高斯概率密度函数图示
其中, 控制曲线的左右移动,
控制曲线的衰减快慢,
越大,曲线越平缓,衰减越慢。
b) 拉普拉斯分布的概率密度函数定义为:
其中, 为数学期望,b为尺度参数,
为随机变量,其图形为:
图8 拉普拉斯概率密度函数图示
(2) 最大似然估计
定义为:在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数 作为真实
的参数估计。
通俗理解就是,该算法作用是找到一组参数 来最大化复现或者拟合当前样本空间。可以发现如果样本空间不一样,则通过最大似然估计得到的
也不一样,即最大似然估计永远都是基于当前样本,所以可以想象出很容易出现过拟合即求得的参数
只是能很好的拟合当前样本,然而推广和泛化能力很弱,是不是有点像没有加正则项的损失函数。
若总体X属于离散型,其分布律 ,
形式已知,是待估参数,设
为来自总体X的样本,其
的联合分布律为:
又设 是来自
对应的一个样本,易知样本
观察到
的概率,亦即事件
发生的概率为:
为似然函数,最大化
所得到的参数
即为最大似然估计法。由于上述式子不好计算,而因为
和
在同一处取极值,故通常取对数即所谓的对数似然函数,其中最大似然函数如下所示:
如果上述公式不能理解,请各位读者去复习一下大学课程《概率论与数理统计》中的参数估计章节,为了更方便理解,下面举一个例子:假设我要统计出整个大学内所有同学的身高分布情况,设全校一共20000人,数量庞大,所有人都去问一遍不太靠谱,所以我打算采用抽样方法来估计,假设我已经知道身高分布服从高斯分布,但是我不知道高斯分布中的均值和方差参数,现在我打算采用最大似然估计方法来确定这两个参数。首先需要明确,全校20000即为总体X,我随机从各个班抽取10名同学,假设一共抽了2000个同学,那么2000同学就构成了样本空间,则抽取的2000个同学就构成了 ,由于每个样本的概率密度函数已知,则很容易写出似然函数,对数求导即可求解参数。
(3) 最大后验估计
首先需要明确:最大后验估计和最大似然估计联系非常密切,对最大似然估计引入先验概率估计即转化为最大后验估计,最大后验概率估计可以看作是规则化的最大似然估计。最大似然估计属于频率派的观点,其认为参数 是一个固定不变的常量,只是我们现在还不知道它的值,可以通过随机产生的样本去估计这个参数。最大后验估计属于贝叶斯学派推导而来,其认为一切皆变量,服从某一个分布,认为参数
是一个未知的随机变量,我们可以给出参数
分布情况的先验概率,然后基于贝叶斯定理估计模型。
根据贝叶斯公式可得,后验概率计算公式为:
由于分母计算非常困难,而我们的目的是求最大化后验概率,故分母不进行计算(我们在朴素贝叶斯算法中也是这样处理的),只考虑分子:
仔细观察 和
的形式,可以很容易看出:最大后验估计就是在最大似然估计函数上面乘上了一项先验分布而已。可不能小看了这个先验分布,其作用非常大,后面会详述。
下面开始解释:L2范数相当于给模型参数 设置一个零均值高斯先验分布。以线性回归模型为例,结论可以推广到任意模型,线性模型方程可以表示为:
其中, 表示误差,假设
,
,则有:
通过上面的 可知最大后验估计方程形式,对其取对数:
要求上式最大,去掉负号和统一处理前面的参数,故而可以转化为
上式正好是线性回归问题在L2范数正则下的代价函数,故验证了结论。
下面开始解释:L1范数相当于给模型参数 设置一个拉普拉斯先验分布。以线性回归模型为例,结论可以推广到任意模型,同样假设
,
要求上式最大,去掉负号和统一处理前面的参数,故而可以转化为
上式正好是线性回归问题在L1范数正则下的代价函数,故验证了结论。
附加一句:如果误差符合0均值的高斯分布,那么最大似然估计法的结果就是最小二乘法,这也是为何误差定义经常使用 的原因,因为这个公式是基于概率推导出来的,有比较强的科学依据。
四、机器学习正则化技术的典型算法应用
4.1 逻辑回归
二分类逻辑回归使用Sigmoid作为决策函数进行分类,该函数可以将任意的输入映射到[0,1]区间,当预测结果小于0.5,则表示负类,当预测结果大于0.5.则表示正类,其模型本质是求最大似然估计,具体求解似然函数通常使用梯度下降法,而前面说过:最大似然估计法没有考虑训练集以外的因素,很容易造成过拟合,故而逻辑回归一般采用L2范数进行正则化操作,Sigmoid函数定义和图形如下:
图9 Sigmoid函数图示
其中似然方程和对数似然方程为:
正则化后的代价函数为:
注意: 正则化是针对损失函数,而不是似然函数,故需要将似然函数取负号转换为损失函数,然后再加上正则项。
4.2 岭回归(Ridge Regression)
岭回归本质上是针对线性回归问题引入了L2范数正则,通过缩减回归系数避免过拟合问题,最先用来处理特征数多于样本数的情况(高维小样本问题),现在也用于在估计中加人偏差,从而得到更好的估计,加了正则化后的代价函数如下:
其中, 表示估计的回归系数,n表示样本个数,d表示回归系数个数,
表示第i个样本实际输出值,
表示第j个回归系数,
为正则化参数。当
=0,表示不添加正则,则很容易导致原代价函数为0,预测值与实际值完全贴合即出现了所谓的过拟合问题,当
过大,会导致
系数变小,但不会为0,减少了模型复杂度,原代价函数值较大,出现欠拟合。在实际开发中,通常使用交叉验证集多次循环迭代确定最佳
值。
带正则化的代价函数采用最小二乘法或者正规方程可以得到上述回归系数结果,可以发现:经过L2范数罚后,不仅仅压缩了系数,而且可以使得原先可能不可逆的矩阵一定可逆( 一定可逆),这也是L2正则的好处之一。
4.3 Lasso回归
拉索回归(lasso回归)本质上是针对线性回归问题引入了L1范数正则,通过缩减回归系数避免过拟合问题,其不同于L2范数,其可以将某些系数缩减为0即所谓的具备稀疏性(稀疏性的好处是简化计算、容易理解模型、减少存储空间、不容易出现过拟合等等),加了正则化后的代价函数如下:
其中,参数函数和岭回归中相同。L1范数罚有一个问题:由于 函数在0处不可导,故而直接使用最小二乘法、梯度下降法等方法均失效,但是由于其为第一类间断点中的可去间断点,可以通过补充该点的定义解决,通常,对于线性回归中的lasso回归可以采用近似的前向逐步回归替代。
4.4 SVM
支持向量机SVM优化目的为寻找一个超平面,使得正负样本能够以最大间隔分离开,从而得到更好的泛化性能,其通过引入核函数来将低维线性不可分的样本映射到高维空间从而线性可分,通过引入惩罚参数C(类似于正则化参数)来对错分样本进行惩罚,从而减少模型复杂度,提高泛化能力,其优化目标如下:
大家如果不知道上面公式的推导,不用紧张,对于本次内容不是重点,只需要关注后面正则项部分,惩罚参数C作用和正则化参数 作用一致,只是反相关而已。
需要明白以下结论:
(1) C越大, 越小,表示对分错样本的惩罚程度越大,正则化作用越小,偏差越小,方差越大,越容易出现过拟合(通俗理解,原本将低维空间映射到5维空间正好线性可分,但是由于惩罚过于严重,任何一个样本分错了都不可原谅,结果系统只能不断提高维数来拟合样本,假设为10维,最终导致映射维数过高,出现过拟合样本现象,数学上称为VC维较大);
(2) C越小, 越大,表示对分错样本的惩罚程度越小,正则化作用越大,偏差越大,方差越小,越容易出现欠拟合(通俗理解,原本将低维空间映射到5维空间正好线性可分,但是由于惩罚过小,分错了好多样本都可以理解,比较随意,结果系统也采用简化版来拟合样本,假设为3维,最终导致映射维数过低,出现欠拟合样本现象,数学上称为VC维较小)。
五、正则化技术总结
本文从各个角度深入的分析了机器学习算法中使用到的正则化技术,正则化技术是机器学习和深度学习中非常重要的内容,不管是在面试、笔试还是实际应用中都至关重要,通过本文您应该知道以下重要结论:
(1) 正则化的作用是防止过拟合、提高模型泛化能力
(2) 正则化等价于结构风险最小化
(3) 正则化等价于带约束的目标函数中的约束项
(4) 正则项等价于引入参数的模型先验概率
(5) 在误差符合均值为0的高斯分布,则最大似然估计和最小二乘法等价
(6) 最大后验估计就是在最大似然估计函数上面乘上了一项先验分布而已
(7) L2范数相当于给模型参数 设置一个零均值高斯先验分布,L1范数相当于给模型参数
设置一个拉普拉斯先验分布
(8) L0和L1正则可以得到稀疏解,而L2不能,并且参数优化速度L1快于L2,但是L2更容易理解,计算更方便。
有一个需要注意的地方:正则化方法一般都是不对偏移项进行正则的,原因是它们也没有和数据直接有乘法等交互,其不会影响到最后结果中某个数据维度的作用,如果你执意要对其进行正则化,也是可以的,对结果没有多少影响。
前面讨论了,正则化是一种可以有效防止过拟合的方法,然而如何判断模型是否或者容易出现过拟合?常用的办法有:(1) 比较模型对验证集和训练集的识别精度,如果验证集识别精度大幅低于训练集,则可以判断模型存在过拟合;(2) 训练集的代价函数快速下降至0附近,也可以怀疑出现了过拟合;(3) 样本个数比特征个数少,也很容易出现过拟合。
由于本人水平有限,如果哪里有写错的或者理解不到位的,欢迎提出建议!有问题进群交流678455658
六、参考内容
[1] 概率论与数理统计 浙大版(第四版)教材
[2] 吴恩达CS229课程
[3] Deep Learning
[4] pattern recognition and machine learning
[5] http://www.jianshu.com/p/a47c46153326
[6] http://www.jianshu.com/p/f71848c7aaf3
[7] https://www.zhihu.com/question/23536142/answer/90135994
[8] 其他优秀的博客