@songying
2019-04-01T17:00:33.000000Z
字数 2516
阅读 2573
语言模型
https://zhuanlan.zhihu.com/p/37684922
本文介绍了一种新的上下文词向量:ELMO(Embeddings from Language Models)
我们的word vectors 是从深度biLM学得的, 从一个大型语料库中训练所得。
语料库: One billion word benchmark for measuring progress in statistical language modeling.
两大问题:
1. complex characteristics of word use
2. how these uses vary across linguistic contexts
我们提出的模型ELMO能够解决以上问题,并且能够轻松的集成到现有模型中并获得state-of-the-art结果。
预训练词向量曾经大行其道(如Word2Vec和Glove),然而这些方法所学得的词向量仅仅表示一种上下文无关的表示。
我们的方法通过采用字符卷积+subword units中受益, 并且我们将 multi-sense 信息融入到下游任务中。
其余最近的方法同样关注于如何获得 context-dependent representations, 如 context2vec。其余方式如 Cove 或 an unsupervised language model, 在MT任务上使用。 这些方法都得益于大规模数据集。 我们的数据集采用 《One billion word benchmark for measuring progress in statistical language modeling》 中的数据集。
之前的工作表明 deep biRNNs 的不同层编码了信息的不同信息。
ELMo word representations are functions of the entire input sentence.
给定N个tokens:, 前向语言模型计算sequence出现的可能性:
反向语言模型类似前向:
biLM将 前向和后向LM连接,并用log来获取语言模型的最大可能性, 从而得到双向模型的公式如下:
ELMO其实是biLM的多层表示的组合, 对于词语,一个L层的双向语言模型biLM能够由2L+1个向量表示:
- : 第j层的第k个位置的前向 LM的输出
- : 第j层的第k个位置的前向 LM的输出
- : 输入的词向量,即最原始的词向量。是通过字符卷积得到的:
ELMO将多层的biLM的输出R整合成一个向量:。 最简单的情况是像TagLM与Cove那样,ELMo仅仅使用最顶层的输出,即 。
更一般化的情况,对于特定任务, 所有biLM层的 权重如下:
- :
- : 是缩放因子,需要学习得出。假如每一个biLM的输出具有不同的分布, 某种程度上来说相当于在weighting前对每一层biLM使用了layer nomalization。
我们有两种方式使用ELMO:
ELMO 采用适当的dropout或通过在loss中加入L2正则() 。