优化器

一、优化器定义

优化器是tensorflow中的梯度下降的策略,用于更新神经网络中数以百万的参数。除了不断更新神经网络结构,还在不断推出更新参数的厕率

二、基础

梯度下降的要解决的问题是如何减少损失函数,先明确一下,损失函数的定义是多种多样的,如果我们使用均方差来计算损失函数的话,loss 函数定义如下。

image

在一个批次的数据处理中,我们计算的 yi,actual 和 yi,predicted 是已有的数值, 我们需要计算的是神经元的权重 w 和 偏置量b,对应这里就是a 和 b。 神经网络的公式 yi = axi + b, 吧这个共识带入,获得下面的公式。

image

通过上面的过程,将问题转化,变成寻找a, b 参数什么值的时候,输出损失最小。接下来求一下(a,b) 参数时的偏导。

image

便导计算几次 取决于 x 包含几个 参数,这里我们只包含两个 a 和 b 所以得到如下公式。

image

我们是在一个二维方向上移动寻找最点,所以我们偏导输出的是一个向量。

image

上面的图是一个(a,b)参数对 loss 影响的函数, 我们需要将这个公式用图形标示。 暴力直接遍历 a,b 后画出。


image

随机选择一个起始点, 那么问题来了,如何下降呢, 这就要使用矩阵,这里需要补充一下矩阵的知识, 我们需要对下降△j(a, b) 施加一个干预的使用,使用向量点乘 ,点乘一个 v 向量,公式如下:

image

转换一下

image

如果我们需要进行最小的偏移呢, 那么对v的控制值就是 θ = 0,||v|| = 1,

用简单的例子说明一下,先看下面这张图

image

在二维中,梯度下降值得就是寻找图形中的最低点,也就是Y轴方向的最小值。
==那么问题来了怎么寻找?== 在二维中,通过倒数可以知道曲线周围是单调递增的还是单调递减的。如果这个倒数等于0,那么这个位置就是极点,那如何知道是最大值还是最小值呢, 当然可以通过继续像左滑动来判断, 随着x的下降, y逐渐减小。这就是梯度下降的原理, 当然梯度下降的问题不知这一些。

在上面的基础上,继续扩展。

image

寻找的步骤如下:
第一步: 明确自己现在所处的位置
第二步: 找到相对于该位置而言下降最快的方向
第三步: 沿着第二步找到的方向走一小步,到达一个新的位置,此时的位置肯定比原来低
第四部: 回到第一步
第五步: 终止于最低点

三、优化器分类

1.数据采集优化

==SGD==

全称:随机梯度下降优化器(Stochastic Gradient Descent Optimizer)

SGD在计算下降速度最快的方向的时候,不是扫描全部训练集数据,而是采用随机抽取一个来计算。

伪代码

image

SGD的并不是沿着J(θ)下降最快的方向收敛,而是震荡的方式趋向极小点, SGB每次更新参数的时候,使用都是一个数据,算一计算量会小很多,但是效果一般。


image
==BGD==

全称:批量梯度下降优化器(Batch Gradient Descent Optimizer)

BGD 在计算梯度下降方向的时候,使用的是全部的训练数据。

伪代码

image

BGD 应为使用全部的训练数据,所以计算量很大,效果中上。


image

2.学习率优化

==Momentum==

这是一种平滑度的优化

全程: 动量法
Momentum 在计算梯度下降方向的时候,会引用上一个计算所产生的向量,可以使得网络参数的更新变得平滑,梯度摆渡幅度变小, 网络收敛速度加快。

如下,使用移动指数加权平均的方法

image

如下,每次计算完成后,都会和上一次计算出来的增量 △w, △d 产生的v 进行计算。这样可以达到平滑变更参数的作用。

image
RMSprop

全称: Root Mean Square Prop

