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

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上,充分利用两者优势,学习数据先验分布,再采样,使得对抗学习更有效

4.2 Toward Controlled Generation of Text

模型包含几个部分,一个Generator可以基于若干个向量(z和c)生成句子,几个Encoder可以从句子生成z和c的分布,几个Discriminator用来判断模型编码出的向量©是否符合example的正确分类。这个模型的好处是,我们在某种程度上分离了句子的信息。例如如果向量c用来表示的是句子的情感正负,那么模型就具备了生成正面情感的句子和负面情感句子的能力

情感分类任务中,图中的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(二)文本生成 --VAE与GAN模型和迁移学习相关推荐

  1. NLP微博文本分类【Snorkel弱监督+ULMFiT迁移学习】

    本文是作者一个tweet/微博文本分类实战项目的全程重现与总结.该项目的最大特点是使用了弱监督技术(Snorkel)来获得海量标注数据,同时使用预训练语言模型进行迁移学习. 项目的主要步骤如下: 采集 ...

  2. 模型微调迁移学习Finetune方法大全

    迁移学习广泛地应用于NLP.CV等各种领域,通过在源域数据上学习知识,再迁移到下游其他目标任务上,提升目标任务上的效果.其中,Pretrain-Finetune(预训练+精调)模式是最为常见的一种迁移 ...

  3. 平潭迁移库是什么意思_迁移学习》第四章总结---基于模型的迁移学习

    基于模型的迁移学习可以简单理解为就是基于模型参数的迁移学习,如何使我们构建的模型可以学习到域之间的通用知识. 1. 基于共享模型成分的迁移学习 在模型中添加先验知识. 1.1 利用高斯过程的迁移学习 ...

  4. 深度学习技巧应用6-神经网络中模型冻结-迁移学习技巧

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用6-神经网络中模型冻结:迁移学习的技巧,迁移学习中的部分模型冻结是一种利用预训练模型来解决新问题的技巧,是计算机视觉,自然语言处理等任务里面最重 ...

  5. 深度学习NLP领域文本生成总结

    最近也不知道干啥了,索性把这个坑填完,也算是对自己研一的一些总结吧. 文章目录 前言 一.神经网络与深度学习 二.神经网络的过拟合与正则化 三.深度学习的优化算法 四.卷积神经网络 五.循环神经网络 ...

  6. 【NLP】文本生成?还不快上知识库

    公众号关注 "ML_NLP" 设为 "星标",重磅干货,第一时间送达! 来自 | 知乎 地址 | https://zhuanlan.zhihu.com/p/16 ...

  7. 【NLG】(二)文本生成评价指标—— METEOR原理及代码示例

    前奏: [NLG](一)文本生成评价指标--BLEU原理及代码示例 1.METEOR原理 2004年,卡内基梅隆大学的Lavir提出评价指标中召回率的意义,基于此研究,Banerjee和Lavie(B ...

  8. Pytorch实现CNN模型的迁移学习——蜜蜂和蚂蚁图片分类项目

    很多时候当训练一个新的图像分类任务时,一般不会完全从一个随机的模型开始训练,而是利用预训练的模型来加速训练的过程.经常使用在ImageNet上的预训练模型. 这是一种transfer learning ...

  9. 深度学习常见名词概念:Sota、Benchmark、Baseline、端到端模型、迁移学习等的定义

    深度学习:Sota的定义 Sota The end to end(非端到端模型) End to end(端到端模型) Benchmark.Baseline 并发.并行.串行 迁移学习 微调 进程.线程 ...

最新文章

  1. java本地方法封装库_JNA-Java本地方法封装库
  2. java多线程机制2(安全问题)
  3. 用google代替CSDN的博客搜索功能
  4. 解决非浏览器客户端请求nginx无法命中缓存的问题
  5. java xml接口实例化_Spring简介及xml配置
  6. springboot 别名不起作用_springboot之mybatis别名的设置
  7. TTU智能配电终端_智能配电终端规模化建设及应用
  8. 制图折断线_学不好CAD怎么办?老师傅教你CAD制图规范,新手也能秒懂
  9. python函数调用的例子_Python案例|混用C函数
  10. oracle10g rac导出ocr,Oracle RAC 迁移OCR(10g)
  11. Servlet+jsp入门教程
  12. C/C++编程题之购物清单
  13. 基于单片机的智能温度监测系统的代码
  14. 如何解决mysql执行语句效率低下不走索引
  15. 不老嘞 - 2004和老婆游香山
  16. Steam 最新VR 游戏畅销榜——这几款游戏绝对值得一玩~不来看看你可就错过啦!
  17. Steaming技术初体验
  18. 《小鸡快跑》的成功故事
  19. android多屏幕多分辨率的一些概念
  20. 寒假“搜索”练习题解

热门文章

  1. 双目格雷码结构光三维测量系统原理解析
  2. ogre android 编译,cmake 编译 ogre3D(version1.9) for android
  3. 韩松老师模型压缩--三步剪枝法学习笔记
  4. 如何判断图片即将进入可视区域
  5. python中continue语句的作用_Pythoncontinue语句有什么作用?详解Pythoncontinue语句的用法...
  6. linux网络限速总结
  7. HaLaShao Tool(零)
  8. 微信相框亮相CES Asia:新增设备物联并打通内容服务
  9. 前端入门:JS -- BOM (JS执行机制) P10121896-10121916
  10. 【Proteus仿真】51单片机74LS164+74LS165扩展 I/O示例