步长:步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
    特征:样本的输入部分,如 gradient descent - 图1 其中, gradient descent - 图2 就是样本的输入部分,而 gradient descent - 图3 就是样本输出部分。
    image.png
    算法过程:
    1)确定损失函数的梯度,对于 gradient descent - 图5 其梯度表达式为: gradient descent - 图6 ;
    2)用步长乘以损失函数的梯度,得到当前位置下降的距离,即 gradient descent - 图7
    3)确定是否所有的 gradient descent - 图8 ,梯度下降的距离都小于 gradient descent - 图9 ,如果小于 gradient descent - 图10 则算法终止,当前所有的 gradient descent - 图11 (i=0,1,…n)即为最终结果。否则进入步骤4;
    4)更新所有的,对于 gradient descent - 图12 ,其更新表达式如下。更新完毕后继续转入步骤1。
    gradient descent - 图13
    5)对于线性回归预测函数,如下演示:
    gradient descent - 图14
    gradient descent - 图15 求偏导得到:
    gradient descent - 图16
    而步骤四对应的公式为:
    gradient descent - 图17
    这里的 gradient descent - 图18 可以用某个常数来表示。

    梯度下降法的调优
    **
    在使用梯度下降时,需要进行调优。哪些地方需要调优呢?
    1. 算法的步长选择。在前面的算法描述中,提到取步长为1,但是实际上取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。前面说了。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。所以算法的步长需要多次运行后才能得到一个较为优的值。
    2. 算法参数的初始值选择。 初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;当然如果损失函数是凸函数则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
    3.归一化。由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化。