NMT对抗训练的三部曲

article/2025/8/26 16:31:36

c60ec41c8d1e61a9c33bbfe94922b616.png

来自:天宏NLP

进NLP群—>加入NLP交流群

本文主要介绍NMT模型鲁棒性的相关改进工作,介绍一下对抗训练的三部曲,一作皆是ChengYong,分别中了2018,2019和2020的ACL。

第一项工作为 Towards Robust Neural Machine Translation (ACL 2018)

本文的问题引入为一个小实验,即将机器翻译的源句进行微小扰动(同义词替换),69.74%的翻译句子也随之改变,并且原始输入和扰动输入对应的翻译句间BLEU仅为79.01,因此,作者希望通过对抗训练来加强Encoder和Decoder的抗干扰能力。

2aff842c9e3f5158fcb31c7c90b57b7d.png

具体做法如上图,首先是噪声的引入,作者提出两种方式:1)词汇级别,计算余弦相似度进行同义词替换;2)特征级别,在词向量上加入高斯噪声。然后是噪声数据的使用,对应上图中三个损失函数:1)Ltrue(x, y)是正常训练NMT的损失函数;2)Lnoisy(x', y)是加强Decoder的去噪能力,即对应有噪声的Hx',Decoder也能得到正确的输出;3)Linv(x, x'),旨在加强Encoder的去噪能力,即针对噪声数据x',Encoder得到的Hx'也应与原表征Hx相近,训练过程采用了min-max two-player策略,引入Discriminator进行交互对抗训练,Encoder得到Hx和Hx'应该尽可能相似骗过Discriminator,而Discriminator则要分开有、无噪声的数据,两者迭代训练以加强Encoder对噪声数据x'的建模能力。

文章优势在于不改变模型结构,可拓展到任意噪声干扰或是针对特定任务进行设计,如作者对输入数据进行删除、替换等token级噪声时,发现使用词汇级别噪声的引入训练的模型更鲁棒。

第二项工作为 Robust Neural Machine Translation with Doubly Adversarial Inputs (ACL 2019)

这项工作不同于上文的模型无关,而是将NMT看成“白盒”,从而基于梯度生成对抗输入,文章的核心思想就是下面这条式子,其中x',x分别代表有无噪声的数据,R(·)为相似性度量,后面的是负对数Loss,通俗来讲就是找到噪声不是太大的x'(保证x'与x语义相近),使得模型的Loss最大,这样才能最有效地加强模型鲁棒性。

ade48b1158d1df209eaec8a4efaef5ce.png

具体做法分为两部分,分别是Encoder攻击和Decoder防御。在Encoder端,x为Encoder的输入,模型会算出某个词表征xi的梯度gxi,然后在词表中找出使Loss最大的x替换原有的词xi,做法是在词典中计算表征“e(x)-e(xi)”与gxi的相似度,使相似度最大的xi'为所得。同时,噪声xi'不应与原始xi差太远,作者使用了Masked LM提取候选词,在原句中,会将需要替换的词先mask,然后选择预测的topk作为候选项,至于哪些词会被mask或替换则为随机均匀采样。

eb2aaecad77e9beadf265bedbfe521e1.png

在Decoder端,z为Decoder的输入,与Encoder中的噪声xi'类似,以同样的方法得到zi',但针对zi的采样与xi有关,即xi随机采样,zi需要大概率在xi替换的同样位置进行替换。因此,回望整个训练方式,Encoder的作用是找到使梯度最大的xi'扰乱模型,Decoder的作用是即使输入为zi',仍能输入正确的结果,具有一定鲁棒性。

我觉得本文有两点值得思考,首先是基于梯度最大来找噪声词,能够更有力的对模型鲁棒能力发起攻击,其实这个可以更进一步,Encoder输入中需要被替换的词并非随机采样,而是找使Loss最大的词,相关文章改进CE Loss为Focal Loss也就是这个思想,我们可以直觉判断,模型建模较好的是高频词,建模不好的是低频词,低频词的Loss比较大,我们在大Loss的基础上再找大梯度,这样攻击效果更强力,同时可以提高模型对低频词的鲁棒性。第二点是作者对xi的替换处理,还要回词典中寻找进行词替换,这样未免更加麻烦了,为什么不在一定范围内,直接找梯度最大的向量进行替换了呢?如果 怕语义信息不相似,缩小相似度量范围就好了,这样更方便。

第三项工作为 AdvAug: Robust Adversarial Augmentation for Neural Machine Translation (ACL 2020)

这项工作是在第二项的基础上进行了数据增强的改进,采用的方法为线性插值,首先针对原始数据(x, y),作者用第二项工作的方法造出一堆噪声数据,然后对噪声数据进行线性插值生成更多的伪数据,令人比较奇怪的是,作者对不同的parallel data pair同样进行了线性插值,可能两句话虽不同含义,但是插值后在向量空间,源句和目标句也能表达类似语义?

06ee284e09d0f912d8ca76d2ab7017e7.png


e6b6aaddf57a7e4b5cd5ae7838f1b40f.png


进NLP群—>加入NLP交流群


http://chatgpt.dhexx.cn/article/YavJpH3e.shtml

相关文章

手把手教你用fairseq训练一个NMT机器翻译系统

以构建英-中NMT为例,在linux上运行,fairseq版本为0.8.0 环境准备 Requirements: fairseq:pytorch包,包括许多网络结构,https://github.com/pytorch/fairseqmosesdecoder:机器翻译的标准数据处…

00_NMT网络管理的模块控制

目录 NMT服务 NMT错误控制 NMT 节点守护 HeartBeat Message 心跳报文 NMT Boot-up 在can网络中,只有主站可以发送控制信息,来控制从站,从站不需要发送对网络控制消息的响应消息。 网络管理系统负责初始化、启动及停止网络及网络中的设备…

Canopen协议 (1):网络状态管理(NMT)

工控应用中,常常会遇到一些设备:电机或者其他传感器需要通过Can 这个硬件接口来通信,而且往往通信协议都是走的都是Canopen协议。自己当初搞的时候对协议也是云里雾里,为了大家不走歪路,早日走上人生巅峰,这…

canopen学习总结(一)——NMT网络管理

[1] NMT网络管理 [1-1]概念: NMT到底是啥? 答:简单理解就是由一台主机来管理从机,主机可以控制从机的状态。 那么机器到底有哪些状态呢? 答:看下面这图,总共就这些状态 [1-2]命令&#xff1…

NMT

1)刚开始时,在RNN的基础上引入attention,即将两者结合应用,完整解释并附上完整code。详见下链接: 基于RNNAttention的机器翻译 2)接着,Facebook在CNN的基础上引入attention,参见论…

