论文解读《Adversarial training methods for semi-supervised text classification》

news2024/10/6 18:21:46

1 背景

1.1 对抗性实例(Adversarial examples)

  • 通过对输入进行小扰动创建的实例,可显著增加机器学习模型所引起的损失
  • 对抗性实例的存在暴露了机器学习模型的脆弱性和局限性,也对安全敏感的应用场景带来了潜在的威胁;

 

1.2 对抗性训练

  训练模型正确分类未修改示例和对抗性示例的过程,使分类器对扰动具有鲁棒性

  目的:

    • 正则化手段,提升模型的性能(分类准确率),防止过拟合
    • 产生对抗样本,攻击深度学习模型,产生错误结果(错误分类)
    • 让上述的对抗样本参与的训练过程中,提升对对抗样本的防御能力,具有更好的泛化能力
    • 利用 GAN 来进行自然语言生成 有监督问题中通过标签将对抗性扰动设置为最大化

1.3 虚拟对抗性训练

  将对抗性训练扩展到半监督/无标记情况

  使模型在某实例和其对抗性扰动上产生相同的输出分布

2 方法

2.1 整体框架

  

  

  基本思想:扩展对抗性训练/虚拟对抗性训练至文本分类任务和序列模型

  基本思路:

  • 对于文本分类任务,由于输入是离散的,且常表示为高维one-hot向量,不允许无穷小的扰动,因此将扰动施加于词嵌入中;由于受干扰的嵌入不能映射至某个单词,本文中训练策略仅作为通过稳定分类函数来正则化文本分类器的方法,不能防御恶意扰动;
  • 施加扰动于规范化的词嵌入中,设置对抗性损失/虚拟对抗性损失,增强模型分类的鲁棒性;

2.2 方法介绍

  将离散单词输入转化为连续向量,定义单词嵌入矩阵:

     R(K+1)×DR(K+1)×D

  其中 KK 指代单词数量,第 K+1K+1 个单词嵌入作为序列 结束(eoseos)令牌

  设置对应时间步长的离散单词为 w(t)w(t)  ,单词嵌入为 v(t)v(t) 

  针对文本分类问题使用 LSTM 模型或双向 LSTM 模型 由于扰动为有界范数,模型在对抗性训练过程中可能 通过 “学习具有较大范数的嵌入使扰动变得不重要” 的病态解决方案,因此需将嵌入进行规范化:

    v¯¯¯k=vk−E(v)Var(v)√ where E(v)=∑Kj=1fjvj,Var(v)=∑Kj=1fj(vj−E(v))2v¯k=vk−E(v)Var⁡(v) where E(v)=∑j=1Kfjvj,Var⁡(v)=∑j=1Kfj(vj−E(v))2

  其中 fifi 表示第 ii 个单词的频率,在所有训练示例中进行计算。

2.2.1 对抗性训练

  对抗性训练尝试提高分类器对小的、近似最坏情况扰动的鲁棒性——使分类器预测误差最大

  代价函数:

    −logp(y∣x+rzdv;θ) where rudv−argminr,∣r∥≤ϵlogp(y∣x+r;θ^)−log⁡p(y∣x+rzdv;θ) where rudv−arg⁡minr,∣r‖≤ϵlog⁡p(y∣x+r;θ^)

  其中 rr 为扰动, θˆθ^ 为分类器当前参数的常数集,即表明构造对抗性实例的过程中不应该进行反向传播修改参数

  对抗性扰动 rr  的生成:通过线性逼近得到

    radv=−ϵg/∥g∥2 where g=∇xlogp(y∣x;θ^)radv=−ϵg/‖g‖2 where g=∇xlog⁡p(y∣x;θ^)

