Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详解 GAN 在自然语言处理中的问题:原理、技术及应用

详解 GAN 在自然语言处理中的问题:原理、技术及应用

作者头像
新智元
发布于 2018-03-27 03:11:50
发布于 2018-03-27 03:11:50
2K0
举报
文章被收录于专栏:新智元新智元

【新智元导读】本文从 GAN 为什么没有在自然语言处理(NLP)中取得让人惊喜的成果出发,分析了原始 GAN 在 NLP 中的问题。 介绍和分析了近期将 GAN 应用于 NLP 中的一些论文,并进行了总结。

GAN 自从被提出以来,就广受大家的关注,尤其是在计算机视觉领域引起了很大的反响。这篇文章主要介绍 GAN 在 NLP 里的应用(可以算是论文解读或者论文笔记),并未涉及GAN 的基本知识 。由于很长时间没有写中文文章了,请各位对文章中不准确的地方多多包涵、指教。

GAN 为什么没有 NLP 取得好成绩?

虽然 GAN 在图像生成上取得了很好的成绩,GAN 并没有在自然语言处理(NLP)任务中取得让人惊喜的成果。 其原因大概可以总结为如下几点:

(1) 原始 GAN 主要应用实数空间(连续型数据)上,在生成离散数据(texts)这个问题上并不 work。GAN 理论的提出者 Ian Goodfellow 博士这样回答来这个问题问题:“GANs 目前并没有应用到自然语言处理(NLP)中,最初的 GANs 仅仅定义在实数领域,GANs 通过训练出的生成器来产生合成数据,然后在合成数据上运行判别器,判别器的输出梯度将会告诉你,如何通过略微改变合成数据而使其更加现实。一般来说只有在数据连续的情况下,你才可以略微改变合成的数据,而如果数据是离散的,则不能简单的通过改变合成数据例如,如果你输出了一张图片,其像素值是1.0,那么接下来你可以将这个值改为1.0001。如果输出了一个单词“penguin”,那么接下来就不能将其改变为“penguin + .001”,因为没有“penguin +.001”这个单词。 因为所有的自然语言处理(NLP)的基础都是离散值,如“单词”、“字母”或者“音节”, NLP 中应用 GANs是非常困难的。一般而言,采用增强学习算法。目前据我所知,还没有人真正的开始研究利用增强算法解决 NLP 问题。”

(2) 在生成 text 时,GAN 对整个文本序列进行建模打分。对于部分(partially)生成的序列,十分难判断其在之后生成整个 (fully) 序列时的分数。

(3) 另一个潜在的挑战涉及 RNN 的性质(生成文本大多采用 RNN 模型)。假设我们试图从 latent codes 生成文本,error 就会随着句子的长度成指数级的累积。最开始的几个词可能是相对合理的,但是句子质量会随着句子长度的增加而不断变差。另外,句子的长度是从随机的 latent representation 生成的,所以句子长度也是难以控制。

近期将 GAN 应用于 NLP的论文介绍

下面我将主要介绍和分析最近阅读过的将 GAN 应用于 NLP 中的一些论文:

1. Generating Text via Adversarial Training

论文链接:

http://people.duke.edu/~yz196/pdf/textgan.pdf

这是2016年的 NIPS GAN Workshop 上的一篇论文, 尝试将 GAN 理论应用到了文本生成任务上。 文中的方法比较简单,具体可以总结为:

(1) 以递归神经网络(LSTM)作为GAN的生成器(generator)。其中,用光滑近似(smooth approximation)的思路来逼近 LSTM 的输出。结构图如下:

(2) 目标函数和原始 GAN 有所不同,文中采用了feature matching 的方法 。迭代优化过程包含以下两个步骤:

其中式 (6) 为标准GAN的优化函数,式 (7) 为feature matching的优化函数。

(3) 本文的初始化非常有意思,特别是在判别器的预训练方面,利用原始的句子和该句子中交换两个词的位置后得到的新句子进行判别训练。(在初始化的过程中,运用逐点分类损失函数对判别器进行优化)。这非常有意思,因为将两个单词互换位置,输入的数据信息实际上是基本相同的。比如,大多数卷积计算最终会得出完全相同的值。

(4) 本文生成器的更新频率是判别器的更新频率的5倍,这与原始GAN的设定恰好相反。这是因为LSTM比CNN的参数更多,更难训练。

