梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代(步长)能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法,用来求解函数的最小值,无约束优化。
看数学定义都晦涩,网上发现一个比较通俗的说法:想象你站在一座高山上,你想要用最短的时间下山,但是你每次只能走一步。那你需要做的就是查看你周围360度的范围,找到一个最陡峭的(下降的最快的)方向,然后转移到那个点上;转移到新的位置之后,重复相应的步骤,环顾360度,找到最陡峭的(下降的最快的)方向,然后转移过去,这样每次都是选择最陡峭的方向走,那么很快就能到达山下了。
一个多元函数的梯度方向是该函数值增大最陡的方向,在一元函数中,梯度方向是沿着切线方向;而在多元函数中,梯度向量是函数值f对每个变量的导数,向量的方向就是梯度方向。
梯度下降法的计算过程就是沿梯度下降的方向求解极小值,其迭代公式为:
梯度方向通过对函数求导得到,步长的确定是由线性搜索算法来确定,即把下一个点的坐标作为ak+1的函数,然后求满足f(ak+1)的最小值的即可。
一般情况下,梯度向量为0的明是到了一个极值点,此时梯度的幅值也为0。采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。
总结来说,梯度下降法就是在没有约束的情况下求解函数的最小值,通过对函数求导沿着最陡梯度下降,直到梯度向量的增值接近0为止。这里面有两个关键参数要定义,一个是迭代步长;另一个是终止迭代的误差值设置。