#统计学相关,梯度下降(gradient descent)的由来

拟合数据的算法的原理:要拟合的数据直接找一条线,该线要符合→各点到该线的距离最小

那么如何获取最优解:
假设这里有数值E
E = (预测值-实际值)的平方
一般E被称为残差,残差越小拟合度越好

为了更好地对E进行计算(这里是求导)以便找到最优解,我们引入一个概念,链式法则,
是微积分中的求导法则,用于复合函数求导。复合函数的导数将为构成复合这有限个函数在相应点的导数的乘积,称链式法则。
在这里插入图片描述
为方便理解,直接联想高中学的复合函数求导即可

然后,

导数→变化率→变化率越小→E的数值越小,拟合度越好→E的导数为0的时候→误差最小的点→最优解

那么就产生了新的问题,要怎么控制计算E的X的区间呢(联想高中的最小二乘法的计算方式)
于是我们要引入一个新的概念,学习率
学习率是一个超参数,控制着我们根据损失梯度调整的网络权重。值越低,我们沿着向下的斜率走得越慢即值越低计算的间距/区间越小

学习率如何影响算法的计算:
new-weight = old-weight 减 (learning-ate * gradient)

为了提高计算的效率,我们就需要对学习率进行设计,当他离最优解的区间太远的时候适当提高,离最优解的距离比较近的时侯再减小即可

那么要怎么实现呢,
求导→变化率→在变化率上做文章即可
由此,得出以下公式
step-size = slope* learning-rate

问题来了,里面的斜率(slope)是怎么知道的呢
由此,我们要引入一个概念SSR(Sum of Squares due to Regression/回归平方和)
计算公式:

在这里插入图片描述
进一步推广,当y1,y2带进去并加起来的时候,自然就构成有梯度的斜率

那么梯度是如何下降的呢
step-size for calculating slope = slopelearning-rate
step-size for calculating intercept = intercept
learning-rate
new-intercept = old-intercept 减 step-size

推广
new-slope= old-slope 减 step-size

那么问题又来了
这么干,什么时候是个头呢
这个时候就要我们主动定义了,小于某个值,比如0.00001的时候我们认为这个误差足够小了
然后问题又出来了
如果怎么算都无法小于这个值呢
只要定义step大于某个值即可,比如当训练了2000次,这个还是没法降到那个值,那我们就认为它已经到了极限,停止训练模型

你可能感兴趣的:(统计学,机器学习笔记,机器学习,python,深度学习,算法)