(5) 然而,本文生成模型 (LSTM) decode 阶段有 exposure bias 问题,即在训练过程中逐渐用预测输出替代实际输出作为下一个词的输入。

2. SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient

论文链接:https://arxiv.org/pdf/1609.05473.pdf

论文源码:https://github.com/LantaoYu/SeqGAN

文本将误差作为一种增强学习的奖励,以一种前馈的方式训练,用增强的学习的探索模式去更新G网络。

主要内容:这篇论文将序列生成过程当作一个 sequential decision making 过程。如下图:

(1) 其中左图为 GAN 网络训练的步骤1,判别器D 主要用来区分真实样本和伪造样本,这里的判别器D 是用 CNN 来实现的。

(2) 右图为 GAN 网络训练的步骤2, 根据判别器D 回传的判别概率回传给生成器G,通过增强学习的方法来更新生成器G,这里的的生成器G 是用 LSTM 来实现的。

(3) 因为 G网络的更新策略是增强学习,增强学习的四个要素 state, action, policy, reward分别为:state 为现在已经生成的tokens (当前 timestep 之前 LSTM decoder 的结果), action 是下一个即将生成的 token (当前解码词), policy 为 GAN 的生成器 G网络,reward 为GAN 的判别器 D网络所生成的判别概率。其中,reward 采用以下方法来近似:

本过程特点:即当解码到t时,即对后面 T-t 个 timestep 采用蒙特卡洛搜索搜索出 N 条路径,将这 N 条路径分别和已经 decode 的结果组成N条完整输出,然后将 D 网络对应奖励的平均值作为 reward. 因为当 t=T 时无法再向后探索路径,所以直接以完整 decode 结果的奖励作为 reward。

(4) 对于 RL 部分,本文采用了 policy gradient 方法。 根据 policy gradient 理论,生成器G的目标函数可以表示如下:

求导结果为: (详细推导过程请看原论文附页)

(5) 每隔一段时间,当生成更多的更逼真的句子后,重新训判别器D,其中判别器的目标函数表示如下:

算法结构图可以表示为如下:

实验部分主要分为合成数据实验和现实数据实验:

(1) 合成数据实验: 随机初始一个 LSTM 生成器 A,随机生成一部分训练数据,来训练各种生成模型。

评判标准为:负对数似然(交叉熵) NLL. 详细实验设置可以参看原论文。

(2) 现实数据实验:主要展示中文诗句生成,奥巴马演讲生成,音乐生成的结果。实验数据分别为中文诗歌数据集 (16,394首绝句),奥巴马演讲数据集 (11,092 段落), Nottingham 音乐数据集 (695首歌)。评测方法为 BLEU score, 实验结果如下:

文中并未展示模型生成的诗歌等, 具体效果如何呢?

3. Adversarial Learning for Neural Dialogue Generation

论文链接:https://arxiv.org/pdf/1701.06547.pdf

论文源码:https://github.com/jiweil/Neural-Dialogue-Generation

这篇论文是2017年1月26号上传到 arxiv上的,属于最新的 GAN 用于 NLP 的论文。文中主要用对抗性训练 (adversarial training) 方法来进行开放式对话生成 (open-domain dialogue generation)。文中把这项任务作为强化学习(RL)问题,联合训练生成器和判别器。和 SeqGAN 一样,本文也是使用判别器D 的结果作为 RL 的 reward 部分,这个 reward 用来奖励生成器G,推动生成器G 产生的对话类似人类对话。

总体来说,本文的思路和 SeqGAN 是大体一样的,但是有几处不同和改进的地方:

(1) 因为本文是用于开放式对话生成,所以文中的生成器采用 seq2seq 模型 (而非普通的 LSTM 模型)。 判别器则采用了 hierarchical encoder (而非 CNN)。

(2) 采取了两种方法为完全生成或者部分生成的序列计算 reward。除了 Monte Carlo search (与 SeqGAN相似) 方法,本文新提出了一个能对部分生成的序列进行 reward 计算的方法。使用所有完全 (fully) 和部分 (partially) 解码的序列来训练判别器会造成 overfitting。早期产生的部分(partially)序列会出现在许多的训练数据中,比如生成的第一个 token y_1 将会出现在所有的部分生成 (partially generated) 的序列里。所以本文提出仅仅分别从正(positive)序列 y+ 和负(negative)序列y-的每个子序列中随机地选取一个 sample 来训练判别器D。这个方法比 Monte Carlo search 更快速,但是也会使得判别器更弱,更不准确。

