Loading [MathJax]/jax/element/mml/optable/BasicLatin.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ASE 2022 用于类比神经网络鲁棒性验证的可证更严格的近似值方法

ASE 2022 用于类比神经网络鲁棒性验证的可证更严格的近似值方法

作者头像
CV君
发布于 2022-11-28 09:24:15
发布于 2022-11-28 09:24:15
8590
举报

▌1 引言

该论文是关于神经网络鲁棒性理论类的文章。类似有Sigmoid激活函数的神经网络,由于其非线性,使得在进行神经网络鲁棒验证评估时,不可避免地会引入了不精确性。

当前的一个研究方向是寻找更严格的近似值以获得更精确的鲁棒验证结果。然而,现有的紧密度定义是启发式的,缺乏理论基础。在该论文中,作者对现有的神经元紧密度表征进行了全面的实证分析,并揭示它们仅在特定的神经网络上具有优势。

另外,作者基于神经网络紧密度的概念重新提出了一个统一的神经网络紧密度定义,并表明计算神经网络紧密度是一个复杂的非凸优化问题。为了能够更好地理解该论文原理,文末给出了论文中一些原理示例的相关代码。

论文链接: https://arxiv.org/abs/2208.09872

▌2 预备知识

神经网络是遵循逐层传播的,输入层上的每个神经元都接受一个输入值,该输入值乘以权重系数,然后传递给下一层的后续神经元。所有传入的数字相加。总和被馈送到激活函数

,并且

的输出与偏差

相加。然后将结果传播到下一层,直到到达输出层。

给定一个

层神经网络

,即

,其中

是一个第

层非线性可微激活函数。

可以是仿射变换或卷积操作中的其中一个:

其中

分别表示权重矩阵,偏置向量和卷积操作。在该论文中,作者主要关注的是

的激活函数如下所示:

神经网络

的输出是一个

维的值为

之间的向量,每一个维度其对应的是属于该类别的概率。令

是一个

类分类标签集合,

表示的是输入

的输出标签

上公式直观地发现,

返回了一个集合

中的标签

是个输出向量中最大值。

因为神经网络本质上是由计算机通过根据训练数据微调网络中的权重而组成的“程序”。与程序员开发的手工程序不同,神经网络缺乏形式化表示,几乎无法解释,这使得形式化和验证其属性非常具有挑战性。如果对神经网络的输入的合理扰动不会改变分类结果,则神经网络该扰动是鲁棒的。扰动通常通过扰动输入

和原始输入

之间的距离来测量,使用

范数来表示,其中

可以是

。一般的情况情况下,使用的度量范数是

神经网络的鲁棒性可以通过界

进行量化截断,

是一个安全的扰动距离,使得任何低于

的扰动都具有与神经网络的原始输入相同的分类结果。

定义1(局部鲁棒性): 给定一个神经网络,一个输入和一个在下的边界。关于是鲁棒的,当且仅当对每个成立,使得。这样的被称为认证下界。

验证

的鲁棒性有如下两个问题:

  • 需要证明对于每个

满足

,则有

其中对于每个

成立,其中

,且

返回概率

,即将

分类到类别

中;

  • 计算可验证的下界,一个大的可验证的下界意味着更精确的鲁棒性验证结果。由于约束的非线性,会导致直接计算

很困难,大多数最先进的方法都采用高效的二分搜索算法。

由于包含非线性激活函数,所以神经网络

是高度非线性的。证明公式

的计算成本很高,即使对于最简单的全连接

网络也是NP-hard的。目前已经研究了许多方法来提高验证效率的,但同时也牺牲了完整性。具有代表性的方法包括区间分析、解释中的抽象和输出范围估计等。这些方法的基础技术是使用线性约束来过度逼近非线性激活函数,这可以比原始约束更有效地解决计算复杂度的问题。

基于近似的方法不是直接证明公式

,而是通过两个线性约束过度近似

,并证明

的线性下界

是大于

的线性上界

。显然,

是公式

的充分条件,证明或反证的效率明显更高。

定义2(上下线性界): 令是在区间的非线性函数。已知系数,则有

当以下条件成立时

分别是

的上下线性界。

使用线性上下界过度逼近非线性激活函数是神经网络逼近的关键。对于区间

上的每个激活函数

,作者定义了一个线性上界

和一个线性下界

以确保对于区间

中的所有

,使得

