- 优化目标函数:\(L(\theta) = \mathbb{E}_{(x,y) \sim p_{data}} L(f(x, \theta), y)\)
- 找到平均损失最小的模型参数,也就是求解优化问题:\(\theta^{*} = \mathop{\arg \min} L(\theta)\)
经典梯度下降
- 采用所有训练数据的平均损失来近似目标函数,即\(L(\theta) = \frac{1}{M}\sum \limits_{i=1}^{M}L(f(x_i, \theta), y_i)\)
- \(\nabla L(\theta) = \frac{1}{M}\sum \limits_{i=1}^{M}\nabla L(f(x_i, \theta), y_i)\)
- 需要遍历所有训练数据,计算开销太大,但效果其实最好
随机梯度下降
用单个训练样本的损失来近似平均损失,即
\[\begin{aligned} L(\theta; x_i, y_i) & = L(f(x_i, \theta), y_i) \\ \nabla L(\theta; x_i, y_i) & = \nabla L(f(x_i, \theta), y_i) \end{aligned}\]
加快收敛速度,也适合在线更新
小批量梯度下降法
降低随机梯度的方差,使迭代更稳定
充分利用高度优化的矩阵运算
同时处理m个训练数据\(\{ (x_1, x_2), \cdots, (x_m, y_m) \}\),目标函数及其梯度为
\[\begin{aligned} L(\theta) & = \frac{1}{m} \sum \limits_{i=1}^{m}L(f(x_i, \theta), y_i) \\ \nabla L(\theta) & = \frac{1}{m} \sum \limits_{i = 1}^{m} \nabla L(f(x_i, \theta), y_i) \end{aligned}\]
注意:
- m的选取:一般选2的幂次,充分利用矩阵运算
- 挑选m条数据:shuffle
- 学习率:动态可调的