罚项Regularization与Dropout——解决神经网络过拟合问题

/ Deep Learning / 没有评论 / 399浏览

防止过拟合方法

通常可以使用以下几种方式减少过拟合问题

L2 正则化

又名weight decay,权重减小法

交叉熵正则化

英文名:Regularized cross-entropy

$$C = =-\frac{1}{n}\sum_{x_j}\left [ y_j \ln a_j^L + (1-y_j) \ln(1 - a_j^L) \right ] + \frac{\lambda}{2n} \sum_{w}w^2$$

增加了一项: 权重之和 (对于神经网络里面的所有权重 w 相加)

λ: regularization 参数,大于 0
n: 训练集包含实例个数

二次损失正则化

英文名:Regularized quadratic cost

$$C = \frac{1}{2n}\sum_{x}\parallel y - a^L \parallel^2 + \frac{\lambda}{2n} \sum_{w}w^2 $$

对于以上两种情况, 可以概括表示为

$$C = C_0 + \frac{\lambda}{2n} \sum_{w}w^2$$

Regularization 的 Cost 偏向于让神经网络学习比较小的权重 $w$, 除非第一项的 $C_0$ 明显减少.

$\lambda$: 调整两项的相对重要程度

偏导数形式

$$\frac{\partial C}{\partial w} = \frac{\partial C_0}{\partial w} + \frac{\lambda}{n}w$$

$$\frac{\partial C}{\partial b} = \frac{\partial C_0}{\partial b}$$

关于偏导数的计算,请查看反向传播 (BP) 算法深入理解——神经网络偏导数的计算

更新规则

根据梯度下降算法, 更新法则变为

$$w = w - \eta\frac{\partial C_0}{\partial w} - \eta \frac{\lambda}{n}w = (1 - \frac{\eta \lambda}{n})w - \eta\frac{\partial C_0}{\partial w}$$

$$b = b - \eta\frac{\partial C_0}{\partial b}$$

对于随机梯度下降(stochastic gradient descent)

$$w = (1 - \frac{\eta \lambda}{n})w - \frac{\eta}{m} \sum_{x} \frac{\partial C_x}{\partial w}$$

$$b = b - \frac{\eta}{m}\sum_{x}\frac{\partial C_x}{\partial b}$$

求和是对于一个 mini-batch 里面所有的 x

加入 regularization 不仅减小了 overfitting, 还避免陷入局部最小点 (local minimum).

L2 正则化总结

在神经网络中 Regularized 网络更鼓励小的权重, 小的权重的情况下, 一些随机的变化不会对神经网络的模型造成太大影响, 所以更小可能受到数据局部噪音的影响.

Un-regularized 神经网路, 权重更大, 容易通过神经网络模型比较大的改变来适应数据,更容易学习到局部数据的噪音

Regularized 更倾向于学到更简单一些的模型

简单的模型不一定总是更好,要从大量数据实验中获得,目前添加regularization 可以更好的泛化更多的从实验中得来,理论的支持还在研究之中

L1 正则化

$$C = C_0 + \frac{\lambda}{n}\sum_{w}|w|$$

跟L2 regularization 相似, 但不一样

偏导数形式

$$\frac{\partial C}{\partial w} = \frac{\partial C_0}{\partial w} + \frac{\lambda}{n} sgn(w)$$

$sgn(w)$ 指的是 $w$ 的符号

权重更新

$$w = w - \eta\frac{\lambda}{n}sgn(w) - \eta\frac{\partial C_0}{\partial w}$$

特殊处理

当 $w=0$, 偏导数 $\frac{\partial C}{\partial w}$ 无意义, 因为 |w| 的形状在 $w=0$ 时是一个 V 字形尖锐的拐点.

所以, 当 $w=0$ 时,我们就使用 un-regulazied 表达式, $sgn(0) = 0$. 本来 regularization 的目的就是减小权重, 当权重等于 0 时,无需减少

与 L2 对比

都是减小权重, 方法不同

L1 倾向于集中在少部分重要的连接上

Dropout

和 L1, L2 regularization 非常不同, 不是针对 cost 函数增加一项,而是对神经网络本身的结构做改变

算法步骤

原理解读

对于同一组训练数据,利用不同的神经网络来训练,训练完之后,求输出的平均值,这样可以减少过拟合

Dropout 和这个是同样的道理,每次扔到一半隐藏层的神经元,相当于我们在不同的神经网络上训练了

总结

Dropout 减少了神经元的依赖性,也就是每个神经元不能依赖于某个或者某几个其他神经元,迫使神经网聚学习更加和其他神经元联合起来的更加健硕的特征