深度学习实践简易指南
本文的知识的起点是《一天搞懂深度学习》,视频地址。视频的入门起点很低,笔者根据该视频以及自身的已有的知识,总结了一下该视频中出现的,我认为比较重要的知识点,并且做出适当的延伸。一些比较基础的知识点,例如卷积层的运算,梯度下降的运算法则等,将不再赘述。本文中不会出现过多的数学解释,全文以实践为目的。
目录
1. 在训练集上效果不佳时,可采取的措施
· 选择合适的损失函数
· mini-batch
· 选择不同的激活函数
· 改变学习速度
· momentum
2. 在测试集上效果不佳时,可采取的措施
· Early Stopping
· 正则化
· Dropout
· 改变网络架构
3. CNN简述
4. RNN简述
正文
1. 在训练集上效果不佳时,可采取的措施
· 选择合适的损失函数
在视频中,提到了两种损失函数,Mean Square Error和Cross Entropy Error. Mean Square Error是最基础的损失函数,在机器学习中简写为MSE.而Cross Entropy Error,其中文翻译为交叉熵损失。Cross Entropy Error的数学解释。因为交叉熵损失中引入了log函数,增加了非线性元素,这使得使用交叉熵损失函数比使用均方差损失函数更容易达到误差的极小值。
如上图所示,使用MSE时,损失函数更为平缓,容易陷入误差极小值。而使用CE时,也可以更快达到极点。
· mini-batch
当数据集很大时,训练算法是非常慢的,
和 batch 梯度下降相比,使用 mini batch 梯度下降更新参数更快,有利于更鲁棒地收敛,避免局部最优。
和 stochastic 梯度下降相比,使用 mini batch 梯度下降的计算效率更高,可以帮助快速训练模型。
· 选择不同的激活函数
参考链接
视频中提到了Sigmoid, ReLU, Maxout。早期神经网络使用Sigmoid作为激活函数,当层数越高的时候,准确率会越来越差。因为当层数高时,得到的权重会越来越小,并且伴随着梯度消失问题。而ReLU则不会有梯度消失的问题。
· 改变学习速度
如果学习速度太慢的话,训练时间长;如果学习速度太快,训练误差可能不会下降,达不到误差极小值。可以采用随着learning的进行,参数变得越来越小,一种常用的算法是Adagrad。
· momentum
动量的引入是为了加快学习过程,最直观的理解就是,若当前的梯度方向与累积的历史梯度方向一致,则当前的梯度会被加强,从而这一步下降的幅度更大。若当前的梯度方向与累积的梯度方向不一致,则会减弱当前下降的梯度幅度。
https://blog.youkuaiyun.com/u012328159/article/details/80311892
2. 在测试集上效果不佳时,可采取的措施
· Early Stopping
在测试集上效果不佳,很有可能是遇到了过拟合的情况。提前结束训练,可以减缓过拟合现象。
· 正则化
正则化的方法,视频中提到了权重衰减,也就是L2正则化。参考链接
· Dropout
即去掉一定比例的神经元,在训练集中的效果会变差,但是在测试集中效果会变好。参考链接
· 改变网络架构
3. CNN简述
卷积层的作用:
- Some patterns are much smaller than the whole image
- The same patterns appear in different regions.
池化层的作用:
Subampling the pixels will not change the object. 即能缩小图片。
4. RNN简述
RNN网络有记忆动作。推算复杂。