python求损失函数的简单介绍( 二 )


而正则化前面的系数α,可以控制L图形的大小 。α越小,L的图形越大(上图中的黑色方框);α越大,L的图形就越?。梢孕〉胶谏娇蛑怀鲈惴段б坏愕悖馐亲钣诺愕闹?w1,w2)=(0,w)中的w可以取到很小的值 。
类似 , 假设有如下带L2正则化的损失函数:
J=J0+α∑ww2(2)
同样可以画出他们在二维平面上的图形,如下:
图2L2正则化
二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角 。因此J0与L相交时使得w1或w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因 。
L2正则化和过拟合
拟合过程中通常都倾向于让权值尽可能小 , 最后构造一个所有参数都比较小的模型 。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象 。可以设想一下对于一个线性回归方程,若参数很大 , 那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够?。?数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是『抗扰动能力强』 。
那为什么L2正则化可以获得值很小的参数?
以线性回归中的梯度下降法为例 。假设要求的参数为θ,hθ(x)是我们的假设函数,那么线性回归的代价函数如下:
J(θ)=12m∑i=1m(hθ(x(i))?y(i))(3)
那么在梯度下降法中,最终用于迭代计算参数θ的迭代式为:
θj:=θj?α1m∑i=1m(hθ(x(i))?y(i))x(i)j(4)
其中α是learning rate. 上式是没有添加L2正则化项的迭代公式,如果在原始代价函数之后添加L2正则化,则迭代公式会变成下面的样子:
θj:=θj(1?αλm)?α1m∑i=1m(hθ(x(i))?y(i))x(i)j(5)
其中 λ就是正则化参数。从上式可以看到,与未添加L2正则化的迭代公式相比,每一次迭代 , θj都要先乘以一个小于1的因子,从而使得θj不断减小,因此总得来看,θ是不断减小的 。
最开始也提到L1正则化一定程度上也可以防止过拟合 。之前做了解释,当L1的正则化系数很小时,得到的最优解会很小 , 可以达到和L2正则化类似的效果 。
正则化参数的选择
L1正则化参数
通常越大的λ可以让代价函数在参数为0时取到最小值 。下面是一个简单的例子,这个例子来自 Quora上的问答。为了方便叙述 , 一些符号跟这篇帖子的符号保持一致 。
假设有如下带L1正则化项的代价函数:
F(x)=f(x)+λ||x||1
其中x是要估计的参数,相当于上文中提到的w以及θ. 注意到L1正则化在某些位置是不可导的,当λ足够大时可以使得F(x)在x=0时取到最小值 。如下图:
图3 L1正则化参数的选择
分别取λ=0.5和λ=2,可以看到越大的λ越容易使F(x)在x=0时取到最小值 。
L2正则化参数
从公式5可以看到 , λ越大,θj衰减得越快 。另一个理解可以参考图2,λ越大,L2圆的半径越小 , 最后求得代价函数最值时各参数也会变得很小 。
Reference
过拟合的解释:
正则化的解释:
正则化的解释:
正则化的数学解释(一些图来源于这里):
原文参考:blog.csdn.net/jinping_shi/article/details/52433975
交叉熵损失函数是什么?平滑函数 。
交叉熵损失函数,也称为对数损失或者logistic损失 。当模型产生了预测值之后,将对类别的预测概率与真实值(由0或1组成)进行不比较,计算所产生的损失,然后基于此损失设置对数形式的惩罚项 。
在神经网络中 , 所使用的Softmax函数是连续可导函数,这使得可以计算出损失函数相对于神经网络中每个权重的导数(在《机器学习数学基础》中有对此的完整推导过程和案例 , 这样就可以相应地调整模型的权重以最小化损失函数 。

推荐阅读