深度学习-生成模型:Generation(Tranform Vector To Object with RNN)【PixelRNN、VAE(变分自编码器)、GAN(生成对抗网络)】

本文主要是介绍深度学习-生成模型:Generation(Tranform Vector To Object with RNN)【PixelRNN、VAE(变分自编码器)、GAN(生成对抗网络)】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度学习-生成模型:Generation(Tranform Vector To Object with RNN)【PixelRNN、VAE(变分自编码器)、GAN(生成对抗网络)】

  • 一、Generator的分类
  • 二、Native Generator (AutoEncoder's Decoder)
  • 三、PixelRNN
    • 1、生成句子序列
    • 2、生成图片
    • 3、生成音频:WaveNet
    • 4、生成视频:Video Pixel Network (VPN)
  • 四、Variational Autoencoder (VAE,变分自编码器)
    • 1、原始AutoEncoder
    • 2、Variational Autoencoder (VAE)
    • 3、Gaussian Mixture Model(高斯混合模型)
    • 4、Problems of VAE
  • 五、Generative Adversarial Network (GAN,对抗生成网络)
  • 六、Tips for Generation
      • 2.1 Scheduled Sampling
      • 2.2 Beam Search
      • 2.3 Reinforcement learning

一、Generator的分类

  • Generator:Generating a structured object component by component。
  • Generator:逐个组件(pixel/word…)地生成一个有结构的Object。
  • 我们可以生成很多东西,比如生成一句话,一段音乐等等。
    Generative Models { Native Generator(AutoEncoder’s Decoder) PixelRNN VAE(Variational AutoEncoder) GAN(Generative Adversarial Network) \begin{aligned} \text{Generative Models} \begin{cases} \text{Native Generator(AutoEncoder's Decoder)} \\[2ex] \text{PixelRNN} \\[2ex] \text{VAE(Variational AutoEncoder)} \\[2ex] \text{GAN(Generative Adversarial Network)} \end{cases} \end{aligned} Generative Models Native Generator(AutoEncoder’s Decoder)PixelRNNVAE(Variational AutoEncoder)GAN(Generative Adversarial Network)
  • 生成模型就是用机器学习去生成我们想要的数据,正规的说法是,获取训练样本并训练一个模型,该模型能按照我们定义的目标数据分布去生成数据。
  • 比如autoencoder自编码器,它的decoding部分其实就是一种生成模型,它是在生成原数据。又比如seq2seq序列到序列模型,其实也是生成另一个我们想要的序列。Neural style transfer的目标其实也是生成图片。
    在这里插入图片描述
  • 上图涵盖了基本的生成式模型的方法,主要按是否需要定义概率密度函数分为:
    • Explicit density models:这之中又分为tractable explicit models和approximate explicit model。
      • tractable explicit model通常可以直接通过数学方法来建模求解,
      • approximate explicit model通常无法直接对数据分布进行建模,可以利用数学里的一些近似方法来做数据建模, 可分为:
        • 确定性(变分方法:如VAE的lower bound)
        • 随机性的方法(马尔科夫链蒙特卡洛方法, MCMC)。
    • Implicit density models:无需定义明确的概率密度函数,代表方法包括马尔科夫链、生成对抗式网络,该系列方法无需定义数据分布的描述函数。

二、Native Generator (AutoEncoder’s Decoder)

  • 通过原始AutoEncoder训练的Decoder作为Generator,此Generation的效果不好,因为此Generator是一个Network,是非线性模型;
  • 如果给此Generator喂进去的vector不是训练时训练过的,则无法通过Generator输出有效数据。
    在这里插入图片描述

三、PixelRNN

1、生成句子序列

  • 拿生成句子为例,在我们生成好的RNN模型里,我们输入开头,模型可以输出一系列的输出。
  • 如下图,我们根据输出得到了“床”,然后把“床”作为下一个时间点的输入,得到“前”,依次类推。
    在这里插入图片描述
  • 当然,这是测试时的一种做法,并不是唯一做法。
  • 而在训练RNN模型的时候,并不是拿上一时刻的输出当作下一时刻的输入,而是拿真正的句子序列当作输入的。

2、生成图片

在这里插入图片描述

  • 同样道理也可以用来生成一张照片,只要将每一个Pixel想成是一个Word,给模型一个讯号,它就会开始生成颜色。
    在这里插入图片描述
  • 一般生成照片(绿框)的时候如果单纯的按序生成可能会无法考量到照片之间的几何关系(上绿框图),但如果在生成Pixel的同时可以考量周围Pixel的话(下绿框图),那就可以有好的生成,这部份可以利用之前课程提过的『Grid-LSTM』。
  • 首先filter在左下角计算,经过Grid-LSTM得到蓝色。filter右移一格,这时候会考量蓝色的资讯,而Grid-LSTM的输入会往三个维度丢出,因此在计算第二个颜色的时候它会考虑到左边蓝色那排的资讯,得到红色。相同方式再一次得到黄色。filter往上一格移至左边起始点,一样同时会考量蓝色的资讯才产生灰色。filter右移一格,这时候的filter计算是含盖了灰、蓝、红三个维度的资讯,得到黑色。

在这里插入图片描述

3、生成音频:WaveNet

  • WaveNet,一种原始音频波形的深度生成模型。我们展示了WaveNets可生成模仿任何人类声音的语音,它听起来比现存的最先进的语音合成(Text-to-Speech)系统更自然,这使得机器与人类表现的差距缩小了50%以上。
  • 人能与机器交流是一个长久以来的关于人机交互的梦想。由于深度神经网络的使用,机器在理解自然语言上的能力在过去几年有了革命性的进步(例如,谷歌语音搜索)。然而,用计算机产生语音——通常被称为语音合成(speech synthesis)或文本到语音(TTS)——仍然主要基于所谓的连接式TTS(concatenative TTS),它要求记录单一的录制者大量的短语音片段来形成一个巨大的数据库,然后重新组合这些片段以形成完整的话语。这使得在没有重新录制整个新的数据库的情况下,修改声音变得十分困难(比如转换成不同的说话者,或者改变他们声音的重点或情感)。
  • 这导致了对参数式TTS(parametric TTS)的迫切需求,其中生成数据所需要的所有信息都保存在模型的参数中,并且语音的内容和特征可以通过模型的输入来控制。但目前为止,参数式TTS比连接式TTS听起来更不自然。现有的参数式模型往往将输出通过名为声码器(vocoders)的信号处理算法来生成音频信号。
  • WaveNet改变了这种范例,它直接对音频信号的原始波形进行建模,一次一个样本。使用原始波形意味着,除了生成听起来更自然的声音外,WaveNet可以模拟任何音频,包括音乐。
    在这里插入图片描述
  • 研究人员常常避免对原始音频建模,因为它的速度非常快:通常每秒有16000个或更多样本,且在许多时间尺度上具有重要结构。构建一个完全自回归(autoregressive)模型显然是一项具有挑战性的任务,其中每个样本的预测都受到先前所有样本的影响(从统计学上来说,每个预测的分布都以先前所有观察为条件)。
  • 然而,我们在今年(2016年)早些时候发布的PixelRNN和PixelCNN模型显示,不仅可以通过一次生成一个像素,而且可以通过一次生成一个颜色通道,来生成复杂的自然图像,其中每幅图像需要上千次这样的预测。这促使我们将二维的PixelNets改编为一维的WaveNet。
    在这里插入图片描述
  • 上面的动画显示了WaveNet是如何构建的。它是一个完全的卷积神经网络,其中卷积层具有多种扩张因子,这使得其感知场(receptive field)随着深度呈现指数增长,以此覆盖上千的步长。
  • 训练时,输入序列是从记录人类声音的真实波形。训练之后,我们可以对网络采样生成合成声音。在采样的每个步骤中,我们从网络计算出的概率分布中抽取数值。将这一数值反馈到输入中,就可产生下一步的新的预测。像这样一次一步的建立样本的计算成本很高,但我们发现这对于生成复杂且逼真的音频十分重要。

4、生成视频:Video Pixel Network (VPN)

四、Variational Autoencoder (VAE,变分自编码器)

1、原始AutoEncoder

  • 通过原始AutoEncoder训练Decoder作为Generation,此Generation的效果不好;
    在这里插入图片描述

2、Variational Autoencoder (VAE)

在这里插入图片描述

3、Gaussian Mixture Model(高斯混合模型)

在这里插入图片描述

4、Problems of VAE

  • VAE may just memorize the existing images, instead of generating new images
  • VAE只能 “尽可能像” 地 “拷贝” 训练时给Autoencoder喂进去的图片,不能自己生成新图片
    在这里插入图片描述
  • 通过VAE产生的图片中的每个pixel之间的relation非常重要,这是构成该张图片为该张图片的关键因素。
  • 但是,如果构建的VAE结构的深度不是特别深,那么该VAE无法学习到图片中的每个pixel之间结构信息。因此通过该Generator产生的图片中的每个pixel之间是独立生成的,pixel之间无法相互影响。
  • 也就是说深度不深的VAE模型很难学习到样本的各个component之间的结构信息(Structure Information)。
  • 因此,VAE需要构造更深的Layers来学习并储存样本的各个component之间的结构信息(Structure Information);
  • 即使VAE增加深度,VAE对样本内部的结构信息(Structure Information)的学习效果也不是特别好,而且深度的增加又会带来计算量的增大。
  • 解决方案:引入Discriminator来储存结构信息(Structure Information),即:Generative Adversarial Network(GAN)。

五、Generative Adversarial Network (GAN,对抗生成网络)

GAN能够有效地解决很多生成式方法的缺点,主要包括:

  • 并行产生samples;
  • 生成式函数的限制少,比如无需合适马尔科夫采样的数据分布(Boltzmann machines),生成式函数无需可逆、latent code无需与sample同维度(nonlinear ICA);
  • 无需马尔科夫链的方法(Boltzmann machines, GSNs);
  • 相对于VAE的方法,无需variational bound;
  • GAN比其他方法一般来说性能更好。
    在这里插入图片描述
    在这里插入图片描述
    在实践中:
  • GANs are difficult to optimize.
  • No explicit signal about how good the generator is
    • In standard NNs, we monitor loss
    • In GANs, we have to keep “well-matched in a contest”
  • When discriminator fails, it does not guarantee that generator generates realistic images
    • Just because discriminator is stupid
    • Sometimes generator find a specific example that can fail the discriminator
    • Making discriminator more robust may be helpful.

六、Tips for Generation

  • 在上面提到过,在使用RNN生成句子的时候,通过初始的输入得到生成的第一个词,然后把这个词当作下一次的输入得到第二个词,依次类推,那么问题就来了,当这个序列中有一个词错误的时候,那么其实后面的整个句子序列就错了,就是所谓的一步错,步步错。
    在这里插入图片描述
    解决这个一步错,步步错的方法:1、Scheduled Sampling;2、Beam Search;3、Reinforcement learning;

2.1 Scheduled Sampling

  • Scheduled Sampling通过修改我们的训练过程来解决上面的问题,一开始我们只用真实的句子序列进行训练,而随着训练过程的进行,我们开始慢慢加入模型的输出作为训练的输入这一过程。
    在这里插入图片描述

2.2 Beam Search

  • Beam Search方法不再是只得到一个输出放到下一步去训练了,我们可以设定一个值,拿多个值放到下一步去训练,这条路径的概率等于每一步输出的概率的乘积。
    在这里插入图片描述
    在这里插入图片描述

2.3 Reinforcement learning




参考资料:
WaveNet:A Generative Model for Raw Audio
视频研究入门经典
Video Pixel Networks
高斯混合模型的终极理解
详解EM算法与混合高斯模型(Gaussian mixture model, GMM)
一文详解高斯混合模型原理
An introduction to Generative Adversarial Networks (with code in TensorFlow)
Image Completion with Deep Learning in TensorFlow
Generative Adversarial Nets in TensorFlow (Part I)

这篇关于深度学习-生成模型:Generation(Tranform Vector To Object with RNN)【PixelRNN、VAE(变分自编码器)、GAN(生成对抗网络)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128927

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]