【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes

本节内容综述
  1. 本节内容将介绍:Generation,Attention,Tips for Generation,Pointer Network。
  2. 第一步是 Generation ,具体来讲,是如何产生一个 structured object 。提到了 Seq 2 seq。
  3. 接下来的部分是 Attention 。提及了图片生成句子等有趣技术。
  4. 课程过半,进入 Tips for Generation 部分。提到了许多新技术,或者说容易遇到的问题、偏差,并由此介绍了相应的解决方案。
  5. 接下是 Pointer Network。Pointer Network可以有效利用输入中的人名地名等等。
  6. 最后穿插一点内容,RNN的变体,Recursive Network。

 

文章目录

 

小细节

Generation

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,我们如何让机器产生一段句子呢?这个我们已经清楚了。使用 RNN 把 word 或者说 character 一个一个产生出来。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
此外,如上,还可以把图形拆分成像素,使用 RNN 生成。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

但是,如上,我们应该让就近的像素对生成的像素进行影响,而非按行来。可以进行 filter + 3维记忆空间 的方法。

Conditional Generation

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
但是,使用RNN存在一些问题,如上图,我们希望根据不同情况给出信息。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,一般来讲,RNN产生的话是随机的。我们可以对图片进行处理,比如用CNN获得一个向量,然后输入RNN中。可以在每个时间点都把图片输入,防止机器“忘记”自己在说什么。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
对于机器翻译,同理。如上,先在Encoder中,对句子的每个成分按照时间点挨个输入。这样最后得到的向量,就包含了句子的全部信息。将这个输入到Decoder,就可以得到翻译。

这就是 Seq2seq 。

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

此外,在聊天机器人中,我们需要让之前的信息也输入到模型中,防止说重复的内容。

Attention

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,我们将 z 0 z^0 z0 与 各个 h h h 进行 match 函数计算,得到各个 h h h 对应的 α \alpha α 。这个 match 函数中的参数也是训练出来。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
之后,经过一个 softmax ,然后求和得到 c c c ,此时, c c c 就是Decoder input 。此外,可以得到心得 z z z 。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
之后继续进行该内容。

Speech Recognition

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,颜色深度代表 match score 。

Image Caption Generation

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上,可以把每个区域的向量与$z_0$进行运算得到,之后,进行 weighted sum,再交给 Decoder ,以此得到输出。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,在产生划线词汇是,其Attention也是集中在图片的相应位置的。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
此外,还有些失败的地方,我们可以通过 Attention 进行分析,为什么出错了。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
此外,机器还可以看视频说话。如上。

“我们的作业二就是做这个。”很有趣。

Memory Network

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,也可以进行利用注意力做问答。

此外,Memory Network 也有更复杂的版本。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,有两组vector分别为 x x x与 h h h来表示Document, q q q与 x x x做match得到 α \alpha α,但是Extracted Information时,使用 h h h与 α \alpha α进行结合。

而得到的新向量,可以与 q 进行运算,表示机器在反复“思考”。这个过程叫做 Hopping 。

Neural Turing Machine

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
Neural Turing Machine 不仅可以读记忆,还可以改变记忆。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,实际上,k与memory产生四个新值其实有5个步骤。如下。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
李老师:“我相信你一定没有兴趣知道他,所以我们把他跳过。”
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上, e e e与 a a a用于修改旧的 memory 。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

总的计算框架如上。

Tips for Generation

Good & Bad Attention

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,一个Bad Attention就是,可能 α \alpha α过于不均衡,导致机器只注意到了视频的主体。

我们可以用一个正则化的方法,让各个输入的部分都有近似的 attention weight 。如上图中的公式(这只是最简单的一种方法)。

Mismatch between Train and Test

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上,每次你的 RNN 的 input 其实来自于“正确的解答”。但这是训练时的状态。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上,在实际使用时,在每次的 input 都来自自己上次的解答。

这将带来Exposure Bias。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,如果机器没有在一开始时正确地选择“A”,这将让接下来所有的生成都受影响。

Modifying Training Process?

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
那么,在训练时,就将 input 改为“自己生成”的答案呢?

但实际上,这将让我们的网络十分难以训练。

Scheduled Sampling

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,我们用综合的想法来训练。

在输入时,我们随机地选择将 model输出 或者是 训练数据 进行作为输出。

要注意的是,我们在训练了一定步骤后,才考虑把 model输出 作为输入。随机选择的几率如上图中的表。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上图,如果使用Scheduled Sampling,效果好很多。

Beam Search

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上,如果我们“贪婪地”每次都选择最好的那个输出,但是其最后的总的概率值(累成起来),未必是最高的。如上图中,绿色分支的分数是要高于粉色分数的。

因此,提出 Beam Search 。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,我们可以只选分数最高的 2 个,探索几步,看哪个分高。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,发现X、Y、W分数都高,因此,都在下一段时间输入。然后取分数最高的那个,最为下一时间的输入。

Object level v.s. Component level

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,在有细微错误时,其与正确答案的Loss值差别并不大。

因此,我们考虑使用object-level criterion(假设有这样一个评估函数 R R R,评估句子语法),可行吗?

不可行,因为很可能无法做微分。

可以使用强化学习的方法。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
把 generation 这件事,当成 reinforcement learning 来做。

在结束后,通过 R R R函数判断奖励值。

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上,MIXER是使用了强化学习与传统方法相结合的方法。

Pointer Network

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如图,Pointer Network中可以解决如同的演算的内容。

如何转换为 Seq 2 seq 的模型呢?
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive如上,如果只是用 Encoder-Decoder 当然是不 work 的。当然,如果加入注意力是可以的。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,attention做了一点改善,不用 softmax 层,而使用 argmax 筛选输出。

这种方法,可以做到 100 个点规模都正确。

Applications - Summarization

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上,使用 Pointer Network 可以有效利用文章中的人名地名,而且将文章中的词接起来一般来讲就可以得到 Summary 。

Applications - Machine Translation

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
此外,还可以用在机器翻译上。

Recursive Network

Application: Sentiment Analysis

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,对于Recursive,我们需要决定各个输入之间的关系。将某些输入值放在一起,输入到模型中。

Recursive Model

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,我们可以考虑用文法结构的顺序进行输入。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
这个 f ,不能用一个简单的函数。因此需要一个 network。

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,对于 g 与 f 函数,我们都要训练。

Recursive Neural Tensor Network

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,作为 f 的输入,将两个输入简单的拼接并不是首选。我们考虑线性代数的输入方法(上面的矩阵运算计算了两次)。

Experiment

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,有一些实验,进行了检验。

Matrix-Vector Recursive Network

尽管这篇文献的表现较差,但是李老师介绍了其中思想。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive
如上,我们“玄学地”将输入分离,分为 a a a与 A A A。之后交叉地进行相乘。

Tree LSTM

【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

如上,基于 Recursive ,可以构建一个 Tree LSTM 。

More Application

比如 Sentence relatedness 。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN & Attention & Pointer Network& Recursive

 

上一篇:2.5_Computational Boolean Algebra Recursive Tautology


下一篇:鉴别艳照门图片电脑合成照片的方法