【机器学习】梯度下降:Gradient Descent
2021-09-11 本文已影响0人
宅家学算法
- 无约束最优化问题(unconstrained optimization problem):从一个问题的所有可能的备选方案中,选择出依某种指标来说是最优的解决方案。
- 机器学习的核心内容就是把数据喂给一个人工设计的模型,然后让模型自动的“学习”,从而优化模型自身的各种参数,最终使得在某一组参数下该模型能够最佳的匹配该学习任务。
- 损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。
在求解机器学习算法的模型参数(可以理解为求解一个无约束优化问题)时,求解最小损失函数最常采用梯度下降的方法,另一种常用的方法是最小二乘法。
梯度下降法是一种常用的一阶(first-order)优化方法,该算法从任一点开始,沿该点梯度的反方向运动一段距离,再沿新位置的梯度反方向运行一段距离 ...... 如此迭代。解一直朝下坡最陡的方向运动,希望能运动到函数的全局最小点。
1.梯度
- 梯度:函数在某一点的梯度是一个自变量空间内的向量。自变量顺着梯度方向变化时函数值上升得最快。梯度的模(长度)是函数值上升的速率。梯度朝某方向投影的长度是自变量顺着该方向变化时函数值的变化率。梯度可以理解为多变量微分的一般化。
梯度,分别对每个变量求偏导数然后用逗号分割开,梯度是用<>包括起来,说明梯度其实一个向量
在单变量的函数中,梯度其实就是函数的偏导数,代表着函数在某个给定点的切线的斜率;在多变量函数中,梯度是一个向量(对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来),向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向。梯度的方向是函数在给定点上升最快的方向,那么梯度的反方向就是函数在给定点下降最快的方向,这正是梯度下降所需要的。
2.梯度下降
- 步长(Learning rate):决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
f(x)是关于x的一个函数,我们当前所处的位置为x0点,要从这个点走到f(x)的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长𝛼,走完这个段步长,就到达了x1这个点!
过程
设定:算法终止距离𝜀以及步长 𝛼
- 确定当前位置xi(损失函数)的梯度
- 用步长乘以损失函数的梯度,得到当前位置下降的距离d
- 确定梯度下降的距离d是否小于𝜀,如果小于𝜀则算法终止,当前位置即为最终结果,否则进入下一步
- 更新所有的x,对于xi,其更新表达式如上图。更新完毕后继续转入第一步
梯度下降是一种迭代算法
3.梯度下降的算法调优
- 算法的步长选择。步长的取值取决于数据样本,可以多取一些值,从小到大,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。
- 算法参数的初始值选择。 初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值(如果损失函数是凸函数则一定是最优解)。由于有局部最优解的风险,需要多次用不同初始值运行算。