DeBERTa(Decoding-enhanced BERT with disentangled attention)与传统的BERT模型在词嵌入和注意力机制上有显著的不同。具体来说,BERT模型中,每个词在输入层被表示为一个向量,这个向量是其词(内容)嵌入和位置嵌入的和。然而,在DeBERTa中,每个词分别用两个向量表示,分别编码其内容和位置信息。词与词之间的注意力权重通过基于内容和相对位置的解耦矩阵来计算。这个机制的设计动机来源于一个观察,即词对的注意力权重不仅取决于它们的内容,还取决于它们的相对位置。例如,当“deep”和“learning”两个词紧挨在一起出现时,它们之间的依赖关系比出现在不同句子中的时候要强得多。
具体数据举例说明
假设我们有以下两句话:
- Deep learning is a subset of machine learning.
- He is interested in deep topics and enjoys learning new things.
在BERT中,这些句子中的每个词会被映射到一个向量,这个向量是词嵌入和位置嵌入的和。例如,对于词“deep”来说,假设其词嵌入向量是[0.1, 0.2, 0.3]
,位置嵌入向量是[0.01, 0.02, 0.03]
,那么在输入层,“deep”会被表示为[0.1+0.01, 0.2+0.02, 0.3+0.03]
,即[0.11, 0.22, 0.33]
。
在DeBERTa中,“deep”会有两个独立的向量,一个是内容向量,一个是位置向量。假设“deep”的内容向量是[0.1, 0.2, 0.3]
,位置向量是[0.01, 0.02, 0.03]
。类似地,对于“learning”,“learning”的内容向量是[0.4, 0.5, 0.6]
,位置向量是[0.04, 0.05, 0.06]
。
DeBERTa计算注意力权重时,会分别考虑内容和位置两个方面。例如,对于“deep”和“learning”这两个词,如果它们在句子中的相对位置很近,比如在第一句话中是相邻的词,那么它们的注意力权重会很高;而在第二句话中,它们出现在不同的上下文中,相对位置较远,所以它们的注意力权重会较低。
假设我们使用解耦矩阵W_c
和W_p
分别计算内容和位置的注意力权重:
Attention
content
=
W
c
⋅
(
deep
content
⋅
learning
content
)
\text{Attention}_{\text{content}} = W_c \cdot (\text{deep}_{\text{content}} \cdot \text{learning}_{\text{content}})
Attentioncontent=Wc⋅(deepcontent⋅learningcontent)
Attention
position
=
W
p
⋅
(
deep
position
⋅
learning
position
)
\text{Attention}_{\text{position}} = W_p \cdot (\text{deep}_{\text{position}} \cdot \text{learning}_{\text{position}})
Attentionposition=Wp⋅(deepposition⋅learningposition)
假设解耦矩阵W_c
和W_p
是单位矩阵,简单起见:
Attention
content
=
[
0.1
⋅
0.4
+
0.2
⋅
0.5
+
0.3
⋅
0.6
]
=
[
0.04
+
0.1
+
0.18
]
=
0.32
\text{Attention}_{\text{content}} = [0.1 \cdot 0.4 + 0.2 \cdot 0.5 + 0.3 \cdot 0.6] = [0.04 + 0.1 + 0.18] = 0.32
Attentioncontent=[0.1⋅0.4+0.2⋅0.5+0.3⋅0.6]=[0.04+0.1+0.18]=0.32
Attention
position
=
[
0.01
⋅
0.04
+
0.02
⋅
0.05
+
0.03
⋅
0.06
]
=
[
0.0004
+
0.001
+
0.0018
]
=
0.0032
\text{Attention}_{\text{position}} = [0.01 \cdot 0.04 + 0.02 \cdot 0.05 + 0.03 \cdot 0.06] = [0.0004 + 0.001 + 0.0018] = 0.0032
Attentionposition=[0.01⋅0.04+0.02⋅0.05+0.03⋅0.06]=[0.0004+0.001+0.0018]=0.0032
最终的注意力权重:
Attention final = Attention content + Attention position = 0.32 + 0.0032 = 0.3232 \text{Attention}_{\text{final}} = \text{Attention}_{\text{content}} + \text{Attention}_{\text{position}} = 0.32 + 0.0032 = 0.3232 Attentionfinal=Attentioncontent+Attentionposition=0.32+0.0032=0.3232
从上面的例子可以看出,DeBERTa通过分别计算内容和位置的注意力权重,并将它们组合起来,使得模型能够更好地捕捉词与词之间的复杂依赖关系。这个机制在处理文本时,可以更准确地反映词之间的相对位置对注意力的影响,提高了模型的表现力和准确性。
时间序列举例
为了更好地解释DeBERTa中解耦注意力机制如何在时间序列数据中运作,我们可以通过一个简单的示例来说明。假设我们有一个时间序列数据集,记录了某个股票的每日收盘价,并且我们希望通过分析这些数据来预测未来的价格走势。
假设我们有如下时间序列数据:
日期 | 收盘价 |
---|---|
2024-06-01 | 100.0 |
2024-06-02 | 101.5 |
2024-06-03 | 102.0 |
2024-06-04 | 103.0 |
2024-06-05 | 104.5 |
在传统的BERT模型中,每个收盘价(例如100.0)会被映射到一个向量,这个向量是收盘价(内容)嵌入和日期(位置)嵌入的和。假设第一个收盘价100.0的内容向量是[0.1, 0.2, 0.3]
,位置向量是[0.01, 0.02, 0.03]
,那么最终的表示向量是[0.11, 0.22, 0.33]
。
然而,在DeBERTa中,每个收盘价会有两个独立的向量,一个是内容向量,一个是位置向量。我们假设如下:
日期 | 收盘价 | 内容向量 | 位置向量 |
---|---|---|---|
2024-06-01 | 100.0 | [0.1, 0.2, 0.3] | [0.01, 0.02, 0.03] |
2024-06-02 | 101.5 | [0.15, 0.25, 0.35] | [0.02, 0.03, 0.04] |
2024-06-03 | 102.0 | [0.2, 0.3, 0.4] | [0.03, 0.04, 0.05] |
2024-06-04 | 103.0 | [0.25, 0.35, 0.45] | [0.04, 0.05, 0.06] |
2024-06-05 | 104.5 | [0.3, 0.4, 0.5] | [0.05, 0.06, 0.07] |
在计算注意力权重时,DeBERTa分别考虑内容和位置。例如,我们计算2024-06-01
的收盘价(100.0)和2024-06-02
的收盘价(101.5)之间的注意力权重:
内容注意力权重:
Attention content = W c ⋅ ( content 2024-06-01 ⋅ content 2024-06-02 ) \text{Attention}_{\text{content}} = W_c \cdot (\text{content}_{\text{2024-06-01}} \cdot \text{content}_{\text{2024-06-02}}) Attentioncontent=Wc⋅(content2024-06-01⋅content2024-06-02)
假设解耦矩阵W_c
是单位矩阵:
Attention content = [ 0.1 ⋅ 0.15 + 0.2 ⋅ 0.25 + 0.3 ⋅ 0.35 ] = [ 0.015 + 0.05 + 0.105 ] = 0.17 \text{Attention}_{\text{content}} = [0.1 \cdot 0.15 + 0.2 \cdot 0.25 + 0.3 \cdot 0.35] = [0.015 + 0.05 + 0.105] = 0.17 Attentioncontent=[0.1⋅0.15+0.2⋅0.25+0.3⋅0.35]=[0.015+0.05+0.105]=0.17
位置注意力权重:
Attention position = W p ⋅ ( position 2024-06-01 ⋅ position 2024-06-02 ) \text{Attention}_{\text{position}} = W_p \cdot (\text{position}_{\text{2024-06-01}} \cdot \text{position}_{\text{2024-06-02}}) Attentionposition=Wp⋅(position2024-06-01⋅position2024-06-02)
假设解耦矩阵W_p
是单位矩阵:
Attention position = [ 0.01 ⋅ 0.02 + 0.02 ⋅ 0.03 + 0.03 ⋅ 0.04 ] = [ 0.0002 + 0.0006 + 0.0012 ] = 0.002 \text{Attention}_{\text{position}} = [0.01 \cdot 0.02 + 0.02 \cdot 0.03 + 0.03 \cdot 0.04] = [0.0002 + 0.0006 + 0.0012] = 0.002 Attentionposition=[0.01⋅0.02+0.02⋅0.03+0.03⋅0.04]=[0.0002+0.0006+0.0012]=0.002
最终的注意力权重:
Attention final = Attention content + Attention position = 0.17 + 0.002 = 0.172 \text{Attention}_{\text{final}} = \text{Attention}_{\text{content}} + \text{Attention}_{\text{position}} = 0.17 + 0.002 = 0.172 Attentionfinal=Attentioncontent+Attentionposition=0.17+0.002=0.172
这个过程表明,DeBERTa通过分别计算内容和位置的注意力权重,并将它们组合起来,使得模型能够更好地捕捉时间序列数据中的复杂依赖关系。位置向量反映了时间上的相对位置,这对于预测未来的价格走势非常重要。通过这种方式,DeBERTa能够更准确地反映时间序列数据中的模式和趋势,提高预测的准确性。