【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM

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

本次笔记补充视频 BV1JE411g7XF 的缺失部分。上节课李老师讲了元学习中的参数初始化方法:MAML 与 Reptile 。本节课内容为 Gradient Descent as LSTM 。在 B 站搜索 metalstm 即可找到视频。本节内容 30 分钟左右。

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM

注意:本节讨论的是“元学习”,我们将讨论用 LSTM 做优化器的方法。我们所指的训练,是指训练优化器 LSTM 的参数。

本节内容综述

  1. 我们可以把元学习的过程,当然 RNN 来看。首先复习 RNN 。多数时候,我们说 RNN ,其实就是在用 LSTM 。
  2. 比较 LSTM 中的运算与 meta-learning 中的更新式,会发现有一些相似之处。
  3. 在实际操作中,我们做了非常大的简化。
  4. 此外,我们很久以前介绍过一些优化方法,如 RMSPropMomentum ,是需要过去的梯度来确定现在的梯度的。因此,可以根据这个为 LSTM 做些改进。

小细节

引入 RNN

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,我们的训练过程像 RNN 计算过程。主要源自两篇文章。

Recurrent Neural Network

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,RNN的输入输出过程。
【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
多数时候,我们说 RNN ,其实就是在用 LSTM 。
【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
LSTM的运算如上。

Similar to gradient descent based algorithm

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,我们何不把 ctc^t 当作 θt\theta^t 来看呢?
【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
此外,为了使两个式子更相像,我们把 LSTM 的 input 从 ht+1,xth^{t+1}, x^t 变成 θl-\nabla_\theta l

我们发现,梯度下降其实是 LSTM 的简化版。
【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
此外,我们还看做些调整,如上。这样,机器就会自动地调整 learning rate ,并且进行了些正则。

LSTM for Gradient Descent

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,我们使用“简化版LSTM”,更新参数。我们的目标 loss 即为最终算出的 l(θi)l(\theta^i)

有几个要注意的地方:

  • 在一般的 LSTM 里面,每次的 ccxx 是无关的;
  • 而在我们这里,现在的 θ\theta 会影响到 θl-\nabla_\theta l

Real Implementation

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,实际操作中, LSTM 只有一个 cell ,并且被用于所有的参数上。

好处是:

  • 模型容量小了;
  • 符合在参数上应用同样规则的原理;
  • 允许 training 与 testing 模型不同。

Experimental Results

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,我们发现 Forget gate 一般保持在 1 左右;并且,其学习率是动态变化的。

About Previous Gradients

我们在架构中加入“过去的梯度”,让过去的梯度也参与现在梯度的决定,类似优化器 Momentum
【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,我们再加一层绿色的 LSTM ,希望 m 存储过去的梯度。但是,李老师对原论文做了些“幻想”,原论文中,只使用了 LSTM 做 m 的存储,上面的蓝色 LSTM 是没有的;而另外一篇论文是有上面,没有下面的 LSTM 。

Experimental Results

【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM
如上,LSTM 作为优化器,得到了很惊人的效果。而这个 LSTM 中的参数在 1 * 20 的小神经网络中训练好了;拿到测试任务中,也训练得起来。

但是如最后一张图,训练时与测试时使用不同的**函数,会坏掉。