ElMo模型

前言

说起Elmo模型,我们要从自然语言理解(NLU)说起,如果我们想通过计算机来处理自然语言(音频,文字等),首先我们需要将自然语言转换成计算机可以处理的形式,NLU就是量化自然语言。我们直接这里针对文字这种语言形式,以量化的方式表示一个单词的方式。

one-hot Representation

如果只有一句话,“我 喜欢 自然 语言”’,我们可以用one-hot Representiation的方式:
我:[1,0,0,0]
喜欢:[0,1,0,0]
自然:[0,0,1,0]
语言:[0,0,0,1]

这是我们最初量化文字的方式,虽然很简单,但很有意义。随着技术的发展,这种方式已经不能满足人们的需求,它自身具有一些不足:

  • 不能衡量两个单词之间的语义相似度,任意两个词之间都是一样的关系。
  • 如果我们的文本很多,单词数量就很多,耗费的空间成本也就非常大,而且每个词的表示都是稀疏的
  • 试想一下,如果我们想在原基础的情况下新加一些单词,是不是之前的表示要重新计算,之前的模型要重新训练。

Distributed Representiation

Word2Vec词向量的出现,我觉得是推动NLP发展的很大一个突破,具有很多one-hot Representation不具备的优点:

  • 词之间存在“距离”概念,可以反映词之间存在相似关系。
  • 词向量能够包含更多信息,并且每一维都有特定的含义。
  • 增删词典的单词不会影响其他词的表达。

注:
可以使用sklearn中封装的T-SNE(降维算法)方法对词向量可视化(二维) 。

词向量的其他方式:

CBOW、SKIP-GRAM、NNLM、GLOVE、MF、ELMO、LDA和BERT等。这里我们着重介绍下Elmo.

Elmo

Elmo的核心思想:使用两层BiLSTM模型来学习文本深度学习层次表示,最后针对每个单词输出三个向量,针对与下游任务可以使用加权的方式来表征文本,一定程度上解决了一词多义的问题。

Elmo结构图:

在这里插入图片描述

图片来自:论文<Improving a Sentiment Analyzer using ELMo — Word Embeddings on Steroids>

  1. 输入是word embedding的过程, 可以用wrod2vec的不同方法来得到。文中使用的character level的CNN。
  2. 然后连接两个biLSTM 去encode 输入(同时也有残差连接), 每一层LSTM得到的输出(隐状态) 作为每个词的上下文相关的word vectors.
  3. 最后,针对不同的任务,不同层的向量做不同的权重加和来获取最终的词向量。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值