天天看点

系列笔记 | 深度学习连载(4):优化技巧(上)

深度学习中我们总结出 5 大技巧:

系列笔记 | 深度学习连载(4):优化技巧(上)

1. Adaptive Learning Rate

我们先从Adaptive Learning Rate 谈起,我Gradient Decent 中我们已经讨论了:

AdaGrad :

系列笔记 | 深度学习连载(4):优化技巧(上)

紧着AdaGrad的步伐,我们进一步看:

RMSProp

神经网络训练的时候,Error Surface 很有可能非常复杂

系列笔记 | 深度学习连载(4):优化技巧(上)
RMSProp其实和AdaGrad 是一样的思路,但是具体求分母的时候,它考虑了历史gradient和新的g的权重a 。
系列笔记 | 深度学习连载(4):优化技巧(上)
系列笔记 | 深度学习连载(4):优化技巧(上)

Momentum

如何找到最优的网络参数呢?

optimize loss 的时候,很有可能就会遇到如下三大问题:

  • 慢 very slow
  • 局部最优 local minimal
  • 鞍点 saddle point

我们可以考虑在物理世界的场景进行映射:小球从山上滑落,在局部最低的时候,他的动量让它冲出局部。

系列笔记 | 深度学习连载(4):优化技巧(上)

我们复习一下梯度下降:Gradient的方向和Movement 的方向相反

系列笔记 | 深度学习连载(4):优化技巧(上)

当我们考虑运动的动量后:

  • 运动不在是基于梯度,而是基于以前的运动
  • Movement not just based on gradient, but previous movement.
系列笔记 | 深度学习连载(4):优化技巧(上)

其中 movement = laststep of movement - present gradient

系列笔记 | 深度学习连载(4):优化技巧(上)

Momentum 虽然不能保证走出“困境”,但是这是一个巨大的进步

系列笔记 | 深度学习连载(4):优化技巧(上)

Adam 算法

Adam 算法是结合 RMSProp 和 Momentum, 来寻找最优解。看起来比较复杂,

实际上懂 RMSProp 和 Momentum后,也就很快理解了。

系列笔记 | 深度学习连载(4):优化技巧(上)

2. New activation function

深度学习中我们总结出5大技巧:本节我们就从新的激活函数Relu谈起。

系列笔记 | 深度学习连载(4):优化技巧(上)

新的激活函数 new activation function

我们知道,激活函数在基于神经网络的深度学习中将线性变换,转换为非线性变换。是神经网络能够学到东西的重要一环。常用的激活函数有sigma, tanh 等。

从辛顿大神在2012年imagenet 中的CNN网络中引入relu,这个神奇的看上去是线性的激活函数进入我们的视野,以后扮演者非常重要的作用。

系列笔记 | 深度学习连载(4):优化技巧(上)

那为什么要引入relu,sigma、tanh 函数有什么缺点呢?

最主要的问题在于deep learning 无法真正deep:

系列笔记 | 深度学习连载(4):优化技巧(上)

如图所示,训练上8层之后,正确率急速下降。 这是为什么呢?

主要原因在于梯度消失Vanishing Gradient Problem

如图所示:传统的激活函数,数据变化后,输出的变化比输入小,而且根据ChainRule, 层数越深,梯度值相乘的结果越小,小到接近于0的时候,就无法学习了。

系列笔记 | 深度学习连载(4):优化技巧(上)

所以,我们引入Relu,他的特点是:

1. 计算快速(导数是1)

2. 生物学原理(貌似是大脑回路,不太了解)

3. linear piece 可以模拟任何函数(在以后的深度学习理论会讲)

4. 重点是:可以解决梯度消失的问题

系列笔记 | 深度学习连载(4):优化技巧(上)

Relu 可以简化神经网络:

系列笔记 | 深度学习连载(4):优化技巧(上)
系列笔记 | 深度学习连载(4):优化技巧(上)

虽然Relu看起来很好(有严格数学证明,以后会深入讲),但是在小于0的时候导数为0,对于参数学习是不利的:所以我们引入Relu的变种:leaky Relu, Parametirc Relu, 以后还会谈到 Selu

系列笔记 | 深度学习连载(4):优化技巧(上)

继续阅读