最近看了一些字符级别的文本攻击方法,目前字符级别的攻击主要就是两步:找到要攻击的地方(被攻击单词)和如何攻击,针对于这两个不同角度也有一些不一样的文章。

如何找到攻击位置

白盒攻击中可以根据损失函数或者是前向导数等内部参数,反向寻找到输入中对输出影响最大的部分,黑盒攻击中一般都会构造一个打分函数,对文本中的每一个位置进行一个打分,分数越高则说明该部分在当前句子下最重要。

DeepWordBug:Black-box Generation of Adversarial Text Sequences to Evade Deep Learning Classifiers

这是一篇黑盒攻击的文章,着眼于利用打分函数如何寻找到一条文本中最重要的部分,在构造打分函数时充分考虑一个单词对句子前后的影响。

还有一种常用的打分函数,是直接将单词xi变为等长度的空格,分别通过分类器,以此判别单词xi的重要程度。

FastWordBug:A Fast Method To Generate Adversarial Text Against NLP Applications

这篇文章是基于DeepWordBug改进的文章,亮点在于速度快,并且从另外一个视角,将pos技术结合起来,快速构造对抗样本。

第一步:对一段文本中的句子进行重要性排序(猜测使用一个句子级别的分类器,然后同时使用打分函数即可);

第二步:将打分函数和pos词性进行关联,这一步是加快的关键点,这个关联的实际意义就是不需要对句子中的单词进行无目标的更换,而是优先对经常出错的单词进行一个更改,相当于对不同词性的单词给予一个权重,根据权重大小按照优先度对单词进行更改;

第三步:按照一些通用的方法进行更改即可。

最后实验数据也表明,确实攻击速率下降了一半,但是对于准确率下降幅度这么大,还是心存疑惑。

以后介绍的都是如何找到文本中最重要的单词,然后更改这个单词,思考角度都是寻找的方法,以后可能也会有更多的方法去更有效的寻找。但是使用的攻击就是很简单的替换,排序或者删除,还有一些文章是从如何攻击的角度来看待文本对抗。

如何攻击

Text Processing Like Humans Do: Visually Attacking and Shielding NLP Systems

这篇文章的角度不是着眼于我怎么找到最关键的地方修改,而是从修改方法下手,利用视觉的一些信息寻找修改的方法,具体指的是在字符嵌入空间寻找临近域。

ICES:基于图像信息的字符嵌入空间,将字符图像进行训练得到一个嵌入空间;

DCES:基于描述的字符嵌入空间,将字符-描述进行训练得到一个嵌入空间;

ECES:选择一个对应的变音符(在字符上添加上下角标)

既然这是通过视觉的信息寻找临近域,所以作者专门用一个部分去讨论修改方法对人类的影响。个人感觉单纯提出一张修改方法并不足以支撑起一篇文章,所以之后作者还加入了防御方法:对抗训练,字符嵌入,规则检查等等。并且在最后也验证了确实在hotword上做修改更加有效。

结合寻找位置和攻击

TEXTBUGGER: Generating Adversarial Text Against Real-world Applications

使用白盒攻击(雅阁比矩阵)和黑盒攻击(打分函数)来寻找最需要更改的位置,之后提出五种修改手段(插入,删除,替换,替代,同义词),并且攻击的不再是自己训练的模型,而是一些可用的API接口,这大大增加的文章的实际用途。

并且通过大量实验,验证TEXTBUGGER的攻击成功率,讨论了文本长度对于攻击的影响,对抗样本的不可察觉性,对抗样本的迁移性,不同修改方法的影响程度等等,最后还添加的拼写检查和对抗训练提升模型的鲁棒性。

该文章通过对寻找重要单词的位置,之后再对单词进行字符级别(同义词)修改,可能之后会使用一些其他方法,比如使用句法分析,pos标注等加快攻击的效率,并且通过beam search扩展到单词级别甚至是短语级别的攻击上。