2.2.2 虚拟对抗性训练

  将对抗性训练应用于半监督学习——使分类器预测的输出分布差距最大

  额外代价:

    KL[p(⋅∣x;θ^)∣p(⋅∣x+rv-adv ;θ)] where rv-adv =argmaxr,∥r∥≤ℓKL[p(⋅∣x;θ^)∥p(⋅∣x+r;θ^)]KL⁡[p(⋅∣x;θ^)∣p(⋅∣x+rv-adv ;θ)] where rv-adv =arg⁡maxr,‖r‖≤ℓKL[p(⋅∣x;θ^)‖p(⋅∣x+r;θ^)]

  对抗性扰动设置:

    radv=−ϵg/∥g∥2 where g=∇slogp(y∣s;θ^)radv=−ϵg/‖g‖2 where g=∇slog⁡p(y∣s;θ^)

  对抗性损失:

    Ladv(θ)=−1N∑Nn=1logp(yn∣sn+radv,n;θ)Ladv(θ)=−1N∑n=1Nlog⁡p(yn∣sn+radv,n;θ)

  其中 NN 为标记样本的数量

  虚拟对抗性扰动设置:

    rv-adv =ϵg/∥g∥2 where g=∇s+dKL[p(⋅∣s;θ^)∣p(⋅∣s+d;θ^)]rv-adv =ϵg/‖g‖2 where g=∇s+dKL[p(⋅∣s;θ^)∣p(⋅∣s+d;θ^)]

  其中 dd 为小随机向量,实际通过有限差分法和幂迭代计算虚拟对抗性扰动

  虚拟对抗性训练损失:

    LV-adv (θ)=1N′∑N′n′=1KL[p(⋅∣sn′;θ^)∣p(⋅∣sn′+rv−ndv,n′;θ)]LV-adv (θ)=1N′∑n′=1N′KL[p(⋅∣sn′;θ^)∣p(⋅∣sn′+rv−ndv,n′;θ)]

  其中 NN 为标记/未标记样本的数量之和

3 总结

  略

4 其他

  • 基于梯度的攻击:    FGSM(Fast Gradient Sign Method)  PGD(Project Gradient Descent)  MIM(Momentum Iterative Method)
  • 基于优化的攻击:    CW(Carlini-Wagner Attack)
  • 基于决策面的攻击:  DEEPFOOL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/857182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端开发的工作职责精选【10篇】

前端开发的工作职责1 1、使用Divcss并结合Javascript负责产品的前端开发和页面制作; 2、熟悉W3C标准和各主流浏览器在前端开发中的差异,能熟练运用DIVCSS,提供针对不同浏览器的前端页面解决方案; 3、负责相关产品的需求以及前端程序的实现&#xff0c…

IDEA 配置 eslint

第一步 第二步 然后就去试一下啦,理论上到这一步就没问题了,有问题在留言吧。

超低延时直播技术的前世今生

作者:李晨光、匡建鑫、陈鉴平 卷首语: 据中国互联网络信息中心发布的《中国互联网络发展状况统计报告》显示,截止到 2022 年 6 月我国网络直播用户规模达到了 7.16 亿,占网民整体的 68.1% 。最主要原因是 2020 年度疫情期间导致居…

C++入门(小白篇2-标识符定义-关键词-变量类型)

前言 在上一节课中,我们学习到C软件的安装,也知道C运行的各种软件,以及运行第一个程序 今天我们来学习一下 1、C中标识符(变量)的命名规则 2、认识C中的关键词 3、认识C中的数据类型 每天学一点,不要太多不然脑子装不下&#xff0…

vscode终端背景颜色修改以及报错信息颜色修改

引言 刚从pycharm转到vscode上时,很不喜欢vscode终端信息一片白色,于是想尽办法去修改vscode终端风格 这里提供vscode终端背景颜色的修改和vscode终端报错提示信息颜色的修改方法 (1)vscode终端背景颜色优化 步骤一,ctrlshiftp打开设置搜索…

【python 深度学习】解决遇到的问题

目录 一、RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb 二、AttributeError: module ‘tensorflow’ has no attribute ‘flags’ 三、conda 更新 Please update conda by running 四、to search for alternate channels that…

项目启动会为什么很重要? 要确定哪些事宜?

项目启动会议及事项安排 1、领导致辞 2、项目目标 3、项目范围及关键交付物 4、项目里程碑 5、项目组织架构及人员工作安排 6、项目管理机制 7、联系人列表 8、Q&A 进主页获取更多资料

JVM—编译器、类加载的过程、双亲委派机制这些你还记得吗?

背景介绍 这两天在对JVM的知识进行回顾,顺便来分享分享,接下来也会有系列文章,欢迎大家一起讨论。 过程 为什么叫JVM? Java Virtual Machine,java虚拟机。可以理解成一个以字节码为机器指令的CPU 有哪些特点呢&#…

