关于文本对抗攻击和防御(TAAD)必读论文的研读和理解(一)

关于文本对抗的工具包的两篇经典论文,在认真阅读后谈谈自己的浅薄理解,尽量用通俗的语言解释其中含义:

1. OpenAttack: An Open-source Textual Adversarial Attack Toolkit. Guoyang Zeng, Fanchao Qi, Qianrui Zhou, Tingji Zhang, Bairu Hou, Yuan Zang, Zhiyuan Liu, Maosong Sun. ACL-IJCNLP 2021 Demo. [ website ] [ doc ] [ pdf ]

2. TextAttack: A Framework for Adversarial Attacks, Data Augmentation, and Adversarial Training in NLP. John Morris, Eli Lifland, Jin Yong Yoo, Jake Grigsby, Di Jin, Yanjun Qi. EMNLP 2020 Demo. [ website ] [ doc ] [ pdf ]

为什么要做文本攻击?
从攻防的角度,只有对方变得足够强大,自己才能主动变强(积极促进)或同步变强(最坏结果)。专业上来讲,通过文本对抗攻击的研究,有助于提高深度神经网络(DNNs)的鲁棒性和可解释性,使DNNs更好应用于安全领域。

当前形势如何?

  1. 文本对抗攻击花样(包括使用的编程框架、语言、工具等)越来越多,然大量对抗性攻击在自己代码库中实现,对于研究者或防御者其实不友好,难以真实还原受害者受攻击时的场景,从而难以对攻击模型进行评估以及开发对应的攻击模型来进行对抗训练(防御演练)。
  2. 人们对研究NLP的对抗鲁棒性(可理解为对攻击的抗揍性)越来越感兴趣,正不断尝试在任何模型和数据集上尝试数据扩充和对抗性训练,生成对抗例子,同时生成应对的更好方法。

如何采取措施?
开发对抗性攻击的工具包, 在统一的框架下实现文本对抗攻击模型,为现有的攻击模型或设计新的攻击模型提供接口以方便使用。两篇论文分别提出OpenAttack和TextAttack互补结合,因此这两篇论文放在一起学习。

介绍攻击模型:
我用xmind对论文中的表述做了张图如下:

关于文本对抗攻击和防御(TAAD)必读论文的研读和理解(一)

; 介绍OpenAttack:

一个用于文本对抗攻击的开源工具包

整体架构如下图所示:

关于文本对抗攻击和防御(TAAD)必读论文的研读和理解(一)
其中任何模型都可以由这些组件来组装,可以轻松支持定制攻击模型,考虑到不同攻击模型之间的区别比较大,特别是句子级和单词/字符级攻击模型之间的区别,很难像TextAttack那样在一个统一的框架内包含所有的攻击模型。因此,给攻击模型的骨架设计留有相当大的自由度,更注重精简对抗性估计的一般处理。

下面介绍图中的主要模块
TextProcessor:文本处理器:处理原始输入,帮助攻击模型生成对抗性示例
Victim:受害者:由三个函数组成,用于获得受害者模型的输入、分数和类别预测
Attacker:攻击者:包括各种攻击模型,可以针对受害者模型生成给定输入的对抗性示例
AttackAssist:攻击辅助:攻击者的一辅助模块,打包不同的单词和字符替换方法,它们广泛用于单词和字符级别的攻击模型
Metric:公制或度量:提供几个敌对示例质量指标
AttackEval:攻击评估:从不同角度评估文本对抗攻击,包括攻击有效性,对抗示例质量和攻击效率
DataManager:数据管理器:管理所有数据以及其他模块中使用的已保存模型

介绍TextAttack:

用于在NLP中进行对抗攻击、数据扩充和对抗训练的Python框架
(TextAttack可以从PyPI安装Python包获得或从GitHub下载,用户可以通过创建和操作攻击对象来测试攻击,命令行API提供了TextAttack攻击,允许用户从它们的四个组件或单个攻击配方中指定攻击,并在不同的模型和数据集上测试它们,也可通过演示网络程序使用,如下图3所示:)

关于文本对抗攻击和防御(TAAD)必读论文的研读和理解(一)
NLP攻击:分解为目标函数、一组约束、转换和搜索方法,这样可将对抗性攻击方法统一到一个系统中

TextAttack的目的:在给定的NLP模型下,攻击者须找到满足目标并符合特定语言约束的输入序列的扰动,并在所有潜在的转换中进行搜索,以生成成功的对抗性示例的转换序列,并实施攻击(也可归结为一个组合搜索问题)

TextAttack的四个模块:

  1. 目标函数:根据模型输出确定攻击是否成功的特定任务目标函数。eg:目标分类,非目标分类
  2. 约束列表:确定扰动相对于原始输入是否是有效的一组约束。eg:最大单词嵌入距离,最小句子编码余弦相似度
  3. 转换:给定输入,产生一组潜在扰动的变换。eg:单词嵌入单词呼唤,同字形字符替换
  4. 搜索方法:一种连续查询模型并从一组变换中选择有希望的扰动的搜索方法。eg:带词重要性排序的贪婪,波束搜索,遗传算法

