梯度下降算法的工作原理

部署运行你感兴趣的模型镜像

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

介绍

梯度下降算法是工业中最常用的机器学习算法之一,但也是很多新手难以理解的算法之一。

如果你刚刚接触机器学习,那么梯度下降算法背后的数学原理是比较难理解的。在本文中,我将帮助你了解梯度下降算法背后的工作原理。

eb766a6b4d3185d20ecaf9ca49969c7a.png

我们会了解损失函数的作用,梯度下降的工作原理,以及如何选择学习参数。

什么是损失函数

它是一个函数,用于衡量模型对任何给定数据的性能。损失函数将预测值与期望值之间的误差进行量化,并以单个实数的形式表示出来。

在对初始参数进行假设后,我们会计算了损失函数,以降低损失函数为目标,利用梯度下降算法对给定数据进行参数修正。下面是它的数学表示:

76090fce7efbc06b190abb665d0bfa65.png

什么是梯度下降

假设你在玩一个游戏,玩家在山顶,他们要求到达山的最低点,此外,他们还蒙着眼睛,那么,你认为怎样才能到达最低点呢?

最好的办法是观察地面,找出地面下降的地方,从这个位置开始,向下降方向迈出一步,重复这个过程,直到到达最低点。

dfb78b63516d1e582cff31a98f0d443b.png

梯度下降法是一种求解函数局部极小值的迭代优化算法。

要用梯度下降法求函数的局部极小值,必须选择与当前点处函数的负梯度(远离梯度)方向。如果我们采取与梯度的正方向,我们将接近函数的局部极大值,这个过程称为梯度上升。

梯度下降最初是由柯西在1847年提出的,它也被称为最速下降。

9562843690169cb19cabd4eab2b6c221.png

梯度下降算法的目标是最小化给定函数(比如损失函数)。为了实现这一目标,它迭代地执行两个步骤:

  1. 计算梯度(斜率),函数在该点的一阶导数

  2. 在与梯度相反的方向上移动一步(移动)

65466c41f191039c92b290b00e27d23b.png

Alpha被称为学习率-优化过程中的一个调整参数,它决定了步长。

绘制梯度下降算法

当我们有一个单一的参数(θ),我们可以在y轴上绘制因变量损失值,并在x轴上绘制θ。如果有两个参数,我们可以进行三维绘图,其中一个轴上有损失值,另两个轴上有两个参数(θ)。

e6a3297481b26bb8f01798fcaceb0e65.png

它也可以通过使用等高线来可视化,这会显示一个二维的三维绘图,其中包括沿两个轴的参数和等高线的响应值。远离中心的响应值增加,并且随着环的增加而增加。

db1729a742ebf2871ddc4129a773ba6d.png

α-学习率

有了前进的方向之后,现在我们必须决定我们要采取的步大小。

必须谨慎选择,以达到局部最小值。

  • 如果学习率太高,我们可能会超过最小值,而不会达到最小值

  • 如果学习率太低,训练时间可能会太长

77d51d7c0cd102a62c3d84d6c977188a.png

a) 学习率最优,模型收敛到最小

b) 学习速度太小,需要更多的时间,但会收敛到最小值

c) 学习率高于最优值,较慢速度的收敛(1/c<η<2/c)

d) 学习率非常大,它会过度偏离,偏离最小值,学习性能下降

f0acbc918659d4d003755b8b416a31bd.png

注:随着梯度减小而向局部最小值移动,步长减小,因此,学习速率(alpha)可以在优化过程中保持不变,而不需要迭代地改变。

局部最小值

成本函数可以由许多最小点组成。梯度可以落在任何一个极小值上,这取决于初始点(即初始参数θ)和学习速率,因此,在不同的起点和学习率下,优化可以收敛到不同的点。

0f713795568f5af106cb985ec66630c4.gif

梯度下降的Python代码实现

f0a0d0e7c706534e39a352b01b5b668c.png

结尾

一旦我们调整了学习参数(alpha)并得到了最优的学习速率,我们就可以开始迭代了,直到我们收敛到局部最小值。

参考链接:https://www.analyticsvidhya.com/blog/2020/10/how-does-the-gradient-descent-algorithm-work-in-machine-learning/

小白团队出品:零基础精通语义分割↓↓↓

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值