泛函梯度下降
我们对线性函数$f(x)=\omega^Tx$的梯度下降很熟悉。当我们定义了损失函数$L$,梯度将会根据下面的更新步骤下降($\eta$称为学习率):
$$w \rightarrow w-\eta \nabla L(w)$$
该式表明我们在权重空间中进行移动。损失函数的一个例子是:
$$L(w)=\sum_{i=1}^n\left(y_i-w^T x_i\right)^2+\lambda|w|^2$$
其中,第一项(L2项)测量了$f(x)$与$y$有多近,第二项(正则项)说明了需优化的函数$f$的“复杂程度”。假设我们想将$L$扩展到线性函数$f$以外,比如想要最小化:
$$L(f)=\sum_{i=1}^n\left(y_i-f\left(x_i\right)\right)^2+\lambda|f|^2$$
其中,$|f|^2$依旧是作为正则项,并且更新公式为
$$f \rightarrow f-\eta \nabla L(f)$$
该式表明我们在函数空间中进行移动,而不是权重!事实证明,这是完全可能的!它的名字叫做“函数”梯度下降,或函数空间中的梯度下降。一个可能有的问题是:为什么要这样做?每个函数都可以参数化,我们可以在参数空间中进行“普通”梯度下降?答案是:是的,你总是可以!一般来说,您可以通过多种方式对任何函数进行参数化,每个参数化都会在梯度下降中产生不同的步骤(以及每个步骤中的不同函数)。其优点是,一些参数化时非凸的损失函数在函数空间中可以是凸的:这意味着函数梯度下降实际上可以收敛到全局极小值,而“普通”梯度下降可能会陷入局部极小值或鞍点。那么,函数梯度下降意味着什么?
# 泛函(functionals)
泛函是在函数上定义的函数,返回实值。例如:
- 评估泛函:$E_x(f)=f(x)$
- 求和泛函:$S_{x 1}, \ldots, x_n(f)=\sum_{i=1}^n f\left(x_i\right) d x$
- 积分泛函:$I_{[a, b]}(f)=\int_a^b f(x) d x$
由此可见,一个函数$g: \mathbb{R} \rightarrow \mathbb{R}$与一个泛函的组合也是一个函数。上面定义的损失函数$L(f)$是一个泛函!
# 再生核Hilbert空间(RKHS)
事实证明,当函数来自一个特殊的集合(即,再生核希尔伯特空间)时,是特别方便的。希尔伯特空间可以被认为是向量空间,在这里我们有两个元素之间内积的概念。(这不是完整的定义,但这是我们需要的)。
# 核
核$K: X \times X \rightarrow \mathbb{R}$是生成点积的函数
对称性:对于任何$x_i, x_j \in X$:
$$K\left(x_i, x_j\right)=K\left(x_j, x_i\right)$$
正半定:对于任何$x_1, \ldots, x_n \in X$,矩阵$K_M$的定义为
$$K_{M_{i j}}=K\left(x_i, x_j\right)$$
该矩阵是正半定的。注意,这也意味着,总是有$K\left(x_i, x_j\right)≥0$
结果(Mercer's condition)这些条件等价于
$$K\left(x_i, x_j\right)=\phi\left(x_i\right) \cdot \phi\left(x_j\right)$$
其中,是$\phi$有时称为“特征映射”的函数。因此,核可以被认为是某些特征空间中的点积(范围为$\phi$)。与点积类似,核测量两个输入之间的相似性。常见的核函数有:
- 线性核:$K\left(x_i, x_j\right)=x_i \cdot x_j$
- 多项式核:$K\left(x_i, x_j\right)=\left(x_i \cdot x_j+c\right)^d$
- RBF核(宽度为$\sigma$):$K\left(x_i, x_j\right)=\exp \left(-\frac{\left|x_i-x_j\right|^2}{2 \sigma^2}\right)$
尝试导出这些内核的相关特征映射是什么!
# RKHS定义
在固定核$K$的基础上得到的再现内核希尔伯特空间是一个函数空间,其中每个函数$f \in H_K$ 都是在某个 "中心 "$x_{Cf}$处评估的核$K$的一些线性组合:
$$f(x)=\sum_{i=1}^n \alpha_{f_i} K\left(x, x_{C f_i}\right)$$
或者,忽略参数$x$:
$$f(x)=\sum_{i=1}^n \alpha_{f_i} K\left(, x_{C f_i}\right)$$
对于核$K$相关的再生核希尔伯特空间称为$H_K$。从上述的定义中,每个函数完全由系数$\alpha_{f}$和中心$x_{Cf}$决定。注意,中心的数量(=$\alpha_{f}$的维度)在每个函数都可以变化。我们现在定义$H_K$中的内积(点积):
$$f \cdot g=\sum_{i=1}^{n_f} \sum_{j=1}^{n_g} \alpha_{f_i} \alpha_{g_j} K\left(x_{C f_i}, x_{C g_j}\right)=\alpha_f K_{f g} \alpha_g$$
其中,$K_{f g_{i j}}=K\left(x_{C f_i}, x_{C g_j}\right)$
这个内积给出了范数$|\cdot|$:
$$|f|^2=f \cdot f=\alpha_f K_{f f} \alpha_f \geq 0$$
为什么我们使用“再生”这个术语?这是因为我们可以通过取$f$与 "再生核 "函数$K(x,⋅) \in H_K$的内积来 "再生 "$f \in H_K$在任何$x$的值。我们已经知道了如何定义内积以及任何$f \in H_K$的范数$|f|$。但是,为了通过梯度下降最小化,我们需要定义导数。
# 泛函导数
一个函数$f: \mathbb{R} \rightarrow \mathbb{R}$的导数$Df$的定义之一是:
$$\lim _{|h| \rightarrow 0} \frac{|f(x+h)-(f(x)+D f(x) \cdot h)|}{|h|}=0$$
其中,$Df(x)$是长度为$n$的行向量,用它来取方向$h$的点积。我们不再在$\mathbb{R}^n$中工作,但是这个定义告诉我们,在$H_K$中的一个泛函$E$的导数$DE$必须满足:
$$\lim _{|h| \rightarrow 0} \frac{|E(x+h)-(E(x)+D E(x) \cdot h)|}{|h|}=0$$
其中,$h$和$x$是$H_K$中的函数,而不是点。这意味着$DE(x)$也是个函数!(回想一下,函数的添加是逐点进行的。)
【泛函是怎么改动一点点的呢?】
# 链式法则
非常幸运的是,我们也有链式规则! 如前所述,如果$E$是一个泛函,且$g: \mathbb{R} \rightarrow \mathbb{R}$是可微的,那么$g(E$)也是一个泛函,有导数:
$$D(g(E))(f)=g^{\prime}(E(f)) D E(f)$$
还有最后一点需要注意。当我们在“普通”梯度下降中采取步骤时,我们沿着梯度向量的负值移动,因为这是与梯度的点积最小的方向。不管这个向量指向什么!在某种意义上,我们不受任何方向的限制。这是因为我们的基础域是$\mathbb{R}^n$。
但是,在泛函梯度下降中,我们被限制在$H_K$。我们如何保证在沿着$DL(f)$移动时,我们不会偏离$H_K$?确保这一点的一个方法是证明我们总是有$DL(f) \in H_K$。(这对我们上面的例子来说是真的!)。实际上我们在定义中也隐含了这个假设)。然后,$H_K$在加法(和标量乘法)下的闭合确保了在每次迭代中,我们当前的函数$f$都在$H_K$中。
上面的Boosting Algorithms as Gradient Descent论文没有使用再生核Hilbert空间,实际上适用于更一般的函数集。这就是为什么他们提到沿着梯度移动并不总是可能的事实。相反,它们沿着梯度点积最小的方向移动,在所有方向之间移动,使它们保持在它们的函数范围内。通过再生核Hilbert空间,这不是一个问题:幸运的是,我们不局限于沿着梯度的负方向移动。
# $H_K$在导数中是封闭的
如何$E$是$H_K$中的一个泛函,且$f \in H_K$,那么可以有,$DE(f) \in H_K$
定义导数$DE^*(f)$为泛函:
$$\lim _{|h| \rightarrow 0} \frac{|E(f+h)-(E(f)+D E(f) \cdot h)|}{|h|}=0$$
我区分了$DE^*(f)$(泛函)和$DE(f)$(函数)。我们想要展示,事实上有:
$$D E^*(f)(h)=\langle h, D E(f)\rangle_K$$
注意,$DE^*(f)$是一个线性泛函!为什么?使用上述定义(以及范数和极限的性质):
- $D E^(f)(c h)=c \cdot D E^(f)(h) \text { where } c \in \mathbb{R}$
- $D E^(f)(h+g)=D E^(f)(h)+D E^*(f)(g)$
这并不奇怪,我们用$DE^*(f)$去给出沿每个方向$h$围绕$f$的“最佳”线性近似。Riesz表示定理告诉我们,希尔伯特空间上的每个线性泛函$L$,对于Hilbert空间中的一些$v$,实际上都是这样的:
$$L=\langle\cdot, v\rangle$$
其中,$\langle\cdot, \cdot\rangle$是Hilbert空间中的内积。对于一个RKHS,内积由核$K$给出,对于一些$DE(f) \in H_K$
$$D E^*(f)=\langle\cdot, D E(f)\rangle_K$$
这意味着,我们可以写出:
$$D E^*(f)(h)=\langle h, D E(f)\rangle_K$$
其中,$DE(f) \in H_K$,证毕。
# 结论
我们已经看到:
- 为什么函数梯度下降是有用的
- 做函数梯度下降意味着什么
- 我们如何做泛函梯度