动手学PyTorch | (31) 循环神经网络
上⼀节介绍的n元语法中,时间步t的词 基于前⾯所有词的条件概率只考虑了最近时间步的n-1个词。如果要考虑⽐t-(n-1)更更早时间步的词对 的可能影响,我们需要增⼤n.但这样模型参数的数量将随之呈指数级增长。 本节介绍循环神经网络。它并非刚性地记忆所有固定长度的序列,⽽是通过隐藏状态来存储之前时间步的信息。⾸先我们回忆一下前面介绍过的多层感知机,然后描述如何添加隐藏状态来将它变成循环神经网络。 目录 1. 不含隐藏状态的神经网络 2. 含隐藏状态的循环神经网络 3. 应用:基于字符级循环神经网络的语言模型 4. 小结 1. 不含隐藏状态的神经网络 让我们考虑一个含单隐藏层的多层感知机。给定样本数为n,输入个数(特征数或特征向量维度)为d的小批量数据样本 .设隐藏层的激活函数为 ,那么隐藏层的输出 计算为: 其中隐藏层权重参数 ,隐藏层偏差参数 ,h为隐藏单元数。上式相加的两项形状不同,因此将按照⼴播机制相加。把隐藏变量H作为输出层的输入,且设输出个数为q(如分类问题中的类别数),输出层的输出为: 其中输出变量 ,输出层权重参数 ,输出层偏差参数 .如果是分类问 题,我们可以使⽤softmax(O)来计算输出类别的概率分布。 2. 含隐藏状态的循环神经网络 现在我们考虑输入数据存在时间相关性的情况。假设 是序列中时间步t的小批量输入, 是该时间步的隐藏变量。与多层感知机不同的是