包含在

。给定定义 1中的输入范围,网络的输出范围是通过传播每个网络的输出区间来计算的定义2中的神经元到输出层。

如下图所示考虑一个简单基于近似验证神经网络的示例,最初的验证问题是证明对于任何输入

,其中

,它总是被分类为神经元标签

。这相当于证明辅助神经元的输出

总是大于

。作者定义线性上/下界

分别近似神经元

由上图可知,

的输出区间为

,从而证明网络对所有输入在

[1,1]×[1,1]

区间中是鲁棒的。

需要注意的是也可以考虑由一系列线段组成的分段线性边界来更紧密地逼近激活函数。然而,这种分段方式会导致约束的数量在逐层传播时呈指数级增长。这将大大降低验证的可扩展性。因此,使用一个线性上界和一个线性下界逼近激活函数是基于逼近的鲁棒性验证方法的最有效和广泛采用的选择。

▌3 神经网络紧密近似

在更严格的近似会产生更精确的验证结果的假设下,现有的紧密度表征是一种启发式的方法。但现有例子表明这个假设并不总是成立。这意味着定义每个单独神经元的紧密度对于实现紧密近似既不充分也不必要。那是因为神经元上的紧密度不能保证神经网络的输出间隔总是精确的。

但是,输出区间是判断网络是否鲁棒的基础。为了表征神经网络中激活函数的近似紧密度,作者引入了神经网络紧密度的概念,确保通过对激活函数的网络方式更紧密的逼近,使得神经网络产生更精确的输出间隔,从而产生更精确的验证结果。

定义3(神经网络紧密度): 给定神经网络,。令是的线性近似,且和分别表示的上下界。如果是神经网络的最紧密逼近,则对于任意不同的线性逼近有

其中

分别表示

的第

个元素。

定理1: 由定义3可知,如果比更紧密,则神经网络的近似比有更精确的鲁棒性。

证明:

有固定的扰动

。需要验证对于任意

有以下不等式成立

根据定义3可知,可得以下不等式

显然可知

是比

更紧密的近似。

给定一个

层神经网络

,使用

来表示在应用第

个激活函数之前

层的复合函数,即

层有

个神经元,

表示输出的第

个元素。对于每个激活函数

,其上和下线性界分别为

。然后可以将计算神经网络最紧密近似的问题形式化为以下优化问题:

其中

分别表示

的上下界,且

表示定义在权重

和偏置

的常数值,具体的定义如下所示:

需要注意的是,以上优化形式可能无法保证单个激活函数的近似值相对于现有的紧密度定义是最紧密的。

▌4 近似单隐层网络

对于单层网络,优化问题可以进一步简化如下:

其中

表示的是隐层的数量。

优化问题是一个凸变体,因此可以通过利用基于梯度下降的搜索算法来求解该问题,以下算法流程图为计算单隐层近似相关算法的伪代码。对于隐层神经元上的每个激活函数,首先确定穿过两个端点的线

可以是上线性界还是下线性界。然后选择激活函数的切线作为上线性界或下线性界,其截断点可以是优化变量。最后用梯度下降法去优化目标函数,并进一步更新系数

对于具有两个或更多隐层的神经网络,由于其非凸性使得求解相关的优化问题而变得不切实际。对于任何隐藏层,激活函数的输入间隔都受到前一个隐藏层激活函数的近似值的约束。在该论文中,作者提出了可计算的神经元最紧密近似,并确定了当神经网络中的所有权重都为非负时,神经元最紧密近似导致网络最紧密。

▌5 实验结果

如下表格所示为没有非负权重的Sigmoid模型的对比结果。在关于精度验证结果中,论文中提出的NEWISE计算可验证下界方法要比所有其它方法都要出色。尤其是针对于在Fashion Mnist数据集的训练出的模型,该方法甚至一度实现了验证结果高达 96.22%的精度。另外,NEWISE也相应对标准差的精度提高了129.33%。这也表明,跟其它方法相比,论文的方法可以对输入更加敏感。

如下表格所示为不同评估方法在具有混合权重的Sigmoid激活关于全连接神经网络和卷积神经网络对比结果。依然可以发现论文中提出的NEWISE计算可验证下界方法要比所有其它方法在提高评估精度和标准差方面都要出色。

▌6 实验程序

以下两个程序分别画出了单个sigmoid函数上下线性界以及论文中实例2的示意图。

