在衡量机器学习模型的效用(比如 优化误差、泛化误差 等,我们在这里把这些东西统称为“效用”)的时候,优化和泛化理论 是很重要的工具,用来分析差分隐私模型的各种风险界(像 population risk 和 empirical risk)。
其中,在分析泛化误差的时候,算法稳定性理论,algorithmic stability theory 在近几年很受研究者关注,因为它是 算法相关 的,和传统复杂度理论、搜索空间那一套有点不太一样。
本文基于 Bousquet 2002年发表于 JMLR 上的文章 Stability and Generalization 对一些 稳定性定义 以及 它们与泛化误差之间的关系 进行介绍,构建一个稳定性理论基本框架。
本文试图对稳定性理论进行扫盲式科普,因此不对证明细节进行关注,有兴趣的朋友们可以参考原论文(在网上应该很容易就能找到,如果有朋友找不到还有兴趣的话可以私信我把文章发过去),也欢迎大家一起讨论。
在介绍各种算法稳定性指标之前,我们首先大概了解一下稳定性究竟是个什么样的东西。
算法稳定性实质上是一种 敏感度(sensitivity),它表征了输入的变化会在多大程度上导致系统输出的变化。
举个例子,假设损失函数在参数 θ , θ ′ \theta,\theta' θ,θ′上的值分别为 ℓ ( θ ) , ℓ ( θ ′ ) \ell(\theta),\ell(\theta') ℓ(θ),ℓ(θ′),那么就可以(粗浅地)定义其敏感度为 ∣ ℓ ( θ ) − ℓ ( θ ′ ) ∣ |\ell(\theta)-\ell(\theta')| ∣ℓ(θ)−ℓ(θ′)∣,这个值表征了 输入对损失函数值的影响(在这里我们只是举个例子,更细致的定义我们会在后文进行介绍)。
有了这个东西我们就可以发现,算法稳定性(敏感度)这个东西是与算法相关的,因为 θ , θ ′ \theta,\theta' θ,θ′ 可以看作算法输出的模型参数。
这就是稳定性理论与传统的复杂度理论不同的地方,复杂度理论关注整个搜索空间(函数空间),这个空间可能非常大,会导致求解出来的泛化误差同样很大。
接下来,我们面临的一个问题就是,对于一个算法,如何定义 θ \theta θ 和 θ ′ \theta' θ′。
首先定义样本规模为 m m m 的训练数据集 S S S,其中的数据样本 z i = ( x i , y i ) z_i=(x_i,y_i) zi=(xi,yi) 独立同分布采样于分布 D D D:
然后定义 移除和置换 数据点 z i z_i zi 的数据集:
其中 z i ′ z_i' zi′ 也是从分布 D D D 中采样并与 S S S 无关。
此外,为了度量算法的性能,定义如下指标:
期望误差(也就是我们平时所说的 population risk):
R ( A , S ) = E z [ ℓ ( A S , z ) ] , R(A,S)=\mathbb{E}_z[\ell(A_S,z)], R(A,S)=Ez[ℓ(AS,z)],其中 A S A_S AS 是算法 A A A 在数据集 S S S 上训练得到的模型。
然而,这个误差 R R R 并不能计算,因为分布 D D D 通常是未知的,因此需要定义基于可达数据集 S S S 的测度:
R e m p ( A , S ) = 1 m ∑ i = 1 m ℓ ( A S , z i ) . R_{emp}(A,S)=\frac{1}{m}\sum_{i=1}^m\ell(A_S,z_i). Remp(A,S)=m1i=1∑mℓ(AS,zi).
此外,传统上还有 leave-one-out (这个东西我实在不知道怎么翻译)定义:
(如果有朋友知道该怎么打出来\i并不吝赐教,博主不胜感激)
为了简单起见,后文将用如下的记号对上面介绍的三个定义进行简化:
R = R ( S ) = R ( A , S ) R e m p = R e m p ( S ) = R e m p ( A , S ) R l o o = R l o o ( S ) = R l o o ( A , S ) R=R(S)=R(A,S) \\ R_{emp}=R_{emp}(S)=R_{emp}(A,S)\\ R_{loo}=R_{loo}(S)=R_{loo}(A,S) R=R(S)=R(A,S)Remp=Remp(S)=Remp(A,S)Rloo=Rloo(S)=Rloo(A,S)
有了上面的定义,我们接下来就可以定义学习算法的稳定性了。
假设稳定性定义了在 原数据集 和 leave-one-out 数据集 上学习得到的模型参数之间的差别(损失函数上的差别上界:几乎所有的稳定性定义都在界定上界),这个差别定义在对数据集 S S S 和所取点 z z z 的期望上。
很容易可以发现,如上文所说,这个定义就是损失函数的一种敏感度,输入上的不同体现在参数上:是用原数据集训练得到的参数,还是用 leave-one-out 数据集训练得到的参数。
定义和上文中的假设稳定性类似,只是在计算损失函数敏感度的时候,将数据点取为 z i z_i zi :恰好是数据集差异的那一个数据样本。
相比于上面的两种稳定性定义,误差稳定性更弱,通过简单的期望和绝对值变换就能得到:
∣ E [ ℓ ( θ , z ) ] − E [ ℓ ( θ ′ , z ) ] ∣ = ∣ E [ ℓ ( θ , z ) − ℓ ( θ ′ , z ) ] ∣ ≤ E [ ∣ ℓ ( θ , z ) − ℓ ( θ ′ , z ) ∣ ] , |\mathbb{E}[\ell(\theta,z)]-\mathbb{E}[\ell(\theta',z)]|=|\mathbb{E}[\ell(\theta,z)-\ell(\theta',z)]|\leq\mathbb{E}[|\ell(\theta,z)-\ell(\theta',z)|], ∣E[ℓ(θ,z)]−E[ℓ(θ′,z)]∣=∣E[ℓ(θ,z)−ℓ(θ′,z)]∣≤E[∣ℓ(θ,z)−ℓ(θ′,z)∣],把相应参数带入给 θ , θ ′ \theta,\theta' θ,θ′ 就能发现 假设稳定性是能推出误差稳定性的。
在 Stability and Generalization 这篇文章里,一致稳定性是这样定义的,里面涉及到的无穷范数 ∥ ⋅ ∥ ∞ \|\cdot\|_\infty ∥⋅∥∞ 其实就是对所有数据点 z z z 取最大值。
可以看到,一致稳定性并没有进行 取期望 这一项操作,因此它是上面这几种稳定性里面 最强 的定义。
根据定义,我们可以得到: 一致稳定性 ⇒ \quad\Rightarrow\quad ⇒ 假设稳定性 ⇒ \quad\Rightarrow\quad ⇒ 误差稳定性。
【题外话】
一致稳定性 Uniform Stability 是后面很多工作里重点研究的对象,因为它定义最严苛,也可以得到更优的泛化理论结果。
后来,研究者基于一致稳定性的概念提出了 一致参数稳定性(Uniform Argument Stability),定义在参数上,即:
∥ A S − A S − i ∥ 2 ≤ β , \|A_S-A_S^{-i}\|_2\leq\beta, ∥AS−AS−i∥2≤β,其中 ∥ ⋅ ∥ 2 \|\cdot\|_2 ∥⋅∥2 表示二范数(实在是打不出反斜杠所以用 − i -i −i代替了呜呜呜)。
根据 G G G-Lipschitz 连续性的定义,可以很容易地推导出: β \beta β-一致参数稳定性 ⇒ \quad\Rightarrow\quad ⇒ G β G\beta Gβ-一致稳定性
【题外话中题外话】
Lipschitz 连续性定义如下:
若损失函数 ℓ ( θ , z ) \ell(\theta,z) ℓ(θ,z) 对任意 θ 1 , θ 2 , z \theta_1,\theta_2,z θ1,θ2,z 满足:
∣ ℓ ( θ 1 , z ) − ℓ ( θ 2 , z ) ∣ ≤ G ∥ θ 1 − θ 2 ∥ 2 , |\ell(\theta_1,z)-\ell(\theta_2,z)|\leq G\|\theta_1-\theta_2\|_2, ∣ℓ(θ1,z)−ℓ(θ2,z)∣≤G∥θ1−θ2∥2,则称损失函数 ℓ ( θ , z ) \ell(\theta,z) ℓ(θ,z) 满足 G G G-Lipschitz 连续性。
Lipschitz 连续性确定了损失函数梯度的上界,即:对任意 θ , z \theta,z θ,z, ∥ ∇ θ ℓ ( θ , z ) ∥ 2 ≤ G \|\nabla_\theta\ell(\theta,z)\|_2\leq G ∥∇θℓ(θ,z)∥2≤G。
有了这个定义,上面提到的一致参数稳定性和一致稳定性之间的关系就一目了然了。
【题外话结束】
有了上述的几个稳定性条件,本文给出了基于 假设稳定性 和 一致稳定性 的泛化误差界,这里选了两个具有代表性的结果分别在下面的 Theorem 11 和 Theorem 12 中给出:
上面提到的这两个定理中, R − R e m p R-R_{emp} R−Remp 就是泛化误差。
两个定理的证明都用到了一些中心不等式(比如 Chebyshev,McDiarmid 不等式等),有兴趣的朋友们可以参看 Stability and Generalization 论文原文,在这里我们不展开介绍,只看这两个结果。
我们可以看到,假设稳定性给出的高概率结果是 多项式级别 收敛的(Theorem 11 中的 1 / δ 1/\delta 1/δ);而一致稳定性给出的高概率结果是 指数级别 收敛的(Theorem 12 中的 ln ( 1 / δ ) \ln(1/\delta) ln(1/δ)),因此后者给出了更好的理论结果。
除此之外,我们可以发现上面两个定理都需要比较小的稳定性系数才能保证泛化误差结果是有意义的(特别是 Theorem 12,里面存在一项 m β m\beta mβ),比如 β = O ( 1 / m ) \beta=\mathcal{O}(1/m) β=O(1/m)。
在这样的情况下,泛化误差才能达到 O ( 1 / m ) \mathcal{O}(1/\sqrt{m}) O(1/m) 这样的一个量级。
本文还给出了一些例子证明在很多模型中,稳定性系数都能保证是小于或等于 O ( 1 / m ) \mathcal{O}(1/m) O(1/m) 的,以保证上文中的claims有意义,在这里我们不对其进行细致讨论,感兴趣的朋友们可以参看 Stability and Generalization 原文。
此外,本文并没有针对 误差稳定性 分析得到的泛化误差结果,原因是这样的:
如上文中提到的,误差稳定性是很弱的一个稳定性定义,因此 没有办法保证算法 A A A 的泛化误差随着训练样本量 m m m 趋于无穷而减小至0(这是 Kutin, Niyoogi 在2012年的一篇论文 Almost-everywhere algorithmic stability and generalization error 中提到的)。
因此本文并没有给出基于误差稳定性的泛化误差结果。
本人目前所研究的领域也是差分隐私方向的优化和泛化,欢迎大家在 差分隐私 和 优化泛化理论 两个方向一同交流、讨论。
如果本文中某些表述或理解有误,欢迎各位大神批评指正。
谢谢!