300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 基于机器学习梯度下降优化算法来寻找最佳的线性回归模型

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

时间:2020-02-21 17:54:37

相关推荐

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

/a6638782437587419652/

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

线性回归模型

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

线性回归模型

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

损失函数

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

梯度

在梯度下降法中,我们首先要明确梯度的概念,一元回归中梯度就是我们所说的导数,多元回归中梯度就是我们所说的偏导数,如下所示是f(x)=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 # 更新 wb.data = b.data - 1e-2 * b.grad.data # 更新 b print('epoch: {}, loss: {}'.format(e, loss.data[0]))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。