字符文本中的字符太多_文本对抗---字符级别的攻击相关推荐

  1. 找第一个只出现一次的字符_剑指offer 字符流中第一个只出现一次的字符

    题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'.当从该字符流中读出前六个字" ...

  2. 找出google字符流中第一个只出现一次的字符(map/queue)

    目录 解法一.hashmap 1.map的定义及插入,> 2.map的value获取及遍历 3.查找find(key) 4.计数count(key) 解法二.队列 1.队列 2.char以及op ...

  3. 【Java】 剑指offer(50-2) 字符流中第一个只出现一次的字符

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字 ...

  4. 富文本中添加字体选项功能_扑中的字体功能

    富文本中添加字体选项功能 A little extra help for styling your text 样式设置方面的一些额外帮助 I recently learned about a litt ...

  5. 文本分类和提取关键词算法_文本内容之间的关键词提取和相似度计算

    文本分类和提取关键词算法 背景 Web应用程序变得越来越智能. 从网站上使用服务的日子已经一去不复返了,用户不得不填写一个巨大的表格. 假设您有一个适合书迷的网站. 在Web 2.0之前,像这样的网站 ...

  6. 从富文本中截取图片_JS 获取富文本中的第一张图片 (正则表达式)

    JS 获取富文本中的第一张图片 (正则表达式) JS 获取富文本中的第一张图片 url 正则公式及去除字符串里面的 html 标签 后台发来一个富文本字符串里面可能包含了 0,1,2,3... 个图片 ...

  7. 从富文本中截取图片_js获取富文本中的第一张图片(正则表达式)

    js获取富文本中的第一张图片url正则公式及去除字符串里面的html标签 后台发来一个富文本字符串里面可能包含了0.1.2.3-个图片标签(img),我们的任务是获取这个字符串里面第一张图片的url, ...

  8. 函数调用中的参数太多_函数调用

    在开发软件的过程中我们经常会遇到错误,如果你用 Google 搜过出错信息,那你多少应该都访问过Stack Overflow这个网站.作为全球最大的程序员问答网站,Stack Overflow 的名字 ...

  9. word该值小于列表中的前一条目_文本主题发现(一)-- 数据预处理

    作者:赵镇宁 R语言中文社区特约作者 主题发现能够帮助我们处理和分析大规模信息并从中发现文本主要内容和主题,相关探测方法有文本聚类法.主题建模.多维尺度分析等等.这些分析方法的前期数据处理都不同程度的 ...

最新文章

  1. gpio引脚介绍 树莓派3b_如何让LabVIEW程序运行在树莓派3B(此处有坑)
  2. 33 个 2017 年必须了解的 iOS/swift 开源库第三方库
  3. Android-通过SlidingMenu高仿微信6.2最新版手势滑动返回(二)
  4. python经典排序_python实现十大经典排序算法
  5. Linux LVM相关概念
  6. 前端学习(914):offerset和style区别
  7. LeetCode 1253. 重构 2 行二进制矩阵(贪心)
  8. 1-4 TCP/IP协议族
  9. 联想笔记本连不上手机热点_购买低配笔记本电脑的烦恼:实际重装笔记本系统的辛酸血泪史...
  10. x265将yuv转h265(七)
  11. input子系统驱动学习之中的一个
  12. 终端模拟器 java_程序员必备之终端模拟器,让你的终端世界多一抹“颜色”
  13. 在教育孩子上少一点功利心,就会快乐?
  14. iphone11计算机显示计算过程,iPhone11怎么显示电池百分比
  15. Linux中删除文件夹和文件的命令(☆)
  16. AMBA总线协议之AHB学习记录(1)—ahb_bus(附verilog代码)
  17. csharp高级练习题:ASCII85编解码【难度:3级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
  18. 虹科 | 主机总线适配器:CPU的“速效救心丸”
  19. (自适应手机端)html5响应式绿色外贸打印设备机械设备环保网站源码 英文织梦dede模板
  20. 【愚公系列】2021年12月 网络工程-路由器上配置DHCP中继

热门文章

  1. Asigra无代理备份:“云”数据保护的先行者
  2. [转]只让指定的机器连接SQLServer服务器
  3. Kafka 可视化客户端工具(Kafka Tool)的基本使用
  4. 用OpenGL进行曲线、曲面的绘制
  5. 高并发的epoll+线程池,epoll在线程池内
  6. bogofilter notes
  7. js公共时间戳方法es6
  8. 聊聊storm TridentBoltExecutor的finishBatch方法
  9. 银行家算法回顾[JAVA实现]
  10. [游戏模版21] Win32 物理引擎 能量守恒