1.Generation生成
应用背景1:生成句子序列
利用RNN产生一个有结构的物件(structured object),像是一首诗或是一篇文章。
句子是由『Word』或『Character』所组成,假设你有一个中文Character Language Model(RNN),就可以直接用来生成。
注:英文中『Character』所指为AZ,而『Word』是由空白所分隔的,但在中文里『Word』是一个有意义的词,像葡萄是一个『Word』由『葡』、『萄』两个『Character』所组成。
应用背景2:生成图片
同样道理也可以用来生成一张照片,只要将每一个Pixel想成是一个Word,给模型一个
<
B
O
S
>
<BOS>
<BOS>讯号,它就会开始生成颜色。
一般生成照片(紫框)的时候如果单纯的按序生成可能会无法考量到照片之间的几何关系(如右上图),但如果在生成Pixel的同时可以考量周围Pixel的话(红框),那就可以有好的生成,这部份可以利用之前课程提过的『Grid-LSTM』。
首先filter在左下角计算,经过Grid-LSTM得到蓝色。filter右移一格,这时候会考量蓝色的资讯,而Grid-LSTM的输入会往三个维度丢出,因此在计算第二个颜色的时候它会考虑到左边蓝色那排的资讯,得到红色。相同方式再一次得到黄色。filter往上一格移至左边起始点,一样同时会考量蓝色的资讯才产生灰色。filter右移一格,这时候的filter计算是含盖了灰、蓝、红三个维度的资讯,得到黑色。
Conditional Generation条件生成
原因:
单纯的利用RNN来产生句子那可能是不足的,因为它可以给你乱数产生合乎文法的句子,因此我们希望模型可以根据某些条件来产生句子,也许给一张照片由机器来描述照片,或是像聊天机器人,给一个句子,机器回一个句子。
作法上,将照片通过一个CNN产生一个Vector,在每一个RNN时步中都将该Vector当做输入,这样子每次产生的Word都会被该照片的Vector给影响,自然就不会是乱数产生句子了。
相同作法也可以应用在机器翻译与聊天机器人上,以简报上机器翻译为例,『机器学习』这个句子先通过另一个RNN,将抽出最后一个Hiddey Layer的Output做为翻译模型中每一个时步的输入。前段的部份就可以视为是『Encoder』,后段的部份可以视为是『Decoder』,而且两边是可以结合一起训练学习参数,这种方式称为『Sequence-toSequence Learning』 ,资料量大的时候可以两边学习不同参数,资料量小的时候也可以使用共同参数。
注:简报上权重参数颜色不同(左绿右蓝),代表两个权重是分开学习,但实务上是可以使用相同权重共同学习。
在聊天机器人中状况比较复杂,举例来说,机器人说了Hello之后,人类说了Hi,这时候机器人再说一次Hi就显的奇怪。因此机器必需要可以考虑比较长的资讯,它必需知道之前已经问过什么,或使用者说过什么。
作法上,我们可以再加入一个RNN来记忆对话,也就是双层的Encoder。首先,机器说的Hello跟人类回覆的Hi都先变成一个Encoder,接着第二层RNN再将第一层的Encoder读一遍(过去所有互动记录),变成一个Code,再将这个Code做为后面Decoder的输入。
2.Attention Conditional Generation动态条件生成
Attention是一种动态的Conditional Generation。
之前提过,为了让Encoder可以影响Decoder,我们会在每一个时步都将Encoder的结果输入给Decoder。但有些时候输入的资讯过于复杂,我们无法将资讯完整的利用Encoder来提供给Decoder,这会造成Decoder看到的都是相同的东西,或者也会造成每一个时步看了过多不必要的东西,因此Dynamic Conditional Generation可以让机器考虑仅需要的资讯。
下面以机器翻译为例:
以『machine』来说,在产生这个句子的时候仅需要考虑『机器』这两个输入,如果可以只提供这两个字的资讯的话,学习上可以得到更好的效果,因为模型不需要从整个句子『机器学习』中去学习。
相同的技术也可以用在语音辨识、图片字幕生成、视频字幕生成。
3.Memory Network记忆网
Memory Network最早应用在于给机器看文章,接着问机器问题看机器是否可以回应一个答案。
Memory Network是在Memory中做Attention,再从Memory中将资讯取出。
注:match指的是Attention操作,下图中的q相当于z,x相当于不同的输入。
喂入DNN的信息:提取的信息是带有记忆的。
较为复杂的作法,将计算相似度
α
\alpha
α与取信息的部份分开处理,这么做可以取得较好的Performance(下图右)。
Neural Turing Machine神经图灵机
Memory Network是在Memory中做Attention,再从Memory中将信息取出,而Neural Turing Machine不仅是从Memory中做Attention,它还可以根据match score来修正存在Memory中的内容,不只是读,还可以根据内容来修正提供下一个时步。