嘻嘻!小李又上线了~非常时期还是好好待在家里吧!多喝水多洗手少出门戴口罩!大家都照顾好自己呀!
今天是上一节LSTM网络的一个扩展~
GRU网络
传送门 GRU 原论文:https://arxiv.org/pdf/1406.1078v3.pdf
上一节所提到的LSTM 具有训练时间长、参数较多、内部计 算复杂的缺点。Cho 等人在 2014 年在原本的LSTM网络的基础上,将 LSTM 的遗忘门和输入门合成了一个单一的更新门,去除掉了细胞状态,使用隐藏状态来进行信息的传递,提出了LSTM网络的变体GRU网络(Gated Recurrent Unit,门控循环单元网络)。 GRU在计算当前时刻新信息的方法和LSTM有所不同。
故,总结一下GRU在LSTM的基础上改进的有(画个重点)
1、将遗忘门和输入门合并为一个门:更新门,此外另一门叫做重置门。
2、不引入额外的内部状态c,直接在当前状态ht和历史状态ht-1之间引入线性依赖关系。二者区别
1.GRU 有两个门(重置门与更新门),而 LSTM 有三个门(输入门、遗忘门和输出门)。
2.GRU 并不会控制并保留内部记忆,且没有 LSTM 中的输出门。
3.LSTM 中的输入与遗忘门对应于 GRU 的更新门,重置门直接作用于前面的隐藏状态。
4.在计算输出时GRU并不应用二阶非线性。GRU模型
更新门与重置门
更新门:用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。
重置门:用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。
从直观上来说,重置门决定了如何将新的输入信息与前面的记忆相结合,更新门定义了前面记忆保存到当前时间步的量。如果我们将重置门设置为 1,更新门设置为 0,那么我们将再次获得标准 RNN 模型。过程解析
①更新门
在时间步 t,我们首先需要使用以下公式计算更新门 z_t:
其中 x_t 为第 t 个时间步的输入向量,即输入序列 X 的第 t 个分量,它会经过一个线性变换(与权重矩阵 W(z) 相乘)。h_(t-1) 保存的是前一个时间步 t-1 的信息,它同样也会经过一个线性变换。更新门将这两部分信息相加并投入到 Sigmoid 激活函数中,因此将激活结果压缩到 0 到 1 之间。
②重置门
h_(t-1) 和 x_t 先经过一个线性变换,再相加投入 Sigmoid 激活函数以输出激活值 该表达式与更新门的表达式是一样的,只不过线性变换的参数和用处不一样而已。
③当前记忆内容
在重置门的使用中,新的记忆内容将使用重置门储存过去相关的信息,它的计算表达式为(输入 x_t 与上一时间步信息 h_(t-1) 先经过一个线性变换,即分别右乘矩阵 W 和 U。): 计算重置门 r_t 与 Uh_(t-1) 的 Hadamard 乘积,即 r_t 与 Uh_(t-1) 的对应元素乘积。因为前面计算的重置门是一个由 0 到 1 组成的向量,它会衡量门控开启的大小。例如某个元素对应的门控值为 0,那么它就代表这个元素的信息完全被遗忘掉。该 Hadamard 乘积将确定所要保留与遗忘的以前信息。
将这两部分的计算结果相加再投入双曲正切激活函数中。
④当前时间步的最终记忆
最后一步,网络需要计算 h_t,该向量将保留当前单元的信息并传递到下一个单元中。在这个过程中,我们需要使用更新门,它决定了当前记忆内容 h't 和前一时间步 h(t-1) 中需要收集的信息是什么。 z_t 为更新门的激活结果,它同样以门控的形式控制了信息的流入。z_t 与 h_(t-1) 的 Hadamard 乘积表示前一时间步保留到最终记忆的信息,该信息加上当前记忆保留至最终记忆的信息就等于最终门控循环单元输出的内容。通过过程可以发现:门控循环单元不会随时间而清除以前的信息,它会保留相关的信息并传递到下一个单元,因此它利用全部信息而避免了梯度消失问题。
关于GRU的训练过程(包括前向传播)可参考:GRU网络
友情链接:经典必读:门控循环单元(GRU)的基本概念与原理
快过年啦!一切健康!一切顺利!
网友评论