NLP(二)文本生成 --VAE与GAN模型和迁移学习

NLP(二)文本生成 --VAE与GAN模型和迁移学习

  • VAE与GAN模型和迁移学习
    • 1. Auto Encoder 自编码器
      • 1.1 结构
      • 1.2 核心思想
      • 1.3 损失函数
      • 1.4 Denoising Auto Encoder(降噪自编码器)
    • 2. Variational Auto Encoder (VAE)
      • 2.1 核心思想
      • 2.2 损失函数
      • 2.3 KL divergence(KL散度)
    • 3. GAN(generative adversarial networks)
      • 3.1 GAN结构与核心思想
      • 3.2 训练 GAN 的难点
      • 3.3 如何优化
    • 4. 文本生成应用
      • 4.1 GAN与VAE结合
      • 4.2 Toward Controlled Generation of Text
      • 4.3 迁移学习
      • 4.4 Data-to-Text Generation with Content Selection and Planning

VAE与GAN模型和迁移学习

1. Auto Encoder 自编码器

1.1 结构

text–encoder NN–latent vector–decoder NN–text

1.2 核心思想

将输入通过encoder NN编码,得到latent vector,再通过decoder NN,将vector对应text还原

1.3 损失函数

标准自编码器主要关注重建损失(reconstruction loss)
在这里插入图片描述

1.4 Denoising Auto Encoder(降噪自编码器)

基本思想: 把输入句子的一部分给“污染” (corrupt) 了,但是我们希望在经过编码和解码的过程之后,我们能够得到原来的正确的句子,加强 Auto Encoder 的 robustness。类似BERT 的 masking 就是一种“污染”的手段。
Example: 我爱[MASK]然语[MASK]处理 --> vector --> 我爱自然语言处理

2. Variational Auto Encoder (VAE)

2.1 核心思想

VAE变分自编码器可用于对先验数据分布进行建模。它包括两部分:编码器和解码器。编码器将数据分布的高级特征映射到数据的低级表征,低级表征叫作本征向量(latent vector),再通过解码器输出。通俗的说,VAE就是在Anto Encoder的基础上给latent vector添加限制条件,让其服从高斯分布。下图中z为latent vector,根据学到的分布参数进行sample
NLP(二)文本生成 --VAE与GAN模型和迁移学习_第1张图片

2.2 损失函数

在变分自编码器的情况中,我们希望本征向量遵循特定的分布,通常是单位高斯分布,使下列损失得到优化:
在这里插入图片描述
p(z′)~N(0,I) 中 I 指单位矩阵,q(z∣X) 是本征向量的分布

2.3 KL divergence(KL散度)

计算两个概率分布的差值
在这里插入图片描述

3. GAN(generative adversarial networks)

3.1 GAN结构与核心思想

GAN 是根据给定的先验分布生成数据的另一种方式,包括同时进行的两部分:判别器(Discriminator)和生成器(Generator)。判别器用于对「真」图像和「伪」图像进行分类,生成器从随机噪声中生成图像(随机噪声通常叫作本征向量或代码,该噪声通常从均匀分布(uniform distribution)或高斯分布中获取)

Example应用: 人脸识别,一个是通过人脸生成特征向量来鉴定身份,一个是通过特征向量来还原人脸,让这两个网络互相对抗,看最后是捏造人脸的网络可以成功蒙蔽鉴别网络,还是鉴别网络能够成功识破伪造的人脸。最终使得生成的内容具有多样性的同时,分类器也无法识别真假

3.2 训练 GAN 的难点

①从先验分布中对本征变量进行随机噪声采样

**缓解方法:**使用 VAE 对本征变量进行编码,学习数据的先验分布,通过学习的分布进行采样,而不是生成随机噪声

②文本是离散tokens的序列。因为生成器(Generator,简称G)需要利用从判别器(Discriminator,简称D)得到的梯度进行训练,而G和D都需要完全可微,碰到有离散变量的时候就会有问题,当我们把argmax或者sampling得到的文字传给Discriminator打分的时候,我们无法用这个分数做back propagation对生成器做优化操作;另外,在GAN中我们通过对G的参数进行微小的改变,令其生成的数据更加“逼真”。若生成的数据是基于离散的tokens,D给出的信息很多时候都没有意义,当对tokens做微小的改变,在对应的dictionary space里面可能根本就没有相应的tokens

3.3 如何优化

(1)将普通的argmax转变成可导的Gumbel-softmax,此时可以同时优化Generator和Discriminator
(2) 使用Reinforcement Learning中的Policy Gradient来估算模型的gradient,并做优化,
根据当前的policy来sample steps;翻译任务中policy gradient直接优化BLEU

Policy: 当前执行的策略,在文本生成模型中,这个Policy一般就是指我们的decoder(LSTM)

  • Policy Gradient: 根据当前的policy执行任务,然后得到reward,并估算每个参数的gradient, SGD
    (3)还有一些方法是,不做最终的文本采样,直接使用模型输出的在单词表上的输出分布,或者是使用LSTM中的一些hidden vector来传给Discriminator,并直接优化语言模型

(4) Teacher-Forcing(MLE)

在对抗性训练的时候,G不会直接接触到真实的目标序列,当G生成了质量很差的序列的时候(生成质量很好的序列其实相当困难),而D又训练得很好,G就会通过得到的Reward知道自己生成的序列很糟糕,但却又不知道怎么令自己生成更好的序列, 这样就会导致训练崩溃。所以通过对抗性训练更新G的参数之后,还通过传统的MLE就是用真实的序列来更新G的参数。类似于有一个“老师”来纠正G训练过程中出现的偏差,类似于一个regularizer。

4. 文本生成应用

4.1 GAN与VAE结合

论文:Autoencoding beyond pixels using a learned similarity metric
将VAE的decoder当做GAN的geneator接到GAN上,充分利用两者优势,学习数据先验分布,再采样,使得对抗学习更有效
NLP(二)文本生成 --VAE与GAN模型和迁移学习_第2张图片

4.2 Toward Controlled Generation of Text

模型包含几个部分,一个Generator可以基于若干个向量(z和c)生成句子,几个Encoder可以从句子生成z和c的分布,几个Discriminator用来判断模型编码出的向量©是否符合example的正确分类。这个模型的好处是,我们在某种程度上分离了句子的信息。例如如果向量c用来表示的是句子的情感正负,那么模型就具备了生成正面情感的句子和负面情感句子的能力
NLP(二)文本生成 --VAE与GAN模型和迁移学习_第3张图片
情感分类任务中,图中的z代表latent vec(不掺杂情感),c代表情感特征,z和c独立,并为全集

4.3 迁移学习

style transfer 其实也是controlled text generation的一种,只是它control的是文本的风格。文本风格有很多种,例如情感的正负面,文章是随意的还是严肃的,各个作家的文风等等

4.4 Data-to-Text Generation with Content Selection and Planning

  • Content selection: 选择什么数据需要进入到我们的文本之中
  • Sentence planning: 决定句子的结构
  • Surface realization: 把句子结构转化成具体的字符串

你可能感兴趣的:(NLP,自然语言处理,nlp,人工智能,深度学习,神经网络)