李宏毅深度学习(五):Conditional Generation by RNN & Attention

最近看了李宏毅老师的深度学习视频课程,真的是讲得十分细致,从头到尾看下来一遍,对深度学习模型有了一个基本的认识,趁着脑子还能记着一些东西,赶紧把学到的东西记录下来,以备后用。
视频地址:https://www.bilibili.com/video/av9770302/from=search&seid=905421046757750252
ppt地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html

1、Generation

我们可以生成很多东西,比如生成一句话,一段音乐等等,拿生成句子为例,在我们生成好的RNNmodel里,我们输入开头,模型可以输出一系列的输出,如下图,我们根据输出得到了床,然后把床作为下一个时间点的输入,得到前,依次类推。当然,这是测试时的一种做法,并不是唯一做法。而在训练RNN模型的时候,并不是拿上一时刻的输出当作下一时刻的输入,而是拿真正的句子序列当作输入的。

而在生成图片时,图片相当于一个二维的输入,所以,我们要考虑3D类型的RNN,如下图:

2、Conditional Generation

有时候,我们不想仅仅是随机生成一些句子,我们希望根据一些情景来生成我们的句子,比如对话系统,根据问题来生成我们的答案,再比如翻译系统,我们要根据给出的句子得到对应的翻译:

基于这种情况,我们需要将问题或者是需要被翻译的句子的所有信息丢到网络中,得到对应的答案或者翻译结果,这样的思想就是Encoder/Decoder思想,换句话说,就是我们的Seq2Seq。
首先,我们把问题或者需要被翻译的句子通过一个RNN或者LSTM进行Encoder,最后一个的输出就包含了这个句子的全部信息,然后我们把这个句子当作初始输入丢到另一个RNN或者LSTM中,然后通过这个得到对应的输出。

3、Attention

注意力这东西其实挺有意思,但是很容易被人忽略。让我们来直观地体会一下什么是人脑中的注意力模型。首先,请您睁开眼并确认自己处于意识清醒状态;第二步,请找到本文最近出现的一个“Attention Model”字眼(就是“字眼”前面的两个英文单词,…@@)并盯住看三秒钟。好,假设此刻时间停止,在这三秒钟你眼中和脑中看到的是什么?对了,就是“Attention Model”这两个词,但是你应该意识到,其实你眼中是有除了这两个单词外的整个一副画面的,但是在你盯着看的这三秒钟,时间静止,万物无息,仿佛这个世界只有我和你…..对不起,串景了,仿佛这个世界只有“Attention Model”这两个单词。这是什么?这就是人脑的注意力模型,就是说你看到了整幅画面,但在特定的时刻t,你的意识和注意力的焦点是集中在画面中的某一个部分上,其它部分虽然还在你的眼中,但是你分配给它们的注意力资源是很少的。其实,只要你睁着眼,注意力模型就无时不刻在你身上发挥作用,比如你过马路,其实你的注意力会被更多地分配给红绿灯和来往的车辆上,虽然此时你看到了整个世界;比如你很精心地偶遇到了你心仪的异性,此刻你的注意力会更多的分配在此时神光四射的异性身上,虽然此刻你看到了整个世界,但是它们对你来说跟不存在是一样的…..

这就是人脑的注意力模型,说到底是一种资源分配模型,在某个特定时刻,你的注意力总是集中在画面中的某个焦点部分,而对其它部分视而不见。

其实吧,深度学习里面的注意力模型工作机制啊,它跟你看见心动异性时荷尔蒙驱动的注意力分配机制是一样一样的。

在下面的例子中,


有关Attention model的理论,可以看下面的博客:http://blog.csdn.net/malefactor/article/details/50550211

4、Tips for Generation

在上面提到过,在使用RNN生成句子的时候,通过初始的输入得到生成的第一个词,然后把这个词当作下一次的输入得到第二个词,依次类推,那么问题就来了,当这个序列中有一个词错误的时候,那么其实后面的整个句子序列就错了,就是所谓的一步错,步步错。

image.png

那么我们如何来解决这个一步错,步步错的问题呢?
Scheduled Sampling
Scheduled Sampling通过修改我们的训练过程来解决上面的问题,一开始我们只用真实的句子序列进行训练,而随着训练过程的进行,我们开始慢慢加入模型的输出作为训练的输入这一过程。

Beam Search
Beam Search方法不再是只得到一个输出放到下一步去训练了,我们可以设定一个值,拿多个值放到下一步去训练,这条路径的概率等于每一步输出的概率的乘积,大家看下面的图就很容易理解Beam Search的过程啦。

你可能感兴趣的:(李宏毅深度学习(五):Conditional Generation by RNN & Attention)