深度学习入门

循环网络RNN:有记忆的网络

10 分钟

读句子需要记性

「小明把书放进了书包,因为它很重」——「它」指谁?要回答这个问题,你得记住前面的词。普通网络没有记忆,每次输入都是全新的开始。循环网络(RNN)给网络加了一个「隐状态」:每读一个词,就把当前的理解记进隐状态,带着它去读下一个词——像你读书时脑中不断更新的小摘要。

展开看,就是同一模块的反复使用

把 RNN 按时间展开,其实是同一个网络模块被反复使用:第 1 步读「小明」输出记忆,第 2 步带着记忆读「把」,……第 8 步读「它」时,记忆里还留着「书」和「书包」的影子。所以 RNN 天然适合序列:文本、语音、股票曲线。

记性的极限

RNN 有个致命弱点:长距离会忘。误差要沿时间步一步步传回来,连乘几十上百次后,信号要么缩到几乎为零(梯度消失),要么胀到爆炸——句子一长,开头的信息就模糊了。改进版 LSTM 和 GRU 给记忆加了「门」:什么该记住、什么该忘掉,由门来控制,记性明显变好。这些在《动手学深度学习》的「循环神经网络」和「现代循环神经网络」两章。

常见误区

别以为 RNN 是序列的唯一答案——今天机器翻译、大模型多用下一讲的注意力(Transformer);但「带记忆读序列」的思想仍然是基础,值得先学懂。

练一练:造一个句子,其中某个代词必须靠前文才能确定指代,说说 RNN 靠什么猜对。

小纸条

造一个含代词的长句子,说明必须记住前文哪些词才能理解代词指代谁。

登录 后可看答案