自然语言处理-ELMo

一.简介

ELMo是Embeddings from Language Models的缩写,意思就是语言模型得到的(句子)Embedding。另外Elmo是美国儿童教育电视节目芝麻街(Sesame Street)里的小怪兽的名字。原始论文是Deep contextualized word representations,这个标题是很合适的,也就是用深度的Transformer模型来学习上下文相关的词表示。

这篇论文的想法其实非常非常简单,但是取得了非常好的效果。它的思路是用深度的双向RNN(LSTM)在大量未标注数据上训练语言模型,如下图所示。然后在实际的任务中,对于输入的句子,我们使用这个语言模型来对它处理,得到输出的向量,因此这可以看成是一种特征提取。但是和普通的Word2Vec或者GloVe的pretraining不同,ELMo得到的Embedding是有上下文的。比如我们使用Word2Vec也可以得到词”bank”的Embedding,我们可以认为这个Embedding包含了bank的语义。但是bank有很多意思,可以是银行也可以是水边,使用普通的Word2Vec作为Pretraining的Embedding,只能同时把这两种语义都编码进向量里,然后靠后面的模型比如RNN来根据上下文选择合适的语义——比如上下文有money,那么它更可能是银行;而如果上下文是river,那么更可能是水边的意思。但是RNN要学到这种上下文的关系,需要这个任务有大量相关的标注数据,这在很多时候是没有的。而ELMo的特征提取可以看成是上下文相关的,如果输入句子有money,那么它就(或者我们期望)应该能知道bank更可能的语义,从而帮我们选择更加合适的编码。

二.原理

要了解ELMo,首先要熟悉前向 LSTM 语言模型基础,所以下面先着重讲一下前向 LSTM 语言模型基础。

前向 LSTM 语言模型基础。

给定一串长度为N的词条 (t_{1},t_{2},t_{3}......t_{N}) ,前向语言模型通过对给定历史 (t_{1},t_{2},t_{3}......t_{k-1}) 预测t_{k}进行建模,(值得注意的是,下图不是ELMo的最终图,只是解释 LSTM 语言模型的图),对应的公式如图7。

前向lstm的语言模型

到了此处,大家可能会迷惑这个网络的输入输出是什么?具体的流程是什么?这个问题很基础又关键。

以“the cat sat on the mat”这句话为例。在某一个时刻k(对应于1.1节中的t时刻)时,输入为the,输出cat的概率。过程是这里面包含了几步。


第一步:将the转换成word embedding。所谓word embedding就是一个n*1维的列向量,这个很好理解。那单词怎么转成word embedding的呢?如果大家用过Word2Vec,GloVe就知道,就是简单的查表。在本篇paper中,用的不是Word2vec,GloVe,毕竟2018年了。作者用的是cnn-big-lstm[5]生成的word embedding,其实跟Word2Vec等也差不多,就是提前单独训练好的模型,模型喂入单词就能得到单词的word embedding。总之,在这里一步里,就是简单将单词转换成了n*1的列向量。

第二步:将上一时刻的输出/隐状态h_{k-1}及第一步中的word embedding一并送入LSTM,并得到输出及隐状态h_{k}。其中,隐状态h_{k-1}是一个m*1的列向量。在这一步里,LSTM 的输出及隐状态都是 ,是一个m*1维的列向量。

第三步:将 LSTM 的输出h_{k},与上下文矩阵W^{’}相乘,即得到W^{’}h{k}一个列向量,再将该列向量经过softmax归一化。其中,假定数据集有V个单词, W^{’}V*m的矩阵, ℎh_{k}m*1的列向量,于是最终结果是V*1的归一化后向量,即从输入单词得到的针对每个单词的概率。

从上面三步,就可以明白这个前向 LSTM 语言模型的工作流程了。其实很多神经网络语言模型都很类似,除了 LSTM,还可以用 RNN 及前馈神经网络,原理都差不多。

 ELMo 的双向 LSTM 语言模型

ELMo的整体图如下图。相对于前向lstm的语言模型,有两个改进,第一个是使用了多层LSTM,第二个是增加了后向语言模型(backward LM)。

对于多层 LSTM ,每层的输出都是隐向量h_{t} ,在ELMo里,为了区分,前向 LSTM 语言模型的第j层第k时刻的输出向量命名为\vec{h^{LM}_{k,j}}

对于后向语言模型,跟前向语言模型类似,除了它是给定后文来预测前文。后向 LSTM 语言模型的公式如下图所示。类似的,我们设定后向 LSTM 的第j层的第k时刻的输出向量命名为\vec{h^{LM}_{k,j}}

