基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

https://www.toutiao.com/a6638782437587419652/

 

幻风的AI之路 2018-12-25 18:12:27

线性回归模型

线性回归模型是一个非常简单的算法模型,它属于机器学习中的监督学习算法。假设数据集中有特征xi和特征yi,现在每个i对应于一个样本点(xi,yi),希望通过线性回归算法建立如下所示的一个模型。

基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

线性回归模型

其中yi^为线性模型的预测值,我们肯定是希望yi^能够准确预测未知的样本。通俗来讲就是找到一个函数(wxi+b)拟合 yi使得误差最小,即最小化该模型的损失函数:

基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

损失函数

只要能够使得损失函数最小化,那么此时建立的回归模型就能够较好的预测未知样本。那么如何最小化这个误差呢?这里需要用到梯度下降算法,非常简单,但是却非常强大,它的核心就是链式求导。

梯度

在梯度下降法中,我们首先要明确梯度的概念,一元回归中梯度就是我们所说的导数,多元回归中梯度就是我们所说的偏导数,如下所示是 f(x)= 这个函数在 x=1 处的梯度

基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

f(x)=x²

我们为什么要求梯度呢?我们想要最快的进行回归模型的优化,而朝着梯度的方向进行优化往往是最快的。一个点的梯度值是这个函数变化最快的地方,也就是说沿着梯度的反方向,我们能够更快地找到函数的最小值点。

梯度下降算法

梯度下降算法,我们可以理解为朝着梯度的反方向一点一点的下降,最终我们就能找到损失函数的最小值,此时的模型就是我们所需要的。

基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

下山的过程

比如我们在一座大山上的某处位置(函数的某一位置),由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,这样一步步的走下去,一直走到山脚,这就是梯度下降算法的直观体现。

基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

梯度下降过程

在我们进行梯度下降的时候,我们还需要指定算法走的这一步有多大,如果一步太小,那么算法的下降的速度会很慢,如果步长很大就容易在最小值点不断跳动,到不了最低点,所以步长是我们需要考虑中,机器学习中步长我们使用 η表示。

当算法进行一步梯度下降的之后,我们需要重新定位算法所在损失函数的位置,然后进行下一步梯度下降,更新公式是

基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

更新公式

算法通过不断地迭代更新,最终我们能够找到一组最优的参数w和b,这就是梯度下降法的原理。

当我们找到最优的参数w和b之后,我们就拥有了最终的回归模型,我们就可以使用这个最终的模型来预测未知样本了,这就是机器学习梯度下降优化算法对线性回归模型进行优化的过程。

代码为

def linear_model(x):
 return x * w + b
def get_loss(y_, y):
 return torch.mean((y_ - y_train) ** 2)
for e in range(10): # 进行 10 次更新
 y_ = linear_model(x_train)
 loss = get_loss(y_, y_train)
 
 w.grad.zero_() 
 b.grad.zero_() 
 loss.backward()
 
 w.data = w.data - 1e-2 * w.grad.data # 更新 w
 b.data = b.data - 1e-2 * b.grad.data # 更新 b 
 print('epoch: {}, loss: {}'.format(e, loss.data[0]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值