W:要训练的参数 J(W):代价函数 ∇WJ(W):代价函数的梯度 η:学习率
1.SGD(常用)
W = W−η⋅∇WJ(W;x(i);y(i))
2.Momentum:
γ:动力,通常设置为0.9
vt = γvt − 1 + η∇WJ(W)
W = W−vt
当前权值的改变会受到上一次权值改变的影响,类似于小球向下滚动的时候带上了惯性。
这样 可以加快小球的向下的速度。
3.NAG(Nesterov accelerated gradient):
vt = γvt − 1 + η∇WJ(W−γvt − 1)
W = W−vt
NAG在TF中跟Momentum合并在同一个函数tf.train.MomentumOptimizer中,可以通过参 数配置启用。 在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误,所以我们需要一个更聪明的 小球,这个小球提前知道它要去哪里,它还要知道走到坡底的时候速度慢下来而不是又冲上另 一个坡。γvt−1会用来修改W的值,计算W−γvt−1可以表示小球下一个位置大概在哪里。从 而我们可以提前计算下一个位置的梯度,然后使用到当前位置。
4.Adagrad
i:代表第i个分类 t:代表出现次数 ϵ:的作用是避免分母为0,取值一般为1e-8 η:取值一般为0.01
gt,i = ∇WJ(Wi)