课程地址:https://www.coursera.org/learn/neural-networks

老师主页:http://www.cs.toronto.edu/~hinton

备注:笔记内容和图片均参考老师课件。

这一讲介绍了主要介绍了提升generalization的一些方法,这里总结一下。

参考资料:http://www.hankcs.com/ml/hinton-ways-to-make-neural-networks-generalize-better.html

防止过拟合

方法1:获得更多数据

这个方法无需解释,数据越多,过拟合的可能性就会减少。

方法2:使用能力恰到好处的模型

其实就是奥卡姆剃刀原理,用尽量简单的模型来拟合数据。

方法3:平均很多不同的模型

这个主要是bagging的思想,例如决策树。

方法4:贝叶斯方法

利用先验信息。

下面介绍方法2以及方法4

几种限制模型能力的方法

Architecture

限制隐藏层以及每一层的神经元个数。

Early stopping

从一个很小的权重开始,在过拟合之前就停止。

Weight-decay

增加损失项。

$L_2$损失项

$L_2$损失项会使得很大的$w_i$变小。

$L_1$损失项

$L_1$损失项会使得很多权重变为$0$。

其他损失项

上图中绿色曲线代表的损失项允许出现比较大的权重出现,这是因为这个损失函数的增速比较慢。

Noise

对输入输出都增加噪音,如下图所示

我们来求误差函数

这说明增加噪音相当于增加了$L_2$损失项

贝叶斯方法

贝叶斯方法的核心公式如下

其中$W​$表示权重,$D​$表示数据。

这里考虑在神经网络中的应用。假设$t$为目标值,$y$为预测值,$W,D$如之前所述,目标值的概率密度函数为

假设不同的目标值相互独立,所以

接下来我们要考虑$p(W)$,假设权重的概率密度函数为

现在利用贝叶斯公式,对其两边取对数可得

将之前的式子带入,记$C=-\text{log }P(W|D)$,常数记为constant

注意损失函数为

所以

这说明贝叶斯方法与$L_2$有着密切的联系,损失项的系数为两个方差的比值,老师据此介绍了MacKay的调参方法,具体的可以参考课件,这里略过。