Danskin’s Theorem

Statement 1

  • 假设 (\phi(x,z)) 为含有两个变量的连续函数: (\phi : \mathbb{R}^n \times Z \rightarrow \mathbb{R}),其中 (Z \subset \mathbb{R}^m) 为紧集。
  • 进一步假设,对于任意 (z\in Z),(\phi(x,z)) 是关于 (x) 的凸函数。

在这两个条件下,Danskin 定理给出了关于函数 (f(x)=\max_{z\in Z} \phi(x,z)) 的凸性和可微性的结论,为了描述这些结论,我们需要定义一组最大化点的集合 (Z_0(x)):

[Z_0(x) = \left{\overline{z}:\phi(x,\overline{z})=\max_{z\in Z}\phi(x,z) \right} ]

Danskin 定理给出以下结论:

[D_y f(x) = \max_{z\in Z_0(x)} \phi'(x,z;y) ]

[\frac{\partial f}{\partial x} = \frac{\partial \phi(x,\overline{z})}{\partial x} ]

[\partial f(x) = \textbf{conv} \left{\frac{\partial \phi(x,z)}{\partial x}:z\in Z_0(x) \right} ]

Statement 2

  • (\mathcal{S}) 为非空、紧、拓扑空间
  • 函数(g: \mathbb{R}^n\times \mathcal{S} \rightarrow \mathbb{R}) 满足:(g(\cdot, \delta)) 对于任意(\delta \in \mathcal{S}) 都是可微的,并且(\triangledown_\theta g(\theta, \delta)) 在(\mathbb{R}^n\times \mathcal{S}) 上是连续的
  • (\delta^{*}(\theta) = {\delta \in \arg\max_{\delta \in\mathcal{S} }g(\theta,\delta)})

那么函数 (\phi(\theta) = \max_{\delta\in\mathcal{S}}g(\theta,\delta)) 是局部 Lipschitz 连续的,且它的方向导数(directional derivatives)满足:

[\phi'(\theta, h) = \sup_{\delta \in \delta^{*}(\theta)} h^{T} \triangledown_\theta g(\theta, \delta) \tag{1} ]

其中,(\sup) 表示上确界/最小上界。

Application(PGD)

对于公式(1),如果集合 (\delta^(\theta) = {\delta^_\theta}) 只有一个元素,那么(1)可以写成:

[\triangledown\phi(\theta) = \triangledown_{\theta} g(\theta, \delta^{*}_{\theta}) \tag{2} ]

可以看出,(\phi(\theta)) 与 (g(\theta, \delta^{*}_{\theta})) 局部相同,且梯队也是局部的概念,所以它俩的梯度是相同的。

据此PGD作者又提供了以下推论,来证明通过计算内部优化器的梯度来计算鞍点的梯度是可行的:
推论:设 (\overline{\delta} = \max_\delta L(\theta,x+\delta,y)) 且 (\overline{\delta} \in \mathcal{S}),那么只要 (\overline{\delta}) 不为零,(-\triangledown_\theta L(\theta,x+\overline{\delta},y)) 就是 (\phi(\theta) = \max_\delta L(\theta,x+\delta,y)) 的下降方向。

回想论文中的鞍点公式:

[\min_{\theta}\rho (\theta), \; \; {\rm where} \;\;\; \rho (\theta)=\mathbb{E}{(x,y)\sim \mathcal{D}}[\max{\delta \in \mathcal{S}}L(\theta,x+\delta,y)] \tag{3} ]

其实,在实践中我们无法获得分布 (\mathcal{D}),所以 (\rho(\theta)) 的值和梯度都使用输入样本点来计算。所以,我们只需考虑对应于单个随机样本点 (x) (标签为 (y))的鞍点公式即可:

[\min_\theta \max_{\delta \in \mathcal{S}} g(\theta, \delta),\;\; {\rm where}\;\; g(\theta, \delta) = L(\theta,x+\delta,y) \tag{4} ]

结合上述的定理可知,使用内部问题的最大值能够计算损失函数的梯度,这相当于用相应的对抗扰动替换输入点,并在扰动的输入上训练网络,即全部使用对抗样本训练网络。

Original: https://www.cnblogs.com/setdong/p/16414780.html
Author: 李斯赛特
Title: Danskin’s Theorem

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578614/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Xbox分辨率突然变成640p

    今天XBox突然抽风还是发什么神经,输出分辨率突然变得非常模糊。一开始以为是HDMI线出现问题,后来用一条新的也是一样,所以就怀疑系统出了什么幺蛾子。 进入【电视和显示选项】——【…

    Linux 2023年6月13日
    0127
  • DNS Rebinding漏洞原理

    DNS Rebinding 广泛用于 绕过同源策略、SSRF过滤等。 背景 为什么需要SSRF过滤器?• 由于一些业务的需要,他们就是需要让用户输入URL,然后进行跳转,如果过滤得…

    Linux 2023年6月6日
    0121
  • 上班摸鱼与网络安全

    上班不摸鱼,那这班上的没有灵魂啊。但是不久前爆出的国美网络监控事件,也提示我们网络有风险,摸鱼需谨慎。 https://baijiahao.baidu.com/s?id=17167…

    Linux 2023年6月13日
    0105
  • ESXI系列问题整理以及记录——使用SSH为设备打VIB驱动包,同时提供一种对于ESXI不兼容螃蟹网卡(Realtek 瑞昱)的问题解决思路

    对于ESXI不兼容螃蟹网卡的问题,这里建议购买一张博通的低端单口千兆网卡,先使用博通网卡完成系统部署,再按照下文方法添加螃蟹网卡的VIB驱动,最后拆除博通网卡。 螃蟹网卡VIB驱动…

    Linux 2023年6月13日
    0104
  • aspx.designer.cs没有自动生成代码(没有自动注册)

    遇到这个问题的最大可能是:aspx页面存在bug。 比如说我的主页是从项目里的别的页面复制过来的,但是少复制了一些引用,页面就存在bug,导致aspx.designer.cs没有自…

    Linux 2023年6月7日
    085
  • 解决Conda改源后无法安装软件包的问题

    前言 有时候哪怕修改了 Conda 源也一直无法安装一个想要的软件包,亦或者找到了目标软件包,下载速度却很慢,速度感人,也可能直接 Conda 就找不到你想安装的软件包 此时有两种…

    Linux 2023年6月14日
    089
  • 应用配置管理,基础原理分析

    工程可以有点小乱,但配置不能含糊; 一、配置架构 在微服务的代码工程中,配置管理是一项复杂的事情,即需要做好各个环境的配置隔离措施,还需要确保生产环境的配置安全;如果划分的微服务足…

    Linux 2023年6月14日
    0112
  • 不同云服务器下,ubuntu下开k3s集群

    首先先感谢老哥的文章:h构建多云环境下的K3S集群,但是我尝试在centos 8.2上面前面一直执行报错并且安装glibc 2.17时还会报错make版本太低,所以直接放弃cent…

    Linux 2023年6月7日
    092
  • (转)redis系列之——一致性hash算法

    数据分片(sharding)分布式数据存储时,经常要考虑数据分片,避免将大量的数据放在单表或单库中,造成查询等操作的耗时过长。比如,存储订单数据时使用三个mysql库(编号0,1,…

    Linux 2023年5月28日
    0130
  • jdk 安装(图形界面版)

    在这里为大家提供jdk8的Linux版安装包,下载链接: 提前将jdk安装包放入U盘中,插入U盘,VMware会自动识别,选择将U盘接入虚拟机 打开终端 为避免权限不足,开始之前确…

    Linux 2023年6月8日
    0112
  • Java动态脚本Groovy,高级啊!

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 简介: Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编…

    Linux 2023年6月14日
    0141
  • python 练习题:接收一个或多个数并计算乘积

    以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积 def product(x, y): return x * y python;gutter:true; …

    Linux 2023年6月8日
    096
  • sed语句用法

    sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要…

    Linux 2023年6月6日
    093
  • SSM中的拦截器

    SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。 过滤器与拦截器的区别…

    Linux 2023年6月14日
    089
  • 微信小程序大型系统架构中应用Redis缓存要点

    在大型分布式系统架构中,必须选择适合的缓存技术以应对高并发,实现系统相应的高性能,酷客多小程序经过慎重选型,选择了采用基于腾讯云服务的Redis弹性缓存技术,结合Redis官方推荐…

    Linux 2023年5月28日
    0101
  • JavaWeb创建一个公共的servlet

    对于初学者来说,每次前端传数据过来就要新建一个类创建一个doget、dopost方法,其实铁柱兄在大学的时候也是这么玩的。后面铁柱兄开始认真了,就想着学习点容易的编程方式,其实说白…

    Linux 2023年6月13日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球