基于梯度下降法的最优化方法
梯度下降法的基本思想
x+=-lr*dx 其中lr称为学习率,是超参数,是正的常量,其值一般较小。在整个数据集上计算梯度进行参数更新时,只要学习率足够小,每次更新参数时总能使损失函数的值减小。
随机梯度下降法SGD
从训练集中随机抽取小批量样本,计算它们平均损失的梯度,来实现一次参数更新。用小批量样本的平均损失代替全体样本的平均损失进行参数更新,可以加快参数更新频率,加速收敛。小批量样本的平均损失是全体样本平均损失的无偏估计。这是因为训练集中的同类样本是相关的,同类样本中不同个体的损失是相似的,所以随机抽取的一个样本损失可以作为该类所有样本损失的估计。 如果小批量样本中只有一个样本,那么称为随机梯度下降法(Stochastic Gradient Descent,SGD)。SGD指每次使用一个样本来更新参数,但我们经常使用SGD来指代小批量梯度下降法。小批量样本的数量是一个超参数,它受存储器的存储容量限制,一般设置为32、64、128等2的指数,运算效率会更高。SGD算法中,每次都要随机抽取batch个样本,实现时可以采用先整体打乱训练集,然后每次按顺序取batch个样本的方式。 深度学习中最常用的优化算法之一就是利用SGD及其改进算法进行训练,下面将介绍这些算法。
基本动量法
mu = 0.9 v = mu *v #[1] v += -lr *dx #[2] x += v
v = -lr/(1-mu)xdx,此时相当于学习率为lr/(1-mu),mu=0.9表示10倍于SGD算法的收敛速度。把1/(1-mu)看作放大率更容易理解,mu越大,放大率越大,收敛可能越快。
n* v0,其中n是参数更新次数。可见,v是指衰减,小球只要滚动到平地时的初速度v0足够大,就有机会冲出当前平地,到达一个更低的山谷。速度v被称为动量,所以该方法被称为动量法。