序列模型
在各种实际应用场景中,序列模型扮演着不可或缺的角色。无论是金融市场的股票价格预测,还是自然语言处理中的文本生成,序列模型都有广泛的应用。本文旨在深入浅出地探讨序列模型的核心概念、发展过程以及应用方法。
预备知识
在深入探讨序列模型之前,我们首先需要了解两个概率论的基础知识:条件概率公式和联合概率公式。
条件概率公式:描述了在给定事件B发生的条件下,事件A发生的概率,表示为
P
(
A
∣
B
)
P(A|B)
P(A∣B)。联合概率公式:描述了两个事件A和B同时发生的概率,表示为
P
(
A
,
B
)
P(A,B)
P(A,B),可以通过条件概率公式计算得出,即
P
(
A
,
B
)
=
P
(
A
∣
B
)
P
(
B
)
P(A,B) = P(A|B)P(B)
P(A,B)=P(A∣B)P(B)。
这两个公式是我们理解序列模型的基石,为后续内容的理解铺垫了基础。
新概念
1. 时间步
在序列模型中,时间步是一个核心概念。每个时间步代表序列中的一个观测点,例如,在股票价格序列中,每个时间步可能对应一天的收盘价。
2. 序列动力学
序列动力学描述了序列中各时间步之间的依赖关系。在自然语言序列中,一个词的出现可能依赖于前面的词;在金融序列中,未来的股价可能受到过去股价的影响。
从自回归模型到马尔可夫模型
1. 平稳性条件
在时间序列分析中,平稳性是一个重要概念。一般认为如果一个序列的序列动力学是近似不变的, 则认为此序列是稳定的. 是一个平稳的时间序列具有恒定的均值、方差和自协方差,这使得我们能够更容易地捕捉到序列的动态特性。
2. 时间序列下的条件概率公式
在时间序列背景下,条件概率公式可以用来描述序列中各时间步的依赖关系。
P
(
x
1
,
…
,
x
T
)
=
∏
t
=
1
T
p
(
x
t
|
x
t
−
1
,
…
,
x
1
)
P ( x _ { 1 } , \ldots , x _ { T} ) = \prod _ { t = 1 } ^ { T} p ( x _ { t } |x _ { t - 1 } , \ldots , x _ { 1 } )
P(x1,…,xT)=t=1∏Tp(xt|xt−1,…,x1) 这个公式描述了一个序列中的每个元素如何基于前面的所有元素而生成,这是自回归模型的基础思想。公式中,
P
(
x
1
,
…
,
x
T
)
P ( x _ { 1 } , \ldots , x _ { T} )
P(x1,…,xT) 表示整个序列的联合概率分布,而
∏
t
=
1
T
p
(
x
t
|
x
t
−
1
,
…
,
x
1
)
\prod _ { t = 1 } ^ { T} p ( x _ { t } |x _ { t - 1 } , \ldots , x _ { 1 } )
∏t=1Tp(xt|xt−1,…,x1) 则表示该序列中每个元素条件于其前面所有元素的概率的乘积。
以天气预报为例。假设我们有一个序列,描述了连续三天的天气情况:
x
1
=
晴
,
x
2
=
雨
,
x
3
=
阴
x_1 = \text{晴}, \ x_2 = \text{雨}, \ x_3 = \text{阴}
x1=晴, x2=雨, x3=阴。
根据给定的公式,我们可以计算整个序列的联合概率分布为:
P
(
x
1
,
x
2
,
x
3
)
=
P
(
x
1
)
⋅
P
(
x
2
∣
x
1
)
⋅
P
(
x
3
∣
x
2
,
x
1
)
P(x_1, x_2, x_3) = P(x_1) \cdot P(x_2 | x_1) \cdot P(x_3 | x_2, x_1)
P(x1,x2,x3)=P(x1)⋅P(x2∣x1)⋅P(x3∣x2,x1)。
在这个例子中,
P
(
x
1
)
P(x_1)
P(x1) 表示第一天是晴天的概率;
P
(
x
2
∣
x
1
)
P(x_2 | x_1)
P(x2∣x1) 表示在第一天是晴天的条件下,第二天是雨天的概率;
P
(
x
3
∣
x
2
,
x
1
)
P(x_3 | x_2, x_1)
P(x3∣x2,x1) 表示在前两天分别是晴天和雨天的条件下,第三天是阴天的概率。
这个公式帮助我们理解了,如何通过序列中的每个元素基于前面的所有元素的条件概率,来计算整个序列的联合概率分布。在实际应用中,我们可以利用这个公式来估计序列数据的生成过程,例如时间序列预测、自然语言处理等领域。
3. 简介自回归模型满足马尔可夫条件
自回归模型是一种序列模型,它假设当前时间步的值依赖于过去几个时间步的值。当自回归模型满足马尔可夫条件时,它能够近似表示前述的条件概率公式,从而更好地捕捉序列的动态特性。如下是一阶自回归模型(一阶马尔可夫模型).
P
(
x
1
,
…
,
x
T
)
=
∏
t
=
1
T
p
(
x
t
|
x
t
−
1
)
P ( x _ { 1 } , \ldots , x _ { T} ) = \prod _ { t = 1 } ^ { T} p ( x _ { t } |x _ { t - 1 })
P(x1,…,xT)=t=1∏Tp(xt|xt−1)
模型训练
在训练序列模型时,我们通常从已有的观测数据中生成训练集,这个过程包含几个重要步骤,其中嵌入维度的确定及特征-标签对的构造尤为关键。
1. 嵌入维度的确定
嵌入维度(Embedding Dimension)是一个重要概念,它决定了模型在进行预测时会考虑过去多少个时间步的信息。例如,如果嵌入维度为3,那么模型在预测下一个时间步的值时,会考虑到过去的三个时间步的观测值。
选择合适的嵌入维度是模型训练的重要环节。如果嵌入维度过小,模型可能无法捕捉到足够的历史信息,导致预测性能不佳;而如果嵌入维度过大,模型可能会变得过于复杂,导致过拟合。
2. 构造特征-标签对
确定了嵌入维度后,我们可以开始构造用于模型训练的特征-标签对。特征通常是过去k个时间步的观测值,标签则是我们希望模型预测的下一个时间步的值。
以时间序列数据为例,假设我们有一个观测数据序列:
x
1
,
x
2
,
x
3
,
x
4
,
x
5
,
…
,
x
T
x_1, x_2, x_3, x_4, x_5, \ldots, x_T
x1,x2,x3,x4,x5,…,xT 如果我们选择的嵌入维度为3,则我们可以构造如下的特征-标签对:
特征:
[
x
1
,
x
2
,
x
3
]
[x_1, x_2, x_3]
[x1,x2,x3],标签:
x
4
x_4
x4特征:
[
x
2
,
x
3
,
x
4
]
[x_2, x_3, x_4]
[x2,x3,x4],标签:
x
5
x_5
x5特征:
[
x
3
,
x
4
,
x
5
]
[x_3, x_4, x_5]
[x3,x4,x5],标签:
x
6
x_6
x6…
这样,我们就获得了一组用于训练模型的特征-标签对。在训练过程中,模型会学习到如何根据过去k个时间步的观测值来预测下一个时间步的值,从而实现对序列数据的动态建模。
3. 模型训练
有了特征-标签对,我们就可以利用这些数据来训练我们的序列模型了。训练的目标是使模型能够尽可能准确地预测未来的序列值,这通常通过最小化预测误差来实现。
总之,确定合适的嵌入维度并根据这个维度构造特征-标签对是序列模型训练中的关键步骤。这些步骤为模型提供了学习序列动力学的基础,从而使模型能够捕捉到序列中的依赖关系,并进行有效的预测。
k步预测
k步预测是指模型预测未来k个时间步的值。在k步预测中,1步预测是最基本的情况,即每次只预测下一个时间步的值。而在多步预测中,我们会利用已知的信息来预测未来多个时间步的序列值,这种预测方式会面临误差积累的问题,特别是在k值较大时。
假设有一个嵌入维度为4的序列模型,意味着模型是基于过去的4个时间步来进行预测的。即使测试集的时间步长度为600,您仍然可以进行多步预测,例如4步预测,这并不与测试集的时间步长度冲突。
进行4步预测并不是说我们一定要预测未来的第4个时间步,而是说我们使用过去的4个时间步的信息来进行预测。我们仍然可以进行1步预测、2步预测等,只不过在这些情况下,我们依然是使用过去的4个时间步的信息。
举个例子,如果我们在时间步t进行4步预测,我们会使用时间步t-3、t-2、t-1和t的信息来预测时间步t+1、t+2、t+3和t+4的值。
同理,如果进行1步预测,我们依然会使用时间步t-3、t-2、t-1和t的信息来预测时间步t+1的值。
这就是为什么即使测试集的时间步长度为600,您仍然可以进行4步预测的原因。而根据预测的需求,您可以选择进行1步预测,也可以选择进行多步预测。
启发式观点
1. 内插与外推
内插:内插是指在已知的观测数据点之间进行预测,目的是估计已知数据点中间的未知值。由于内插区间内有充足的数据支持,一般而言,内插的准确性较高。
外推:与内插不同,外推是在已知观测数据点的范围之外进行预测,即预测未来的未知值。外推通常更加困难,因为我们没有未来的数据来支持我们的预测,这会导致不确定性增加,预测误差可能较大。
这就是为什么在时间序列分析中,利用已有观测数据预测未来数据相对更为容易,而使用未来数据预测未来数据则相对困难。这也指出来在线学习的难点.
2. 因果(关系)模型
因果模型着重于解释变量之间的因果关系。在时间序列分析中,我们通常假设过去的数据可以影响未来的数据,但未来的数据不能影响过去的数据,这是因果关系的一个基本原则。
根据条件概率公式,理论上可以使用最后的时间步来预测第一个时间步,但这在现实中往往是没有意义的,因为未来通常不会影响过去。因此,即便从数学上看似乎可行,这样的预测也很可能是无效的。
3. K步预测的误差累积
在进行K步预测时,如果K值较大,那么每一步的预测误差都会影响后续步骤的预测,从而导致误差逐渐累积。随着时间步的增加,这种累积效应会变得越来越显著,最终可能导致较远的未来的预测值趋近一个常数,或者模型的预测性能急剧下降。
这就要求我们在实际应用中,需要权衡K值的选择,确保模型在保持预测准确性的同时,不会受到过大的误差累积影响。