生成模型和注意力模型
generation
basic
基本思想:逐组件生成结构化对象组件
比如说:要ML写一首诗
也可以去生成图片:
但是上面的方法会出现一些问题,并没有考虑到图片像素之间的几何结构。
同样generation也会用在其他地方:
conditional generation
基本思想:我们并不是简单地生成一些随机的句子或者是图片,我们需要ML在符合场景的情况下生成一些句子或者是图片。
比如说image caption generation:
seqtoseq的训练,两个RNN 一个encoder 一个decoder 共同训练:
但是我们在更多的时候需要考虑到上下文:
attention
所以这个时候我们需要 动态的、有条件的生成
我们并不是将一个句子整体扔进去,但是部分:
在machine translation的一个做法是:
Speech recognition
在语音上面也可以:
image caption generation
在图片标题上也有同样的运用:
做法如图所示:
有一些好的结果展示:
但是也有一些表现不好的地方:
同样也可以从一段影片中产生说明:
memory network
我们还可以利用attention去做问答
更加复杂的版本(模拟人类反复思考得到最后的结果):
neural turing machine
(这里地方不是很懂,所以没啥笔记)
不仅是读取记忆,同样能做到事情还有改变记忆
tips for Generation
只注意视频主体也出现的问题:
还会出现的问题有train和test的错配
会造成exposure bias
出现一步错,步步错的结果
解决方法——改变训练流程:
但是上面的方法实际上非常难训练出来,所以有另外一种方法:
结果的对比,会发现scheduled sampling的结果更好:
我们在下图中会发现每次去找最大的概率方向,可能并不是最大概率的路径,所以提出了一种新的方法——beam search
这个方法的思想是每次选取的方向可能并不是一条,而是多条
问题还会有,结果差距很大,但是loss的差距却很小
但是上图提出的object level无法微分计算,所以可以采用强化学习的方法。每一个步骤得到一个分数
把generation这件事情,当作是reinforcement learning来做
最后结果的一些对比:
Pointer network
指针网络:选出一些点可以包围住所有的点
那我们转换到Seq to Seq的模型中
但是 如果只是利用 encoder和decoder效果并不好,可以加入attention
上面的方法还利用了argmax来进行筛选