Globally-Robust Neural Networks
概
本文是一种可验证的鲁棒方法, 并且提出了一种globally-robust的概念, 但是实际看下来并不觉得有特别出彩的地方.
主要内容
对于网络\(f : \mathbb{R}^{n} \rightarrow \mathbb{R}^{m}\), 其中\(m\)表示共有m个不同的类别. 则prediction可以表示为
\]
普通的local robustness采用如下方式定义:
\(F\)被称为在点\(x\)满足\(\epsilon\)-locally-robust, 当对于任意的样本\(x'\)满足
\]
这种定义方式并不恰当, 因为倘若这个性质对于所有的点都成立, 那么所有的样本都会被判定为同一个类别, 从而得到的是一个退化的\(F\).
作者给出的globally-robust的定义是可以对于所有\(x\)有效的.
首先假设一个新的类别\(\perp\), 以及关系
\]
当且仅当
\]
则globally-robust是这么定义的:
\(F\)是\(\epsilon\)-globally-robust的, 如果对于任意的\(x_1, x_2\), 有下列推论成立
\]
换言之, \(F\)关于所有点的预测, 要么其是locally-robust, 要么是属于\(\perp\)的, 故可以将\(\perp\)理解为所有不满足locally-robust的点.
接下来作者给出了这样模型的构造方法:
假设
\]
即\(f_i\)的全局Lipschitz常数为\(K_i\).
令
\]
定义
\]
背后的直觉是, 根据Lipschitz常数的性质, 有
y_j -K_j \epsilon \le f_j (x') \le y_j + K_j \epsilon,
\]
所以
\]
所以\(y_{\perp}\)反映了最坏的情况, 如果\(y_{\perp} > y_j\), 便有可能存在\(x', \|x'-x\| \le \epsilon\), 但是\(F(x') \not= F(x)\).
当然了, 这个是一个非常宽泛的情况.
进一步定义:
\bar{f}_{\perp}^{\epsilon}(x) = y_{\perp},
\]
所以最后的模型是:
\]
并由如下的性质:
定理1: 如果\(\bar{F}^{\epsilon}(x) \not = \perp\), 则 \(\bar{F}^{\epsilon}(x) = F(x)\), 且\(\bar{F}^{\epsilon}\)在\(x\)处是\(\epsilon\)-locally-robust的.
这是显然的, 因为这说明在\(\epsilon\)的ball内, 找出比上面情况更坏的点.
定理2: \(\bar{F}^{\epsilon / 2}(x)\)是\(\epsilon\)-globally-robust的.
只需证明不可能存在\(x_1, x_2, \|x_1 - x_2\| \le \epsilon\), \(\bar{F}^{\epsilon/2}(x_1)=c_1\not= c_2 =\bar{F}^{\epsilon/2}(x_1)\),
根据上面的定理可知:
\]
任取
\]
注: 这里\(B\)是闭球.
则根据定理1有\(F(x_1) = F(x_3) = F(x_2)\), 矛盾.
所以, 我们这么构造的模型就符合作者的定义了, 但是还存在下面的问题:
- 全局Lipschitz常数的估计问题: 作者采用简单粗暴的逐层计算并相乘, 放得很宽;
- 如果Lipschitz常数过大, 这个模型并不会有效, 显然所有的样本都会被判断为\(\perp\), 作者最后采用的损失函数是TRADES的一个变种:
\[\mathcal{L}_T(x,y) = \mathcal{L}_{CE}(f(x), y) + \lambda \cdot \mathrm{D}_{KL}(\bar{f}^{\epsilon}(x)\| f(x)).
\]
代码
Globally-Robust Neural Networks的更多相关文章
- 【论文阅读】Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks 参考 1. 人脸关键点: 2. ...
- Exploring Architectural Ingredients of Adversarially Robust Deep Neural Networks
目录 概 主要内容 深度 宽度 代码 Huang H., Wang Y., Erfani S., Gu Q., Bailey J. and Ma X. Exploring architectural ...
- [Box] Robust Training and Initialization of Deep Neural Networks: An Adaptive Basis Viewpoint
目录 概 主要内容 LSGD Box 初始化 Box for Resnet 代码 Cyr E C, Gulian M, Patel R G, et al. Robust Training and In ...
- [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
About this Course This course will teach you the "magic" of getting deep learning to work ...
- 【转】Artificial Neurons and Single-Layer Neural Networks
原文:written by Sebastian Raschka on March 14, 2015 中文版译文:伯乐在线 - atmanic 翻译,toolate 校稿 This article of ...
- 提高神经网络的学习方式Improving the way neural networks learn
When a golf player is first learning to play golf, they usually spend most of their time developing ...
- 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 3.Programming assignments:Convolutional Model: application
Convolutional Neural Networks: Application Welcome to Course 4's second assignment! In this notebook ...
- Convolutional Neural Networks: Application
Andrew Ng deeplearning courese-4:Convolutional Neural Network Convolutional Neural Networks: Step by ...
- (转)Understanding, generalisation, and transfer learning in deep neural networks
Understanding, generalisation, and transfer learning in deep neural networks FEBRUARY 27, 2017 Thi ...
- AlexNet论文翻译-ImageNet Classification with Deep Convolutional Neural Networks
ImageNet Classification with Deep Convolutional Neural Networks 深度卷积神经网络的ImageNet分类 Alex Krizhevsky ...
随机推荐
- Yarn 生产环境核心配置参数
目录 Yarn 生产环境核心配置参数 ResourceManager NodeManager Container Yarn 生产环境核心配置参数 ResourceManager 配置调度器 yarn. ...
- flink-----实时项目---day05-------1. ProcessFunction 2. apply对窗口进行全量聚合 3使用aggregate方法实现增量聚合 4.使用ProcessFunction结合定时器实现排序
1. ProcessFunction ProcessFunction是一个低级的流处理操作,可以访问所有(非循环)流应用程序的基本构建块: event(流元素) state(容错,一致性,只能在Key ...
- CAS你知道吗
1.比较并交换 CASDemo /** * CAS => compareAndSet * 比较并交换 */ public class CASDemo { public static void m ...
- 双向循环链表模板类(C++)
双向链表又称为双链表,使用双向链表的目的是为了解决在链表中访问直接前驱和后继的问题.其设置前驱后继指针的目的,就是为了节省其时间开销,也就是用空间换时间. 在双向链表的每个节点中应有两个链接指针作为它 ...
- Advanced C++ | Conversion Operators
In C++, the programmer abstracts real world objects using classes as concrete types. Sometimes it is ...
- 学习Oracle遇到的实际问题(持续更新)
有三个用户参与这个事情: system用户,拥有表manager. sys create了一个用户item,并赋予权限: SQL> GRANT SELECT ON SYSTEM.MANAGER ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(2. 配置NTP服务chrony)
1. 简介 1.1. 这次使用另外一个轻量级的NTP服务,chrony.这是openstack推荐使用的ntp服务. 1.2. 官方网站:https://chrony.tuxfamily.org/ 2 ...
- vue实现input输入框的模糊查询
最近在用uni-app做一个项目,使用的框架还是vue,想了好久才做出来 . HTML代码部分 <input type="text" focus class="s ...
- i++ 和 ++i 探究原理
先看一个例子: package com.test; public class AutoIncrement { public static void main(String[] args) { int ...
- collection库更新1.4.0版本
collection库更新1.4.0版本 collection库一直在使用中,周末集合github上的反馈以及contributor的修改,更新了1.4.0版本. 这个版本做了几个事情: 增加了三种类 ...