1. 从梯度下降到神经网络:深度学习的数学基石
第一次接触《深度学习入门》前四章时,我被其中严密的数学推导震撼到了。很多人以为深度学习就是调库炼丹,但真正要理解神经网络的运作机制,梯度下降和反向传播这两个核心算法是绕不开的坎。记得我最初用numpy手写单变量梯度下降程序拟合y=x²时,看着每轮loss值打印输出那种曲线收敛的过程,才真正理解了优化算法的精妙所在。
这部分内容构成了深度学习的"内功心法",无论是后续要学的CNN卷积神经网络、RNN循环神经网络,还是Transformer等复杂架构,都建立在这些基础之上。花书(《Deep Learning》)的理论深度也正体现在对这些根本原理的剖析上。下面我就结合自己的学习经历,拆解这几个关键技术的实现要点和常见误区。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 梯度下降:优化算法的核心引擎
2.1 从物理现象到数学抽象
梯度下降的本质其实非常直观——想象一个小球沿着最陡峭的方向滚下山谷。在数学上,我们通过计算损失函数对参数的偏导数(梯度)来确定这个"最陡方向"。以最简单的线性回归为例:
python复制# numpy实现梯度下降核心代码
def gradient_descent(X, y, lr=0.01, epochs=100):
w = np.zeros(X.shape[1])
for _ in range(epochs):
grad = 2/X.shape[0] * X.T @ (X @ w - y) # 关键梯度计算
w -= lr * grad
print(f"Epoch {_}: loss {np.mean((X@w -y)**2)}") # 打印loss变化
return w
这个简单的例子已经包含了梯度下降的所有核心要素:
- 初始化参数(w)
- 计算当前参数下的梯度(grad)
- 沿负梯度方向更新参数(w -= lr * grad)
- 循环直到收敛
关键提示:学习率lr的选择至关重要。太大容易震荡不收敛,太小则训练缓慢。建议从0.01开始尝试,观察loss变化曲线调整。
2.2 随机梯度下降的实战技巧
当数据量较大时,全量计算梯度(Batch GD)效率太低。这时就需要随机梯度下降(SGD)及其
