在第 9.3 节中,我们描述了马尔可夫模型和 n-grams 用于语言建模,其中 token 的条件概率xt在时间步t只取决于 n−1以前的令牌。如果我们想在时间步长之前合并标记的可能影响t−(n−1)在xt, 我们需要增加n. 然而,模型参数的数量也会随之呈指数增长,因为我们需要存储 |V|n词汇集的数字 V. 因此,而不是建模 P(xt∣xt−1,…,xt−n+1)最好使用潜在变量模型:
在哪里ht−1是一个隐藏状态,存储序列信息到时间步长t−1. 一般来说,任何时间步的隐藏状态t可以根据当前输入计算xt和之前的隐藏状态ht−1:
为了足够强大的功能f在(9.4.2)中,潜变量模型不是近似值。毕竟, ht可以简单地存储到目前为止观察到的所有数据。但是,它可能会使计算和存储都变得昂贵。
回想一下,我们在第 5 节中讨论了带有隐藏单元的隐藏层 。值得注意的是,隐藏层和隐藏状态指的是两个截然不同的概念。如前所述,隐藏层是在从输入到输出的路径上从视图中隐藏的层。从技术上讲,隐藏状态是我们在给定步骤所做的任何事情的输入,它们只能通过查看先前时间步骤的数据来计算。
递归神经网络(RNN) 是具有隐藏状态的神经网络。在介绍 RNN 模型之前,我们首先重温一下5.1 节介绍的 MLP 模型。
import tensorflow as tf
from d2l import tensorflow as d2l
9.4.1. 没有隐藏状态的神经网络
让我们看一下具有单个隐藏层的 MLP。令隐藏层的激活函数为ϕ. 给定一小批示例X∈Rn×d批量大小 n和d输入,隐藏层输出 H∈Rn×h计算为
在(9.4.3)中,我们有权重参数 Wxh∈Rd×h, 偏置参数 bh∈R1×h, 以及隐藏单元的数量h, 对于隐藏层。因此, 在求和期间应用广播(参见第 2.1.4 节)。接下来,隐藏层输出
评论
查看更多