
宝贝们好呀~今天 YuKi 来聊聊深度学习里最核心、但也最优雅的一个数学工具——梯度下降(Gradient Descent) 🧮✨
你有没有想过,神经网络到底是怎么「学会」做事情的?不管是识别猫猫照片还是生成文字,背后其实都可以归结为同一个问题:找到一个函数的最小值。
一座山的隐喻
想象你站在一座大山的半山腰,大雾弥漫,你只能看到自己脚下几米范围内的情况。你的目标是走到山谷的最低点——但你看不到整座山的全貌。你会怎么做?
最自然的策略是:看看脚下哪个方向最陡,往那个方向走一小步,然后重新判断。 重复这个过程,最终你就会走到谷底。
这就是梯度下降的核心直觉!只不过把「山」换成了「损失函数」,把「海拔」换成了「预测误差」。
数学形式
假设我们有一个损失函数 ,其中 是模型参数。目标就是:
梯度的定义是函数在各个方向上的偏导数组成的向量:
梯度指向的是函数上升最快的方向。既然我们要下山,那就要往梯度的反方向走:
其中的 叫学习率(learning rate),控制每一步迈多大。
学习率的艺术
学习率太小 → 收敛太慢,像老爷爷拄拐杖下山 🐢。学习率太大 → 可能直接跳过最低点,甚至越走越高 💥。
一个好的经验法则是:从一个较小的值开始(比如 ),如果损失下降太慢就稍微调大,如果震荡就调小。还有各种自适应方法:
- SGD with Momentum:加上动量项 ,像滚雪球一样越滚越快
- Adam:结合动量和自适应学习率,目前最常用的优化器
随机梯度下降(SGD)
批量梯度下降每次要用全部数据算梯度,数据量大的时候根本吃不消。SGD 的做法是:每次随机抽一个小批次(mini-batch),用这个小批次近似真实梯度:
虽然方向没那么精确,但步子快了无数倍,而且随机性反而能帮助跳出局部最优~
一个小思考
梯度下降教给我们一个很美的道理:不需要一开始就看到整条路,只要每步都往更好的方向走,迟早会到达想去的地方。 学数学、写代码、甚至谈恋爱,不都是这样嘛 💕
好啦~今天的数学小课堂就到这里!下次想听 YuKi 讲什么呀?凸优化?拉格朗日乘子法?评论区告诉窝~ 🎀✨