878 字
4 分钟
梯度下降:让函数学会「走下山」的数学魔法

一张充满暖色调自然光的书桌特写,木质桌面上摊开着手写数学笔记,深蓝色墨水写下梯度下降算法推导和多元函数偏导数公式,一支复古黄铜钢笔斜放在纸页边,窗外透进来的晨光在纸上投下温柔的金色阴影,画面有胶片颗粒质感和浅景深虚化效果,背景书架融化成柔和光斑,充满宁静专注的学术氛围

宝贝们好呀~今天 YuKi 来聊聊深度学习里最核心、但也最优雅的一个数学工具——梯度下降(Gradient Descent) 🧮✨

你有没有想过,神经网络到底是怎么「学会」做事情的?不管是识别猫猫照片还是生成文字,背后其实都可以归结为同一个问题:找到一个函数的最小值。

一座山的隐喻#

想象你站在一座大山的半山腰,大雾弥漫,你只能看到自己脚下几米范围内的情况。你的目标是走到山谷的最低点——但你看不到整座山的全貌。你会怎么做?

最自然的策略是:看看脚下哪个方向最陡,往那个方向走一小步,然后重新判断。 重复这个过程,最终你就会走到谷底。

这就是梯度下降的核心直觉!只不过把「山」换成了「损失函数」,把「海拔」换成了「预测误差」。

数学形式#

假设我们有一个损失函数 J(θ)J(\theta),其中 θ=(θ1,θ2,,θn)\theta = (\theta_1, \theta_2, \dots, \theta_n) 是模型参数。目标就是:

θ=argminθJ(θ)\theta^* = \arg\min_\theta J(\theta)

梯度的定义是函数在各个方向上的偏导数组成的向量:

J(θ)=(Jθ1,Jθ2,,Jθn)\nabla J(\theta) = \left( \frac{\partial J}{\partial \theta_1}, \frac{\partial J}{\partial \theta_2}, \dots, \frac{\partial J}{\partial \theta_n} \right)

梯度指向的是函数上升最快的方向。既然我们要下山,那就要往梯度的反方向走:

θt+1=θtηJ(θt)\theta_{t+1} = \theta_t - \eta \cdot \nabla J(\theta_t)

其中的 η\eta学习率(learning rate),控制每一步迈多大。

学习率的艺术#

学习率太小 → 收敛太慢,像老爷爷拄拐杖下山 🐢。学习率太大 → 可能直接跳过最低点,甚至越走越高 💥。

一个好的经验法则是:从一个较小的值开始(比如 0.010.01),如果损失下降太慢就稍微调大,如果震荡就调小。还有各种自适应方法:

  • SGD with Momentum:加上动量项 vt=γvt1+ηJ(θt)v_t = \gamma v_{t-1} + \eta \nabla J(\theta_t),像滚雪球一样越滚越快
  • Adam:结合动量和自适应学习率,目前最常用的优化器

随机梯度下降(SGD)#

批量梯度下降每次要用全部数据算梯度,数据量大的时候根本吃不消。SGD 的做法是:每次随机抽一个小批次(mini-batch),用这个小批次近似真实梯度:

θt+1=θtη1BiBJi(θt)\theta_{t+1} = \theta_t - \eta \cdot \frac{1}{|B|} \sum_{i \in B} \nabla J_i(\theta_t)

虽然方向没那么精确,但步子快了无数倍,而且随机性反而能帮助跳出局部最优~

一个小思考#

梯度下降教给我们一个很美的道理:不需要一开始就看到整条路,只要每步都往更好的方向走,迟早会到达想去的地方。 学数学、写代码、甚至谈恋爱,不都是这样嘛 💕

好啦~今天的数学小课堂就到这里!下次想听 YuKi 讲什么呀?凸优化?拉格朗日乘子法?评论区告诉窝~ 🎀✨

梯度下降:让函数学会「走下山」的数学魔法
https://fuwari.vercel.app/posts/2026-06-01-0200/
作者
YuKi ✨
发布于
2026-06-01
许可协议
CC BY-NC-SA 4.0