台大李宏毅--深度学习tip(模型优化)

版权声明:博客转载,请标注 来自 丁磊_ml博客 网址为 blog.csdn.net/MosBest https://blog.csdn.net/MosBest/article/details/79707417

这里写图片描述

这里写图片描述

训练结果不好,并不总是因为过拟合

  1. 训练结果不好,并不总是因为过拟合。有可能是你的training data都没有训练好,那最终结果一定不好
  2. 深度学习的层数越多,网络越复杂,并不一定模型会越复杂。有时会使得模型变简单,变成欠拟合。

在机器学习中,要想让training data 训练的结果非常好是很容易做到的。比如,用svm,甚至可以使得raining data 的训练结果为100%正确。
但是,在深度学习中,要想使training data 的训练结果很好并不是那么的容易。

所以,在模型中,要首先看看 模型对training data 的训练 情况怎样???只有先确定training data 的训练好了,即只有先排除了欠拟合,才去看testing data的训练情况。
训练结果不好,并不总是因为过拟合。有可能是你的training data都没有训练好,那最终结果一定不好
这里写图片描述

如上图所示,在testing data 训练结果中,56层的效果还没有20层的效果好。但是,这并不代表是因为模型过拟合了。因为还可能是模型欠拟合。
将模型的training data的训练结果也拿出来看看。如下图所示,56层的效果依然没有20层的效果好。即training data 都没有训练好 ,所以是欠拟合的原因。
这里写图片描述

层数越深,并不代表training data就一定训练得好
Deeper usually does not imply better.
这里写图片描述
如上图所示,是在手写数字识别中,training data与网络层数之间的关系 。发现其实到最后,层数越大,training data训练越大,模型越欠拟合。

sigmoid函数引起的 “梯度消失” 问题!!!

这里写图片描述
我们要观察梯度的变化,那么就要看 L w i 的值,但是这样太麻烦。一个简单的方法就是我们就可以其他的 w 不变,稍调 w i Δ w ,观察损失函数L的变化,得到 Δ L ,那么再根据 L w i Δ L Δ w i 即可。
根据sigmoid函数图像
这里写图片描述
根据sigmoid函数图像我们可以发现,当输入的值(input)很大很大,哪怕无穷大时,我们所得到的输出值(output)也不过是0~1的值。即sigmoid函数有将输入变小的特性。
这里写图片描述
这里写图片描述
以上,由于sigmoid函数的“缩小”的性质,导致最终无论网络前面还是网络后面,梯度都为0,不能再继续学习下去。模型停止。这就是 梯度消失问题

当training data没训练好(欠拟合),怎么办???

方法一:更换activation function(更换激活函数)——ReLU函数 或者 Maxout 法

ReLU函数

这里写图片描述

他为什么可以消除 梯度消失 的情况?

这里写图片描述
如上图所示,每个神经元会根据输入情况,把输出变为y=0,或者线性方程=-x。
去除掉y=0这些没用的线,就可以简化为:
这里写图片描述
等模型网络简化成上图所示时,由于不存在sigmid函数的“缩小”性质,而是线性output=input,所以不会出现梯度消失的情况。

问题,像上图那样,最终模型是线性的,可是线性模型很弱,那这里为什么就可以训练出很好的模型呢?

原因:他这个线性模型不是固定的。没进入一个样本,那么最初额模型就会根据输入,来对神经元的输出设定为哪个是y=0 , y=x,最终出现的线性模型是不一样的。
即,每进一个样本,就会有一个不同的线性网络模型为其所用。一个样本对应一个不同的线性网络。那么从整体来看,所有不同的线性模型加起来,就不是线性的了。

ReLU函数变形

这里写图片描述

扫描二维码关注公众号,回复: 4730147 查看本文章

Maxout 法(可学习的激活函数)

概述

神经元的内的函数:就是 output=max( input1 , input2 , input3, … , … , …… )
max()里面设置多少个输入来比较,由自己设定。
下面我们设定max()里面有2个输入进行比较。
这里写图片描述

为什么此方法有效?

ReLU函数 就是 Maxout法 的一个特例。
这里写图片描述

其他的Maxout法:
这里写图片描述
这里写图片描述

Maxout 怎么训练?

这里写图片描述
每一个样本,就对应一个不同的线性网络模型。

方法二:调整learning rates

Adagrad

这里写图片描述
前面博客讲了

RMSProp

这里写图片描述

Momentum(动量)

这里写图片描述
在梯度下降中,会出现上面三种问题(前面的博客已讲),那么我们引入动量的知识进行讲解(下面,都将动量 说成 惯性 ,好讲解些)。
这里写图片描述
这里写图片描述
这里写图片描述

Adam

Adam=RMSProp + Momentum

当training data训练好了,但是testing data没训练好(过拟合),怎么办???

方法一:Early Stopping(早点结束)

这里写图片描述

方法二:Regularization正则化

目标:找到的权重不仅仅要最小化损失函数loss function,还要使得权重(参数)接近于0。
这里写图片描述

方法三:Dropout

Dropout+Maxout 的效果有时 大于 CNN

对于数据集training set

这里写图片描述

训练模型注意事项:
1. Using one mini-batch to train one network 。一个mini-batch训练一个模型
2. Some parameters in the network are shared。在网络中参数是分享的。
这里写图片描述

对于测试集testing set

  1. 不进行dropout , 使用完整的网络结构
    2. 如果在训练集training set中dropout的概率为p%。那么再测试集testing set中每一个权重都要乘以(1-p%)

Dropout工作的原因

Dropout是一种集成方法。但也不完全相同。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/MosBest/article/details/79707417
今日推荐