代码语言:javascript
AI代码解释
复制
from matplotlib import pyplot as plt
import numpy as np 
x = np.linspace(-10,10,10000)
Sigmoid_x = 1/(1 + np.exp(-x))
X_U3 = 0.104 * x + 0.670
X_L3 = 0.104 * x + 0.329
plt.plot(x, Sigmoid_x, label='Sigmoid(x)')
plt.plot(x, X_U3, label='X_U3')
plt.plot(x, X_L3, label='X_L3')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(loc='best') 
# # plt.text(-0.5,3,r"$Loss=(w^8 - 1)^2$",fontsize=20,color="red")
plt.show()

以下两个程序分别画出了单个arctan函数上下线性界以及论文中关于arctan实例的示意图。

代码语言:javascript
AI代码解释
复制
import numpy as np 
import mpl_toolkits.axisartist as ast 
from matplotlib import pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D
data = np.linspace(-1, 1, 20)
x1, x2 = np.meshgrid(data, data)
x3_sigmoid = 1 / (1 + np.exp(-x1 - x2))
xu3 = 0.104 * (x1 + x2) + 0.670
xl3 = 0.104 * (x1 + x2) + 0.329
x4_sigmoid = 1 / (1 + np.exp(-x1 + x2))
xu4 = 0.104 * (x1 - x2) + 0.670
xl4 = 0.104 * (x1 - x2) + 0.329
x5 = 2 * x3_sigmoid + 2 * x4_sigmoid
xu5 = 2 * xu3 + 2 * xu4
xl5 = 2 * xl3 + 2 * xl4
x5 = 2 * x3_sigmoid + 2 * x4_sigmoid
x6 = 3 * x3_sigmoid - 5 * x4_sigmoid
xu6 = 3 * xu3 - 5 * xl4
xl6 = 3 * xl3 - 5 * xu4 
x7 = xl5 - xu6
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x1, x2, x7)
# ax.plot_surface(x1, x2, xu6)
# ax.plot_surface(x1, x2, xl6)
# ax.plot_surface(x1, x2, xl5)
# ax.plot_surface(x1, x2, x5)
plt.show()
代码语言:javascript
AI代码解释
复制
from matplotlib import pyplot as plt
import numpy as np 
x = np.linspace(-3,-1,10000)
Arctan_x = np.arctan(x)
X_U3 = 0.232 * x - 0.554
X_L3 = 0.200 * x - 0.707
plt.plot(x, Arctan_x, label='Arctan(x)')
plt.plot(x, X_U3, label='X_U3')
plt.plot(x, X_L3, label='X_L3')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(loc='best') 
# # plt.text(-0.5,3,r"$Loss=(w^8 - 1)^2$",fontsize=20,color="red")
plt.show()
代码语言:javascript
AI代码解释
复制
import numpy as np 
import mpl_toolkits.axisartist as ast 
from matplotlib import pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D
data1 = np.linspace(-2, -1, 20)
data2 = np.linspace(-1, 0, 20)
x1, x2 = np.meshgrid(data1, data2)
x3_arctan = np.arctan(x1 + x2)
xu3 = 0.232 * (x1 + x2) - 0.554
# xl3 = 0.200 * (x1 + x2) - 0.707
xl3 = 0.100 * (x1 + x2) - 0.949
x4_arctan = np.arctan(x1 - x2)
xu4 = 0.554 * (x1 - x2) 
# xl4 = 0.500 * (x1 - x2) - 0.285
xl4 = 0.200 * (x1 - x2) - 0.707
x5 =  x3_arctan + 2 * x4_arctan
xu5 = xu3 + 2 * xu4
xl5 = xl3 + 2 * xl4
x6 = - x3_arctan + 2 * x4_arctan
xu6 = - xl3 + 2 * xu4
xl6 = - xu3 + 2 * xl4 
x7 = xl5 - xu6
print(x7.max())
print(x7.min())
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x8 = 0 *(x1 + x2)
ax.plot_surface(x1, x2, x7)
ax.plot_surface(x1, x2, x8)
# ax.plot_surface(x1, x2, xl6)
# ax.plot_surface(x1, x2, xl5)
# ax.plot_surface(x1, x2, x5)
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[每周一论文分享] HomPINNs:结合同伦方法的物理信息神经网络,多解问题新解法(补8月18日)
这是一篇使用同调法与 PINN 相结合解决非线性椭圆微分方程的论文,并处理了不规则边界区域。
Tanger
2025/08/24
2330
一文通解:VAE、Diffusion 与 Flow 模型原理与联系
最近在学习何凯明大佬的MeanFlow。借此机会,我对从 VAE、扩散模型、Flow Matching 到 MeanFlow 的技术思路进行了梳理,整理成技术文档。如果文章中有错误或疏漏,欢迎评论区指出讨论~
languageX
2025/08/25
9960
深度学习中的反向传播:链式法则的矩阵形式与梯度计算证明
在深度学习的核心架构中,神经网络通过模拟生物神经系统的信息处理机制,构建了从数据输入到预测输出的复杂映射关系。一个典型的神经网络由三个基本层级构成:输入层负责接收原始数据,隐藏层进行特征提取与转换,输出层则生成最终预测结果。这种分层结构使得神经网络能够逐级抽象数据特征,从简单的像素值或数值特征逐步转化为高级语义表示。
用户6320865
2025/08/27
3560
深度学习中的反向传播:链式法则的矩阵形式与梯度计算证明
CNN(卷积神经网络)详解
首先回答这样一个问题,为什么我们要学CNN,或者说CNN为什么在很多领域收获成功?还是先拿MNIST来当例子说。MNIST数据结构不清楚的话自行百度。。
全栈程序员站长
2022/09/01
1.1K0
CNN(卷积神经网络)详解
【机器学习-神经网络】循环神经网络
  在前面两篇文章中,我们分别介绍了神经网络的基础概念和最简单的MLP,以及适用于图像处理的CNN。从中我们可以意识到,不同结构的神经网络具有不同的特点,在不同任务上具有自己的优势。例如MLP复杂度低、训练简单、适用范围广,适合解决普通任务或作为大型网络的小模块;CNN可以捕捉到输入中不同尺度的关联信息,适合从图像中提取特征。而对于具有序列特征的数据,例如一年内随时间变化的温度、一篇文章中的文字等,它们具有明显的前后关联。然而这些关联的数据在序列中出现的位置可能间隔非常远,例如文章在开头和结尾描写了同一个事物,如果用CNN来提取这些关联的话,其卷积核的大小需要和序列的长度相匹配。当数据序列较长时,这种做法会大大增加网络复杂度和训练难度。因此,我们需要引入一种新的网络结构,使其能够充分利用数据的序列性质,从前到后分析数据、提取关联。这就是本文要介绍的循环神经网络(recurrent neural networks,RNN)。
