ELMO模型

概述

        ELMO是在2018年的论文《Deep contextualized word representations》中提出的。ELMo是一种新型深度语境化词表征,可对词进行复杂特征(如句法和语义)和词在语言语境中的变化进行建模(即对多义词进行建模)。我们的词向量是深度双向语言模型(biLM)内部状态的函数,在一个大型文本语料库中预训练而成。说到词向量,我们一定会联想到word2vec,因为在它提出的词向量概念给NLP的发展带来了巨大的提升。而ELMo的主要做法是先训练一个完整的语言模型,再用这个语言模型去处理需要训练的文本,生成相应的词向量,所以在文中一直强调ELMo的模型对同一个字在不同句子中能生成不同的词向量。
        word embedding 是现在自然语言处理中最常用的 word representation 的方法,常用的word embedding 是word2vec的方法,然而word2vec本质上是一个静态模型,也就是说利用word2vec训练完每个词之后,词的表示就固定了,之后使用的时候,无论新句子上下文的信息是什么,这个词的word embedding 都不会跟随上下文的场景发生变化,这种情况对于多义词是非常不友好的。
        ELMO的提出就是为了解决这种语境问题,动态的去更新词的word embedding。ELMO的本质思想是:事先用语言模型在一个大的语料库上学习好词的word embedding,但此时的多义词仍然无法区分,不过没关系,我们接着用我们的训练数据(去除标签)来fine-tuning 预训练好的ELMO 模型。作者将这种称为domain transfer。这样利用我们训练数据的上下文信息就可以获得词在当前语境下的word embedding。

模型结构

        ELMO 基于语言模型的,确切的来说是一个 Bidirectional language models,也是一个 Bidirectional LSTM结构。我们要做的是给定一个含有N个tokens的序列𝑡1,𝑡2,…,𝑡𝑁,其前向表示为:
在这里插入图片描述
反向表示为:
在这里插入图片描述
        从上面的联合概率来看是一个典型的语言模型,前向利用上文来预测下文,后向利用下文来预测上文。假设输入的token是在这里插入图片描述 ,在每一个位置 𝑘 ,每一层LSTM 上都输出相应的context-dependent的表征在这里插入图片描述 。这里𝑗=1,2,…,𝐿,𝐿表示LSTM的层数。顶层的LSTM 输出在这里插入图片描述,通过softmax层来预测下一个 𝑡𝑜𝑘𝑒𝑛𝑘+1。

        对数似然函数表示如下:在这里插入图片描述

        模型的结构图如下:在这里插入图片描述

        ELMO 模型不同于之前的其他模型只用最后一层的输出值来作为word embedding的值,而是用所有层的输出值的线性组合来表示word embedding的值。在这里插入图片描述

        ELMO的使用主要有三步:

        1)在大的语料库上预训练 biLM 模型。模型由两层bi-LSTM 组成,模型之间用residual connection 连接起来。而且作者认为低层的bi-LSTM层能提取语料中的句法信息,高层的bi-LSTM能提取语料中的语义信息。

        2)在我们的训练语料(去除标签),fine-tuning 预训练好的biLM 模型。这一步可以看作是biLM的domain transfer。

        3)利用ELMO 产生的word embedding来作为任务的输入,有时也可以即在输入时加入,也在输出时加入。

        ELMO 在六项任务上取得了the state of the art ,包括问答,情感分析等任务。总的来说,ELMO提供了词级别的动态表示,能有效的捕捉语境信息,解决多义词的问题。

参考链接I
参考链接II