赛博土木A-深度学习08:序列模型基础
多层感知机和卷积神经网络分别用于处理表格和图像,这两种情况可以认为样本是独立同分布的。但是很多情况样本是有顺序关系的,例如文本、音频和视频。此外还需要根据过去的信息来预测未来的走势,例如股票。为此引入了新的结构—循环神经网络。
1 序列模型
首先预测分为两种,一种是在观测范围内进行预测,内插法;一种是在观测范围外进行预测,外推法;
基于时间步$t$以及其对应的值进行预测,预测$x_t$:
1.1 自回归模型
参照线性回归模型,可以建立$x_t$与$x$的映射模型,但是不同于线性回归,样本数量不会变换,对于序列模型而言需要考虑的样本数量会随着$t$的增大而同步增加,意味着模型参数会根据观测对象变化而变化。
1.1.1 自回归模型
我们可以假定$x_t$只受前面$\tau$跨度($x_{t-1}, \ldots, x_{t-\tau}$)的影响,这样就可以固定参数的数量,从而训练模型,这种模型被称为自回归模型。
1.1.2 隐变量自回归模型
自回归模型抛弃了大量的序列,我们也可以之前的序列进行一个总结$h_t$,根据总结去推测,$\hat{x}_t = P(x_t \mid h_{t})$,这样参数数量就不会受序列影响了。总结通过$h_t = g(h_{t-1}, x_{t-1})$更新。因为$h_t$是模型内部的参数既不是输入也不是输出,因此称其为隐变量,故而模型称为隐变量自回归模型。
1.1.3 问题
自回归模型存在一个问题,可以利用历史观测来预测下一个数据,是基于序列本身的动力学,但是如果是预测多个数据显然存在问题。因为受新的数据影响其动力学应当是变化的。但是我们只能根据现有数据进行预测,因此事实上假定了序列动力学是不变的。
1.2 马尔可夫模型
如果状态转换只依赖于前$\tau$个状态(例如自回归模型),那么我们就可该转换过程为一个马尔可夫状态。如果之和前一个状态有关即$\tau =1$,则是最简单的一阶马尔可夫模型:
当假设$x_t$仅是离散值时,,使用动态规划可以沿着马尔可夫链精确地计算结果。
例如,高效地计算$P(x_{t+1} \mid x_{t-1})$:
1.3 因果关系
因果关系强强调的是序列有一个自然的方向,通常是时间。解释$P(x_{t+1} \mid x_{t})$ 比观察$P(x_{t} \mid x_{t+1})$更容易。且更具有实际价值。
2 文本数据预处理
文本数据的预处理主要包括如下的步骤:
- 文本转换为字符串加载到内存中。
- 字符串拆分为词元(单词和字符)
- 建立一个词表将拆分的词元映射到数字索引
- 将文本转换为数字索引序列。
3 语言模型
将文本数据映射为词元数字索引,将这些词元数字索引视为离散的观测序列。对于长度为$T$的文本观测序列 $x_1,x_2,\ldots,x_T$。语言模型的目标是估计序列的联合:
3.1 学习语言模型
一段文本出现的概率计算方式:
计算上式,需要单词的概率,以及给定几个单词后出现某个单词的概率,显然这些概率应该在进行推测之前获得,对应到机器学习中就是模型的参数。
需要构建以足够规模的文本语料库用作训练集。,然后计算单词的频率,以及各种组合的频率。
随着组合规模的上升,很容易出现组合本身是合理的,但是在训练语料库中很少出现或者没有出现。这样计算概率值为0.
为了解决0概率问题引入了拉普拉斯平滑,拉普拉斯平滑的思想是在一个规模巨大的语料库中对每个词元出现次数$+1$,不会造成什么影响但是可以解决零概率事件。具体方法是在所有计数中添加一个小常量。用$n$表示训练集中的单词总数(重复计数),用$m$表示词元的数量(非重复计数)。其中,$\epsilon_1,\epsilon_2$和$\epsilon_3$是超参数。
该模型很容无效,一方面是模型参数过多,另一方面完全忽略词义。
3.2 马尔可夫模型
马尔可夫模型根据涉及元素的多少分为一元语法、二元语法、三元语法模型。
3.3 自然语言统计
根据自然语言统计,词频遵循齐普夫定律,即第$i$个最常用单词的频率为$n_i$:
等价:
对n元语法模型的词元频率进行分析:
- 单词序列也遵循齐普夫定律。
- 此表中$n$元组的数量并不多
- n元组很少出现。
3.4 读取序列长度
神经网络一次处理具有预定长度($n$ 个时间步)的一个小批量序列。
3.4.1 随机采样
在随机采样中,每个样本都是在原始的长序列上任意捕获的子序列。对于语言建模,目标是基于到目前为止我们看到的词元来预测下一个词元,因此标签是移位了一个词元的原始序列。
3.4.2 顺序分区
不同于随机采样相邻,顺序分区方式中相邻小批量中的子序列在原始序列上是相邻的。
参考文献
[1] 《动手学深度学习》 — 动手学深度学习 2.0.0 documentation[EB/OL]. [2024-12-21]. https://zh.d2l.ai/.