分类目录:《自然语言处理从入门到应用》总目录
在双向语言模型预训练完成后,模型的编码部分(包括输入表示层以及多层堆叠LSTM)便可以用来计算任意文本的动态词向量表示。最自然的做法是使用两个LSTM的最后一层隐含层输出作为词的动态向量表示。然而,在ELMo模型中,不同层次的隐含层向量蕴含了不同层次或粒度的文本信息。例如,越接近顶层的LSTM隐含层表示通常编码了更多的语义信息,而接近底层的隐含层表示(包括输入表示
x
x
x)更偏重于词法、句法信息。不同的下游任务,对词表示的需求程度有所不同。例如,对于阅读理解、自动问答这类任务,对语义信息的需求较高;而对于命名实体识别等任务,词法、句法信息更重要。因此,ELMo采取对不同层次的向量表示进行加权平均的机制,为不同的下游任务提供更多的组合自由度。令
R
t
R_t
Rt表示
w
t
w_t
wt的所有中间层状态向量表示构成的集合,则:
R
t
=
{
x
t
,
h
t
,
j
∣
j
=
1
,
2
,
⋯
,
L
}
R_t=\{x_t, h_{t, j}|j=1, 2, \cdots, L\}
Rt={xt,ht,j∣j=1,2,⋯,L}
式中,
h
t
,
j
=
[
h
←
t
,
j
,
h
→
t
,
j
]
h_{t, j}=[\overleftarrow{h}_{t, j}, \overrightarrow{h}_{t, j}]
ht,j=[ht,j,ht,j]表示两个多层堆叠LSTM中每一层的前向、后向隐含层输出拼接后得到的向量。令
h
t
,
0
=
x
t
h_{t, 0}=x_t
ht,0=xt,则ELMo词向量可表示为:
ELMo
t
=
f
(
R
t
,
Ψ
)
=
γ
task
∑
j
L
s
j
task
h
t
,
j
\text{ELMo}_t=f(R_t, \Psi)=\gamma^\text{task}\sum_j^Ls^\text{task}_jh_{t, j}
ELMot=f(Rt,Ψ)=γtaskj∑Lsjtaskht,j
式中, Ψ = { s task , γ task } \Psi=\{s^\text{task}, \gamma^\text{task}\} Ψ={stask,γtask}为计算ELMo向量所需的额外参数; s task s^\text{task} stask表示每个向量的权重,反映每一层向量对于目标任务的重要性,可由一组参数根据Softmax函数归一化计算得到,该权重向量可在下游任务的训练过程中学习; γ task \gamma^\text{task} γtask系数同样与下游任务相关,当ELMo向量与其他向量共同作用时,可以适当地缩放ELMo向量。将ELMo向量作为词特征用于下游任务时,编码器的参数将被“冻结”,不参与更新。综上所述,ELMo向量表示具有以下三个特点:
- 动态(上下文相关):词的ELMo向量表示由其当前上下文决定
- 健壮(Robust):ELMo向量表示使用字符级输入,对于未登录词具有强健壮性
- 层次:ELMo词向量由深度预训练模型中各个层次的向量表示进行组合,为下游任务提供了较大的使用自由度。
下图展示了ELMo模型的整体结构:
ELMo的优缺点
ELMo实现了由静态词嵌入到动态词嵌入,由词嵌入到场景词嵌入的转换,较好地解决了一词多义问题。但因ELMo使用Bi-LSTM,仍然属于自动回归问题,所以其并发能力会受到影响,在需要大量语料库作为训练数据的情况,这种局限也直接影响其性能和拓展性。ELMo主要有2个有点:
- 实现从单纯的词嵌入(Word Embedding)到情景词嵌入(Contextualized Word Embedding)的转变
- 实现预训练模型从静态到动态的转变
同时,ELMo也有缺点:ELMo预训练模型的特征提取器使用了双向循环神经网络(如Bi-LSTM),循环神经网络的训练需要按序列从左到右或从右到左,严格限制了并发处理能力。此外,ELMo的每一层会拼接两个方向的向量,所以这种操作实际仍然属于单向学习,无法做到同时向两个方向学习。
参考文献:
[1] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[2] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[3] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[4] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[5] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.