5.Conditional Generation by RNN & Attention(李宏毅)

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中的内容,不只是读,还可以根据内容来修正提供下一个时步。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值