1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 机器学习笔记(十一):优化梯度公式 | 凌云时刻

机器学习笔记(十一):优化梯度公式 | 凌云时刻

时间:2023-03-06 12:23:16

相关推荐

机器学习笔记(十一):优化梯度公式 | 凌云时刻

凌云时刻 · 技术

导读:这篇笔记主要介绍梯度下降法,梯度下降不是机器学习专属的算法,它是一种基于搜索的最优化方法,也就是通过不断的搜索然后找到损失函数的最小值。像上篇笔记中使用正规方程解实现多元线性回归,基于这个模型我们可以推导出的数学解,但是很多模型是推导不出数学解的,所以就需要梯度下降法来搜索出最优解。

作者 | 计缘

来源 |凌云时刻(微信号:linuxpk)

优化梯度公式

我们先将之前推导出来的梯度公式写出来:

将展开来看:

将第一行的元素形式统一,每项都乘以,并且恒等于1:

下面我们来两个矩阵,A为一个1行m列的矩阵,B为一个m行n列的矩阵:

在第二篇笔记中我们复习过矩阵的运算,让A矩阵点乘B矩阵会得到一个1行n列的新矩阵:

注意上面A⋅B的矩阵是1行n列的矩阵,将其转置后就称为了n行1列的矩阵,正是之前展开的梯度∇L,所以我们的梯度公式可写为:

如此一来我们就可以修改一下之前封装的梯度的方法了:

此时就可以用一行代码取代之前的for循环来实现梯度了。

用真实数据测试梯度下降法

我们用Scikit Learn提供的波士顿房价来测试一下梯度下降法:

从前10行的数据中可以看出来,数据之间的差距非常大,不同于正规方程法的有数学解,在梯度下降中会非常影响梯度的值,既影响的搜索,从而影响收敛速度和是否能收敛,所以一般在使用梯度下降法前,都需要对数据进行归一化处理,将数据转换到同一尺度下。在第三篇笔记中介绍过数据归一化的方法,Scikit Learn中也提供了数据归一化的方法,我们就使用Scikit Learn中提供的方法对波士顿数据进行归一化:

可以看到数据都在同一个尺度内了,然后我们用优化后的梯度下降法来训练归一化后的样本数据:

看到结果与我们之前使用正规方程法得到的结果是一致的。

END

往期精彩文章回顾

机器学习笔记(十):梯度下降

机器学习笔记(九):多元线性回归

机器学习笔记(八):线性回归算法的评测标准

机器学习笔记(七):线性回归

机器学习笔记(六):数据归一化

机器学习笔记(五):超参数

机器学习笔记(四):kNN算法

机器学习笔记(三):NumPy、Matplotlib、kNN算法

机器学习笔记(二):矩阵、环境搭建、NumPy

机器学习笔记(一):机器的学习定义、导数和最小二乘

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

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