RMSprop 的基本原理和Momentum的方式一样为了加快模型的收敛,基本原理采用的是微分平方加权平均数。==这种做法有利于消除了摆动幅度大的方向,用来修正摆动幅度,使得各个维度的摆动幅度都较小,这是Monentum所没有的。==(比如当 dW
或者 db
中有一个值比较大的时候,那么我们在更新权重或者偏置的时候除以它之前累积的梯度的平方根,这样就可以使得更新幅度变小)。为了防止分母为零,使用了一个很小的数值 ϵ
来进行平滑,一般取值为10−8。

image

可以看到整个的规则变化实际取决于Regularizer =>>
image

==训练前期,梯度较小,使得Regularizer项很大,放大梯度。[激励阶段]==

==训练后期,梯度较大,使得Regularizer项很小,缩小梯度。[惩罚阶段]==

Adadelta

image

关注一下化红框的部分实际上是和RMSprop区别的地方,根号包裹了外部的参数。

Adagrad

全称: 自适应学习率(Adaptive Gradient), 这个优化方式 和 RMSProp基本一致,不同的地方在 Adagrad非常依赖全局的学习速率η;

image

6.Adam(默认)

2014年12月,Kingma和Lei Ba两位学者提出了Adam优化器,结合AdaGrad和RMSProp两种优化算法的优点。

主要包含以下几个显著的优点:

  1. 实现简单,计算高效,对内存需求少

  2. 参数的更新不受梯度的伸缩变换影响

  3. 超参数具有很好的解释性,且通常无需调整或仅需很少的微调

  4. 更新的步长能够被限制在大致的范围内(初始学习率)

  5. 能自然地实现步长退火过程(自动调整学习率)

  6. 很适合应用于大规模的数据及参数的场景

  7. 适用于不稳定目标函数

  8. 适用于梯度稀疏或梯度存在很大噪声的问题

image
image
image

由于m0初始化为0,会导致mt偏向于0,尤其在训练初期阶段。所以,此处需要对梯度均值mt进行偏差纠正,降低偏差对训练初期的影响。

image
image

与m0 类似,因为v0初始化为0导致训练初始阶段vt偏向0,对其进行纠正。

image

adam结合了AdaGrad和RMSProp

补充读音

1、 Α α alpha a:lf 阿尔法 角度;系数

2 、Β β beta bet 贝塔 磁通系数;角度;系数

3、 Γ γ gamma ga:m 伽马 电导系数(小写)

4、 Δ δ delta delt 德尔塔 变动;密度;屈光度

5、 Ε ε epsilon ep`silon 伊普西龙 对数之基数

6、 Ζ ζ zeta zat 截塔 系数;方位角;阻抗;相对粘度;原子序数

7、 Η η eta eit 艾塔 磁滞系数;效率(小写)

8、 Θ θ thet θit 西塔 温度;相位角

9、 Ι ι iot aiot 约塔 微小,一点儿

10、 Κ κ kappa kap 卡帕 介质常数

11、 ∧ λ lambda lambd 兰布达波长(小写);体积

12、 Μ μ mu mju 缪 磁导系数;微(千分之一);放大因数(小写)

13、 Ν ν nu nju 纽 磁阻系数

14、 Ξ ξ xi ksi 克西

15、 Ο ο omicron omik`ron 奥密克戎

16、 ∏ π pi pai 派 圆周率=圆周÷直径=3.1416

17、 Ρ ρ rho rou 肉 电阻系数(小写)

18、 ∑ σ sigma `sigma 西格马 总和(大写),表面密度;跨导(小写)

19、 Τ τ tau tau 套 时间常数

20、 Υ υ upsilon jup`silon 宇普西龙 位移

21、 Φ φ phi fai 佛爱 磁通;角

22、Χ χ chi phai 西

23、 Ψ ψ psi psai 普西 角速;介质电通量(静电力线);角

24、 Ω ω omega o`miga 欧米伽 欧姆(大写);角速(小写);角

25、η 伊塔

你可能感兴趣的:(优化器)