ELMo基本原理和常见问题附带公示和图解

基本原理

ELMO是“Embedding from Language Models”的简称,提出ELMO的论文题目:“Deep contextualized word representation”中deep contextualized这个短语,体现了其精髓所在。在此之前的Word Embedding本质上是个静态的方式,所谓静态指的是训练好之后每个单词的Embedding就固定住了,Word Embedding不会跟着上下文场景的变化而改变。
ELMO本身是个根据当前上下文对Word Embedding动态调整的思路。

两阶段过程:

  • 利用语言模型进行预训练, 语言模型就是给定一个词的上下文去预测下一个词
  • 做downstream任务时从预训练网络中提取对应单词的来自网络各层的word embedding 作为新的补充特征

第一阶段:利用语言模型进行预训练

模型概览
在这里插入图片描述

预训练网络使用双层双向LSTM,其中E1表示单词特征的embedding的来源根据论文原文可以是:via token embeddings or a CNN over characters

语言模型训练的任务目标是根据单词的上下文预测 W i W_i Wi W i W_i Wi之前的单词序列为上文,之后的序列为下文

上图左半部分的LSTm为正向编码器,输入从左到右顺序的 W i W_i Wi的上文;右半部分则为反向编码器,输入从右到左的逆序的 W i W_i Wi的下文;每个编码器由两层LSTM网络构成。

预训练结束后,每当downstream任务中的token需要embedding时,可以从中得到三个embedding:

  • E1 word embedding (如word2vec 或Glove等预训练词向量)
  • E2 包含句法特征的 embedding
  • E3 包含语义特征的 embedding
    通过加深网络层数,可以得到具备更多全局信息的embedding

总结:预训练的产物(1)三个word embedding (2)双层BiLSTM网络

第二阶段:下游任务利用预训练好的embedding

模型概览

在这里插入图片描述

假如我们的下游任务是QA(问答),我们将下游任务的输入句子X输入到预训练好的ELMO中,于是X中的每个单词可以得到3个embedding,由上图红色框内可以看出,三个word embedding通过三个不同的权重组合成每个token的新的embedding,权重可以通过学习得来。然后将整合后的这个Embedding作为X句在下游任务中对应单词的输入,该组合后新的embedding作为补充特征给下游任务使用。

因为ELMO给下游提供的是每个单词的特征形式,所以这一类预训练的方法被称为"Feature-based Pre-Training"。

第一阶段预训练过程

第一阶段实际上就是在训练一个双向语言模型,假设给定一个序列,该序列含有 N N N 个token ( w 1 , w 2 , … , w N ) (w_1, w_2, \dots, w_N) (w1,w2,,wN) ,那么:

  • 前向语言模型通过在给定上文 (Context-before) ( w 1 , w 2 , … , w k − 1 ) (w_1, w_2, \dots, w_{k-1}) (w1,w2,,wk1)的情况下对token W k W_k Wk的概率建模来计算序列出现的概率:
    p ( w 1 , w 2 , … , w N ) = ∏ k = 1 N p ( w k ∣ w 1 , w 2 , … , w k − 1 ) p\left(w_{1}, w_{2}, \ldots, w_{N}\right)=\prod_{k=1}^{N} p\left(w_{k} \mid w_{1}, w_{2}, \ldots, w_{k-1}\right) p(w1,w2,,wN)=k=1Np(wkw1,w2,,wk1)

主流的神经语言模型会先给序列中每个token计算一个上下文无关的embedding表示 x k L M \mathbf{x}_{k}^{L M} xkLM,然后将其传递给L层LSTM。
在前向LSTM的每个位置k,每层会输出一个上下文相关的 h → k , j L M \overrightarrow{\mathbf{h}}_{k, j}^{L M} h k,jLM j = 1 , … , L j=1,\dots,L j=1,,L,在ELMo中 L L L取2。

  • 后向语言模型与前向类似,但是它是“从后往前建模的”,通过在给定下文 (Context-after) ( w k + 1 … , w N ) (w_{k+1}\dots, w_{N}) (wk+1,wN)的情况下对token W k W_k Wk的概率建模来计算序列出现的概率:
    p ( w 1 , w 2 , … , w N ) = ∏ k = 1 N p ( w k ∣ w k + 1 , w k + 2 , … , w N ) p\left(w_{1}, w_{2}, \ldots, w_{N}\right)=\prod_{k=1}^{N} p\left(w_{k} \mid w_{k+1}, w_{k+2}, \ldots, w_{N}\right) p(w1,w2,,wN)=k=1Np(wkwk+1,wk+2,,wN)

类似于前向语言模型,输入上下文无关的embedding表示 x k L M \mathbf{x}_{k}^{L M} xkLM后,每层后向LSTM会输出一个上下文相关的 h ← k , j L M \overleftarrow{\mathbf{h}}_{k, j}^{L M} h k,jLM j = 1 , … , L j=1,\dots,L j=1,,L

输入上下文无关的embedding表示 x k L M \mathbf{x}_{k}^{L M} xkLM是前后向语言模型共享的。

因此,ELMo结合了前后向语言模型,目标是同时最大化前后向语言模型的对数似然:
∑ k = 1 N ( log ⁡ p ( w k ∣ w 1 , … , w k − 1 ; Θ x , Θ ⃗ L S T M , Θ s ) + log ⁡ p ( w k ∣ w k + 1 , … , w N ; Θ x , Θ ← L S T M , Θ s ) ) \begin{aligned} \sum_{k=1}^{N}\left(\log p\left(w_{k} \mid w_{1}, \ldots, w_{k-1} ; \Theta_{x}, \vec{\Theta}_{L S T M}, \Theta_{s}\right)\right.\\ &\left.+\log p\left(w_{k} \mid w_{k+1}, \ldots, w_{N} ; \Theta_{x}, \overleftarrow{\Theta}_{L S T M}, \Theta_{s}\right)\right) \end{aligned} k=1N(logp(wkw1,,wk1;Θx,Θ LSTM,Θs)+logp(wkwk+1,,wN;Θx,Θ LSTM,Θs))

