【深度学习 理论】Tips for Deep Learning-2

当训练集效果好但测试集效果差时,有以下解决办法:

1.Early Stopping

理想情况下,Learning rate和Loss会越来越小。

early stopping是搞一个Validation Set,当模型在验证集上的误差比上一次训练结果差的时候停止训练。

2.Regularization(正则化)

重新定义去minimized的Loss Function。但这个方法对训练效果的改善并步显著。

正则化不一定只能用L2正则化,也可以用L1正则化。

使用L1可能训练后,权重中可能还是有很多很大的值,但会比较稀疏。

3.dropout

每次在训练更新参数之前,

每一个neuron(包含input,但不包含output)有P%的概率被丢掉。这样network的结构就被改变了。

每次使用新的network进行训练。每次训练前,要对缺失的neuron重新采样。

对于每次mini-batch来说,dropout会使训练效果变差,是因为每次训练时会让某些神经元消失。但这有效避免overfittiing。

当测试的时候,不需要再用dropout:

为什么要这样做呢?

例如:p=0.5,训练的时候,都要50%的神经元被扔掉;但是测试的时候是不删除neuron的,这里neuron会差2倍,因此,要把乘这个比例才能得到正确的结果。

如果通过样本和总体的variance和bias的关系来解释,相当于总体分成很多样本,求平均值,会产生较好的效果。

dropout不同网络(它们还共享权重)求平均值。

举个简单网络的例子,下面这个神经网络有四种采样情况,把四个结果取平均值,和我们直接权重乘1/2得到的结果是一样的。。

但是,只有线性的时候才正好相等。

有前人验证,其他时候两个结果大致相等,相差不多。

猜你喜欢

转载自blog.csdn.net/Aibiabcheng/article/details/108066158