python性能分析,logging性能,print性能,文件写入性能对比

先说结论,没想到的是print性能比logging性能好,输出到控制台会极大降低程序性能,以下是我的性能对比结果: 运行情况是python后台运行并输出到日志,命令是 python3 test.py > /opt/testtime.log 2>&1 &

【css】添加待小三角的提示框

如需创建在工具提示的指定侧面显示的箭头&#xff0c;在工具提示后添加“空的”内容&#xff0c;并使用伪元素类 ::after 和 content 属性。箭头本身是使用边框创建的。这会使工具提示看起来像气泡。 代码&#xff1a; <style> .tooltip {position: relative;display: …

通过signtool进行数字签名和验证签名

&#xff08;一&#xff09;如何签名 SignTool.exe (Sign Tool) - .NET Framework | Microsoft Learn Using SignTool to Sign a File - Win32 apps | Microsoft Learn 签名命令行&#xff1a; signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com yyy.dll xx…

C++ 学习系列 1 -- 左值、右值与万能引用

1. 何为左值&#xff1f;何为右值&#xff1f; 简单的说&#xff0c;左值可以放在等号的左边&#xff0c;右值可以放在等号的右边。 左值可以取地址&#xff0c;右值不能取地址。 1.1 左值举例&#xff1a; 变量、函数或数据成员返回左值引用的表达式 如 x、x 1、cout <…

Keystone Automotive EDI 需求分析

Keystone Automotive 是一家知名的汽车零部件销售卖场&#xff0c;自创立以来&#xff0c;在汽车行业取得了卓越的成就。作为一家专业的汽车零部件供应商&#xff0c;Keystone Automotive 致力于为客户提供优质的产品和卓越的服务。公司的经营范围涵盖广泛&#xff0c;涉及多个…

ubuntu python虚拟环境venv搭配systemd服务实战

文章目录 参考文章目录结构步骤安装venv查看python版本创建虚拟环境激活虚拟环境运行我们程序看缺少哪些依赖库&#xff0c;依次安装它们接下来我们配置python程序启动脚本&#xff0c;脚本中启动python程序前需先激活虚拟环境配置.service文件然后执行部署脚本&#xff0c;成功…

unity vscode 代码关联 跳转 BUG

一早打开电脑发现代码关联失效了&#xff0c;目测可能跟昨天一些插件更新有关 结论 就这货&#xff0c;开了就没法提示代码关联&#xff0c;估计预览版全是BUG。 另一个坑 同期有个unity插件也是预览版&#xff0c;“非常好使”&#xff0c;当场去世。评论点开有好几个人说用…

cadence virtuoso worning

cadence virtuoso 添加工艺库报错如下&#xff1a; Warning: ddUpdateLibList: It appears that you are trying to run an OA executable on CDB data. Library smic13mmrf_1233 contains file /home/IC/Tech/PDK_13mmrf_1P6M_30k/smic13mmrf_1233/prop.xx which is CDB data.…

Taro React组件使用(11) —— RuiNoticebar 公告栏

1. 需求分析 用于循环播放展示一组消息通知&#xff1b;通知消息渲染完成&#xff0c;获取消息的长度和盒子的长度&#xff1b;使用【taro react】---- 获取元素的位置和宽高等信息异步获取内容和盒子的宽高信息&#xff1b;通过 CSS3 的 animation 实现内容的移动&#xff1b…

Flume拦截器

实现 Interceptor接口 方法1 是初始化: 方法2和3重载 拦截: 方法3 是关闭: 但是flume是通过内部类创建对象的

一、Kubernetes介绍与集群架构

Kubernetes介绍与集群架构 一、认识容器编排工具 docker machine 主要用于准备docker host现已弃用建议使用docker desktop docker compose Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose&#xff0c;您可以使用 YAML 文件来配置应用程序的服务。…

c语言--浮点数(float)与0值比较

我们定义一个float类型的数据a&#xff0c;赋值为123456789并输出&#xff1a; int main() {float a;a 123456789;printf("%f\n",a);return 0; }输出结果为&#xff1a; 由此可以看出&#xff0c;程序输出的结果并不是其被赋予的值。即说明了浮点数存在一定的误差。…