NDSS

https://arxiv.org/abs/1812.05271

摘要中的创新点确实是对抗攻击中值得考虑的点:

1. effective

2. evasive    recognized by human readers

3. efficient

在IMDB数据集上取得100%的成功率。

最后有讨论可能的防御机制,可以重点看下能不能做这相关的工作。

TEXTBUGGER:

白盒:通过雅可比矩阵找到最重要的单词。

https://jingyan.baidu.com/article/cb5d6105c661bc005c2fe024.html (梯度vs Jacobian矩阵vs Hessian矩阵)

 (和梯度的方法差不多)

2-5步:计算重要性,对单词排序。

6-14步:生成bugs:考虑视觉和语义的相似性;考虑character-level & word-level

character-level:看起来就像是简单的拼写错误。目的:把未知词汇映射到未知embedding

word-level:最近邻搜索。

作者发现在一些词嵌入模型中(如word2vec),“worst”和“better”等语义相反的词在文本中具有高度的句法相似性,因此“better”被认为是“worst”的最近邻。

以上显然是不合理的,很容易被人察觉。

因此,作者使用了语义保留技术,即,将该单词替换为上下文感知的单词向量空间中的topk近邻。使用斯坦福提供的预先训练好的GloVe模型[30]进行单词嵌入,并设置topk = 5。可以保证邻居在语义上与原来的邻居相似。

根据以往的研究,文本的意义很可能是由读者保留或推断后,几个字符的变化[31]。同时,在语义和句法上相似的词语代替词语,可以保证样本的相似性[1]。

TEXTBUGGER的五种错误生成方法:(1)插入:插入一个空格到单词中。(2)删除:删除除第一个字符和最后一个字符外的任意字符。(3)交换:在单词中随机交换两个相邻的字母,但不改变第一个或最后一个字母。(4) Substitute-C (Sub-C):用视觉上相似的字符(例如,用“0”代替“o”,用“1”代替“1”,用“@”代替“a”)或键盘上相邻的字符(例如,用“n”代替“m”)代替字符。(5)Sub-W:在上下文感知的词向量空间中,用它的最近邻替换一个词。

例子:

基于视觉的替换的防御是不是可以考虑文本的visual embedding

如算法2所示,在生成5个bug后,根据置信度的变化选择bug(选变化最大的)。用最优的bug来替换这个单词,得到一个新的文本e’(第8行)。我们重复上述步骤来替换下一个单词,直到找到解决方案(攻击成功),或者未能找到一个保留语义的对抗样本。

黑盒:先找最重要的句子,然后通过打分函数找到最重要的单词。

三个步骤:(1)找到重要的句子。(2)根据分类结果,使用评分函数来确定每个单词的重要性,并根据得分对单词进行排序。(3)使用bug选择算法改变选择的单词。算法3给出了黑箱对抗文本生成算法。

2-6:找重要的句子。找到对最终预测结果贡献最大的重要句子,对其进行优先操作。

使用spaCy库将每个文档分割成句子,然后过滤出具有不同预测标签的句子。即过滤掉Fl(si)不等于y的。然后根据重要性评分排序。句子si的重要性得分用预测的类Fy的置信度值表示。(选出最可能得到分类y的句子)

8-11:找重要的词。首先要找到对原始预测结果贡献最大的最重要的词,然后通过控制语义相似度对其稍作修改。

评分函数:(删除该词后置信度的变化,变化越高越重要)

12-20:生成bugs。和白盒方法类似。

论文阅读 | TextBugger: Generating Adversarial Text Against Real-world Applications的更多相关文章

  1. 论文阅读 | HotFlip: White-Box Adversarial Examples for Text Classification

    [code] [pdf] 白盒 beam search 基于梯度 字符级

  2. 【论文阅读】Deep Adversarial Subspace Clustering

    导读: 本文为CVPR2018论文<Deep Adversarial Subspace Clustering>的阅读总结.目的是做聚类,方法是DASC=DSC(Deep Subspace ...

  3. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  4. 论文阅读:《Bag of Tricks for Efficient Text Classification》

    论文阅读:<Bag of Tricks for Efficient Text Classification> 2018-04-25 11:22:29 卓寿杰_SoulJoy 阅读数 954 ...

  5. [论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks

    [论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问 ...

  6. [论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding

    [论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding 本文结构 解决问题 主要贡献 算法原理 实验结果 参考文献 ...

  7. 论文笔记之:Generative Adversarial Text to Image Synthesis

    Generative Adversarial Text to Image Synthesis ICML 2016  摘要:本文将文本和图像练习起来,根据文本生成图像,结合 CNN 和 GAN 来有效的 ...

  8. Nature/Science 论文阅读笔记

    Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...

  9. YOLO 论文阅读

    YOLO(You Only Look Once)是一个流行的目标检测方法,和Faster RCNN等state of the art方法比起来,主打检测速度快.截止到目前为止(2017年2月初),YO ...

随机推荐

  1. java中volatile关键字的含义(转载)

    在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...

  2. 题解 [CF916E] Jamie and Tree

    题面 解析 这题考试时刚了四个小时. 结果还是爆零了 主要就是因为\(lca\)找伪了. 我们先考虑没有操作1,那就是裸的线段树. 在换了根以后,主要就是\(lca\)不好找(分类讨论伪了). 我们将 ...

  3. hdu 3555 Bomb(数位dp入门)

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Subm ...

  4. jmeter从文件中读取参数,并实现循环

    1. 通过BeanShell Sampler获取csv的行数 import java.io.BufferedReader;import java.io.FileReader;BufferedReade ...

  5. Python数据抓取(2) —简单网络爬虫的撰写

    (一)使用Requests存储网页 Requests 是什么?网络资源(URLs)抓取套件 优点? 改善urllib2的缺点,让使用者以最简单的方式获取网络资源 可以使用REST操作(POST,PUT ...

  6. 最近公共祖先lca模板

    void dfs(int x,int root){//预处理fa和dep数组 fa[x][0]=root; dep[x]=dep[root]+1; for(int i=1;(1<<i)&l ...

  7. POJ 3177 (Redundant Paths) —— (有重边,边双联通,无向图缩点)

    做到这里以后,总算是觉得tarjan算法已经有点入门了. 这题的题意是,给出若干个点和若干条边连接他们,在这个无向图中,问至少增加多少条边可以使得这个图变成边双联通图(即任意两点间都有至少两条没有重复 ...

  8. Palindrome Degree(CodeForces 7D)—— hash求回文

    学了kmp之后又学了hash来搞字符串.这东西很巧妙,且听娓娓道来. 这题的题意是:一个字符串如果是回文的,那么k值加1,如果前一半的串也是回文,k值再加1,以此类推,算出其k值.打个比方abaaba ...

  9. 梯度提升树GBDT总结

    提升树的学习优化过程中,损失函数平方损失和指数损失时候,每一步优化相对简单,但对于一般损失函数优化的问题,Freidman提出了Gradient Boosting算法,其利用了损失函数的负梯度在当前模 ...

  10. Error, DNGuard Runtime library not loaded!

    // Token: 0x06008CE9 RID: 36073 RVA: 0x0059629A File Offset: 0x00591E9A        [MethodImpl(MethodImp ...