Attacker的做法: 试图干扰输入文本,使得模型输出满足目标函数(即指示攻击是否成功)并且扰动符合约束集(语法约束,语义相似性约束),以此来寻找一系列产生成功的对抗性例子的转换的一种搜索方法

TextAttack支持的几种不同的攻击结果输出格式:

  • 将结果打印到stdout
  • 打印到文本文件或CSV
  • 将攻击结果打印到HTML表中
  • 将攻击结果表写入可视化服务器,如Visdom或Weights或Biases

TextAttack提供了16种对抗性攻击的实现方式,这些攻击可以在标准化的环境中进行基准测试、比较和分析:

关于文本对抗攻击和防御(TAAD)必读论文的研读和理解(一)
这种模块化设计能让我们轻松组装攻击,同时重用跨攻击共享的组件
此外,TextAttack在各种流行的数据集上提供了几十种预先训练好的模型,支持大量任务,包括摘要、机器翻译以及GLUE基准种的所有九个任务,还允许用户提供自己的模型和数据集,TextAttack的增强器类使用一个转换和一组约束来产生用于数据增强的新样本,攻击方法在一个训练循环中被反复使用,使得训练更精确和健壮的模型变得更加容易

通过上述的设计,实现NLP攻击,要点如下:

  1. 用攻击方法对现有攻击进行基准测试:所有这些攻击都是在TextAttack中作为”攻击方法”实现的,并且只需要一个命令就可进行基准测试
  2. 通过结合新的和现有的组件创建新的攻击:下表中(截取表的一部分)很多组件在NLP攻击之间都是共享的,eg:用文本搜索者的搜索方法、转换和约束来攻击翻译模型,所需要的就是在文本攻击中实现翻译目标函数,通过插入这个函数创建一个心得攻击,可以用来分析这个原有的翻译模型
  3. 对预训练模型的攻击进行评估:TextAttack为用户提供预训练模型,包括单词级的LSTM,单词级的CNN、BERT以及其他基于transformer的模型,这些模型在HuggingFace nlp提供的各种数据集中进行了预训练, TextAttack与NLP库集成在一起,可以自动加载相应的预训练的测试或验证数据集,因此在进行NLP攻击时更有针对性,以此来评估研究模型的健壮性

关于文本对抗攻击和防御(TAAD)必读论文的研读和理解(一)
利用TextAttack改进NLP模型,提升其应对风险的能力,步骤和要点如下:
  1. 评估定制模型的健壮性:TextAttack与模型无关,这意味着它可以对任何深度学习框架中实现的模型进行攻击。模型对象必须能接受接受字符串(或字符串列表)并可由目标函数处理。eg:机器翻译模型将字符串列表作为输入,并将字符串列表作为输出,只要用户的模型符合这个规范,这个模型就适合与TextAttack一起使用
  2. 模型训练:使用textattack train命令,用户可以训练基于标准LSTM、CNN和transformer的模型,或在nlp库中的任何数据集上训练用户定制的模型,就像预先训练的模型一样。用户使用的模型与textattack和textattack eval等命令兼容
  3. 数据扩容:在训练开始前,增强命令会自动扩展数据集,用户可以指定每个输入中应该修改的部分,这使得在不同的模型和数据集上使用现有的增强方法变得容易,这样训练更有目的性和针对性
  4. 对抗训练:在训练集上训练了多轮之后,TextAttack会生成相应的对抗样本进行扰动。数据集的扰动版本替代了原始的训练版本,这样,根据模型当前的弱点定期重新生成模型,这就让最终的模型对训练期间使用的攻击健壮性更强

; OpenAttack和TextAttack的不同和互补:

  1. TextAttack利用相对严格的框架来统一不同的攻击模型,然而,这个框架不适合句子级别的对抗性攻击,OpenAttack支持包括句子级攻击在内的所有类型的攻击,相比之下使用的框架更灵活
  2. TextAttack只覆盖英文文本攻击,而OpenAttack支持英文和中文,其可扩展设计支持更多的语言
  3. OpenAttack为攻击模型的多进程运行提供了支持,以提高攻击效率,此外还与HuggingFace的转换器和数据集数据库完全集成,允许在不同数据集中对成千上万个NLP模型(尤其是预训练模型)进行方便的对抗攻击,扩展性也很好。容易攻击任何定制的受害者模型,无论使用什么编程框架(PyTorch,TensorFlow等)和任何自定义的数据集上

Original: https://blog.csdn.net/qq_40506723/article/details/120554935
Author: 白白净净吃了没病
Title: 关于文本对抗攻击和防御(TAAD)必读论文的研读和理解(一)

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

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

(0)

大家都在看

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