过拟合
1. 产生过拟合的原因
- 观察值与真实值存在偏差
- 数据太少,导致无法描述问题的真实分布
2. 防止过拟合的方法
- 提前终止
- 正则化
- L1正则使很多特征的权重等于0,起到特征选择的作用
- L2正则使很多特征的权重接近0
- 数据集扩增/数据增强
- Dropout
- 交叉验证
- 特征选择/特征降维
- 数据清洗
3. 为什么L1相较于L2能够得到稀疏解
梯度角度
l1范数恒定以1的梯度向0靠拢, 容易收敛到0。
l2范数越接近0梯度数值越小, 容易收敛到一堆小值。-
代价函数角度
假设在0处的导数为
引入L2正则项,在0处的导数
引入L1正则项,在0处的导数
- 引入L2正则时,代价函数在0处的导数仍是d0,无变化。
- 引入L1正则后,代价函数在0处的导数有一个突变。
- 从
到
,若
和
异号,则在0处会是一个极小值点。因此,优化时,很可能优化到该极小值点上,即
处。
- 这里只解释了有一个参数的情况,如果有更多的参数,也是类似的。因此,用L1正则更容易产生稀疏解。
-
优化角度
优化问题
和
等价,即对一个特定的;总存在一个
;使得这两个问题是等价的(这个是优化里的知识)。
- 把
的解限制在黄色区域内,同时使得经验损失尽可能小。
- 即求等高线(从中心向外辐射)和约束线(菱形或圆形)的第一个交点。
- 对于L1来说,交点一般出现在坐标轴上,
的某些分量为0,所以L1具有稀疏性,可用于特征选择。
- 对于L2来说,交点一般在超球面(圆)上,
的某些分量不为0。
- 把
4. Dropout的原理与实现
算法原理:
- 在训练时,每个神经单元都可能以概率p去除。
- 在测试阶段,每个神经元都是存在的,权重参数w要乘以p,成为pw。
算法具体实现:
- 在训练阶段,每个mini-batch中,按照伯努利概率分布随机的丢弃一部分神经元(即神经元置零)。用一个mask向量与该层神经元对应元素相乘,mask向量维度与输入神经一致,元素为0或1。
- 然后对神经元rescale操作,即每个神经元除以保留概率P,也即乘上1/P。
- 反向传播只对保留下来的神经元对应参数进行更新。
- 测试阶段,Dropout层不对神经元进行丢弃,保留所有神经元直接进行前向过程。
问题:为什么测试阶段权重参数乘以p,以及具体实现时为训练时除以p
- 测试的时候全部神经元是参与计算,训练时候使用部分神经元,如果要保证测试的时候每个神经元的关联计算不能少,只能从通过改变w来达到跟训练时一样输出,所以权重参数w乘以p。
- 两者效果相同,但是训练时参数更新的次数会变少,除以p可以加快更新速度。
