ML4 - 深度学习 Deep Learning

6. Deep Learning 简介

最先开始的是感知机,然后是多层感知机,深度学习其实就是多加了隐藏层。

全连接的前馈神经网络如下:

ML4 - 深度学习 Deep Learning_第1张图片

对于每一层的计算可以写成矩阵操作的形式,不断重复的矩阵操作就可以考虑使用并行计算来进行加速。
对于分类问题,在输出层通常使用softmax函数多分类。

  • 问题:如何确定多少层,多少个神经元
    通常依靠经验、直觉、尝试,可能会需要领域知识。

7.Backpropagation 反向传播算法

BP算法可以更加有效地计算梯度,主要运用了链式法则,将损失函数关于权重的微分分成向前和向后两部分来计算。

ML4 - 深度学习 Deep Learning_第2张图片
image.png

向前计算的部分非常简单,如下图,正好每一层的输入xi。

ML4 - 深度学习 Deep Learning_第3张图片
image.png

向后计算的部分,为什么说是向后计算呢,如下图可以发现l对z的微分可以转变成对后一层z'和在z"的微分,所以可以一直往后推到最后一层。

ML4 - 深度学习 Deep Learning_第4张图片
image.png

ML4 - 深度学习 Deep Learning_第5张图片
image.png

实际计算时就是通过向前和向后分别把z关于a的微分和l关于z的微分全算出来,最后相乘得到,l关于w的微分。

ML4 - 深度学习 Deep Learning_第6张图片
image.png

8.keras

9. Tips for deep learning

在deep learning 中会遇到很多问题,一般首先看在训练集上的效果,再看在测试集上的效果。
如果训练集上效果都不好,就要重新选择模型;如果训练集上效果好,但是测试集上效果不好,我们需要考虑是否过拟合。
有一种情况:如果神经网络的层数多了反而不如层数少的效果好,这个不能简单地归罪于过拟合,这个很可能就是没有训练好。
对于不同的问题需要采用不同的解决办法。

9.1 训练集效果不好

1. 采用新的激活函数
在神经网络层数比较多的情况下会发生vanishing gradient problem,在越靠近输入的地方梯度比较小,学习很慢;靠近输出的地方学习得特别快。这个现象的出现是因为sigmoid函数。如下图,当w改变△w时,经过sigmoid函数后输出的变化很少,经过几层之后,损失函数的变化非常之下,所以在靠近输入的地方梯度特别小。

ML4 - 深度学习 Deep Learning_第7张图片
9.1-1

可以替换的激活函数:

  • ReLU
    当使用ReLU时实际上input关于output是线性的(注意只是在input的附近是线性的,只有input变化大了,就不是线性了)。
ML4 - 深度学习 Deep Learning_第8张图片
ReLU
  • ReLU variant
    (Exponential Linear Unit)
ML4 - 深度学习 Deep Learning_第9张图片
ReLU_variant.png
  • Maxout
    Maxout network可以自己学习activation function。ReLU是Maxout的一种特例。
ML4 - 深度学习 Deep Learning_第10张图片
Maxout.png

2.自适应的学习速率

  • RMSProp
ML4 - 深度学习 Deep Learning_第11张图片
RMSProp
  • momentum
    模拟物理上的球滚动,将动量的因素加入。将前一次的运动方向认为是惯性。
ML4 - 深度学习 Deep Learning_第12张图片
momentum.png

9.2 训练集效果好,但是测试集效果不好

1. early stopping
当在validation set 上error不减少,即使在training set 上loss仍然在减少也要停止Epoch。
2. Regularization
使得参数每一次update的时候都变小。没用的参数最后变成0,但是有用的参数最后不会是0.
L1: 对所有的参数一视同仁。最后参数差距大。有些特别接近0,有些比较大。
L2:对比较大的参数惩罚强。最后参数聚集在接近0,但不会真的很靠近0的地方 。
3. Dropout
Dropout可以认为是一种ensemble的方式。 但是只有linear 时候 可以在testing的时候乘以(1-p)%。

你可能感兴趣的:(ML4 - 深度学习 Deep Learning)