台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等

文章目录

  • Auto-encoder
    • Auto-encoder for CNN
    • Pre-training DNN
    • Variational Auto-encoder (VAE)
  • Generative Adversarial Network (GAN)
  • RNN
  • Sequence Generation
  • Conditional Sequence Generation
  • Dynamic Conditional Generation
  • Pointer Network
  • Tips for Generation
    • regularization
    • Scheduled Sampling
    • Beam Search
    • Object level

Auto-encoder

Auto-encoder属于无监督学习,上几句名言:
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第1张图片
可以看出,无监督学习不仅有很大的发展空间,还有巨大的好处。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第2张图片
Auto-encoder可以看做先用PCA得到code,然后再解回原来的内容。input通常会先做normalization,然后通过encoder得到code,中间的bottleneck layer的neural个数,就是code的dimension数,输出即是code。然后再解回原来的大小,与原数据比较差异,最小化差异。encoder与decoder并不必要是对称的。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第3张图片
还可以先增加噪声,然后将输出与原照片对比,获得具有去噪声能力的auto-encoder。
可以做文本检索,encode后,相近的意味着文本相关。类似的还有相似图片搜索,当然可以利用convolution

Auto-encoder for CNN

台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第4张图片
Unpooling可以简单地重复值,或者记住位置,其余补零。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第5张图片
灰色的代表补零,同时weight顺序颠倒。

Pre-training DNN

台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第6张图片
pre-training的那一层相当于auto-encoder。hidden layer的neural大于input的dimension时,要加很强的regularization,比如L1。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第7张图片
就这么一层层train下去
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第8张图片
最后输出层的参数w4随机初始化,再用backpropagation微调就行。pre-training可以用unlabel data,解决label data较少的问题。

Variational Auto-encoder (VAE)

希望decoder可以单独拿出来,然后单独生成。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第9张图片
exp(σ(sigma))是variance of noise,学出来的。e是从正态分布中generate出来的。
noise使得一些data的code会有重叠,因此当你输入code,其可能是某几个data加噪声后的code,所以结果会比较好。σ接近0,variance接近1。后面是L2 regularization。正式的解释就需要自行搜索了。
VAE may just memorize the existing images, instead of generating new images
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第10张图片
仅仅是模仿,而不是真的试图以假乱真,因为虽然都是一个pixel的差异,但整个图片完全不一样。

Generative Adversarial Network (GAN)

类似自然界的共同进化。generator没有看过真正的image
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第11张图片
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第12张图片
Generator + Discriminator = a network
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第13张图片
目前的问题就是不知道discriminator能力强不强,有可能骗过它只是因为它很弱。得保证两者共同进步。

RNN

RNN即Recurrent Neural Network,具有memory,即hidden layer的值,每个input除了sequence里的值外还包括memory,实现sequence to sequence的learning。其中比较standard的是LSTM。
Changing the sequence order will change the output.
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第14张图片
均是同一个RNN,只是将sequence里的各项挨个输入
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第15张图片
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第16张图片
Elman network就是最一般的RNN,wh是hidden layer的值,每输入一个input,会读取上一个input的hidden layer的值。Jordan network是将output存起来。传说Jordan network的表现会更好(明星加成:)),因为y是有target的
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第17张图片
上下文都看过,应该会更好
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第18张图片
较长的短期记忆,因为不再是下一个input进来,memory就会更改
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第19张图片
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第20张图片
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第21张图片
一般的RNN随机初始化激活函数用sigmoid,用identity matrix初始化relu,吊打lstm
RNN不只可以做length相同的seq2seq,还有Many to one(情感分析、关键项提取)、Many to Many (Output is shorter)(语音识别,CTC引入了blank(该帧没有预测值),每个预测的分类对应的一整段语音中的一个spike(尖峰),其他不是尖峰的位置认为是blank。对于一段语音,CTC最后的输出是spike(尖峰)的序列,并不关心每一个音素持续了多长时间。)、Many to Many (No Limitation)(机器翻译)、Beyond Sequence(句法分析)、Auto-encoder (chat-bot、Video Caption Generation、Image Caption Generation)
在这里插入图片描述
deep learning与structured learning结合起来会有很好的效果。

Sequence Generation

纯粹就是给一个起始符,然后能生成一个sequence,可以是句子,也可以是图片。生成图片的话又称pixelRNN,用于给出图片的部分,看RNN如何补全。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第22张图片
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第23张图片

Conditional Sequence Generation

Generate sentences based on conditions。一般就是将condition作为起始符输入
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第24张图片
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第25张图片
但是有时候我们不能单纯使用输入,比如聊天我们还会看之前的记录
在这里插入图片描述
生活大爆炸中不停说重复的例子,YouTube
所以有时还要将history作为condition

Dynamic Conditional Generation

把一个sequence压成一个vector比较困难,而且可能会损失一些信息,我们可以增加attention。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第26张图片
h是RNN的output,z是一个vector,z0可以作为network参数的一部分,然后learn出来,match函数自己设计。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第27张图片
match输出的α通过softmax归一化,得到attention weight,然后通过上图右下角的公式算出c,将c作为与上一次的输出结果作为decoder RNN的input,z可能是input,老师在视频里没明确说。输出下一个z和结果。
一文读懂Attention:Facebook曾拿CNN秒杀谷歌,现如今谷歌拿它秒杀所有人
attention-based model还有Neural Turing Machine

Pointer Network

台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第28张图片
输入一堆坐标,找到一个圈,可以将所有点包含在内——凸包问题。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第29张图片
凸包问题如果用seq2seq的方法不能做,因为输入输出的长度是不固定的。encoder可以处理长度不固定的input,但decoder的输出长度是固定的,所以不行。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第30张图片
类似于attention-based model,只是少了c的计算,h是attention weight,每次取weight最大vector。(x0,y0)是终结符,其weight最大时输出终结。

Tips for Generation

regularization

台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第31张图片
通过video造句的时候要均衡每个frame的weight之和,τ(tao)是事先设置的每个frame的weight之和,通过regularization使得各个frame的weight之和都在τ附近

Scheduled Sampling

Training: The inputs are reference.
Testing: The inputs are the outputs of the last time step.
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第32张图片
所以测试时,有可能上一个output在train的时候没有见过,就会造成一步错步步错,这就是Exposure Bias
如果直接用output来train,会比较难train,因为每个input是上一个时间的output,当之前的还没有train好时,后面的都train不好,所以得从前往后挨个train,比较难。
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第33张图片
一开始用reference概率大,然后再用自己的output

Beam Search

台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第34张图片
类似于解决贪心算法的缺点。Beam size = 2即Keep 2 best path at each step。就是每次分叉时选最好的2条路保留,走到头之后看哪个好

Object level

component级别的错loss不会很大,但这个句子就很有问题。所以可以尝试object级别的
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第35张图片
不能微分就用强化学习,强化学习我就不介绍了,给个参考资料吧(太惨了,这是9月16日创建了final版,我之前打印的是3月份那版,还没有比较有什么区别)
台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结3:Auto-encoder,GAN,seq2seq相关,RNN等_第36张图片

你可能感兴趣的:(ML)