新闻中心
您所在位置: 主页 > 新闻中心 > 行业新闻
深度强化元学习教程---优化器元学习1/2
时间:2024-04-29 05:27点击量:


为了解决深度学习需要大量标注数据集的问题,优化器元学习方法通过利用元网络来学习最佳优化器,从而帮助实现我们当前功能的基础网络具有更好的性能。这种方法有一个比较长名字:通过梯度下降来学习怎样学习梯度下降算法。这样说比较抽像,我们以一个具体的例子业说明这一过程。
在传统的深度学习中,我们首先会根据训练样本计算出代价函数,然后求出代价函数对连接权值和偏置值的微分,再在优化器的帮助下,根据梯度下降算法,调整连接权值和偏置值,从而达到使代价函数值最小,最终求出连接权值和偏置值的最优解。
在优化器元学习中,我们用基础网络来实现图像分类任务,用一个递归神经网络来学习优化器。我们同样利用训练样本求出代价函数值,然后求出代价函数对连接权值和偏置值的微分,接下来我们将该微分作为第 t t t时刻的输入,加上元网络 t ? 1 t-1 t?1时刻的隐藏状态,输入到元网络中,元网络输出基础网络连接权值和偏置值调整量,我们据此调整基础网络的连接权值和偏置值,循环往复,从而最终得到执行图像分类任务最佳的基础网络架构。
接下来,我们利用数学语言来描述这一过程。我们假设用于图像分类的基础网络为 f f f,其参数为 θ \boldsymbol{ heta} θ,我们需要找到最佳的参数 θ ? \boldsymbol{ heta}^{*} θ?,来使得代价函数值达到最小值。
我们假设基础网络的代价函数为 L ( θ ) \mathcal{L}(\boldsymbol{ heta}) L(θ),在第 t t t个时间点,求出基础网络的代价函数,然后求出长价函数对网络参数(连接权值和偏置值)的微分:
? t ( θ ) = ? L ( θ ) ? θ abla_{t}(\boldsymbol{ heta})=\frac{\partial{\mathcal{L(\boldsymbol{ heta})}}} { \partial{\boldsymbol{ heta}} } ?t?(θ)=?θ?L(θ)?
我们将上式的值送到元网络,其为一个递归神经网络(RNN),作为 t t t时刻输入,联合元网络在 t ? 1 t-1 t?1时刻的隐藏状态 h t ? 1 \boldsymbol{h}_{t-1} ht?1?,元网络会最终产生一个输出 g t \boldsymbol{g}_{t} gt? t t t时刻的隐藏值 h t \boldsymbol{h}_{t} ht?,如下图所示:
优化器元学习流程
我们设定元网络的参数为 ? \boldsymbol{\phi} ?,基础网络参数更新规则为:
θ t + 1 : = θ t + g t \boldsymbol{ heta}_{t+1}:=\boldsymbol{ heta}_{t} + \boldsymbol{g}_{t} θt+1?:=θt?+gt?
通常我们用于优化器元学习的元网络为长短时记忆网络(LSTM),所以我们会首先讲解长短时记忆网络(LSTM)基础内容,然后回顾传统深度学习梯度调整算法,最后是将长短时记忆网络(LSTM)与深度学习算法相结合。

根据\cite{r000001}中的介绍,长短时记忆网络(LSTM)是一种行之有效的递归神经网络(RNN)架构。我们先来看普通的递归神经网络(RNN),这是一种将自身隐藏层的输出又输入给自身隐藏层的网络结构,如下图所示:
在这里插入图片描述
如上图所示,神经元接收 t t t时刻输入 x t x_t xt?,会产生一个输出 h t h_t ht?,其会将 h t h_t ht?作为隐藏状态。同时还可以将这个输出 h t h_t ht?接入到输出层产生 t t t时刻输出 y t y_t yt?,当 t + 1 t+1 t+1时刻时,输入为 x t + 1 x_{t+1} xt+1?,同时将 t t t时刻隐藏层输出 h t h_t ht?作为输入,会产生隐藏层输出 h t + 1 h_{t+1} ht+1?,作为 t + 1 t+1 t+1时刻隐藏层状态,同时可以将 h t + 1 h_{t+1} ht+1?输入到输出层,产生 t + 1 t+1 t+1时刻输出 y t + 1 y_{t+1} yt+1?。同时我们规定在 t = 0 t=0 t=0时刻隐藏层的状态为0,则可以将递归神经网络表示为如下所示形式:
在这里插入图片描述
以上我们是以一个递归神经网络(RNN)神经元为例,实际上可以将图中的圆圈视为神经网络的层,这时图中的标量就变为向量了,其他规则均不变。 ewline
我们可以将递归神经网络视为一个具有元限多层的多层感知器模型,只不过这个网络每一层的参数都相同,通过将上一时刻隐藏层的输出重新输入,可以使网络具有记忆以前输入的能力,也就是具有了记忆力,其与一般的多层感知器模型相比,它虽然层次多,但是参数量很少(只有一层的参数量),所以递归神经网络(RNN)在实践中通常比较难于训练达到收敛,但是一旦收敛,由于它的参数量较小,它比较不容易产生overfitting,这是递归神经网络(RNN)的一大优势。但是普通递归神经网络(RNN)会出现由于是由相同的多层组成,这时极易发生梯度爆炸和梯度消失现象,因为递归神经网各相当于是求一个数的n次方,而且n是一个很大的值,如果这个值明显大于1,则很容易得到无穷大的结果,也就是梯度爆炸现象,而如果这个数明显小于1,则很容易使其最终值为0,也就是梯度消失问题。
为了解决这个问题,研究人员提出了长短时记忆网络(LSTM)。
长短时记忆网络(LSTM)是在1997年提出的,原始论文中的架构图如下所示:
在这里插入图片描述
如图所示,长短时记忆网络(LSTM)由Cell组成,每个Cell里有输入门、遗忘门、输出门和Cell体组成。其中输入门的作用是控制是否允许输入信号进入,遗忘门是控制是否需要忘记过去的内容,输出门控制是否需要输出信号。长短时记忆网络(LSTM)的展开图如下所示:
在这里插入图片描述
每个长短时记忆网络(LSTM)单元在 t t t时刻的输入由三部分组成,一个是变化很快的隐藏层状态 h t ? 1 \boldsymbol{h}_{t-1} ht?1?,代表短期记忆;另一个是变化很慢的Cell状态 c t ? 1 \boldsymbol{c}_{t-1} ct?1?,代表长期记忆;最后一个是时刻 t t t的输入信号。同样,长短时记忆网络(LSTM)单元在 t t t时刻的输出也由三部分组成:第一个是隐藏层状态 h t \boldsymbol{h}_{t} ht?;第二个是Cell的状态 c t \boldsymbol{c}_{t} ct?;第三个是
h t \boldsymbol{h}_{t} ht?接入到输出层。我们可以将长短时记忆网络(LSTM)单元连接起来。 ewline
下面我们来看长短时记忆网络(LSTM)单元的内部结构,由于原始论文中的网络不太直观,我们采用\cite{r000001}中所采取的结构:
在这里插入图片描述
下面我们分步来描述长短时记忆网络(LSTM)工作原理:

通过遗忘门

遗忘门的激活函数是sigmoid函数,可以控制信号是否可以通过,以及通过多少。如图所示:
在这里插入图片描述
f t = σ ( W f ? [ h t ? 1 , x t ] + b f ) \boldsymbol{f}_{t}=\sigma( W_{f} \cdot [\boldsymbol{h}_{t-1}, \boldsymbol{x}_{t}] + \boldsymbol{b}_{f} ) ft?=σ(Wf??[ht?1?,xt?]+bf?)
如上所示, t ? 1 t-1 t?1时刻隐藏层状态 h t ? 1 \boldsymbol{h}_{t-1} ht?1? t t t时刻的输入叠加在一起,作为遗忘门的输入,乘以遗忘门的权值矩阵 W f W_{f} Wf?,再加上遗忘门的偏置值 b f \boldsymbol{b}_{f} bf?,最后再经过 σ \sigma σ激活函数,得到遗忘门的输出 f t \boldsymbol{f}_{t} ft?。通过对 W f W_{f} Wf? b f \boldsymbol{b}_{f} bf?的学习,可以根据当前输入 x t \boldsymbol{x}_{t} xt?,控制短期记忆 h t ? 1 \boldsymbol{h}_{t-1} ht?1?可以进入本步计算的量,决定是记住还是遗忘一些内容。

通过输入门

输入门的激活函数也是sigmoid函数,控制输入信号可以通过的程度,如下图所示:
在这里插入图片描述
输入门首先通过下式来控制输入信号可进入的程度:
i t = σ ( W i ? [ h t ? 1 , x t ] + b i ) \boldsymbol{i}_{t}=\sigma( W_{i} \cdot [\boldsymbol{h}_{t-1}, \boldsymbol{x}_{t}] + \boldsymbol{b}_{i} ) it?=σ(Wi??[ht?1?,xt?]+bi?)
式中 i t \boldsymbol{i}_{t} it?中每个元素均为一个0$\sim$1之间的数,代表该维度允许输入信号进入的多少。
接下来我们对输入信号在输入Cell前进行预处理:
C ~ t = t a n h ( W C ? [ h t ? 1 , x t ] + b C ) ilde{\boldsymbol{C}}_{t}=tanh( W_{C} \cdot [\boldsymbol{h}_{t-1}, \boldsymbol{x}_{t}] + \boldsymbol{b}_{C} ) C~t?=tanh(WC??[ht?1?,xt?]+bC?)

更新Cell

更新长期记忆状态,如下图所示:
在这里插入图片描述
Cell的状态变化公式为:
C t = f t ? C t ? 1 + i t ? C ~ t \boldsymbol{C}_{t}=\boldsymbol{f}_{t} \otimes \boldsymbol{C}_{t-1} + \boldsymbol{i}_{t} \otimes ilde{\boldsymbol{C}}_{t} Ct?=ft??Ct?1?+it??C~t?
从这个式子可以清楚的看出,遗忘门的输出 f t \boldsymbol{f}_{t} ft?控制可以保留多少过去的记忆,而输入门的输出 i t \boldsymbol{i}_{t} it?控制经过预处理后可以进入的程度。

产生输出

接下来我们产生隐藏层输出:
在这里插入图片描述
首先通过输出门确定输出控制向量:
o t = σ ( W o ? [ h t ? 1 , x t ] + b o ) \boldsymbol{o}_{t}=\sigma( W_{o} \cdot [\boldsymbol{h}_{t-1}, \boldsymbol{x}_{t}] + \boldsymbol{b}_{o} ) ot?=σ(Wo??[ht?1?,xt?]+bo?)
最后确定隐藏层的输出即本时刻的状态:
h t = o t ? t a n h ( C t ) \boldsymbol{h}_{t}=\boldsymbol{o}_{t} \otimes tanh(\boldsymbol{C}_{t}) ht?=ot??tanh(Ct?)
另外,通常将 h t \boldsymbol{h}_{t} ht?接入到输出层,可以产生本时刻的输出 y t \boldsymbol{y}_{t} yt?
本节讲述了优器元网络中的元网络基础结构之长短时记忆网络(LSTM),在下一节中我们将介绍优化器元网络的具体内容。

长短时记忆网络(LSTM)介绍:http://colah.github.io/posts/2015-08-Understanding-LSTMs/

平台注册入口