Francek Chen
2025/01/22
4730
【机器学习-神经网络】循环神经网络
深度学习基础入门篇[六(1)]:模型调优:注意力机制[多头注意力、自注意力],正则化【L1、L2,Dropout,Drop Connect】等
在深度学习领域,模型往往需要接收和处理大量的数据,然而在特定的某个时刻,往往只有少部分的某些数据是重要的,这种情况就非常适合Attention机制发光发热。
汀丶人工智能
2023/04/22
1.4K0
深度学习基础入门篇[六(1)]:模型调优:注意力机制[多头注意力、自注意力],正则化【L1、L2,Dropout,Drop Connect】等
【串讲总结】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM
平时很少写总结性的文章,感觉还是需要阶段性总结一些可以串在一起的知识点,所以这次写了下。因为我写的内容主要在时序、时空预测这个方向,所以主要还是把rnn,lstm,gru,convlstm,convgru以及ST-LSTM
千与编程
2023/04/28
3K0
【串讲总结】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM
【深度学习优化算法】08:RMSProp算法
深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重要的技术特征是具有自动提取特征的能力。神经网络算法、算力和数据是开展深度学习的三要素。深度学习在计算机视觉、自然语言处理、多模态数据分析、科学探索等领域都取得了很多成果。本专栏介绍基于PyTorch的深度学习算法实现。 【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/PyTorch_deep_learning。
Francek Chen
2025/07/22
1850
【深度学习优化算法】08:RMSProp算法
浙江理工 & 谷歌开源 CFMW | 挑战恶劣天气,Mamba 引领目标检测新风向!
在开放和动态的环境中,目标检测面临如雨、雾和雪等具有挑战性的天气条件。基于深度学习的目标检测方法的快速发展显著提高了识别和分类物体的能力。得益于先进的特征提取和融合策略,跨模态目标检测方法已达到高精度,例如CFT(杨等人,2017年)、GAFF(杨等人,2017年)和CFR
集智书童公众号
2024/05/10
2.3K0
浙江理工 &  谷歌开源 CFMW | 挑战恶劣天气,Mamba 引领目标检测新风向!
一文搞定BP神经网络——从原理到应用(原理篇)「建议收藏」
本文着重讲述经典BP神经网络的数学推导过程,并辅助一个小例子。本文不会介绍机器学习库(比如sklearn, TensorFlow等)的使用。 欲了解卷积神经网络的内容,请参见我的另一篇博客一文搞定卷积神经网络——从原理到应用。
全栈程序员站长
2022/09/09
5.3K1
一文搞定BP神经网络——从原理到应用(原理篇)「建议收藏」
《动手学深度学习》读书笔记—9.3深度循环神经网络
本文记录了自己在阅读《动手学深度学习》时的一些思考,仅用来作为作者本人的学习笔记,不存在商业用途。
用户11764705
2025/08/04
1840
【概率论与数理统计(研究生课程)】知识点总结9(回归分析)
$$ \begin{aligned} &y=\beta_0+\beta_1x+\epsilon,\quad \epsilon \sim N(\mu, \sigma^2) \ &E(\epsilon)=0,D(\epsilon)=\sigma^2>0 \Longrightarrow E(y)=\beta_0+\beta_1x \end{aligned} $$
Marigold
2023/08/24
6120
【概率论与数理统计(研究生课程)】知识点总结9(回归分析)
卷积神经网络(CNN)反向传播算法
    在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结。在阅读本文前,建议先研究DNN的反向传播算法:深度神经网络(DNN)反向传播算法(BP)
