Introduction
《Supervised Descent Method and its Applications to Face Alignment》是卡内基梅隆大学机器人研究所(The Robotics Institute)在CVPR2013发表的一篇论文,目前引用量有1K+。这篇论文提出了一种监督下降方法(SDM)用于最小化非线性最小二乘(non-linear Least Squared, NLS)函数,该方法的思想是使模型能够学习梯度下降的方向。论文把SDM应用到人脸对齐任务中,并得到了很好的效果。
Motivation
许多计算机视觉问题的解决方法都用到非线性的优化方法。对于平滑函数的非线性优化问题,一般认为牛顿法是最鲁棒、最快、最可靠的方法。对于求单变量函数f(x)f(x)f(x)最小值,牛顿法的变量更新过程是
(1)xk+1=xk−f′(xk)f′′(x) x_{k+1} = x_k - \frac{f'(x_k)}{f''(x)} \tag{1} xk+1=xk−f′′(x)f′(xk)(1)
对于多变量函数f(x)f(x)f(x)来说,更新过程是
(2)xk+1=xk−H−1(xk)Jf(xk) x_{k+1} = x_k - \mathbf{H}^{-1}(x_k)\mathbf{J}_f(x_k) \tag{2} xk+1=xk−H−1(xk)Jf(xk)(2)
但是,牛顿法有三个主要的缺点。首先,函数可能不是解析可微分的,而且使用数值计算法算梯度是不切实际的。第二,Hessian矩阵可能非常大,求变量维度是p的函数的Hessian的逆矩阵需要O(p3)O(p^3)O(p3)的时间复杂度和O(p2)O(p^2)O(p2)的空间复杂度。第三,Hessian的行列式不是处处都大于0(小于0将得到鞍点)。因此,论文提出了SDM方法。
SDM
下图展示了SDM的主要思想。
有一个需要优化的函数f(x)=∥h(x)−y∥2f(x) = \lVert h(x) - y \rVert^2f(x)=∥h(x)−y∥2,这个函数的解释是找到一个x∗x_*x∗,使得h(x∗)h(x_*)h(x∗)接近y。假设f(x)f(x)f(x)的函数曲线是
一开始x在x0x_0x0的位置,为了使得f(x)f(x)f(x)降到最低值,x0x_0x0需要移动Δx∗\Delta x_*Δx∗,SDM就学习从x0x_0x0到梯度Δx\Delta xΔx的映射Δx=g(x)\Delta x = g(x)Δx=g(x),学习的方法是回归Δx=Rx+b\Delta x = Rx + bΔx=Rx+b。准确的说,SDM学习的是从x0x_0x0和y到Δx∗\Delta x_*Δx∗的映射,因为y也控制着最优解x∗x_*x∗的位置。但是,在测试时,y是不知道的,因此,SDM把y的信息包含在R和b中。
现在,f(x)f(x)f(x)的y是变动的,我们可能有几个y,这样,我们得到几个f(x)f(x)f(x)的曲线,如下图
因为y的不同,导致相同的x0x_0x0在不同的f(x)f(x)f(x)需要映射成不同的Δx∗\Delta x_*Δx∗和Δx∗2\Delta x_*^2Δx∗2。如果知道y,就能准确地知道x0x_0x0映射成哪个值,但是测试时y是不知道的(Δx=Rx+b\Delta x = Rx + bΔx=Rx+b),因此,SDM学习的映射可能把x0x_0x0映射成其中一个值,更好的做法可能是映射成Δx∗\Delta x_*Δx∗和Δx2\Delta_x^2Δx2的均值。因此,SDM一次回归预测得到的Δx\Delta xΔx不是最好的梯度,但可以多次回归使得xxx靠近x∗x_*x∗。
上面就是SDM的学习梯度的思想。下面是论文中的一个图
训练数据包含在不同位置yiy^iyi的函数集{
f(x,yi)}\{ f(x, y^i) \}{
f(x,yi)}