本节将介绍随机梯度下降 (Stochastic Gradient Descent,SGD) \text{(Stochastic Gradient Descent,SGD)} (Stochastic Gradient Descent,SGD)
从最速下降法的角度观察,下降方向 P k \mathcal P_k Pk的判定逻辑是:满足目标函数 f ( x k + 1 ) = f ( x k + α k ⋅ P k ) f(x_{k+1}) = f(x_k + \alpha_k \cdot \mathcal P_k) f(xk+1)=f(xk+αk⋅Pk)的一阶泰勒展开式与 f ( x k ) f(x_k) f(xk)之间存在严格的单调性;
其中
O ( ∥ α k P k ∥ ) \mathcal O(\|\alpha_k\mathcal P_k\|) O(∥αkPk∥)表示关于
α k P k \alpha_k\mathcal P_k αkPk的高阶无穷小;
f ( x k + 1 ) − f ( x k ) = α k ⋅ ( P k ) T ∇ f ( x k ) + O ( ∥ α k P k ∥ ) ≈ α k ⋅ ( P k ) T ∇ f ( x k ) < 0 ⇒ ( P k ) T ∇ f ( x k ) < 0 \begin{aligned} f(x_{k+1}) - f(x_k) & = \alpha_k \cdot (\mathcal P_k)^T \nabla f(x_k) + \mathcal O(\|\alpha_k \mathcal P_k\|) \\ & \approx \alpha_k \cdot (\mathcal P_k)^T \nabla f(x_{k}) < 0 \\ & \Rightarrow (\mathcal P_k)^T \nabla f(x_k) < 0 \end{aligned} f(xk+1)−f(xk)=αk⋅(Pk)T∇f(xk)+O(∥αkPk∥)≈αk⋅(Pk)T∇f(xk)<0⇒(Pk)T∇f(xk)<0
对上式进行展开,如果使用欧式范数对 P k \mathcal P_k Pk的大小进行描述,即:
( P k ) T ∇ f ( x k ) = ∥ P k ∥ 2 ⋅ ∥ ∇ f ( x k ) ∥ 2 ⋅ cos θ (\mathcal P_k)^T \nabla f(x_k) = \|\mathcal P_k\|_2 \cdot \|\nabla f(x_k)\|_2 \cdot \cos \theta (Pk)T∇f(xk)=∥Pk∥2⋅∥∇f(xk)∥2⋅cosθ
关于更新方向 P k \mathcal P_k Pk,我们更关注它的方向朝向,而不是它的大小。因而对更新方向 P k \mathcal P_k Pk的大小进行约束。例如: ∥ P k ∥ ≤ 1 \|\mathcal P_k\| \leq 1 ∥Pk∥≤1。由于 ∇ f ( x k ) \nabla f(x_k) ∇f(xk)是大小恒正的已知项,因而真正影响 ( P k ) T ∇ f ( x k ) (\mathcal P_k)^T \nabla f(x_k) (Pk)T∇f(xk)结果的只有梯度向量 ∇ f ( x k ) \nabla f(x_k) ∇f(xk)与更新方向 P k \mathcal P_k Pk之间的夹角 θ \theta θ。
由于 cos θ ∈ [ − 1 , 1 ] \cos \theta \in [-1,1] cosθ∈[−1,1],因而当 θ = π 2 \begin{aligned}\theta = \frac{\pi}{2}\end{aligned} θ=2π时,即更新方向与梯度方向相反时, cos θ = − 1 \cos \theta = -1 cosθ=−1, ( P k ) T ∇ f ( x k ) (\mathcal P_k)^T \nabla f(x_k) (Pk)T∇f(xk)达到最小:
P k = − ∇ f ( x k ) \mathcal P_k = - \nabla f(x_k) Pk=−∇f(xk)
此时的最速下降法就是梯度下降法。但如果对 P k \mathcal P_k Pk的约束方式不是欧式范数,如: L 1 \mathcal L_1 L1范数或者矩阵 2 2 2-范数,它们在范数范围内,不同方向的最大值可能不相等。见下图:
其中最左侧的是
欧式范数 ∥ P ∥ 2 ≤ ϵ \|\mathcal P\|_2 \leq \epsilon ∥P∥2≤ϵ,可以看出,特征空间原点到范数边界的距离均相等,这使得
上式唯一的可变信息取决于 θ \theta θ的取值;中间与右侧分别是
L 1 \mathcal L_1 L1范数 ∥ P ∥ 1 ≤ ϵ \|\mathcal P\|_1 \leq \epsilon ∥P∥1≤ϵ与矩阵 2 2 2-范数 ∥ A ∥ 2 ≤ ϵ \|\mathcal A\|_2 \leq \epsilon ∥A∥2≤ϵ,可以看出:由于特征空间原点到范数边界之间的距离可能不相等,这使得
上式的可变信息取决于 θ \theta θ、范数长度的共同作用,最终可能导致:
某方向即便不是负梯度方向,但它有可能使 ( P k ) T ∇ f ( x k ) (\mathcal P_k)^T \nabla f(x_k) (Pk)T∇f(xk)达到最小。在本节中,这里暂时模糊掉最速下降法与梯度下降法之间的区别。在无约束优化问题——最速下降法以及梯度下降法在强凸函数的收敛性分析中介绍过,如:
在机器学习过程中,梯度下降法的时间复杂度同样不低。例如:
其中
L ( ⋅ ) \mathcal L(\cdot) L(⋅)表示关于样本的
损失函数;而
J ( ⋅ ) \mathcal J(\cdot) J(⋅)才是最终的目标函数结果。
牛顿-莱布尼兹公式~
上述红色部分抄自
《深度学习(花书)》 P 94 P_{94} P94下端。这明显出现了矛盾:既然想要降低梯度下降法的时间复杂度,就需要减少训练集样本数量 N N N;但训练集样本数量的减少,也会导致该数据集对概率模型的泛化效果较差。
随机梯度下降的核心在于,目标函数的梯度 ∇ θ J ( θ ) \nabla_{\theta} \mathcal J(\theta) ∇θJ(θ)自身同样也是期望:
∇ θ J ( θ ) = 1 N ∑ i = 1 N ∇ θ [ − log P ( y ( i ) ∣ x ( i ) ; θ ) ] = E ( x ( i ) , y ( i ) ) ∈ D [ − log P ( y ( i ) ∣ x ( i ) ; θ ) ] \begin{aligned} \nabla_{\theta} \mathcal J(\theta) & = \frac{1}{N} \sum_{i=1}^N \nabla_{\theta} \left[-\log \mathcal P(y^{(i)} \mid x^{(i)};\theta)\right] \\ & = \mathbb E_{(x^{(i)},y^{(i)}) \in \mathcal D} \left[-\log \mathcal P(y^{(i)} \mid x^{(i)};\theta) \right] \end{aligned} ∇θJ(θ)=N1i=1∑N∇θ[−logP(y(i)∣x(i);θ)]=E(x(i),y(i))∈D[−logP(y(i)∣x(i);θ)]
但期望同样可以使用小规模样本进行近似估计。在每一次迭代过程中,从训练集 D \mathcal D D中均匀地抽取若干个独立同分布的小批量 ( Mini-Batch ) (\text{Mini-Batch}) (Mini-Batch)样本,通过计算批量内样本的梯度均值,并替代 ∇ θ J ( θ ) \nabla_{\theta} \mathcal J(\theta) ∇θJ(θ)作为当前迭代步骤的梯度结果:
∇ θ J ( θ ) ≈ G = 1 m ′ ∑ j = 1 m ′ ∇ θ L [ x ( i ) , y ( i ) ; θ ] \nabla_{\theta} \mathcal J(\theta) \approx\mathcal G = \frac{1}{m'} \sum_{j=1}^{m'}\nabla_{\theta} \mathcal L[x^{(i)},y^{(i)};\theta] ∇θJ(θ)≈G=m′1j=1∑m′∇θL[x(i),y(i);θ]
我们发现:这种方法与随机森林中的 Boostrapping \text{Boostrapping} Boostrapping采样方法有着异曲同工之妙。其中 Boostrapping \text{Boostrapping} Boostrapping采样方法的采样集合 D ′ \mathcal D' D′与原式集合 D \mathcal D D中,如果 D \mathcal D D中的样本数量趋近于无穷大,那么 D ‘ \mathcal D‘ D‘中始终不会从 D \mathcal D D采样的概率是:
lim N ⇒ ∞ ( 1 − 1 N ) N = 1 e ≈ 0.368 \mathop{\lim}\limits_{N \Rightarrow \infty} (1 - \frac{1}{N})^N = \frac{1}{e} \approx 0.368 N⇒∞lim(1−N1)N=e1≈0.368
虽然在随机梯度下降中仅使用随机采样以获取小批量样本,但由于各迭代步骤产生的小批量样本均服从独立同分布,因而同样可以得到梯度的无偏估计。
关于随机梯度下降在第 k k k个训练迭代的更新步骤表示如下:
初始化步骤:学习率 ϵ k \epsilon_k ϵk;初始参数 θ \theta θ;
迭代过程:
其中
f ( ⋅ ) f(\cdot) f(⋅)则表示模型,那么
f ( x ( j ) ; θ ) f(x^{(j)};\theta) f(x(j);θ)则表示模型关于
x ( i ) x^{(i)} x(i)预测结果。
一般情况下,随机梯度下降算法使用使用固定的学习率,在真实迭代过程中:有必要随着迭代步骤的推移逐渐降低学习率。我们记第 k k k次迭代步骤的学习率结果为 ϵ k \epsilon_k ϵk;在实践过程中,给定初始学习率 ϵ 0 \epsilon_0 ϵ0,学习率衰减的迭代次数 τ \tau τ;衰减系数 α \alpha α,第 k k k次迭代步骤的学习率 ϵ k \epsilon_k ϵk可表示为:
在该公式中,迭代步骤
k < τ k < \tau k<τ;
ϵ k = ( 1 − α ) ϵ 0 + α ⋅ ϵ τ α = k τ \epsilon_k = (1 - \alpha) \epsilon_0 + \alpha \cdot \epsilon_{\tau} \quad \alpha = \frac{k}{\tau} ϵk=(1−α)ϵ0+α⋅ϵτα=τk
这样得到学习率的效果是:在 τ \tau τ次迭代步骤之前,学习率会呈现线性衰减;当迭代步骤 k > τ k > \tau k>τ时,学习率呈现稳定状态。