随机梯度下降算法

随机梯度下降算法



1.损失函数

在线性回归分析中,假设我们的线性回归模型为:
样本(X_1,X_2,…,X_n )对应的正确的值为:(y_1,y_2,…,y_n )。现在假设判别函数G(x)的系数都找出来了,那么我们通过判别函数G(x),就可以预测样本x的值为:y'。那么这个预测出来的y'值跟实际想样本x对应的值y的差距有多大呢?这个时候,我们可以通过损失函数来表示。
随机梯度下降算法_第1张图片
其实损失函数非常容易理解,就是当我们为线性回归模型找到所有的系数之后,我们样本点经过回归模型G(x)得到的预测值跟这些样本点时间的值之间的差距。

2.随机梯度下降算法

其实梯度下降算法很好理解。我们有了线性回归模型之后,那么我们的目标就是找出这些系数,而且这些系数是能最好的表达这个模型的,所谓的最好就是给出的训练数据中,通过这些系数的模型所预测出来的值跟训练样本实际的值最相近。梯度下降算法就是用来寻找这些系数的,就是找到最佳的回归系数((Θ_0,Θ_1,Θ_2+⋯+Θ_n)。
而寻找最佳的系数,就是要最小化Φ(x),就是让损失函数越小越好。
随机梯度下降算法_第2张图片

当只有两个系数的时候,我们把损失函数就如上图一样。那么谷底就是一个最优解了。那么应该怎么来找到谷底呢?是不是当我们初始化(Θ_0,Θ_1)之后,然后往谷底的方向慢慢来调节(Θ_0,Θ_1),让损失函数的值越来越小呢。对,就是这样的,那么怎么来确定这个方向呢?这是关键所在。这时候,我们就需要理解对一个函数求导的意义了。其实导数的意义很简单
在一个而平面上,如A点的导数就是该函数在点A的斜率。

随机梯度下降算法_第3张图片
如果我们的回归系数在优化的过程中,是按照下面的式子来优化的:

α是步长,就是我们在优化θ_i时候,往损失函数最小化的方向走的一个长度。
按照(1)式子,如果∂Φ(x)/(∂θ_i )<0,即导数是负的,那么这个系数再减的话,就相当于加了,就是往导数的0方向走,那么导数的值就越来越大,导数这条直线就越来越平。当导数这条直线平移跟B点的时候,就是谷底了,也就是损失函数的最优解了。
根据上面的坐标轴图,如果A点在右边也没关系,如果在右边,那么∂Φ(x)/(∂θ_i )就为正数,就相当于减去一个值,同样也是往谷底的方向走,导致的值越到越小,当导数这条直线平行x轴时候,就到谷底了,也就是到了最小的地方了。
那么对所有的系数进行如下的操作,就能找到一个最优解了。

随机梯度下降算法_第4张图片
你也许有个问题,就是步长因为是认为指定的,它的取值会不会另损失函数不能到达谷底,只是在附近而已。这个是会的,所以有些算法就专门针对这个问题进行研究,比如当越接近谷底的时候步长越来越小等。








你可能感兴趣的:(机器学习)