13. RNN 的基本原理

传统神经⽹络的结构⽐较简单:输⼊层 – 隐藏层 – 输出层。如下图所示:

RNN 跟传统神经⽹络最⼤的区别在于每次都会将前⼀次的输出结果,带到下⼀次的隐藏层中,⼀起训练。如下图所示:

下⾯⽤⼀个具体的案例来看看 RNN 是如何⼯作的:

假如需要判断⽤户的说话意图(问天⽓、问时间、设置闹钟…),⽤户说了⼀句“what time is it?”我们需要先对这句话进⾏分词:

然后按照顺序输⼊ RNN ,我们先将 “what”作为 RNN 的输⼊,得到输出「01」

然后,我们按照顺序,将“time”输⼊到 RNN ⽹络,得到输出「02」。

这个过程我们可以看到,输⼊ “time” 的时候,前⾯ “what” 的输出也产⽣了影响(隐藏层中有⼀半是⿊⾊的)。

以此类推,前⾯所有的输⼊都对未来的输出产⽣了影响,⼤家可以看到圆形隐藏层中包含了前⾯所有的颜⾊。如下图所示:

当我们判断意图的时候,只需要最后⼀层的输出「05」,如下图所示:

RNN 的缺点也⽐较明显

通过上⾯的例⼦,我们已经发现,短期的记忆影响较⼤(如橙⾊区域),但是⻓期的记忆影响就很⼩(如⿊⾊和绿⾊区域),这就是 RNN 存在的短期记忆问题。

  1. RNN 有短期记忆问题,⽆法处理很⻓的输⼊序列
  2. 训练 RNN 需要投⼊极⼤的成本

由于 RNN 的短期记忆问题,后来⼜出现了基于 RNN 的优化算法,下⾯给⼤家简单介绍⼀下。