ELMo算法

要讲清楚这个算法我们要从 Word Embedding开始

引出问题:

Word Embedding是任何NLP模型不可或缺的一部分,因为它们赋予词以含义,这一切都始于Word2Vec,它点燃了NLP世界的火花,其次是GloVe。(Word2vec,GloVe在另外的文章单独介绍)

Word2Vec表明,我们可以使用向量(数字列表)正确表示某个单词, 方式是通过捕获语义或含义之间相关的关系。

我们不要进一步研究这些词的嵌入,但重要的是该词的嵌入为词提供了确切的含义。 这是该词嵌入的主要缺点,人类文化博大精深,一个单词的含义会根据上下文而变化,因此,这并不是语言建模的最佳选择。

以下面的句子为例。

The plane took off at exactly nine o’clock.
The plane surface is a must for any cricket pitch.
Plane geometry is fun to study.

我们看到单词平面的含义如何根据上下文而变化。 因此,必须找到一种方法来捕获不断变化的上下文中的单词含义,并保留上下文信息。 因此,情境化的词嵌入出现在图片中。 在以下各节中,我们将介绍语言模型嵌入(ELMo)如何克服传统的词嵌入方法(如Glove和Word2vec)的局限性。

解决方法:

在这里插入图片描述

和之前我们为每个词设定固定的Embedding不同,ELMo算法将每个单词分配给其Embedding之前,先查看整个句子。也就是说相同的句子由于上下文的不同可能获得不同的Embedding。

这里要用到的算法就是LSTM,这个算法的原理在以前的文章介绍过了,这里直接上图:
在这里插入图片描述
它使用在特定任务上经过训练的双向LSTM(双向是为了同时适应上文和下文),从而能够创建上下文词Embedding。

ELMo在迈向更好的语言建模和语言理解方面迈出了重要的一步。经过大量数据集训练后,ELMo LSTM可以用作其他NLP模型中用于语言建模的组件。

ELMo代表语言模型中的Embedding,因此它也具有预测句子中下一个单词的能力,本质上就是语言模型的作用。在大型数据集上进行训练后,该模型也开始使用语言模式。

例如看到诸如“I am going to write with a”之类的短语,那么***Pencil***一词似乎比“Forg”更合理。

ELMo在训练中使用了双向LSTM,因此其语言模型不仅可以理解句子中的下一个单词,还可以理解句子中的上一个单词。它包含一个2层双向LSTM主干。残差连接添加在第一层和第二层之间。残差连接用于允许梯度直接流过网络(在另一篇中介绍了残差),而无需通过非线性激活函数。残差连接有助于深度模型更成功地训练。

ELMo的有趣之处还在于他们在培训后如何使用语言模型。假设我们正在看输入中的第n个单词。使用我们训练有素的2层语言模型,我们采用单词表示xn以及双向隐藏层表示h1,n和h2,n。然后,我们将它们组合为新的加权任务表示形式。外观如下:

在这里插入图片描述

在此,函数F将每个向量与来自语言模型的隐藏表示的权重相乘。

或者换一张图来理解:

也就说,我们的ELMo是基于上下文来判断的,那么上文和下文将分别产生一个Embedding或者是单词的向量,那么我们最后的结果不需要两个,而是要一个总的,我们就通过下面公式,加权的方式,来得到蓝色(当前单词总的)Embedding。
在这里插入图片描述

总结:

ELMo单词表示完全基于字符,这使得网络可以使用形态学线索为训练期间看不到的词汇外标记形成可靠的表示。

与其他单词Embedding不同,它在运行时生成单词向量。

它可以Embedding您输入的任何内容-字符,单词,句子,段落,但它是为记住句子而构建的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值