1. 通过梯度下降来学习如何梯度下降学习接下来我们将学习一种有意思的元学习算法,称为通过梯度下降来学习如何通过梯度下降学习。这个名字是不是听起来很迷惑?其实,实际上,是一种最简单的元学习算法。我们知道在学习中,目标是学习学习的过程。通常我们是如何训练神经网路呢?我们通过梯度下降来计算和最小化损失来训练网络。因此,我通过梯度下降优化模型。那么,我们可以自动学习优化过程来代替梯度下降吗?我们将如何学习呢?我们用循环神经网络(RNN)来代替传统梯度下降优化器。那么这是如何工作的呢?为何可用RNN来代替梯度下降呢?加入我们进行深入研究,那么梯度下级究竟做了什么呢?它本质上是从输出到输入的序列更新,我们将这些在一个状态中存储这些更新。因此,可以采用RNN,并在RNN单元中存储更新结果。因此,次算法的核心思想就是利用RNN来代替梯度下降。但是RNN是如何学习的呢?如何优化RNN?为了优化RNN,采用梯度下降。简而言之,通过RNN 来学习梯度下降,并用梯度下降来优化RNN,这就是为何取名通过梯度下降来学习如何梯度下降学习的原因。这块有点拗口,英文为Learning to learn by gradient descent by gradient descent。下面重点介绍下论文中重点的部分。2. 介绍通常,机器学习问题可以描述成在特定的参数域中,最小化目标函数问题。目标是找到最优参数。虽然能够最小化目标函数的方法都能采用,但是标准的可微分函数通常采用梯度下降方法,得到下面序列更新公式:
其中 在这里,为每个时刻的任意权重,同样记如下表示。当权重为1时,等价于期望损失目标函数,但后面将解释为何不同权重会产生更好的性能。我们可以利用在参数上的梯度下降进行最小化期望损失函数。梯度估计可以通过抽样随机函数和对计算图应用后向传播计算得到。如下图所示。我们允许梯度可以沿图中实现传播,而丢掉沿虚线传播的梯度。忽略沿虚线传播的梯度等价于假设优化的梯度不依赖于优化器的参数,即。这个假设避免计算的二阶导数。研究上式,我们发现只有当,梯度才不为0。加入我们设定 匹配原问题,则轨迹前缀的梯度为零,只有最后的优化步骤才能提供训练优化器的信息。这使得时间反向传播(BPTT)效率低下。我们通过在轨迹的中间点松弛目标函数 来解决这一问题。这松弛虽然改变了目标函数,但是允许我们在局部轨迹上训练优化器。为了简单起见,在所有试验中均设置 。4. 逐个坐标的LSTM优化器在我们的环境中应用RNN的一个挑战是,我们希望能够优化至少数万个参数。使用完全连接的RNN在这种规模上进行优化是不可行的,因为这将需要对巨大的隐藏状态和大量参数进行优化。为避免这种困难,我们将使用优化器m来对目标函数的参数进行逐坐标操作,类似于RMSprop和ADAM之类的更新规则。这种逐个坐标的网络体系结构使我们可以使用非常小的网络,该网络仅查看单个坐标即可定义优化器,并在优化器的不同参数之间共享优化器参数。通过对每个目标函数参数使用单独的激活,可以在每个坐标上实现不同的操作。除此之外,允许我们为该优化器设计小型网络,此设置还具有使优化器对网络中参数顺序不变的良好效果,因为在每个坐标上都独立使用了相同的更新规则。我们对每个坐标实施更新规则,使用两层的长期短期记忆网络,使用现在标准的遗忘门架构。网络将优化单个坐标的优化梯度、以前的隐藏状态作为输入,输出相应的优化器的更新参数。LSTM优化器如下图所示。循环的作用使得LSTM可以和动量优化方法一样,学会利用综合以前梯度信息进行动态更新规则。这种思路在凸优化里面有很多优良的性质,实际上在很多最近机器学习程序中,比如ADAM,都采用了动量方法进行了自己的更新。这里给一个优化二次函数实验结果,结论就是由于其他优化方法。后面还有一些预处理和后处理的技巧,以及在更多实验部分就不详细介绍了,感兴趣的可以参考原论文。5. 结束介绍了论文《Learning to learn by gradient descent by gradient descent》,下一篇将介绍第一章节的最后一部分内容,小样本优化模型,即《optimization as a model for few-shot learning》。
03
0. 小样本优化模型我们知道,在小样本学习领域针对更少的数据点学习,那么如何应用梯度下降呢?因为数据点很少,梯度下降方法性能急剧下降,因为梯度下降需要大量数据点才能达到收敛和最小化损失。因此,在小样本领域,我们需要一个更好的优化技术。接下来按照论文《OPTIMIZATION AS A MODEL FOR FEW-SHOT LEARNING》思路进行。1. 任务描述我们首先对详细地介绍下元学习的数据集构成,后面就不在详细介绍了。在典型的机器学习领域,我们通常将数据集分为两个部分,一部分称为训练集用来训练模型参数,另一部分称为测试集来进行评估模型的泛化性能。在元学习中,将设计元数据集包含了多个规则数据集,每个数据集都包含训练集和测试集。在元学习中,我们有多个不同的元数据集合,每个都包含元训练、元验证和元测试数据集。我们利用元数据集来训练模型来达到在元测试集上取得高的性能。用元验证集来进行元学习器的超参选择,利用元测试集上评估其泛化性能。可以用下图表示:2. 模型2.1 模型描述考虑单个数据集,即轮回。假学习一个神经网络分类器,标准的训练深度神经网络优化方法是梯度下降或其一些变种,更新公式是:
2.4 批归一化技术批次规范化(Ioffe&Szegedy,2015)是最近提出的一种方法,可通过减少学习者隐藏层内的内部协变量偏移来稳定并因此加快对深度神经网络的学习。通过对各层的预激活进行归一化,减去均值并除以标准偏差来实现。在训练过程中,均值和标准差使用正在训练的当前批次进行估算,而在评估过程中,将使用在训练集上计算出的两个统计值的运行平均值。后面还介绍了一些细节东西,这就不一一赘述了。3. 结束本节介绍了书中的进一步阅读中的《OPTIMIZATION AS A MODEL FOR FEW-SHOT LEARNING》文章,更细节的东西可以直接阅读原文哈~。从下一节,我们将进一步回归元学习的书的部分,将介绍一种基于度量的元学习方法,即孪生网络及其在人脸和语音识别中的应用。