(3) 在 SeqGAN 中,生成器只能间接的通过判别器生成的 reward 来奖励或者惩罚自己所产生的序列。而不能直接从 gold-standard 序列中直接获取信息。 这种训练方式是脆弱的,一旦生成器在某个训练 batch 中变坏,判别器将会很容易对生成的句子进行判断 (比如 reward为0 ),此时生成器就会迷失。生成器只知道现在生成的句子是坏的,但是并不知道如何调整才能使得生成的句子变好。为了解决这个问题,在生成器的更新过程中,本文输入了 human-generated responses。对于这些 human-generated responses, 判别器可以将其 reward 设置为1。这样生成器可以在上述情况下仍能生成好的 responses。

(4) 训练过程中,有些针对 dialogue system 的设置(trick)。这部分内容,读者可以参考 Jiwei Li 之前的关于 dialogue system 的论文。

部分实验结果:

值得思考的地方:文中只尝试用判别器的结果作为 reward, 结合 原文作者之前在 dialogue system 文中提出的其他 reward 机制(e.g., mutual information)会不会提高效果?

4. GANs for sequence of discrete elements with the Gumbel-softmax distribution

论文链接:https://arxiv.org/pdf/1611.04051.pdf

相比前面两篇论文,本文在处理离散数据这个问题上则比较简单暴力。

离散数据 (用one-hot方法表示)一般可以从多项式采样取得,例如由softmax函数的输出p = softmax(h)。 根据之前的概率分布,以p的概率进行采样y的过程等价于:y=one_hot(argmax_i(h_i+g_i)) , 其中g_i是服从Gumbel distribution (with zero location and unit scale)。然而one_hot(argmax(.)) 是不可微分的。

与原始GAN不同,作者提出了一种方法来近似上面的式子: y = softmax(1/ r (h + g))。这个公式是可以微分的。算法结构如下:

本文的实验部分做得比较粗糙,只展示了生成得context-free grammar, 并未在生成其他文本数据上做实验。

总的来说,这篇论文本身方法还值得改进,也可以值得借鉴下。

5. Connecting generative adversarial network and actor-critic methods

论文链接:https://arxiv.org/pdf/1610.01945.pdf

Actor-critic methods [2]: 许多RL方法 (e.g., policy gradient) 只作用于policy 或者 value function。Actor-critic方法则结合了policy-only和value function-only 的方法。 其中critic用来近似或者估计value function,actor 被称为policy structure, 主要用来选择action。Actor-critic是一个on-policy的学习过程。Critic模型的结果用来帮助提高actor policy的性能。

GAN和actor-critic具有许多相似之处。Actor-critic模型中的actor功能类似于GAN中的generator, 他们都是用来take an action or generate a sample。Actor-critic模型中的critic则类似于GAN中的discriminator, 主要用来评估 actor or generator 的输出。具体的相同和不同点,感兴趣的朋友可以仔细阅读原文。

这篇论文主要贡献在于从不同的角度来说明了GAN和actor-critic模型的相同与不同点,从而鼓励研究GAN的学者和研究actor-critic模型的学者合作研发出通用、稳定、可扩展的算法,或者从各自的研究中获取灵感。

最近Bahdanau等大神提出了用actor-critic模型来进行sequence prediction [3]。虽然[3]中并没有用到GAN,或许对各位能有启发。 用类似的思想,GAN在sequence prediction上也许也能取得的比较好的效果?

[1] 深度解读:GAN模型及其在2016年度的进展

[2] Actor-Critic Algorithms

[3] An actor-critic algorithm for sequence prediction

笔者最近也在关注和从事 non-goal-oriented dialogue system 以及 goal-oriented question answering 的研究, please feel free to contact me if you have similar interests.

