社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

白话机器学习 | 梯度下降

图灵人工智能 • 2 月前 • 63 次点击  
点击上方“图灵人工智能”,选择“星标”公众号

您想知道的人工智能干货,第一时间送达

                         
图片

版权声明

 转自闪客,版权属于原作者,用于学术分享,如有侵权留言删除

小宇:闪客,上次你讲《白话机器学习 | 损失函数 》讲得我是豁然开朗!但后面那个"高维曲面"把我真是吓到了。

图片

闪客:哈哈别怕,上次画那个图就是为了吓你的,我想表达的就是,虽然通过导数为 0 这种传统的方法可以直接求出最低点,但一旦函数非常复杂这个方法就不好用了,就迫使我们找找其他办法。

小宇:你为什么拿图吓唬我?是不是显着你了!

闪客:额没有没有,我向你道歉,我们赶紧进入正题吧。

小宇:好,那你快告诉我什么是梯度下降呢?

闪客:别急,直接告诉你可不是我的风格,我们先不要管什么梯度下不下降的,先来想想我们的目的是什么。

小宇:嗯目的我还是清晰的,就是我们想求解一个叫损失函数的最小值,比如 L(w, b) 甚至更多维的 L(w₁, w₂, ..., b)。

图片

闪客:没错,但最终目标可不是知道这个最小值是多少。

小宇:哦哦对,我说得不给力,是求解使得这个损失函数最小的 w 和 b 都是多少。

闪客:没错,那你想想看,直接一步到位求出 w 和 b 的值太难了,那我们是不是可以一点一点调整它们,分多次求解呢?

小宇:一点一点调整?听起来好像是个思路,但还是没太明白怎么调整。

闪客:没关系,我们假设个生活中的场景,你现在有一杯咖啡和糖,你怎么调出符合你口味的甜度呢?

小宇:哦这个我深有感悟,一步到位很难。比如我想要微微甜,那就得先加一点点糖,然后尝一尝,然后再加点,再尝一尝,直到刚好到我满意为止。

闪客:没错,没想到你还挺精致的,这就是梯度下降的精髓!

小宇:啊,这和梯度下降有什么关系呢?

闪客:你可以把符合你的口味这个目标当做一个损失函数,糖的量就是损失函数中的参数,你不能一下子就确定糖这个值是多少,于是只能从一个初始状态开始,比如先加一勺糖,然后一点一点变化糖的量。每次加完糖后你品尝咖啡就是你在计算这次的损失函数,也就是你对口味的喜欢程度。

小宇:啊,我明白了!没想到生活中的例子这么有启发作用!

闪客:对!生活中的很多事都是这样的,比如做饭调味、调音响音质,甚至选衣服搭配颜色,都是通过不断尝试和调整来找到最优解。机器学习的梯度下降,也是用这种思路来优化参数的。

小宇:这个思路我明白了。不过你之前说的“梯度”具体是啥呢?

闪客:假如损失函数只有一个参数,像之前的 L(w),那么梯度就和导数是一个意思。

图片

如果损失函数有多个参数,像之前的 L(w,b),那么梯度就是各个参数的偏导数。

图片

在这种情况下,梯度是个向量,是所有参数的偏导数累加起来的综合结果。

图片

小宇:额,你这一大堆输出差点又给我整懵了,向量这个概念确实学过,但总感觉还不直观,你能形象地给我展示下么?

闪客:没问题,我们就拿之前三维坐标系下的那个带两个参数 w 和 b 的损失函数来说,对应图中的这个点,它的梯度是多少呢?

图片

小宇:对 w 和 b 分别求偏导?

闪客:没错,在图中,对 w 求偏导就是把 b = 0 这个平面和曲面的交线求导数。

图片

把视角转一下就清晰了。

图片

小宇:原来如此!那对 b 求偏导呢?

闪客:也是一样,线画 w = -1 这个平面和曲面的交线。

图片

从侧面看,这条交线已经在最低点了,所以 b 的偏导数就是 0。

图片

所以把这两股偏导数的力量合在一起,就是最终的向量,也就是梯度。

图片

小宇:我明白了!其实就是找个坡度最大的方向往下滑,直到滑到最低点。

