LSTM 具有更长的记忆能力,但是 LSTM 结构相对较复杂,计算代价较高,模型参数量较大。们尝试简化 LSTM 内部的计算流程,特别是减少门控数量。GRU 把内部状态向量和输出向量合并,统一为状态向量,门控数量也减少到 2 个:复位门 (Reset Gate)和更新门(Update Gate)。
目录
复位门:
用于控制上一个时间戳的状态进入 GRU 的量。门控向量由当前时间戳输入和和上一时间戳状态变换得到。激活函数一般选择sigmoid,来将限制到0~1.只控制状态向量h,而不控制输入x。
接着构建新输入,由与经过变化后再由激活函数tanh优化得到。其中决定对于的接受程度,为0时表示不接受的输入,输入仅由决定。为1时二者共同作用产生。
更新门:
更新门用控制上一时间戳状态和新输入对新状态向量的影响程度。 门控向量由当前时间戳输入和和上一时间戳状态变换得到。激活函数一般选择sigmoid。得到的的值用于控制,1-用于控制。由此可以看出二者处于相互竞争的位置,为0时全部来自上个时间戳的状态向量,为1时为新输入。
GRU实战:
基于情感分析的GRU实战整体内容和SimpleRNN,LSTM基本一样,只不过在构建循环网络时调用封装好的GRU即可。
# 构建RNN
self.rnn = keras.Sequential([
layers.GRU(units, dropout=0.5, return_sequences=True),
layers.GRU(units, dropout=0.5)
])
具体内容可以参考