刘建平Pinard
2018/08/08
9310
论文阅读01——《图卷积神经网络综述》
由于博主已经本硕博连读,九月份即将开始研究生生涯,遂开启论文阅读这一系列博文,主要介绍一些文章的主要思想和创新点,可能会详细介绍一下模型,如果喜欢的话多多关注,另外其他系列也会不定时更新,记得来看~
Marigold
2022/06/17
1.7K0
论文阅读01——《图卷积神经网络综述》
循环神经网络(RNN)模型与前向反向传播算法
    在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系。今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。
刘建平Pinard
2018/08/14
8350
循环神经网络(RNN)模型与前向反向传播算法
深度神经网络(DNN)反向传播算法(BP)
    在深度神经网络(DNN)模型与前向传播算法中,我们对DNN的模型和前向传播算法做了总结,这里我们更进一步,对DNN的反向传播算法(Back Propagation,BP)做一个总结。
刘建平Pinard
2018/08/14
1.2K0
RealNet:从数据生成到模型训练的最新工业异常检测 | CVPR 2024
论文: RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection
VincentLee
2024/08/19
7940
RealNet:从数据生成到模型训练的最新工业异常检测 | CVPR 2024
【现代深度学习技术】现代循环神经网络01:门控循环单元(GRU)
  在通过时间反向传播中,我们讨论了如何在循环神经网络中计算梯度,以及矩阵连续乘积可以导致梯度消失或梯度爆炸的问题。下面我们简单思考一下这种梯度异常在实践中的意义:
Francek Chen
2025/05/02
3270
【现代深度学习技术】现代循环神经网络01:门控循环单元(GRU)
CIKM'21序列推荐:时间切片+图神经网络学习用户和item的动态表征
本文是图神经网络应用于序列推荐方向的文章,利用图神经网络挖掘用户和item之间的动态时序关系,主要包含以下创新点:
秋枫学习笔记
2022/09/19
8700
LSTM模型与前向反向传播算法
    在循环神经网络(RNN)模型与前向反向传播算法中,我们总结了对RNN模型做了总结。由于RNN也有梯度消失的问题,因此很难处理长序列的数据,大牛们对RNN做了改进,得到了RNN的特例LSTM(Long Short-Term Memory),它可以避免常规RNN的梯度消失,因此在工业界得到了广泛的应用。下面我们就对LSTM模型做一个总结。
刘建平Pinard
2018/08/14
6060
LSTM模型与前向反向传播算法
推荐阅读
相关推荐
[每周一论文分享] HomPINNs:结合同伦方法的物理信息神经网络,多解问题新解法(补8月18日)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档