神经网络与深度学习笔记(六)正则化
前言
前面提到过高方差问题主要的两种方式:
- 获取更多的数据去训练。然而这种方式局限在于,数据并不是总是很容易获得的或者数据获取的代价很大。
- 正则化。这就是这篇文章需要来讨论的主题。
最小化代价函数正则化
使用 正则化的最小化代价函数:
%7D%20%20%5Cjmath(w%2Cb)%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em%5Cjmath(%5Chat%20y%5E%7B(i)%7D%2Cy%5E%7B(i)%7D)%20%2B%20%5Cfrac%7B%5Clambda%7D%7B2m%7D%20%5CArrowvert%20w%5CArrowvert%5E%7B2%7D%7B2%7D%0A#card=math&code=min%7B%28w%2Cb%29%7D%20%20%5Cjmath%28w%2Cb%29%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em%5Cjmath%28%5Chat%20y%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29%20%2B%20%5Cfrac%7B%5Clambda%7D%7B2m%7D%20%5CArrowvert%20w%5CArrowvert%5E%7B2%7D_%7B2%7D%0A)
其中, 称为正则化参数。在编程过程中,常常把 写为lambd
,以防止和Python
语言中的关键字lamba
起冲突。这一参数通常需要调优,使用开发集或者交叉验证集来验证。
那么:
到底是啥意思?
实际上, 被称为 正则化,又称为参数 的欧几里得范数, 范数等
既然有 范数,那么 范数是啥?
范数即为:
与此对应的 正则化
使用 正则化的最小代价函数为:
%7D%20%20%5Cjmath(w%2Cb)%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em%5Cjmath(%5Chat%20y%5E%7B(i)%7D%2Cy%5E%7B(i)%7D)%20%2B%20%5Cfrac%7B%5Clambda%7D%7B2m%7D%20%5Clvert%20%5Clvert%20w%5Clvert%20%5Clvert%7B1%7D%0A#card=math&code=min%7B%28w%2Cb%29%7D%20%20%5Cjmath%28w%2Cb%29%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em%5Cjmath%28%5Chat%20y%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29%20%2B%20%5Cfrac%7B%5Clambda%7D%7B2m%7D%20%5Clvert%20%5Clvert%20w%5Clvert%20%5Clvert_%7B1%7D%0A)
然而使用 正则化的效果并不是太明显,主要是因为使用后会导致 稀疏, 矢量中会有很多 0,虽然模型会有一定的压缩但是效果不大。
这就是为什么通常使用 正则化而不是 正则化的原因。
那么, 参数是否可以正则化呢?比如:
答案也是效果不大。
因为参数实际上大多数集中在 中,而不是 ,即使对 进行了正则化, 对模型的影响效果也不是太大
在神经网络中的 正则化
%20%26%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5E%7Bm%7DL(%5Chat%20y%5E%7B(i)%7D%2Cy%5E%7B(i)%7D)%2B%5Cfrac%7B%5Clambda%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5El%20%5Clvert%20%5Clvert%20w%5E%7B%5Bl%5D%7D%20%5Clvert%20%5Clvert%5E%7B2%7D%5C%5C%0A%5Clvert%20%5Clvert%20w%5E%7B%5Bl%5D%7D%20%5Clvert%20%5Clvert%5E%7B2%7DF%20%26%20%3D%20%5Csum%7Bi%20%3D%201%7D%5E%7Bn%5E%7B%5Bl%5D%7D%7D%20%5Csum%7Bj%3D1%7D%5E%7Bn%5E%7B%5Bl-1%5D%7D%7D(w%7Bij%7D%5E%7B%5Bl%5D%7D)%5E2%0A%5C%5C%0Aw%5E%7B%5Bl%5D%7D%26%3A(n%5E%7B%5Bl%5D%7D%2Cn%5E%7B%5Bl-1%5D%7D)%5C%5C%0A%5Cend%7Balign%7D%0A#card=math&code=%5Cbegin%7Balign%7D%0A%5Cjmath%20%28w%5E%7B%5B1%5D%7D%2Cb%5E%7B%5B1%5D%7D%2C%5Ccdots%20w%5E%7B%5Bl%5D%7D%2Cb%5E%7B%5Bl%5D%7D%29%20%26%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5E%7Bm%7DL%28%5Chat%20y%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29%2B%5Cfrac%7B%5Clambda%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5El%20%5Clvert%20%5Clvert%20w%5E%7B%5Bl%5D%7D%20%5Clvert%20%5Clvert%5E%7B2%7D%5C%5C%0A%5Clvert%20%5Clvert%20w%5E%7B%5Bl%5D%7D%20%5Clvert%20%5Clvert%5E%7B2%7DF%20%26%20%3D%20%5Csum%7Bi%20%3D%201%7D%5E%7Bn%5E%7B%5Bl%5D%7D%7D%20%5Csum%7Bj%3D1%7D%5E%7Bn%5E%7B%5Bl-1%5D%7D%7D%28w%7Bij%7D%5E%7B%5Bl%5D%7D%29%5E2%0A%5C%5C%0Aw%5E%7B%5Bl%5D%7D%26%3A%28n%5E%7B%5Bl%5D%7D%2Cn%5E%7B%5Bl-1%5D%7D%29%5C%5C%0A%5Cend%7Balign%7D%0A)
其中矩阵的 %5E2#card=math&code=%5Clvert%20%5Clvert%20w%5E%7B%5Bl%5D%7D%20%5Clvert%20%5Clvert%5E%7B2%7DF%20%3D%20%5Csum%7Bi%20%3D%201%7D%5E%7Bn%5E%7B%5Bl%5D%7D%7D%20%5Csum%7Bj%3D1%7D%5E%7Bn%5E%7B%5Bl-1%5D%7D%7D%28w%7Bij%7D%5E%7B%5Bl%5D%7D%29%5E2) ,表示矩阵中元素平方和。又称为弗罗贝尼乌斯范数(Frobenius norm) ,这里就不叫 范数了。
在梯度下降的过程中,,也会变化
%5C%5C%0A%26%20%3D%20w%5E%7B%5Bl%5D%7D%20-%5Cfrac%7B%5Calpha%20%5Clambda%7D%7Bm%7Dw%5E%7B%5Bl%5D%7D%20-%20%5Calpha(dz%5E%7B%5Bl%5D%7D%20%20a%5E%7B%5Bl-1%5D%7D)%5C%5C%0A%26%20%3D%20w%5E%7B%5Bl%5D%7D(1-%5Cfrac%7B%5Calpha%20%5Clambda%7D%7Bm%7D)%20-%20%5Calpha(dz%5E%7B%5Bl%5D%7D%20%20a%5E%7B%5Bl-1%5D%7D)%5C%5C%0A%5Cend%7Balign%7D%0A#card=math&code=%5Cbegin%7Balign%7D%0Adw%5E%7B%5Bl%5D%7D%20%26%20%3D%20dz%5E%7B%5Bl%5D%7D%20%2A%20a%5E%7B%5Bl-1%5D%7D%20%2B%20%5Cfrac%7B%5Clambda%7D%7Bm%7Dw%5E%7B%5Bl%5D%7D%5C%5C%0Aw%5E%7B%5Bl%5D%7D%26%20%3D%20w%5E%7B%5Bl%5D%7D%20-%20%5Calpha%20dw%5E%7B%5Bl%5D%7D%5C%5C%0A%26%20%3D%20w%5E%7B%5Bl%5D%7D%20-%20%5Calpha%20%2A%28dz%5E%7B%5Bl%5D%7D%20%2A%20a%5E%7B%5Bl-1%5D%7D%20%2B%20%5Cfrac%7B%5Clambda%7D%7Bm%7Dw%5E%7B%5Bl%5D%7D%29%5C%5C%0A%26%20%3D%20w%5E%7B%5Bl%5D%7D%20-%5Cfrac%7B%5Calpha%20%5Clambda%7D%7Bm%7Dw%5E%7B%5Bl%5D%7D%20-%20%5Calpha%28dz%5E%7B%5Bl%5D%7D%20%2A%20a%5E%7B%5Bl-1%5D%7D%29%5C%5C%0A%26%20%3D%20w%5E%7B%5Bl%5D%7D%281-%5Cfrac%7B%5Calpha%20%5Clambda%7D%7Bm%7D%29%20-%20%5Calpha%28dz%5E%7B%5Bl%5D%7D%20%2A%20a%5E%7B%5Bl-1%5D%7D%29%5C%5C%0A%5Cend%7Balign%7D%0A)
故,在梯度下降过程中, 是逐渐变小的,所以 正则化有时称之为权重衰减
为什么 正则化可以防止过拟合,减少方差?
%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5E%7Bm%7DL(%5Chat%20y%5E%7B(i)%7D%2Cy%5E%7B(i)%7D)%2B%5Cfrac%7B%5Clambda%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5El%20%5Clvert%20%5Clvert%20w%5E%7B%5Bl%5D%7D%20%5Clvert%20%5Clvert%5E%7B2%7D%5C%5C%0A#card=math&code=%5Cjmath%20%28w%5E%7B%5B1%5D%7D%2Cb%5E%7B%5B1%5D%7D%2C%5Ccdots%20w%5E%7B%5Bl%5D%7D%2Cb%5E%7B%5Bl%5D%7D%29%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5E%7Bm%7DL%28%5Chat%20y%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29%2B%5Cfrac%7B%5Clambda%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5El%20%5Clvert%20%5Clvert%20w%5E%7B%5Bl%5D%7D%20%5Clvert%20%5Clvert%5E%7B2%7D%5C%5C%0A)
观察上图的公式:
当 且 足够大的时候 ——> 就会 ——> 从而将隐藏单元的影响削减 ——> 进一步使得神经网络简单化 ——> 最终使得神经网络接近逻辑回归
举个例子:
当激活函数是 #card=math&code=tanh%28z%29) 时,
%5Cdownarrow%20%5Clongrightarrow%20%E6%8E%A5%E8%BF%91%E7%BA%BF%E6%80%A7%0A#card=math&code=%5Clambda%20%5Cuparrow%20%5Clongrightarrow%20w%5E%7B%5Bl%5D%7D%20%5Cdownarrow%20%5Clongrightarrow%20%28z%5E%7B%5Bl%5D%7D%3Dw%5E%7B%5Bl%5D%7Da%5E%7B%5Bl-1%5D%7D%2Bb%5E%7B%5Bl%5D%7D%29%5Cdownarrow%20%5Clongrightarrow%20%E6%8E%A5%E8%BF%91%E7%BA%BF%E6%80%A7%0A)
因为 变小会导致以 为参数求出的 的值变小,使得隐藏单元的影响削减,使得神经网络简单化,最后使得神经网络接近逻辑回归
就降低了方差
同时,在使用 正则化时建议画出 关于梯度下降迭代次数的图像
你会发现使用 正则化后,随着迭代次数的增加, 的值会逐渐减小