1. 循环神经网络的构造
基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量
,用
表示
在时间步
的值。的计算基于
和
,可以认为
记录了到当前字符为止的序列信息,利用
对序列的下一个字符进行预测。
循环神经网络(信息流)
其中
又其中为
batch_size,为vocab_size,
为隐藏变量数目,
为输出层字典长度。
1.1 onehot
已知,略
就是把离散状态按字典编码,在字典的对应状态上为1,其他状态为0.
1.2 梯度裁剪
循环神经网络中较容易出现梯度衰减或梯度爆炸,这会导致网络几乎无法训练。裁剪梯度(clip gradient)是一种应对梯度爆炸的方法。假设我们把所有模型参数的梯度拼接成一个向量
,并设裁剪的阈值是
。裁剪后的梯度
的范数不超过。
1.3 困惑度
我们通常使用困惑度(perplexity)来评价语言模型的好坏。困惑度是对交叉熵损失函数做指数运算后得到的值。特别地,
- 最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
- 最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
- 基线情况下,模型总是预测所有类别的概率都相同,此时困惑度为类别个数。
显然,任何一个有效模型的困惑度必须小于类别个数。在本例中,困惑度必须小于词典大小
vocab_size
2. 训练RNN模型的特点
跟之前章节的模型训练函数相比,这里的模型训练函数有以下几点不同:
- 使用困惑度评价模型。
- 在迭代模型参数前裁剪梯度。
- 对时序数据采用不同采样方法将导致隐藏状态初始化的不同。
本节内容暂时还没搞明白,之后几天再作补充












网友评论