使用神经网络的生成模型,李老师从三个方面说明。
李宏毅ML lecture-17-18 unsupervised Learning Generation

Component-by-component

从一张图片拿出像素点,顺序输入神经网络,训练预测下一个像素。
李宏毅ML lecture-17-18 unsupervised Learning Generation
练习:
李宏毅ML lecture-17-18 unsupervised Learning Generation

Source of image: http://bulbapedia.bulbagarden.net/wiki/List_of_Pokémon_by_base_stats_(Generation_VI)

如果直接输入RGB颜色值,让模型输出RGB颜色,输出通过sigmod集中在中央,所以颜色不够丰富。
通过把像素颜色换为one-hot编码,让模型输出one-hot编码。
但是RGB三个颜色全部转为one-hot编码数据有2563256^3维。
所以先聚类,用少数的颜色转换为167维。
李宏毅ML lecture-17-18 unsupervised Learning Generation
输入到LSTM中。
李宏毅ML lecture-17-18 unsupervised Learning Generation
李宏毅ML lecture-17-18 unsupervised Learning Generation
用宝可梦图片作为例子,分别输入图片的前50%,75%查看网络的效果:李宏毅ML lecture-17-18 unsupervised Learning Generation
李宏毅ML lecture-17-18 unsupervised Learning Generation
李宏毅ML lecture-17-18 unsupervised Learning Generation
结果十分鬼畜:)
原因就在于很难评判生成结果的好坏。

图像生成—PixelRNN

李宏毅ML lecture-17-18 unsupervised Learning Generation

Ref: Aaron van den Oord, Nal Kalchbrenner, Koray Kavukcuoglu, Pixel Recurrent Neural Networks, arXiv preprint, 2016

语言合成—waveNet

本来是gif图片但是动不了,模型的训练就是把output作为新的input输入到神经网络中。
模型不需要预训练,直接扔进去。
每一个蓝色的点就是声音讯号的一个sample。
这样就合成了一段声音。
李宏毅ML lecture-17-18 unsupervised Learning Generation

Audio: Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, Koray Kavukcuoglu, WaveNet: A Generative Model for Raw Audio, arXiv preprint, 2016

音像生成

也是同样的原理

Video: Nal Kalchbrenner, Aaron van den Oord, Karen Simonyan, Ivo Danihelka, Oriol Vinyals, Alex Graves, Koray Kavukcuoglu, Video Pixel Networks , arXiv preprint, 2016

VAE (Variational Autoencoders)

Auto-encoder

Auto-encoder将input图片压缩为code,通过Decoder还原为一张图片。
损失函数定义为input和output的不同程度,通过训练完成auto-encoder。

随机给出一些code是不是decoder可以生成一些图片呢?
答案是不能的。生成的图片不make sense。
auto-encoder做的其实就是图片的降维。code之间没有任何关系。只有特定的code才能产生有意义的图片。
李宏毅ML lecture-17-18 unsupervised Learning Generation

VAE

变分自编码器是优化后的autoencoder。他使得中间code具有了含义。从而通过修改code可以生成有意义的照片。

(国内打不开)https://jaan.io/what-is-variational-autoencoder-vae-tutorial/
tensorflow和pytorch 实现 https://github.com/altosaar/variational-autoencoder
https://zhuanlan.zhihu.com/p/34998569

李宏毅ML lecture-17-18 unsupervised Learning Generation

Generative Adversarial Network (GAN)

相关文章: