这个图展示了如何将不同类型的嵌入(embeddings)组合起来形成最终的输入向量。具体来说,它展示了三种嵌入的组合:标量投射(Scalar Projection)、局部时间戳嵌入(Local Time Stamp Position Embeddings)和全局时间戳嵌入(Global Time Stamp Embeddings)。让我们逐步解释每一部分:
标量投射(Scalar Projection)
在图的顶部,有一个标为 “Scalar Projection” 的部分。这个部分显示了序列中的每个标量值如何被投射到特征空间中。具体步骤如下:
- 标量输入:图中的每个小方块 u 0 , u 1 , . . . , u 7 u_0, u_1, ..., u_7 u0,u1,...,u7 代表序列中的标量输入值。这些标量值通过投射操作(例如一维卷积或全连接层)转换成特征维度向量。
- 投射结果:这些投射后的向量 u 0 , u 1 , . . . , u 7 u_0, u_1, ..., u_7 u0,u1,...,u7 是标量上下文在特征空间中的表示。
局部时间戳嵌入(Local Time Stamp Position Embeddings)
在图的中间部分,有一个标为 “Local Time Stamp Position Embeddings” 的部分。这个部分表示局部位置嵌入,用于捕捉输入序列的顺序信息。具体步骤如下:
- 位置嵌入:每个位置 P P P 对应一个位置嵌入向量 E 0 , E 1 , . . . , E 7 E0, E1, ..., E7 E0,E1,...,E7。
- 嵌入向量:这些嵌入向量 P E 0 , P E 1 , . . . , P E 7 P E0, P E1, ..., P E7 PE0,PE1,...,PE7 表示序列中各个位置的特征信息。
全局时间戳嵌入(Global Time Stamp Embeddings)
在图的底部,有一个标为 “Global Time Stamp Embeddings” 的部分。这个部分表示全局时间戳嵌入,用于捕捉序列数据中的时间信息。全局时间戳嵌入包含三种嵌入类型:周嵌入(Week Embeddings)、月嵌入(Month Embeddings)和假日嵌入(Holiday Embeddings)。具体步骤如下:
- 周嵌入(Week Embeddings):每个位置都有一个对应的周嵌入向量,例如 (Week E0, Week E1, Week E2, Week E3),这些向量表示该位置对应的周信息。
- 月嵌入(Month Embeddings):每个位置都有一个对应的月嵌入向量,例如 (Month E0),这些向量表示该位置对应的月信息。
- 假日嵌入(Holiday Embeddings):每个位置都有一个对应的假日嵌入向量,例如 (H1 E1, H2 E2),这些向量表示该位置对应的假日信息。
综合输入向量
最终,输入向量是这三种嵌入的加和。这意味着每个输入位置的最终向量表示由以下部分组成:
X t feed [ i ] = α u t i + PE ( i ) + ∑ p S E p ( i ) X_t^{\text{feed}}[i] = \alpha u_t^i + \text{PE}(i) + \sum_{p} SE_p(i) Xtfeed[i]=αuti+PE(i)+p∑SEp(i)
- 标量投射部分: α u t i \alpha u_t^i αuti 是标量上下文投射后的向量。
- 位置嵌入部分: PE ( i ) \text{PE}(i) PE(i)是位置嵌入向量。
- 全局时间戳嵌入部分: ∑ p S E p ( i ) \sum_{p} SE_p(i) ∑pSEp(i) 是所有全局时间戳嵌入向量的总和。
具体解释
例如,对于位置 (i=0),最终的输入向量为:
X
t
feed
[
0
]
=
α
u
0
+
PE
(
0
)
+
S
E
week
(
0
)
+
S
E
month
(
0
)
+
S
E
holiday
(
0
)
X_t^{\text{feed}}[0] = \alpha u_0 + \text{PE}(0) + SE_{\text{week}}(0) + SE_{\text{month}}(0) + SE_{\text{holiday}}(0)
Xtfeed[0]=αu0+PE(0)+SEweek(0)+SEmonth(0)+SEholiday(0)
通过这种方式,模型能够结合标量上下文、位置信息和全局时间信息,从而更好地理解和处理输入序列数据。
总的来说,这张图展示了如何将不同类型的信息(标量、局部位置和全局时间)结合起来,形成一个丰富的输入表示,以供模型进行处理和学习。