梯度下降与优化器
梯度下降
简述
对于模型 y = f(x; \theta),给定数据集 \{(x_i, y_i)\}_{i = 1}^n,设 loss 定义为 \frac{1}{n}\sum\limits_{i = 1}^n d(y, y_i),则我们本质上是寻找一个参数,使得 loss 尽量少:
\arg \min_{\theta} \frac{1}{n} \sum\limits_{i = 1}^n d(f(x_i; \theta), y_i).
将 (x_i, y_i) 是做常数,将 \theta 视为变量,则 loss 可以表示为:
l(\theta) = \frac{1}{n} \sum\limits_{i = 1}^n d(f(x_i; \theta), y_i).
在函数性质良好时,我们将可以求出上文中函数的导数,即梯度:
l'(\theta) = \nabla_{\theta} l = \frac{1}{n} \sum\limits_{i = 1}^n \nabla_\theta d(f(x_i; \theta), y_i).
梯度是一个向量,它表征了函数值上升和下降最快的方向。因此,我们可以更新 \theta 的值:
\theta \leftarrow \theta - \eta \nabla_{\theta} l.
这种通过梯度进行参数更新的方法就是梯度下降法。
随机梯度下降
随机梯度下降(stochastic gradient descent, SGD)是对原始梯度下降方法的改进。对于训练集 \{(x_i, y_i)\}_{i = 1}^n,每次我们只取一个点计算梯度,并进行梯度下降:
l_i := d(f(x_i; \theta), y_i);
\theta \leftarrow \theta - \eta\nabla l_i.
显然,平均意义上的单点梯度将等于总梯度:
\nabla l = \frac{1}{n} \sum_{i=1}^n \nabla d(f(x_i; \theta), y_i) = \mathbb{E}(l_i).
随机变量
当神经网络 y = f_\theta(x) 是的输出 y 是随机变量时,给定同一个 x_0,可能有多个样本 y_1, \dots, y_n 与之对应。此时,假设神经网络具有足够的拟合能力,并且使用均方误差(MSE)作为损失函数,则优化后的神经网络将预测 y 的均值。
可以写出,对数据集整体,损失函数的形式为:
l(\theta) = \sum_{i = 1}^n (y_i - f(x_0; \theta))^2.
令 \hat{y} = f(x_0; \theta),则函数化为 l = \sum (y_i - \hat{y})^2。通过求导可以证明,最小值在均值处取得。
因此,最小化上述损失函数,等价于:
f(x_0; \theta) = \frac{1}{n} \sum_{i = 1}^n y_i.
这表明优化后的神经网络将预测均值。
BEYOND THE ARTICLE
读完了,有什么想法?
阅读已保存的问答示例,并循着引用回到原文。
— 本文完 — 返回文章列表