基于ELMo的上下文词向量生成算法
字数 1625 2025-10-28 20:05:13
基于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}]\)(基于第一层输出)。
- 多层组合:将各层表示加权求和为最终向量:
- 对于每个词 \(w_k\),双向LSTM的每一层均提供上下文相关表示:
\[ \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\) 以优化表示。
- 将ELMo向量作为补充特征添加到现有模型:
关键创新
- 动态词向量:同一词在不同上下文中有不同表示。
- 深度双向信息:克服了BERT之前模型仅能浅层结合上下文的限制。
- 字符级编码:通过字符CNN生成词嵌入,增强对拼写错误和生僻词的鲁棒性。