非线性子空间

重参数化

重参数化就是:用一组新的参数来表示原来的参数,让问题更容易求解它是一种建模与求解的思路。

例如:

$$\min_{X\in \mathcal X} f(X) \to \min_{z\in \mathcal Z} f(g(z))$$

从上式求出\(z^*\)后,然后通过\(x^*=g(z^*)\)得到原问题的解,这里的变化需要覆盖原来的可行域,即\(\mathcal X \subseteq \{g(z):z\in \mathcal Z\}\),如果要求参数一一对应,那就需要保证可逆性。


例1、考虑一个简单的函数:

$$f(x,y) = x^2 + 10000y^2$$

直接对它进行梯度下降,会发现它在\(x\)方向比较缓,在\(y\)处又太陡,普通的梯度下降会容易来回震荡,或者被迫使用很小的步长。

如果我们进行重参数化:\(u = x,v = 100y\),那么上式可以变成:

$$f(x,y) = \tilde f(u,v) = u^2+v^2$$

对这个式子进行优化就容易得多了。


例2、借助重参数方法可以把随机采样写成可求导的表达式:

对于一个服从正态分布的随机采样\(z\sim N(\mu , \sigma^2)\),我们可以把它写成:

$$z = \mu + \epsilon \sigma, \quad \epsilon \sim N(0,1)$$

于是就有\(\frac{\partial z}{\partial \mu} = 1,\quad \frac{\partial z}{\partial \sigma} = \epsilon\)。在适当的可微性条件下,就可以通过这个表达式估计期望损失的梯度,并进行反向传播。


注:即使表达的是同一个优化问题,参数的选择也会显著影响算法的运行表现。

分析梯度可以发现,满足:

$$\nabla _z f(g(z)) = J_g(z)^T \nabla_Xf(X)$$


更新量的重参数化

我们考虑一般的梯度下降分析,对于更新量\(\Delta W\):

$$L(\Delta W ) = F(W+\Delta W)$$

对上式进行梯度下降:\(\Delta W _{t+1} = \Delta W_{t}-\eta \nabla F(W+\Delta W_{t})\)

记:\(X_{t} = W+\Delta W_t\),就有\(X_{t+1} = X_{t}-\eta \nabla F(X_t)\)

然后我们对上述分析进行重参数化:

$$\Delta W = f(w),\quad \tilde L(w) = F(W+f(w))$$

我们定义雅可比矩阵:\(J_f(w) = \frac{\partial f(w)}{\partial w}\),那么根据链式法则有:

$$\nabla_w F(W+f(w)) = J_f(w)^T\nabla F(W+f(w))$$

即有:\(w_{t+1} = w_t -\eta J_t^Tg_t\)

那么作用在原参数空间,具体有什么变化呢?

$$X_{t+1}-X_{t} = W+f(w_{t+1})-W-f(w_{t})=f(w_{t+1})-f(w_t)$$

我们对上式进行一阶展开:

$$f(w_{t+1})-f(w_t) \approx J_t(w_{t+1}-w_t) = -\eta J_tJ_t^T g_t$$

因此,就有:

$$X_{t+1}-X_t \approx -\eta J_tJ_t^Tg_t$$

也就是说,在\(w\)空间中,梯度多乘一个\(J_t\),映射回原空间,更新方向多乘了一个\(J_tJ_t^T\)。


例三、Mirror Descent(镜像下降)

一般的梯度下降实际上是在求这个式子:

$$X_{t+1} = \arg\min_X \left[{\langle\nabla F(X_t),X-X_t\rangle} +{\frac{1}{2\eta}\|X-X_t\|_2^2} \right].$$

而镜像下降改变了惩罚项的设置:

$$X_{t+1} = \arg\min_{X\in\mathcal C} \left[ \langle\nabla F(X_t),X-X_t\rangle + \frac1\eta D_\psi(X,X_t) \right]. \quad D_\psi(X,Y) = \psi(X)-\psi(Y) -\langle\nabla\psi(Y),X-Y\rangle.$$

镜像下降的的\(\dot X=-[\nabla^2\psi(X)]^{-1}\nabla F(X).\)那么令:

$$J_f(w)J_f(w)^\top = \left[\nabla^2\psi\bigl(W+f(w)\bigr)\right]^{-1},$$

就可以用重参数化的方式来对镜像下降进行研究。


更新量重参数化推广:时序

我们在这一节中把\(f(w)\)推广成时序的函数\(f_t(w)\),以此进一步研究优化轨迹。

这里我们基于

$$W_t = W_0 + f_{t}(w_{t})$$

的形式进行分析。


例四、Momentum GD

我们定义\(f_t(w) = w + b_t,\quad X_t = f_t(w_t)\),这里的\(b_t\)可以看作是一个坐标系的位置,由于\(J_{f_t} = I\),故\(\nabla_w F(f_t(w)) = \nabla F(X_t) = g_t\),设\(\rho = 1-\beta\),则有更新规则:

$$\begin{aligned} w_{t+1}&=w_t-\eta\beta g_t,\\ b_{t+1}&=b_t+\rho(X_t-X_{t-1}). \end{aligned}$$

我们知道原参数空间的更新量为

$$f_{t+1}(w_{t+1})-f_t(w_t) = (w_{t+1}-w_{t})+(b_{t+1}-b_t) = -\eta \beta g_t +(1-\beta) (X_t-X_{t-1}) = -\eta \beta g_t + \eta (1-\beta)m_{t-1}$$

即\(X_{t+1}-X_t = -\eta \big ( \beta g_t + (1-\beta m_{t-1}) \big )\),即为Momentum GD


除此以外,还有一种时序形式也是需要注意的:

$$W_t = W_0 + f_0(w_0)+ f_1(w_1)+...+f_{t-1}(w_{t-1})$$

的形式进行分析。也就是每一步都针对不同的非线性函数进行梯度下降分析。


例五、RMSprop

取\(0\le \rho < 1, \epsilon >0\),二阶矩初值为零,运算均逐元素进行。由历史状态定义:

$$\begin{aligned} &c_t=\rho v_{t-1},\quad a_t=(\sqrt{c_t}+\epsilon)^{-1/2},\quad g_t=\nabla F(W_t),\\ &f_t(w)=\frac{w/a_t}{\sqrt{c_t+(1-\rho)\left(w/(\eta a_t)\right)^2}+\epsilon}. \end{aligned}$$

每步从\(w=0\)对\(L_t(w) = F(W_t+f_t(w))\)做一次 GD;\(f_t(0) = 0\),零点雅可比为\(diag(a_t)\),故:

$$\begin{aligned} w_t&=-\eta\nabla_w L_t(0)=-\eta a_t\odot g_t,\qquad v_t=\rho v_{t-1}+(1-\rho)g_t^{\odot 2},\\& W_{t+1}-W_t=f_t(w_t)=-\eta\frac{g_t}{\sqrt{v_t}+\epsilon}. \end{aligned}$$

映射仅依赖历史统计,更新量逐步累加;有限步长下精确等价于 RMSprop,无需一阶近似。