分类目录:《自然语言处理从入门到应用》总目录
在双向语言模型预训练完成后,模型的编码部分(包括输入表示层以及多层堆叠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向量表示具有以下三个特点:
参考文献:
[1] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[2] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[3] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[4] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[5] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.