python sklearn 梯度下降法_【机器学习】梯度下降法(Gradient descent)

说明:以下内容为学习刘建平老师的博客所做的笔记

梯度下降(Gradient Descent)小结​www.cnblogs.com
db2937f0c14beca5bc5b5391eb5b9a81.png

因为个人比较喜欢知乎文章的编辑方式,就在这里边记笔记边学习,喜欢这个博客的朋友,可以去刘建平老师的博客follow,老师的github链接:

ljpzzz/machinelearning​github.com
8cf00fd3f63a51adbde22a9f54cdfa7f.png

梯度下降法是与最小二乘法并驾齐驱的一种无约束优化问题方法,在机器学习求解模型参数中常常会用到。

一、什么是梯度以及梯度的意义?

在微积分中,对多元函数的参数求偏导,把求导后的结果(各个参数的偏导数)以向量的形式表达出来就是梯度。比如

分别对
求偏导,得出的
就是梯度。如果是涉及三个参数的函数,那么
就是梯度。可以看看这个视频加深以下对梯度的感性认识:
https://www.bilibili.com/video/av19844108?from=search&seid=6984522082653211203​www.bilibili.com

那么梯度的意义又是什么?从几何的角度,梯度就是在这一点函数增加最快的方向,反之梯度的相反方向就是函数减小最快的方向。例如对于

点,-
的方向就是
减小最快的方向。

这里举一个爬山的例子:

比如我们在爬一座山,我们现在在初始点所标注的位置,现在想要尽快下山,应该用什么样的方式呢?我们需要朝着初始点的梯度负方向前进一步,然后在在新的初始点位置继续向梯度负方向前进一步,就这样一步又一步,我们可能会达到一个局部的山峰最低处。如果这个山峰是凸函数形状的,我们这样一步又一步地走下去,可能会走到山脚。

ce2e8a484e438155634f84ba2ff0788c.png

二、梯度下降的相关概念

步长:步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。

特征:样本的输入部分,如

其中,
就是样本的输入部分,而
就是样本输出部分。

假设函数:在监督学习中,为了拟合输入的样本,而建立的拟合函数

,如对于m个样本
,有假设函数

损失函数:为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本

,采用线性回归,损失函数为:

三、梯度下降法实现过程(代数法)

1.先决条件:确定假设函数和损失函数

对于线性回归函数,我们设假设函数为

这里为了方便运算,我们设

=1,则以上式子可以简化为:
,那么可以推出该预测函数的苏是函数为(为了方便求导,将分母化为2m):

2.算法过程:

1)确定损失函数的梯度,对于

其梯度表达式为:
;

2)用步长乘以损失函数的梯度,得到当前位置下降的距离,即

3)确定是否所有的

,梯度下降的距离都小于
,如果小于
则算法终止,当前所有的
(i=0,1,...n)即为最终结果。否则进入步骤4;

4)更新所有的,对于

,其更新表达式如下。更新完毕后继续转入步骤1。

5)对于线性回归预测函数,如下演示:

求偏导得到:

而步骤四对应的公式为:

这里的

可以用某个常数来表示。

三、梯度下降法的调优

在使用梯度下降时,需要进行调优。哪些地方需要调优呢?

1. 算法的步长选择。在前面的算法描述中,提到取步长为1,但是实际上取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。前面说了。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。所以算法的步长需要多次运行后才能得到一个较为优的值。

2. 算法参数的初始值选择。 初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;当然如果损失函数是凸函数则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。

3.归一化。由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化。

先写到这里吧,后面继续更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值