新浪微博:杨敏_HKU,Wechat: yangmin19911129

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
说明:在VPN上面,我们希望与分部建立VPN,保证与分部的财务部正常通信,另外还提供L2TP Over ISPEC功能,方便远程接入访问内部服务器等。当然我们也可以做详细的控制,根据需求而定。
ICT系统集成阿祥
2024/12/03
4300
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
一文读懂IPSec
IPSec(互联网协议安全)是一个安全网络协议套件,用于保护互联网或公共网络传输的数据。IETF在 1990 年代中期开发了 IPSec 协议,它通过 IP网络数据包的身份验证和加密来提供 IP 层的安全性。 IPSec简介 IPSec 可为通信两端设备提供安全通道,比如用于两个路由器之间以创建点到点 VPN,以及在防火墙和 Windows 主机之间用于远程访问 VPN等。IPSec可以实现以下4项功能: 数据机密性:IPSec发送方将包加密后再通过网络发送,可以保证在传输过程中,即使数据包遭截取,信息也无
SDNLAB
2022/07/08
13.9K0
一文读懂IPSec
15、【实战中提升自己】 防火墙完结篇之VPN部署–IPSEC VPN,包括与L2TP共存问题
(1)为什么需要部署Gre Over ipsec 说明:VPN的需求其实非常简单,就是与分部进行安全的访问,当然只允许财务部之间的互访【这个根据需求决定】,这路需要注意,除了这个以外,还有无线AP需要注册到总部来,这个需要通过VPN进行加密连接,但是这里总部是固定IP,而分部则是PPPOE拨号,这个只能通过动态策略模板来进行部署。所以这里需要实施 Gre Over ISPEC。
ICT系统集成阿祥
2024/12/03
3240
15、【实战中提升自己】 防火墙完结篇之VPN部署–IPSEC VPN,包括与L2TP共存问题
CentOS搭建VPN服务,一次性成功,收藏了
虚拟私人网络(英语:Virtual Private Network,缩写为VPN)是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内部网的网络讯息。它利用已加密的通道协议(Tunneling Protocol)来达到保密、发送端认证、消息准确性等私人消息安全效果。这种技术可以用不安全的网络(例如:互联网)来发送可靠、安全的消息。需要注意的是,加密消息与否是可以控制的。没有加密的虚拟专用网消息依然有被窃取的危险。
民工哥
2021/02/23
53.5K2
CentOS搭建VPN服务,一次性成功,收藏了
网络安全实验14 配置IPSec VPN,实现私网之间的隧道互访
IPSec (Internet Protocol Security) 是一种开放标准的框架结构,用于为IP网络通信提供安全服务,确保数据的机密性、完整性和来源认证。它通常由两个主要部分组成:Authentication Header (AH) 和 Encapsulating Security Payload (ESP),分别负责数据的认证和加密。IPSec VPN 利用这些安全机制,使远程用户或分支办公室能够通过不安全的公共网络(如互联网)安全地访问企业内部网络资源。
90后小陈老师
2024/06/18
5.1K0
网络安全实验14 配置IPSec VPN,实现私网之间的隧道互访
Centos7.2下部署L2TP/IPsec类型的VPN环境记录
之前在机房部署了PPTP的V**环境,后面发现有的同事使用的mac本不能连接PPTP,原因是IOS10.0系统以后就不支持PPTP的V**了,于是打算将V**更换L2TP类型的。 L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处: 1)PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接; 2)PPTP使用单一隧道,L2TP使用多隧道; 3)L2TP提供包头压缩、隧道验证,而PPTP不支持。 4)L2TP的可应用性更为广泛,很多路由不支持PPTP穿透
洗尽了浮华
2022/03/28
8.7K0
Centos7.2下部署L2TP/IPsec类型的VPN环境记录
网络安全技术:防火墙、VPN、入侵检测基础
防火墙是 网络边界的第一道防线 , 它部署在网络边界上的设备或功能,用来控制网络访问、拦截非法通信。它可以是一个独立设备,也可以内嵌在路由器或操作系统中。
神的孩子都在歌唱
2025/04/11
2490
网络安全技术:防火墙、VPN、入侵检测基础
10张图片教会你配置ipsec vpn
跨地区联网办公最经济实惠的方式,莫过于ipsec vpn,笔者此前也不止一次地写过ipsec vpn的配置方法,但是总有网友说太复杂了,今天我非要给各位看官来个简单版的教程,只用10张图片,就能展示华为防火墙配通外网,并且配通总部与分支机构的ipsec vpn。
IT狂人日志
2023/12/14
8830
10张图片教会你配置ipsec vpn
近期研究VPN的一些记录(OpenVPN,pptp,l2tp)
近期由于一些需要(特别是上Google),研究了下在VPS上搭建VPN服务器的方法。其中遇到一些坑,顺带记下来以备下次使用。
owent
2023/03/06
6.6K0
网络安全实验15 配置GRE over IPSec VPN,实现私网之间通过隧道安全互访
90后小陈老师
2024/06/18
1.4K0
网络安全实验15 配置GRE over IPSec VPN,实现私网之间通过隧道安全互访
什么是虚拟专用网以及有哪些实现方式(VPN篇)
虚拟专用网(VPN)相信IT人员是最熟悉的了,就算是一个不懂技术的多多少少也听过这个技术名词,特别是去年疫情其间流行的远程办公,大部分就通过VPN技术实现的,下面博主用实际场景介绍来带你走进新的知识点篇,企业组网常见的VPN系列。
网络之路一天
2024/01/08
9490
什么是虚拟专用网以及有哪些实现方式(VPN篇)
这些VPN知识你肯定没听过
在VPN出现之前,企业分支之间的数据传输只能依靠现有物理网络(例如Internet)。由于Internet中存在多种不安全因素,报文容易被网络中的黑客窃取或篡改,最终造成数据泄密、重要数据被破坏等后果。
ICT系统集成阿祥
2024/12/03
2450
这些VPN知识你肯定没听过
结合配置、抓包来分析IKE/IPSec的整个协商过程
这里主要讲解IKEV1的版本,在V1版本中有两个模式,一个主模式,一个野蛮模式(也称为积极模式),下面就以上一篇的拓扑跟配置为基础,来通过抓包来分析,先从IKE的主模式开始。
网络之路一天
2024/01/08
4.8K0
结合配置、抓包来分析IKE/IPSec的整个协商过程
华为防火墙和飞塔防火墙建立IPSec隧道,使两地局域网互通
以前写过总部与两个分支机构、三台华为防火墙配置ipsec,都是同一个品牌,相对来说配置比较简单。
IT狂人日志
2022/05/18
1.3K0
华为防火墙和飞塔防火墙建立IPSec隧道,使两地局域网互通
华为ensp中路由器IPSec VPN原理及配置命令(超详解)
虚拟专用网络(VPN)通过在您的设备和远程服务器之间创建加密隧道来工作。该隧道可保护您的互联网流量免受窥探,即使您使用的是公共 Wi-Fi 网络。
神秘泣男子
2024/06/03
4K0
华为ensp中路由器IPSec VPN原理及配置命令(超详解)
当GRE遇上IPSec后,安全性终于有了保障
BJ_FW身后有一个服务器,CS_FW与CD_R后面的client需要访问这个服务器,希望不把服务器暴露在公网上面,能实现的那就只有GRE与IPSec了,但是GRE没有安全性保障,IPSec有安全性,那能不能把GRE与IPSec结合起来一起使用呢?下面先回顾下GRE的配置,把各个点之前打通,然后在这个基础上面尝试下用IPSec部署,看看有什么样的效果。
网络之路一天
2024/01/08
4980
当GRE遇上IPSec后,安全性终于有了保障
防火墙L2TP over IPSec VPN (Window7终端拨号)典型配置
Comware V7防火墙设备作为VPN总部,电脑客户、移动终端通过中间跨越运营商网络拨入L2TP over IPSec VPN实现访问内网服务器的需求。
网络技术联盟站
2020/05/06
2.2K0
防火墙L2TP over IPSec VPN (Window7终端拨号)典型配置
隧道保活超时或协商超时,该如何解决?
华为防火墙,配置了L2TP Over IPSec,但是用客户端远程拨入的时候,显示警告:“隧道保活超时或协商超时”
IT狂人日志
2023/05/29
1.3K0
隧道保活超时或协商超时,该如何解决?
H3C交换机、路由器、防火墙常用指令,详细分类,一篇整理!
ICT系统集成阿祥
2025/05/27
3800
H3C交换机、路由器、防火墙常用指令,详细分类,一篇整理!
网络安全实验13 配置Client-Initiated场景下的L2TP VPN,实现移动办公用户访问企业内网资源
地址:https://www.leagsoft.com/doc/article/103107.html
90后小陈老师
2024/06/07
6620
网络安全实验13 配置Client-Initiated场景下的L2TP VPN,实现移动办公用户访问企业内网资源
推荐阅读
相关推荐
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档