深度学习基础知识--2.2 梯度下降算法

网友投稿 811 2022-05-29

梯度下降(Gradient Descent)算法是一个一阶最优化算法,通常也称为最速下降算法。为了找到一个损失函数(或目标函数)的局部最小值,必须向函数前点对应梯度(或者近似梯度)的反方向移动适当的距离,从而实现迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部最大值点,这个相反的过程被称为梯度上升算法。本节以梯度下降算法为例进行探讨。梯度下降算法基于以下观察:如果实数函数J(w)在w处可微且有定义,那么函数J(w)在w点沿着梯度相反的方向-▽J(w)下降最快。如图2.2所示,沿中间路线的梯度的相反方向下山,要远比左侧和右侧路线所走的路程要短。

基于此,梯度下降算法的思想包括以下部分。(1)选定一个初始点w0。(2)沿梯度反方向逐步更新参数,即wt=wt-1-α▽J(wt-1)直至收敛。这里α>0,α为步长(Step Size),又称为学习率(Learning Rate),它的值可以在训练之前设为定值,也可以根据训练情况调整。基于梯度的定义,对于足够小的α值,有J(wt)≤J(wt-1)。那么从w0出发,如果给定合适的步长,会逐步得到更小的损失函数J(w0)≥J(w1)≥J(w2)≥…。如果顺利,序列wt将逐渐收敛到损失函数的极小值,这一过程如图2.3所示。

假设损失函数J定义在平面上,并且函数图像类似于一个碗形容器。椭圆形的曲线代表等高线,即函数J为常数的集合构成的曲线,越往中间值越小。任意选择一个初始点w0,箭头指向该点梯度的反方向(梯度方向与该点为等高线垂直),逐步沿着梯度下降方向更新参数w,将最终到达碗底,即函数J的极小值点。2.1节把求解线性回归问题转换为求最小化损失函数J(w)问题,那么就可以用梯度下降算法来求解。对于一组给定的数据集{(x(i),y(i))},根据x的属性个数定义参数w,线性方程h(x(i))与损失函数的关系如下:

随机选取一个初始点w0及合适的步长α,计算梯度公式为:

式中,,在原属性向量上添加了一个常数1的维度,用于更新偏置参数w0。

基于梯度▽J(w),可以逐步更新wt,通过wt=wt-1-α▽J(wt-1)得到最优的参数值。梯度下降算法不仅用于线性回归,机器学习中很多问题都可以通过梯度下降算法最小化损失函数来解决。梯度下降算法又称批量梯度下降(Batch Gradient Descent)算法,这里的批量是指用到了所有的训练样本个数m。在实际问题中,往往有相当多的样本数,例如一个学校的学生人数、银行里的客户数目、硬盘里的图片等。尤其对于复杂的学习模型,如深度神经网络,其参数本身就很庞大,如果每次计算梯度都用到所有的数据样本,那么计算量将是相当大的,甚至是不可计算的。事实上可以将该算法想象成一个随机的过程,也就是每次仅随机抽取一个点,在期望上与所有点加起来的平均大体相似。这样就可以用单个点的梯度代替平均的梯度,该单个点的梯度叫随机的梯度,整体的梯度可以看成是随机梯度的期望值。基于随机梯度下降的线性规划问题迭代算法涉及公式如下:

式中,x(i)——第t次迭代时,从m个数据样本中随机采样到的样本。由于每次更新只用到一个样本,而不用遍历所有数据集,迭代速度就会很快,但是迭代次数以及收敛的极小值可能不是最优的,因为随机采样的偏差会导致每次选取的梯度方向不一定是最优的。

在实际应用中,使用更广泛的是一种被称为小批量(Mini-batch)梯度下降的算法,这是介于批量梯度下降算法和随机梯度下降算法之间的折中算法。每次随机选取样本数量为b(b

算法2.1 小批量梯度下降算法

输入:数据集,步长为α,小批量训练样本的大小为b,迭代次数为T

输出:收敛的参数wT

(1) 初始化参数w0

深度学习基础知识--2.2 梯度下降算法

(2) for t∈{1,2,…,T}

(3) 从m个样本中均匀随机选取b个样本

(4) 计算梯度并更新参数:

算法2.1概括了小批量梯度下降算法的主要流程,其中mb为从m个样本中随机采样的b个样本的索引集合,Ji(w)为第i个样本上的损失函数。步长的选择、收敛的条件等问题将在以后部分介绍。

机器学习 AI

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【 English 】程序员必备单词
下一篇:劈-I-D
相关文章