ELMo模型

模型整体架构和实现思路看知乎大佬的总结:

ELMo原理解析及简单上手使用 - 知乎

自己的理解:

ELMo的预训练是训练各层LSTM内部参数,以及各层的输出上下文矩阵的参数值。

ELMo的输出:

以三层ELMo为例,当输入一个文本,并确定一个中心词后,那么在E1~En层会输出一个中心词原来的embedding向量,在第一个LSTM层的前向会输出一个同样维度的向量,在后向也会输出一个同样维度的向量,第二层也一样。例如embedding输出512维向量,那么第一层LSTM就是1024维度的(两个向量拼接),第二层是1024维度。

那么如何使用这些向量呢?

ELMo计算出的最终向量是:vELMo​=γ(s0​⋅h0​+s1​⋅h1​+s2​⋅h2​)

让我们来解析这个公式:

  • h0​,h1​,h2​: 分别对应我们上面得到的第0层(初始嵌入)、第1层(第一个LSTM)、第2层(第二个LSTM)的表示向量。
  • s0​,s1​,s2​: 任务特定的软权重。这些权重是在将ELMo应用到下游任务时,根据任务数据学习出来的
    • 这意味着,对于不同的任务,模型会自动决定哪一层的表示更重要。
    • 例如,一个语法敏感的任务(如句法分析)可能会给第一层LSTM(s1​)更高的权重。
    • 一个语义敏感的任务(如文本蕴含)可能会给第二层LSTM(s2​)更高的权重。
    • 初始词嵌入层(s0​)的权重也可能不为零,它保留了词最原始的信息。
  • γ: 缩放因子。也是一个可学习的参数。因为加权求和后向量的尺度可能会发生变化,γγ 帮助模型调整最终向量的规模。

注意:在原始论文中,为了统一维度以便后续加权求和,有时会对LSTM层的输出(1024维)进行一个线性变换,将其投影到与词嵌入层(512维)相同的维度。但为了理解核心思想,我们可以暂时忽略这个投影,认为它们在概念上是不同的表示。

所以在我们自己的模型中可以训练参数s0​,s1​,s2,γ

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