梯度下降:
简介:
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降是最常采用的方法之一,另一种常用的方法是最小二乘法。
梯度下降是优化模型的方法中最流行的算法之一,也是迄今为止优化神经网络的最常用方法。它本质上是一种迭代优化算法,用于查找函数的最小值。
相关概念:
1. 步长(Learning rate):步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
2.特征(feature):指的是样本中输入部分,比如2个单特征的样本(x(0),y(0)),(x(1),y(1)),则第一个样本特征为x(0),第一个样本输出为y(0)。
3. 假设函数(hypothesis function):在监督学习中,为了拟合输入样本,而使用的假设函数,记为hθ(x)。比如对于单个特征的m个样本(x(i),y(i))(i=1,2,…m),可以采用拟合函数如下: hθ(x)=θ0+θ1x。
4. 损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本(xi,yi)(i=1,2,…m),采用线性回归,损失函数为:
J(θ0,θ1)=∑i=1m(hθ(xi)−yi)2
其中xi表示第i个样本特征,yi表示第i个样本对应的输出,hθ(xi)为假设函数。
预测
给定一组已知的输入及其相应的输出,机器学习模型试图对一组新的输入做出一些预测。
两个预测之间的差异即为错误。
这涉及成本函数或损失函数的概念(cost function or loss function)。
成本函数
成本函数/损失函数用来评估机器学习算法的性能。二者的区别在于,损失函数计算单个训练示例的错误,而成本函数是整个训练集上错误的平均值。
成本函数基本上能告诉我们模型在给定m和b的值时,其预测能“有多好”。
比方说,数据集中总共有N个点,我们想要最小化所有N个数据点的误差。因此,成本函数将是总平方误差,即
梯度的含义:
梯度是微积分中一个很重要的概念。
梯度是一个向量,是一个n元函数f关于n个变量的偏导数,比如三元函数f的梯度为(fx,fy,fz),二元函数f的梯度为(fx,fy),一元函数f的梯度为fx。然后要明白梯度的方向是函数f增长最快的方向,梯度的反方向是f降低最快的方向。
(1)在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率.
(2)在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向.
二元函数的梯度定义为:
求解梯度下降法的步骤:
假设函数y=f(x1,x2,…,xn) 只有一个极小点。
初始给定参数为 X0=(x10,x20,…,xn0)。从这个点如何搜索才能找到原函数的极小值点?
(1)首先设定一个较小的正数η,ε.
(2) 求当前位置处的各个偏导数:
(3) 修改当前函数的参数值,公式如下:
(4) 如果参数变化量小于ε,退出;否则返回2。
梯度下降法需要注意的地方:
1)梯度下降不一定可以收敛到最小值。
梯度下降法是收敛到局部最小值,不一定可以收敛到全局最小值。
我们初始值选择了如图的x0,由于f在点x0的导数大于0,梯度方向向右,负梯度方向向左,从而x0向左移动,逐渐收敛到了局部最小值,而不能收敛到全局最小值。
2)学习率的大小要适中。
学习率太小,每次移动步长太小,收敛太慢。
学习率太大,每次移动步长大,可能导致不收敛。
3)不一定选择负梯度方向,只要是值下降的方向即可。
在每一次迭代选择方向时,我们只要选择与梯度方向夹角小于90度的向量的反方向就可,不一定要选择负梯度方向。但由于,满足这样条件的向量不太容易求出,我们就选择了与梯度方向0度的向量的反方向(负梯度方向),而且这个方向函数值减少的更快,更快的收敛,故是个不错的选择。
4)求最大值的梯度上升法。
f的梯度方向是f的值增长最快的方向。我们每次沿负梯度方向移动一小步可以逐步收敛到局部最大值,因此我们每次沿梯度方向也可以得到函数f的局部最大值。迭代公式为:
这里Sk表示 ak在处的梯度方向,与梯度下降法的含义不同。