一 为什么要加入正则化
首先引入一个概念:过拟合。模型对于已知数据的描述适应性过高,导致对新数据的泛化能力不佳,我们称模型对于数据过拟合(overfitting)。
![b95a3924b3116c31ad7d3cdae9497742.png](https://i-blog.csdnimg.cn/blog_migrate/fab66d993ba47c24c5465453a8cbc71c.jpeg)
怎么判断一个模型是否出现了过拟合现象呢?
最有效的方式是通过识别精度判断模型是否存在过拟合:比较模型对验证集和训练集的识别精度,如果验证集识别精度大幅低于训练集,则可以判断模型存在过拟合。
对抗过拟合有好几种方法:
- 增加训练数据;
- 减小网络模型大小
- Dropout
- 正则化(regularization):即限制权值 Weight-decay
本文主要针对L2正则化进行说明。
L2正则化即在损失函数C的表达式上追加L2正则化项:
![e9c4a211dd47b86b1c787d7b8cf0bbdf.png](https://i-blog.csdnimg.cn/blog_migrate/2ca20a698440d2013155121f5e47adfb.png)
上式中的C0代表原损失函数,可以替换成均方误差、交叉熵等任何一种损失函数表达式。
关于L2正则化项的几点说明:
- 求和∑是对网络中的所有权重进行的;
- λ(lambda)为自定义参数(超参数);
- n是训练样本的数量(注意不是所有权重的数量!);
- L2正则化并没有偏置参与;
L2正则化的实现:
C对w求偏导数,可以拆分成原有C0对w求偏导,以及L2正则项对w求偏导。前者继续利用原有的反向传播计算方法,而后者可以直接计算得到:
![a2e3a4a9276c3b676092daa0b7930f53.png](https://i-blog.csdnimg.cn/blog_migrate/2c37f3551dee2aec99c2bdc679efd895.png)
C对于偏置b求偏导保持不变:
![e255a3625cf4fc1f35d237f0eac50c10.png](https://i-blog.csdnimg.cn/blog_migrate/2eaa0bc4c27a85c870ebe7c08eb629a7.png)
基于上述,就可以得到权重w和偏置b的更新方法: