假设我们想搜索光滑函数 f(x) 的最小值,常见的方案是梯度下降(Gradient Descent),即按照如下格式进行迭代 :
xt+1=xt−α∇xtf(xt)
如果 f(x) 关于 x 的凸的,那么梯度下降通常能够找到最小值点;相反,则通常只能收敛到一个 “ 驻点 “——即梯度为 0 的点,比较理想的情况下能收敛到一个极小值(局部最小值)点。这里没有对极小值和最小值做严格区分,因为在深度学习中,即便是收敛到一个极小值点也是很难得的了。
如果将 α 记为 Δt,将 xt+1 记为 xt+Δt,那么考虑 Δt→0 的极限,那么式 (1) 将变为一个 ODE(This page is not published):
dtdxt=−∇xtf(xt)
xt+1−xt⇒xt+1−xt⇒Δt→0limΔtxt+1−xt=−α∇xtf(xt)=−Δt∇xtf(xt)=dtdxt=−∇xtf(xt)
求解这个 ODE 所得到的轨迹 xt,我们就称为 ” 梯度流(Gradient Flow)“,也就是说,梯度流是梯度下降在寻找最小值过程中的轨迹。在式 (2) 成立前提下,我们还有:
dtdf(xt)=⟨∇xtf(xt),dtdxt⟩=−∥∇xtf(xt)∥2≤0
dtdf(xt)⇒dtdf(xt)=dxtdf(xt)dtdxt链式法则=⟨∇xtf(xt),dtdxt⟩其中的 dtdxt 又可以被 ODE 代换掉,所以继续得到:
dtdf(xt)=−∥∇xtf(xt)∥2Q.E.D
所以只要 ∇xtf(xt)=0,梯度下降总是能让 f(x) 变小的方向前进。
相关资料