Θ x , Θ s \Theta_{x} ,\Theta_{s} ΘxΘs分别为token表示,softmax分类的参数,为前后向语言模型共享。

Θ ⃗ L S T M , Θ ← L S T M \vec{\Theta}_{L S T M}, \overleftarrow{\Theta}_{L S T M} Θ LSTM,Θ LSTM分别为前后向语言模型LSTM层的参数

第二阶段 应用到下游任务

ELMo训练好的embedding的公式化表示如下所示:
R k = { x k L M , h → k , j L M , h ← k , j L M ∣ j = 1 , … , L } = { h k , j L M ∣ j = 0 , … , L } \begin{aligned} R_{k} &=\left\{\mathbf{x}_{k}^{L M}, \overrightarrow{\mathbf{h}}_{k, j}^{L M}, \overleftarrow{\mathbf{h}}_{k, j}^{L M} \mid j=1, \ldots, L\right\} \\ &=\left\{\mathbf{h}_{k, j}^{L M} \mid j=0, \ldots, L\right\} \end{aligned} Rk={xkLM,h k,jLM,h k,jLMj=1,,L}={hk,jLMj=0,,L}
其中L为LSTM层数。
h k , 0 L M  为token的 embedding表示(即  h k , 0 L M = x k L M ) \left.\mathbf{h}_{k, 0}^{L M} \text { 为token的 embedding表示(即 } \mathbf{h}_{k, 0}^{L M}=\mathbf{x}_{k}^{L M}\right) hk,0LM token embedding表示( hk,0LM=xkLM)
h k , j L M = [ h → k , j L M ; h k , j ] \mathbf{h}_{k, j}^{L M}=\left[\overrightarrow{\mathbf{h}}_{k, j}^{L M} ; \mathbf{h}_{k, j}\right] hk,jLM=[h k,jLM;hk,j]为每个双向LSTM层得到的表示。

具体到下游任务应用表示即简单地进行分配权重然后加权
E L M o k task  = E ( R k ; Θ task  ) = γ task  ∑ j = 0 L s j task  h k , j L M , s j task  = e s j / ∑ i N e s i \mathbf{E L M o}_{k}^{\text {task }}=E\left(R_{k} ; \Theta^{\text {task }}\right)=\gamma^{\text {task }} \sum_{j=0}^{L} s_{j}^{\text {task }} \mathbf{h}_{k, j}^{L M}, \quad s_{j}^{\text {task }}=e^{s_{j}} / \sum_{i}^{N} e^{s_{i}} ELMoktask =E(Rk;Θtask )=γtask j=0Lsjtask hk,jLM,sjtask =esj/iNesi

s task  \quad s^{\text {task }} stask 是经过softmax归一化之后的权重,标量参数 γ task  \gamma^{\text {task }} γtask 是一个超参数,允许任务模型缩放整个ELMo向量,一定程度上能够增强模型的灵活性。

整个为下游任务获取embedding的过程:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

ELMo的优势和为什么work

优点:

  • 集成了两个单向的语言模型组成双向的语言模型
  • 通过预训练可以得到2层的LSTM网络,可以提取训练好的embedding应用于下游任务
  • 由于引入了上下文双向语言模型,ELMo可以区分多义词,每个token不再由一个全局唯一,上下文无关的embedding表示

为什么有效?

ELMo生成的3个embedding既包含原始的全局唯一的token embedding(E1)又包含了通过特定上下文传递而生成的两个embedding(E2和E3),根据不同的下游任务可以动态调整三个embedding的权重,从而可以根据上下文进行多义词的区分。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elmo Studio和Composer是两个与音乐创作和制作相关的实体。 Elmo Studio是一个音乐制作工作室,提供专业的音乐录制、混音和制作服务。工作室设备齐全,包括录音设备、音效处理器和音乐制作软件等,可以满足不同类型音乐创作的需求。Elmo Studio的音乐制作团队由专业工程师、音乐制作人和乐器演奏者组成,他们有丰富的音乐领域经验,可以帮助音乐人将自己的创意和想法转化为高质量的音乐作品。无论是录制唱片、制作音乐片段或者后期混音,Elmo Studio都能提供专业的技术支持和指导,确保音乐作品的最终效果符合创作者的期望和要求。 Composer是一个音乐创作软件,它提供了多种音乐合成和编曲工具,帮助音乐人创作出独特和精美的音乐作品。Composer拥有丰富的声音库和音频效果,可以模拟各种乐器和音乐风格,方便音乐人创作出自己想要的音乐作品。Composer还提供了自动和手动编曲功能,使音乐创作更加简便和高效。无论是作曲家、音乐制作人还是乐手,都可以通过Composer来实现他们的创作理念和音乐构思。 综上所述,Elmo Studio和Composer都是围绕音乐创作和制作而存在的实体。Elmo Studio提供专业的音乐制作服务,帮助音乐人将创意转化为高质量的音乐作品。而Composer则是一个音乐创作软件,提供多种工具和功能,方便音乐人创作出自己想要的音乐作品。两者的结合可以帮助音乐人实现他们的音乐梦想,创作出独特和精美的音乐作品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值