2. 评测算法详细介绍¶
平台已集成的文本情感分析模型评测(以下简称文本评测)算法及简要说明如下所示(使用算法缩写字典序排序)。评测依据主要是模型抵抗文本攻击的能力。
2.1. TextFooler算法 1¶
算法介绍¶
TextFooler
算法是一个黑盒的单词粒度级别的文本自然语言处理攻击算法,主要针对的是文本分类以及文本蕴含推理两类任务的模型。执行算法 TextFooler
需要预先有一个大的词汇表 Vocab
,单词嵌入(向量化)模型 TextFooler
主要的思想可以总结如下:
根据模型
上式中的
将初始的对抗样本置为
对于集合
此时,若存在某个
在此时的
若满足,则令
并将 None
。
参数说明¶
max_candidates
: 单次搜索产生的待选对抗样本数目上限min_cos_sim
: 有效对抗样本与原样本进行的词替换的词嵌入向量的最小余弦距离use_threshold
: 有效对抗样本与原样本的句嵌入(使用Universal Sentence Encoder
)向量的最小余弦距离
2.2. HotFlip算法 2¶
算法介绍¶
HotFlip
算法是一种白盒攻击算法,可以进行字符级别的攻击,也可以进行词级别的攻击。 HotFlip
算法对句子
其中
HotFlip
算法搜索对抗样本的方法为束搜索(beam search),为:code:TextFooler 算法中使用的贪婪搜索(greedy search)的改良。束搜索每次循环会保留使模型正确预测概率最低的若干个(贪婪搜索是1个)备选对抗样本,进行下一个词(字符)的翻转搜索。
参数说明¶
top_n
: 单次搜索产生的备选替换词(字符)数目max_num_words
: 有效对抗样本被替换的词(字符)的数目上限min_cos_sim
: 有效对抗样本与原样本进行的词替换的词嵌入向量的最小余弦距离beam_width
: 束搜索每次搜索之后保留的备选对抗样本的数目
2.3. PWWS算法 3¶
算法介绍¶
PWWS
算法全称是Probability Weighted Word Saliency,是一种词级别的黑盒攻击算法,主要针对的是文本分类模型。 PWWS
的主要方法是通过 WordNet
选取词的近义词进行替换,通过综合考虑词替换带来的正确预测概率的改变量以及原词在整个句子中的显著度(Saliency)进行筛选,得到对抗样本。词
其中 [UNK]
得到的句子(这个token也可以是任何不在要攻击模型(的tokenizer)的词汇表中的词)。对于每个句子 PWWS
算法中使用词显著度(Saliency)与 TextFooler算法 中使用的的词重要度(Importance)的异同之处。 PWWS
算法的流程如下
对于待攻击的句子
中的每个词 ,计算其显著度 。同时,从WordNet
中选取它的近义词集合 。若 是专名,则从集合 中选出与其词性相同的词,并入 中。 为数据集中预测正确句子中出现过的专名组成集合,在词汇表中所有专名集合中的补集。(一般这条比较难实现,在代码实现中并未考虑添加 )。通过如下的公式从集合 中取出词 的替换词其中
。这样可以得到对抗样本 ,并令将词
按如下定义的分数从高到低排序其中
为之前定义的句子 的词显著度向量。之后开始执行如下的贪婪搜索(greedy search)。从 开始,用排好序的前 个词用第1步中找到的替换词进行替换,得到句子 ,直到被攻击模型在 上产生分类错误,从而得到对抗样本。若遍历给定可进行替换词数量上界仍没有造成模型分类错误,那么攻击失败,获取对抗样本失败。
参数说明¶
2.4. BAE算法 4¶
算法介绍¶
BAE
算法全称是BERT-Based Adversarial Examples,是一种词级别的黑盒攻击算法,主要针对的是文本分类模型。BAE
算法产生对抗样本的方法主要是利用掩码语言模型(masked language model, MLM, 例如 BERT
)产生备选词,插入被对抗样本,或者替换被对抗样本中的词。BAE
算法具体流程如下:
计算句子
中每个词的重要度(Importance),并按降序排列。词重要度的计算方法与 TextFooler算法 中的词重要度计算方法一致。初始化对抗样本为
。执行如下的贪婪搜索(greedy search)。从 开始,依次取词重要度排名第 (这里为了记号方便,仍然记为 ),利用掩码语言模型,计算如下带掩码的句子 处概率排名前 的词,替换 ,得到备选对抗样本的集合,记为 。这里的 为 当前对抗样本 在词 之前的词组成的序列,其他记号的意义依此类推。上式的前一种模式被称作词替换模式,后一种模式被称作词插入模式。在生成备选对抗样本的时候,两种模式可以采用二者中的一种,或者混用。对于备选对抗样本的集合 ,进一步使用Universal Sentence Encoder
计算与原句子 的语义相似度,筛选出相似度高于预设阈值的备选对抗样本。如果是替换模式,则需要额外检查替换词与被替换词的词性,剔除词性不一致的替换词对应的备选对抗样本。检查备选对抗样本的集合
,看其中的句子能否使模型产生分类错误。如果有,则取其中与原句子语义相似度最高的作为最终产生的对抗样本,并结束循环。若 所有备选对抗样本都不能使模型产生分类错误,那么取其中使得模型正确分类概率最低的作为 ,进入下一循环。直到产生使模型分类错误的对抗样本,或者遍历所有词后扔不能生成产生使模型分类错误的对抗样本,获取对抗样本失败。
参数说明¶
max_candidates
: 单次搜索(使用掩码语言模型)产生的待选对抗样本数目上限use_threshold
: 有效对抗样本与原样本的句嵌入(使用Universal Sentence Encoder
)向量的最小余弦距离
2.5. BERT-Attack算法 5¶
算法介绍¶
BERT-Attack
算法与 BAE算法 算法原理与流程类似,以下仅列出不同点:
BERT-Attack
算法的词重要度的计算方法与PWWS
算法的词显著度计算方法一致,即将要计算的词用特定的token进行替换;而BAE
算法则是与TextFooler
算法一致,将要计算的词删除。生成备选对抗样本集合的方式不同。
BERT-Attack
算法并不像BAE
算法那样对原句进行掩码的操作,而是对使用字节对编码(Bytes-Pair-Encoding, BPE)之后得到的token序列进行掩码,通过掩码语言模型BERT
获取这些token的替换列表。这些token可能是词,也可能是子词(sub-word)。当某个token不是词的时候,需要将这个token所在词覆盖的token的替换列表进行组合,对这些组合进行编码逆操作获取词的替换词,并按混乱度(perplexity,由BERT
获取)倒排。
参数说明¶
max_candidates
: 单次搜索(使用掩码语言模型)产生的待选对抗样本数目上限use_threshold
: 有效对抗样本与原样本的句嵌入(使用Universal Sentence Encoder
)向量的最小余弦距离max_perturb_percent
: 词替换比例最高值,一个有效的对抗样本相较原句子中词被替换的比例不能超过这个值
2.6. DeepWordBug算法 6¶
算法介绍¶
DeepWordBug
算法是字符级别的黑盒攻击算法。 DeepWordBug
算法利用类似 TextFooler算法 中的方法,计算句子中每个词的重要度,按此排序之后进行贪婪搜索。由于 DeepWordBug
算法是字符级别的攻击算法,其产生替换词的方法有如下几种
词中相邻字符交换
随机往词中插入字符
随机删除词中字符
随机替换词中字符
参数说明¶
use_all_transformations
: 布尔值的参数,如果置为真(True),则使用所有4种产生替换词的方法;否则仅使用最后一种产生替换词的方法,即随机替换词中字符。max_edit_distance
: 有效对抗样本与原样本的编辑距离最大值
2.7. FD算法 7¶
算法介绍¶
FD
算法是一种词级别的白盒攻击算法。其对于一个被攻击样本(句子)中的词进行随机的选取与替换,产生新的备选的对抗样本。FD
算法产生替换词的方法结合了基于词嵌入模型的方法与基于被攻击模型梯度的方法。具体来说,该算法首先利用词嵌入模型,例如 CounterFittedEmbedding
, ChineseWord2Vec
等,产生最近邻的一些替换词,在利用被攻击模型的梯度信息,在这些词中筛选使得下式极小化的词
其中
为被攻击样本, 为当前备选对抗样本, 是被攻击模型的词嵌入层(不是第一步产生初步备选词的词嵌入模型), 是梯度信息, 为1-范数。
参数说明¶
top_n
: 单次搜索,最终产生的备选替换词数目
2.8. PSO算法 8¶
算法介绍¶
PSO
算法是一种词级别的黑盒攻击算法,得名自其采用的搜索对抗样本的方法,即粒子群算法(Particle Swarm Optimization)。粒子群算法与遗传算法都属于进化算法这一大类。在 PSO
算法中,每一迭代轮次的样本全体被称作一个群(swarm),一个样本被称作一个粒子(particle),每个粒子对应的词序列被称作搜索空间中的一个位置(position)。
PSO
算法的另一个创新之处在于,它的词替换方法,又称变异(mutation)操作为,利用知识图谱 HowNet
中义素(sememes)相同的词进行词替换。
PSO
算法具体流程如下:
初始化(Initialize):对被攻击样本(句子)
随机替换一个词,生成 新的样本,并给每个新样本随机赋予一个初始速度(velocity),以此为第一代开始进行循环迭代。初始速度为一个 维向量,其元素取值范围为 ,代表的是对应位置的词被新词替换的概率。记录(Record):每一迭代轮次完成之后,单个粒子都记录一次个体最佳位置(individual best position),对应于该粒子达到的优化目标函数的最高值(例如被攻击模型正确预测概率的相反数);同时记录整个群的整体最佳位置(global best position)。
更新(Update):在每一轮迭代中,按下式更新(第
个粒子)的速度向量其中
为粒子 当前位置; 为粒子 的个体最佳位置; 为整体最佳位置; 为惯性权重(inertia weight),按如下方式更新其中
为迭代总轮数, 为当前轮数; 为如下定义的函数粒子
的更新按如下方式进行:首先,按概率确定是否向个体最佳位置移动。若移动,则依概率向量
向个体最佳位置移动,即第 个词以概率 替换为个体最佳位置的第 个词。接下来按概率确定是否向整体最佳位置移动。若移动,则同样依概率向量
向整体最佳位置移动。完成移动之后,每个粒子以概率进行变异操作。更新(Update)全部完成之后,返回第二部进行记录(Record)操作,即记录此时的所有个体最佳位置以及整体最佳位置。
终止(Terminate)条件为:整体最佳位置对应的优化目标达到,例如被攻击模型分类错误。
参数说明¶
max_candidates
: 单次搜索(使用词嵌入模型)产生的待选对抗样本数目上限max_iters
: 遗传算法迭代最大次数pop_size
: 遗传算法每一代个体(备选对抗样本)的数目上限
2.9. TextBugger算法 9¶
算法介绍¶
TextBugger
算法是一种字符级别与词级别混合的攻击算法,可以进行黑盒攻击也可以进行白盒攻击。
TextBugger
算法的白盒攻击方法如下:对于样本
其中
TextBugger
算法的黑盒攻击方法与 TextFooler算法 的原理类似,也是采取删除词的方法计算该词在句子中的重要度,将词按重要度排序之后,按顺序进行贪婪搜索。
TextBugger
算法在字符级别生成新的备选对抗样本的方法有
词中相邻字符交换
随机往词中插入字符
随机删除词中字符
同形字符(homoglyph)替换
TextBugger
算法在词级别生成新的备选对抗样本的方法与 FD算法 等类似,使用词嵌入模型,寻找嵌入向量距离最近的替换词进行词替换,从而得到备选对抗样本。
参数说明¶
max_candidates
: 使用词嵌入模型产生的待选对抗样本数目上限use_threshold
: 有效对抗样本与原样本的句嵌入(使用Universal Sentence Encoder
)向量的最小余弦距离
2.10. VIPPER算法 10¶
算法介绍¶
VIPPER
算法全称是 VIsual PERturber,是一种字符级别的黑盒攻击方法。该算法按照被攻击样本(句子)中词的顺序,对词中字符进行替换生成新的备选对抗样本,并执行贪婪搜索。VIPPER
算法生成新的备选对抗样本的方法有
1. 同形字符(homoglyph)替换
2. DCES(Description-based character embedding space)字符替换
其中第2种方法是 VIPPER
算法特有的方法。这种方法并不是通常的字符嵌入方法,而是根据 Unicode 11.0.0 final names list,依照字符描述的语义构建的临近字符(nearest neighbors)知识库。
参数说明¶
use_eces
: 这是一个布尔值的参数,若为真(True
),则使用同形字符替换方法,否则使用DCES字符替换方法dces_threshold
: 每次生成新的对抗样本时,DCES方法产生备选新词数目的上限。这个参数仅当use_eces
为假(False
)时起作用。
2.11. A2T算法 11¶
算法介绍¶
A2T
算法全称是Attacking to Training,原本是为对抗训练(adversarial training)设计的方法,其核心部分是一套词级别的白盒对抗攻击算法。具体来说, A2T
算法依据被攻击样本中词的重要度,从低到高进行贪婪搜索。其中词的重要度计算方法是基于梯度的,与 TextBugger算法 的计算方法类似。对于替换词的选取, A2T
算法提供了2种可选的方法:
A2T
算法的另一个创新之处是,用了进行了模型蒸馏的句嵌入模型来度量备选对抗样本与原样本的语义距离(句嵌入向量距离),极大降低了显存需求,加快了计算速度。
参数说明¶
max_candidates
: 单次搜索(使用词嵌入模型或掩码语言模型)产生的待选对抗样本数目上限min_cos_sim
: 有效对抗样本与原样本进行的词替换的词嵌入向量的最小余弦距离use_threshold
: 有效对抗样本与原样本的句嵌入向量的最小余弦距离max_modification_rate
:词维度的编辑距离(被替换词比例)mlm
:布尔值的参数,若为真,则使用掩码语言模型用于替换词的生成,否则使用词嵌入模型生成替换词
2.12. 参考文献¶
- 1
Jin D, Jin Z, Zhou J T, et al. Is bert really robust? a strong baseline for natural language attack on text classification and entailment[C]//Proceedings of the AAAI conference on artificial intelligence. 2020, 34(05): 8018-8025.
- 2
Ebrahimi J, Rao A, Lowd D, et al. HotFlip: White-Box Adversarial Examples for Text Classification[C]//Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers). 2018: 31-36.
- 3
Ren S, Deng Y, He K, et al. Generating natural language adversarial examples through probability weighted word saliency[C]//Proceedings of the 57th annual meeting of the association for computational linguistics. 2019: 1085-1097.
- 4
Garg S, Ramakrishnan G. BAE: BERT-based Adversarial Examples for Text Classification[C]//Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020: 6174-6181.
- 5
Li L, Ma R, Guo Q, et al. BERT-ATTACK: Adversarial Attack against BERT Using BERT[C]//Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020: 6193-6202.
- 6
Gao J, Lanchantin J, Soffa M L, et al. Black-box generation of adversarial text sequences to evade deep learning classifiers[C]//2018 IEEE Security and Privacy Workshops (SPW). IEEE, 2018: 50-56.
- 7
Papernot N, McDaniel P, Swami A, et al. Crafting adversarial input sequences for recurrent neural networks[C]//MILCOM 2016-2016 IEEE Military Communications Conference. IEEE, 2016: 49-54.
- 8
Zang Y, Qi F, Yang C, et al. Word-level Textual Adversarial Attacking as Combinatorial Optimization[C]//Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. 2020: 6066-6080.
- 9
Li J, Ji S, Du T, et al. TextBugger: Generating Adversarial Text Against Real-world Applications[C]//26th Annual Network and Distributed System Security Symposium. 2019.
- 10
Eger S, Şahin G G, Rücklé A, et al. Text Processing Like Humans Do: Visually Attacking and Shielding NLP Systems[C]//Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers). 2019: 1634-1647.
- 11
Yoo J Y, Qi Y. Towards Improving Adversarial Training of NLP Models[J]. arXiv preprint arXiv:2109.00544, 2021.