前向、后向 LSTM 语言模型所要学习的目标函数(注意此处是追求概率最大化的,跟通常的目标函数追求最小化有所不同,要是追求最小化,前面加负号即可)得到所要优化的目标:最大化对数前向和后向的似然概率。

图10中的参数说明, \vec{\Theta } _{LSTM}表示前向 LSTM 的网络参数, 另一个表示反向的 LSTM 的网络参数。两个网络里都出现了\Theta _{s}\Theta _{x},表示两个网络共享的参数。其中\Theta _{x}表示映射层的共享,将单词映射为word embedding的共享,就是说同一个单词,映射为同一个word embedding。\Theta _{s}表示上下文矩阵的参数,这个参数在前向和后向 LSTM 中是相同的。

ELMo

所谓ELMo不过是一些网络层的组合。都有哪些网络层呢?对于每个单词(token)t_{k},对于 L层的双向 LSTM 语言模型,一共有 2∗L+1 个表征(representations),如下图所示:

其中, 第0层\vec{h^{LM}_{k,0}} 是前文提到的word embedding,也就是 LSTM 的输入。对于其他层的每一层的双向 LSTM 语言模型

。值得注意的是,每一层有一个前向 LSTM 的输出,一个后向 LSTM 的输出,两者就是简单的拼接起来的。也就是如果分别都是m*1维的列向量,拼完之后就是2(m*1)的列向量,就这么简单。

既然ELMo有这么多向量了,那怎么使用呢?最简单的方法就是使用最顶层的 LSTM 输出作为单词的word embedding,即\vec{h^{LM}_{k,L}} ,但是我们有更好的方法使用这些向量。我们对于每层向量,我们加一个权重s^{task}(一个实数),将每层的向量与权重相乘,然后再乘以一个权重\gamma ^{task}。每层 LSTM 输出,或者每层 LSTM 学到的东西是不一样的,针对每个任务每层的向量重要性也不一样,所以有L层 LSTM,L+1个权重,加上前面的\gamma ^{task} ,一共有L+2个权重。注意下此处的权重个数,后面会用到。对于训练多个任务时,可以用这个\gamma ^{task} ,对于一个单独的任务,就不需要这个参数了。

很明显的是,一个单词的word embedding,最简单的办法是使用最顶层的embedding表示这个单词,也就是\vec{h^{LM}_{k,L}} ;次之是使用每层的这个词对应的embedding输出进行加权,这些权重可以训练。

就是我们所说的ELMo向量了。它是多个输出层及输入层,按照一定权重相乘得到的。这个权重怎么来的?针对具体的nlp任务,我们用的时候,需要再次训练去得到的这个权重。最简单的方法,就是权重都设为一样。

论文的作者有预训练好的 ELMo 模型,映射层(单词到word embedding)使用的Jozefowicz的CNN-BIG-LSTM[5],即输入为512维的列向量。同时LSTM的层数L,最终使用的是2,即L=2。每层的LSTM的单元数是4096。每个LSTM的输出也是512维列向量。每层LSTM(含前、向后向两个)的单元个数是4096个(从1.1节可以知公式4m*2 = 4*512*2 = 4096)。也就是每层的单个lstm的输入是512维,输出也是512维。

一旦模型预训练完成,便可以用于nlp其他任务。在一些领域,可以对biLM(双向 LSTM 语言模型)进行微调,对任务的表现会有所提高,这种可以认为是一种迁移学习(transfer learning)。

三.缺点

前文提了这么多 ELMo 的优点,现在说一说缺点。这些缺点笔者是搬运[6]的观点。[6]的观点是站在现在的时间点上(BERT已发布)看的,他的观点如下:

那么站在现在这个时间节点看,ELMo 有什么值得改进的缺点呢?首先,一个非常明显的缺点在特征抽取器选择方面,ELMo 使用了 LSTM 而不是新贵 Transformer,Transformer 是谷歌在 17 年做机器翻译任务的“Attention is all you need”的论文中提出的,引起了相当大的反响,很多研究已经证明了 Transformer 提取特征的能力是要远强于 LSTM 的。如果 ELMo 采取 Transformer 作为特征提取器,那么估计 Bert 的反响远不如现在的这种火爆场面。另外一点,ELMo 采取双向拼接这种融合特征的能力可能比 Bert 一体化的融合特征方式弱,但是,这只是一种从道理推断产生的怀疑,目前并没有具体实验说明这一点。


参考:https://zhuanlan.zhihu.com/p/51679783

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容