闪客:没错,不过这里的图只是为了让你形象理解梯度的意思,实际计算的时候不用考虑那么多,直接求各参数的偏导数就行了。

小宇:诶,那算出偏导数之后,要怎么样呢?

闪客:简单!每次都沿着梯度的反方向,走一小步,也就是你说的往下滑。公式写出来是这样的:

图片

小宇:哇,这么简单呀,其实就是每个参数每次都变化自己偏导数那么大的值就好了。

闪客:没错!不过这样的话有个小问题,就是每次变化的这个量,太大了容易走过了错过最低点,太小了又太磨叽,所以我们乘以一个学习率 η 来调整一下速度。

图片

小宇:哦还真是,人类真是好聪明呀!

闪客:哈哈是呀。咱们找到了梯度下降的求解方法,你来实践一下吧。回到那个最简单的题目,假设 x 和 y 的数据如下:x=[1,2,3,4] y=[1,2,3,4] ,求一下 y = wx 中的 w 是多少。

图片

虽然傻子也能直接看出 y = x 是最终的解,不过我们就用这个来举例实战一下,你来用梯度下降的方法求一下 w 的值。

小宇:好的,不过我学你,这种小事儿我也懒得自己算了,交给 AI 吧!

图片
图片

闪客:哈哈真不赖,活学活用呀,这 AI 直接把图都帮我们画出来了,图里可以看到损失函数的值 Loss 再逐渐降低为 0,而我们要计算的权重 w 的值在不断接近 1。之后你看到再复杂的机器学习或者深度学习等过程的展示,最核心的其实就是这两个东西的变化罢了。

小宇:是呀,现在这 AI 当老师也太体贴了!诶?那更高维度也就是更多参数的梯度下降求解,是不是和这个步骤完全一样呀?

闪客:没错,你也可以直接丢给 AI 一个你想要实践的场景,让它帮你把详细过程事无巨细地画出来。不过高维也带来一些新的问题,比如更容易陷入局部最优解,或者梯度变得特别小,导致优化速度变慢。幸好,梯度下降有不少改进版本,比如动量法、Adam 优化器,这些可以帮助我们更快、更稳地找到最优解。

小宇:听起来这梯度下降已经很厉害了!改进版岂不是要更牛?

闪客:当然!下次我就带你看看这些聪明的优化器,比如怎么用“动量”像滚雪球一样加速下降,或者让学习率动态调整,变得更智能。

小宇:好嘞,期待!

闪客:哎呀,不知不觉又到饭点了,今天讲的给你画了这么多图很累的,请我吃个饭吧。

小宇:哦才想起来我家里洗的衣服还在洗衣机里呢,我得回去晾衣服啦,下次吧。

闪客:哦~


图片图片


文章精选:

1.杨立昆:靠文本训练LLM,不可能实现人类水平AI(演讲实录)
2.2024图灵奖颁给强化学习两位奠基人!ChatGPT、DeepSeek背后功臣戴上迟来的冠冕
3.诺奖得主、人工智能教父辛顿学术讲座:图灵相信的是另一种AI、反向传播比人脑效果好,开源模型将给世界带来致命危险
4.图灵奖得主LeCun痛批硅谷傲慢病!圈内爆火长文:DeepSeek R1-Zero比R1更重要,成AGI破局关键
5.图灵奖得主、AI 教父 Bengio:OpenAI 不会分享超级智能,而是会用它来搞垮其他人的经济
6.不用求人,DeepSeek扮演国家自然科学基金审评专家,为申请书初稿提出专业改进意见,快速提升内容质量
7.图灵奖得主Bengio预言o1无法抵达AGI!Nature权威解读AI智能惊人进化,终极边界就在眼前
8.赶紧放弃强化学习?!图灵奖得主、Meta 首席 AI 科学家杨立昆喊话:当前推理方式会“作弊”,卷大模型没有意义!
9.图灵奖得主杨立昆:大语言模型缺乏对物理世界的理解和推理能力,无法实现人类水平智能
10.图灵奖得主杰弗里·辛顿:从小语言到大语言,人工智能究竟如何理解人类?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/180962
 
63 次点击