1 致谢
感谢 Andrew Ng教授的讲述!
2 前言
今天在学习机器学习中对loss函数中的参数进行正则化~
3 关于机器学习中loss函数参数正则化
在机器学习中,有一项防止过拟合的技巧就是(参数)正则化,以平方误差函数为例,原始的loss函数为:
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta)=\frac{1}{2m} \sum_{i=1}^{m}\left ( h_\theta\left ( x^{\left ( i \right )}\right )- y^{\left ( i \right )} \right )^2 J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
而加上正则化项后的loss函数为,
J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2]J(\theta)=\frac{1}{2m} \left [ \sum_{i=1}^{m}\left ( h_\theta\left ( x^{\left ( i \right )}\right )- y^{\left ( i \right )} \right )^2 +\lambda \sum_{j=1}^{n}\theta_j^2 \right ] J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]
可以看到,多了一个正则化项 λ∑j=1nθj2\lambda \sum_{j=1}^{n}\theta_j^2λ∑j=1nθj2;
在学习的时候,常常听到学者说到,正则化并没有什么很具体的数学解释,这一点我是不认同的,其实从数学的角度来看,这并不是不能分析的,首先,我们把原始loss函数称为J1(θ)J_1(\theta)J1(θ),而加了正则化的loss函数称为J2(θ)J_2(\theta)J2(θ),两者的区别在于J2(θ)J_2(\theta)J2(θ)多了对权值参数的惩罚项,所以不同loss函数往往会训练出不同的模型函数,(具体训练出的函数有什么根本性的不同,这里还需要进一步进行论证);
不过我将在这里提出自己的一点猜想,首先J2(θ)J_2(\theta)J2(θ)多了对所有参数的惩罚项,必然会减小绝对值大的参数值产生的概率,这就会使参数值的整体分布偏向于平均,也就是说,这样会防止模型过多地依赖于某个参数的值,于是,这似乎隐含着一个很重要的前提,那就是:我们认为每个参数对模型的贡献是平均的,而不认为模型会过多地依赖于其中某一个或某几个参数的值。
由此可以推论,如果某个模型的真实情况的确是过多的依赖于所有参数中的某几个参数,即:在真实模型函数中,存在一个或几个权值θi1,θi2,…,θij\theta_{i1},\theta_{i2},\dots,\theta_{ij}θi1,θi2,…,θij与其它的权重值相差较大,例如:归一化之后仍然存在几千到上万倍的差距;则使用正则化则可能导致训练出来的模型具有更差的泛化能力。
以上推论是可以通过实验来进行判断的。