热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

新算法分析

本文主要介绍关于算法,机器学习,人工智能的知识点,对【算法稳定性理论(algorithmicstabilitytheory)与泛化误差(generalizationerror)】和【新算法分析】

本文主要介绍关于算法,机器学习,人工智能的知识点,对【算法稳定性理论(algorithmic stability theory)与泛化误差(generalization error)】和【新算法分析】有兴趣的朋友可以看下由【echoKangYL】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的机器学习,优化与泛化理论相关技术问题。

新算法分析

在衡量机器学习模型的效用(比如 优化误差、泛化误差 等,我们在这里把这些东西统称为“效用”)的时候,优化和泛化理论 是很重要的工具,用来分析差分隐私模型的各种风险界(像 population riskempirical 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=1m(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)

有了上面的定义,我们接下来就可以定义学习算法的稳定性了。

【三】算法稳定性 1. 假设稳定性( Hypothesis Stability

新算法分析


假设稳定性定义了在 原数据集leave-one-out 数据集 上学习得到的模型参数之间的差别(损失函数上的差别上界: 几乎所有的稳定性定义都在界定上界),这个差别定义在对数据集 S S S 和所取点 z z z 的期望上。

很容易可以发现,如上文所说,这个定义就是损失函数的一种敏感度,输入上的不同体现在参数上:是用原数据集训练得到的参数,还是用 leave-one-out 数据集训练得到的参数。

2. 单点假设稳定性( Pointwise Hypothesis Stability

新算法分析


定义和上文中的假设稳定性类似,只是在计算损失函数敏感度的时候,将数据点取为 z i z_i zi :恰好是数据集差异的那一个数据样本。

3. 误差稳定性( Error Stability

新算法分析


相比于上面的两种稳定性定义,误差稳定性 更弱,通过简单的期望和绝对值变换就能得到:
∣ 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' θ,θ 就能发现 假设稳定性是能推出误差稳定性的

4. 一致稳定性( Uniform Stability

新算法分析


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, ASASi2β,其中 ∥ ⋅ ∥ 2 \|\cdot\|_2 2 表示二范数(实在是打不出反斜杠所以用 − i -i i代替了呜呜呜)。

根据 G G G-Lipschitz 连续性的定义,可以很容易地推导出: β \beta β-一致参数稳定性 ⇒ \quad\Rightarrow\quad G β G\beta -一致稳定性

【题外话中题外话】
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θ22,则称损失函数 ℓ ( θ , 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)2G

有了这个定义,上面提到的一致参数稳定性和一致稳定性之间的关系就一目了然了。
【题外话结束】

【四】稳定性与泛化误差

有了上述的几个稳定性条件,本文给出了基于 假设稳定性一致稳定性 的泛化误差界,这里选了两个具有代表性的结果分别在下面的 Theorem 11Theorem 12 中给出:

新算法分析


新算法分析


上面提到的这两个定理中, R − R e m p R-R_{emp} RRemp 就是泛化误差。

两个定理的证明都用到了一些中心不等式(比如 ChebyshevMcDiarmid 不等式等),有兴趣的朋友们可以参看 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 中提到的)。
因此本文并没有给出基于误差稳定性的泛化误差结果。

本人目前所研究的领域也是差分隐私方向的优化和泛化,欢迎大家在 差分隐私优化泛化理论 两个方向一同交流、讨论。

如果本文中某些表述或理解有误,欢迎各位大神批评指正。
谢谢!

本文《算法稳定性理论(algorithmic stability theory)与泛化误差(generalization error)》版权归echoKangYL所有,引用算法稳定性理论(algorithmic stability theory)与泛化误差(generalization error)需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
author-avatar
风行天下的石头_467
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有