循环神经网络与门控机制
循环神经网络是用来处理“一连串”数据(一句话、一段语音、一串股价)的。它每次只看一个,靠一份不断更新的“记忆”把前后串起来。难点在于:很久以前看到的东西,常常没传到后面就被忘光了。 下面用一个小实验直观感受这件事——以及 LSTM 是怎么把记忆守住的。
游戏规则:先给两个网络看同一个数字,让它们记住;接着不停塞新数字进去干扰。走到最后,谁还记得最初那个数字?
70
② 依次喂入:
普通循环网络
只有一份随手涂改的便签
最后记成 —
LSTM
多了一条记忆传送带和闸门
容易忘
记得牢
最后记成 —
为什么会差这么多?
普通 RNN:随手涂改的便签
每读到一个新数字,就把整张便签重写一遍。新内容不断覆盖旧内容,所以很久以前的事很快被抹掉。
LSTM:传送带 + 闸门
另设一条专门的记忆传送带。几扇“闸门”决定何时保留旧记忆、何时才写入新内容——重要信息于是能一路保留。试着把上面的“记忆闸门”往“容易忘”方向拉,看 LSTM 怎样退化成普通 RNN。
GRU:精简版 LSTM
用更少的闸门做到差不多的事,参数更少、跑得更快,是实际中常用的轻量替代。
给好奇的读者:闸门背后的公式
LSTM 在每个时刻用三扇门(σ 输出 0~1 的开度)调控一条细胞状态 c:
遗忘门 ft = σ(Wf xt + Uf ht-1 + bf) — 旧记忆保留多少
输入门 it = σ(Wi xt + Ui ht-1 + bi) — 新内容写入多少
输出门 ot = σ(Wo xt + Uo ht-1 + bo) — 当前用出多少
细胞状态 ct = ft ⊙ ct-1 + it ⊙ c̃t
隐藏状态 ht = ot ⊙ tanh(ct)
上面实验里的“记忆闸门”就对应遗忘门 f:拉到“记得牢”即 f≈1(旧记忆几乎全留),拉到“容易忘”即 f 变小(旧记忆迅速流失)。