基于ELMo的上下文词向量生成算法
字数 1625 2025-10-28 20:05:13

基于ELMo的上下文词向量生成算法

题目描述
ELMo(Embeddings from Language Models)是一种基于深度双向语言模型(BiLM)的上下文词向量生成算法。与传统的静态词向量(如Word2Vec)不同,ELMo生成的词向量会随上下文动态变化。例如,"苹果"在"吃苹果"和"苹果手机"中的向量表示会不同。ELMo通过预训练一个双向LSTM语言模型,提取各层隐藏状态加权组合为词向量,显著提升了多项NLP任务的性能。

解题过程

  1. 双向语言模型(BiLM)预训练
    • 目标:建模单词的概率分布,同时利用左右上下文。
    • 前向语言模型:给定历史词序列 \((w_1, w_2, ..., w_{k-1})\),预测当前词 \(w_k\)

\[ p(w_1, w_2, ..., w_N) = \prod_{k=1}^{N} p(w_k \mid w_1, ..., w_{k-1}) \]

 使用LSTM编码历史信息,输出隐藏状态 $\vec{h}_k$。  
  • 后向语言模型:给定未来词序列 \((w_{k+1}, ..., w_N)\),预测当前词 \(w_k\)

\[ p(w_1, w_2, ..., w_N) = \prod_{k=1}^{N} p(w_k \mid w_{k+1}, ..., w_N) \]

 反向LSTM输出隐藏状态 $\overleftarrow{h}_k$。  
  • 联合训练:最大化前向与后向对数似然之和:

\[ \sum_{k=1}^{N} \left[ \log p(w_k \mid w_1, ..., w_{k-1}; \Theta_x, \vec{\Theta}_{LSTM}) + \log p(w_k \mid w_{k+1}, ..., w_N; \Theta_x, \overleftarrow{\Theta}_{LSTM}) \right] \]

 其中 $\Theta_x$ 为词嵌入参数,$\Theta_{LSTM}$ 为LSTM参数。
  1. ELMo向量生成
    • 对于每个词 \(w_k\),双向LSTM的每一层均提供上下文相关表示:
      • 输入层:词嵌入 \(\mathbf{x}_k\)(对应字符级CNN编码,解决未登录词问题)。
      • 第一层LSTM输出:\([\vec{h}_{k,1}, \overleftarrow{h}_{k,1}]\)
      • 第二层LSTM输出:\([\vec{h}_{k,2}, \overleftarrow{h}_{k,2}]\)(基于第一层输出)。
    • 多层组合:将各层表示加权求和为最终向量:

\[ \mathbf{ELMo}_k = \gamma \sum_{j=0}^{L} s_j \cdot \mathbf{h}_{k,j} \]

 其中:
 - $L$ 为LSTM层数(通常为2),$\mathbf{h}_{k,0}$ 为输入词嵌入,$\mathbf{h}_{k,j} = [\vec{h}_{k,j}; \overleftarrow{h}_{k,j}]$(双向拼接)。  
 - $s_j$ 为Softmax归一化的权重,训练任务中学习得到。  
 - $\gamma$ 为缩放参数,适应下游任务。  
  1. 迁移到下游任务
    • 将ELMo向量作为补充特征添加到现有模型:
      • 例如,在文本分类中,将ELMo向量与静态词向量拼接后输入分类器。
      • 在序列标注任务中,将每个词的ELMo向量与BiLSTM-CRF模型结合。
    • 微调策略:部分任务可调整权重 \(s_j\) 以优化表示。

关键创新

  • 动态词向量:同一词在不同上下文中有不同表示。
  • 深度双向信息:克服了BERT之前模型仅能浅层结合上下文的限制。
  • 字符级编码:通过字符CNN生成词嵌入,增强对拼写错误和生僻词的鲁棒性。
基于ELMo的上下文词向量生成算法 题目描述 ELMo(Embeddings from Language Models)是一种基于深度双向语言模型(BiLM)的上下文词向量生成算法。与传统的静态词向量(如Word2Vec)不同,ELMo生成的词向量会随上下文动态变化。例如,"苹果"在"吃苹果"和"苹果手机"中的向量表示会不同。ELMo通过预训练一个双向LSTM语言模型,提取各层隐藏状态加权组合为词向量,显著提升了多项NLP任务的性能。 解题过程 双向语言模型(BiLM)预训练 目标 :建模单词的概率分布,同时利用左右上下文。 前向语言模型 :给定历史词序列 \((w_ 1, w_ 2, ..., w_ {k-1})\),预测当前词 \(w_ k\): \[ p(w_ 1, w_ 2, ..., w_ N) = \prod_ {k=1}^{N} p(w_ k \mid w_ 1, ..., w_ {k-1}) \] 使用LSTM编码历史信息,输出隐藏状态 \(\vec{h}_ k\)。 后向语言模型 :给定未来词序列 \((w_ {k+1}, ..., w_ N)\),预测当前词 \(w_ k\): \[ p(w_ 1, w_ 2, ..., w_ N) = \prod_ {k=1}^{N} p(w_ k \mid w_ {k+1}, ..., w_ N) \] 反向LSTM输出隐藏状态 \(\overleftarrow{h}_ k\)。 联合训练 :最大化前向与后向对数似然之和: \[ \sum_ {k=1}^{N} \left[ \log p(w_ k \mid w_ 1, ..., w_ {k-1}; \Theta_ x, \vec{\Theta} {LSTM}) + \log p(w_ k \mid w {k+1}, ..., w_ N; \Theta_ x, \overleftarrow{\Theta} {LSTM}) \right ] \] 其中 \(\Theta_ x\) 为词嵌入参数,\(\Theta {LSTM}\) 为LSTM参数。 ELMo向量生成 对于每个词 \(w_ k\),双向LSTM的每一层均提供上下文相关表示: 输入层:词嵌入 \(\mathbf{x}_ k\)(对应字符级CNN编码,解决未登录词问题)。 第一层LSTM输出:\([ \vec{h} {k,1}, \overleftarrow{h} {k,1} ]\)。 第二层LSTM输出:\([ \vec{h} {k,2}, \overleftarrow{h} {k,2} ]\)(基于第一层输出)。 多层组合 :将各层表示加权求和为最终向量: \[ \mathbf{ELMo} k = \gamma \sum {j=0}^{L} s_ j \cdot \mathbf{h}_ {k,j} \] 其中: \(L\) 为LSTM层数(通常为2),\(\mathbf{h} {k,0}\) 为输入词嵌入,\(\mathbf{h} {k,j} = [ \vec{h} {k,j}; \overleftarrow{h} {k,j} ]\)(双向拼接)。 \(s_ j\) 为Softmax归一化的权重,训练任务中学习得到。 \(\gamma\) 为缩放参数,适应下游任务。 迁移到下游任务 将ELMo向量作为补充特征添加到现有模型: 例如,在文本分类中,将ELMo向量与静态词向量拼接后输入分类器。 在序列标注任务中,将每个词的ELMo向量与BiLSTM-CRF模型结合。 微调策略 :部分任务可调整权重 \(s_ j\) 以优化表示。 关键创新 动态词向量 :同一词在不同上下文中有不同表示。 深度双向信息 :克服了BERT之前模型仅能浅层结合上下文的限制。 字符级编码 :通过字符CNN生成词嵌入,增强对拼写错误和生僻词的鲁棒性。