循环神经网络
循环神经网络的构造
one-hot向量
裁剪梯度
困惑度
我们通常使用困惑度(perplexity)来评价语言模型的好坏。困惑度是对交叉熵损失函数做指数运算后得到的值。特别地,
最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
基线情况下,模型总是预测所有类别的概率都相同,此时困惑度为类别个数。
显然,任何一个有效模型的困惑度必须小于类别个数。在本例中,困惑度必须小于词典大小vocab_size。
定义模型训练函数
跟之前章节的模型训练函数相比,这里的模型训练函数有以下几点不同:
- 使用困惑度评价模型。
- 在迭代模型参数前裁剪梯度。
- 对时序数据采用不同采样方法将导致隐藏状态初始化的不同。
关于循环神经网络描述错误的是:(2)
- 在同一个批量中,处理不同语句用到的模型参数w ^ h 和b ^ h 是一样的(批量训练的过程中,参数以批为单位更新的,每个附加内模型的参数都是一样的。)
- 循环神经网络处理一个长度为Ť的输入序列,需要维护Ť组模型参数(循环神经网络通过不断循环使用相同的单个参数来应对不同长度的序列,故网络的参数数量与输入序列长度无关。)
- 各个时间步的隐藏状态HŤ不能并行计算(隐状态HŤ的值依赖于H1,…,HŤ - 1,故不能并行计算。)
- 可以认为第ŤŤ一个时间步的隐藏状态HŤ 包含终止到第Ť一个时间步的序列的历史信息
关于困惑度的描述错误的是:(3)
- 困惑度用来评价语言模型的好坏
- 困惑度越低语言模型越好
- 有效模型的困惑度应该大于类别个数(一个随机分类模型(基线模型)的困惑度等于分类问题的类别个数,有效模型的困惑度应小于类别个数。)
关于采样方法和隐藏状态初始化的描述错误的是:(3)
- 采用的采样方法不同会导致隐藏状态初始化方式发生变化
- 采用相邻采样仅在每个训练周期开始的时候初始化隐藏状态是因为相邻的两个批量在原始数据上是连续的
- 采用随机采样需要在每个小批量更新前初始化隐藏状态是因为每个样本包含完整的时间序列信息(随机采样中每个样本只包含局部的时间序列信息,因为样本不完整所以每个批量需要重新初始化隐藏状态。)