Neural Machine Translation(NMT)技术概述

在神经网络语言模型处理NLP领域,我做的研究一直都和文本分类相关,其实还有很多其他的应用领域,比方说:语言翻译、词性标注、命名实体识别等。感觉还是有必要了解一下如何用神经网络语言模型对这些应用进行建模的。因此&#xff0c…

NMT with Attention

1.数据准备 termcolor.colered 对输出进行染色,凸显。colored(f"tokenize(hello): ", green) from termcolor import colored import random import numpy as npimport trax from trax import layers as tl from trax.fastmath import numpy as fastnp …

CANopen通信之NMT通信

在介绍NMT通信机制之前,先介绍一下NMT这个通信对象的定义。在以下部分中COB-ID使用的是 CANopen 预定义连接集中已定义的缺省标志符。 1) NMT 模块控制( NMT Module Control) 只有 NMT-Master 节点能够传送 NMT Module Control 报文。 所有从…

NMT:神经网络机器翻译

前言 SMT是在神经网络之前最主流的翻译模式,统计机器翻译;NMT则是基于神经网络的翻译模式,也是当前效果最好的翻译模式。现在基于几篇paper来梳理下神经网络下的翻译模型。 NMT based RNN 1) First End-to-End RNN Trial   2014年&…

神经机器翻译(Neural machine translation, NMT)学习笔记

神经机器翻译(Neural machine translation, NMT)是最近提出的机器翻译方法。与传统的统计机器翻译不同,NMT的目标是建立一个单一的神经网络,可以共同调整以最大化翻译性能。最近提出的用于神经机器翻译的模型经常属于编码器-解码器…

Java本机内存跟踪NMT实战详解

JVM通常会额外分配内存。这些额外的分配,会导致java程序占用的内存,超出-Xmx的限制。让我们使用NMT查看内存的使用情况 NMT 是什么 NMT 是一种 Java Hotspot VM 功能,用于跟踪 HotSpot VM 的内部内存使用情况。您可以使用该jcmd实用程序访问…

fastText模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目标一、fastText的模型架构1. N-gram的理解1.1 bag of word 2. fastTex模型中层次化的softmax2.1 哈夫曼树和哈夫曼编码2.1.1 哈夫曼树的定义2.1.2 哈夫曼树的相关…

fastText Python 教程

诸神缄默不语-个人CSDN博文目录 fastText Python官方GitHub文件夹网址:fastText/python at main facebookresearch/fastText 本文介绍fastText Python包的基本教程,包括安装方式和简单的使用方式。 我看gensim也有对fasttext算法的支持(ht…

玩转Fasttext

Fasttext是Facebook AI Research最近推出的文本分类和词训练工具,其源码已经托管在Github上。Fasttext最大的特点是模型简单,只有一层的隐层以及输出层,因此训练速度非常快,在普通的CPU上可以实现分钟级别的训练,比深度…

FastText详解

词向量对比word2vec https://zhuanlan.zhihu.com/p/75391062 0、实战经验 word2vec vs fastText区别? 思想:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。 word2vec vs fastText区别? …

FastText原理

一、简介 fasttext是facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。 fastText结合了自然语言处理和机器学习中最…

Fasttext

Fasttext Paper Fasttext特点 模型简单,只有一层的隐层以及输出层,因此训练速度非常快不需要训练词向量,Fasttext自己会训练两个优化:Hierarchical Softmax、N-gram Fasttext模型架构 fastText模型架构和word2vec中的CBOW很相…

[NLP]文本分类之fastText详解

Word2vec, Fasttext, Glove, Elmo, Bert, Flair pre-train Word Embedding 一、fastText简介 fastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点: 1、fastText在保持高精度的情况下加快了训练速度和测试速度 2、fastText不需要预…

FastText:高效的文本分类工具

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

FastText的简单介绍

0、引言 FastText是facebook开源的一款集word2vec、文本分类等一体的机器学习训练工具。在之前的论文中,作者用FastText和char-CNN、deepCNN等主流的深度学习框架,在同样的公开数据集上进行对比测试,在保证准确率稳定的情况下,Fa…