引言

这是2018年NAACL上的Best Paper,即是大名鼎鼎的ELMo,原文地址:https://arxiv.org/pdf/1802.05365.pdf
对比传统Word2Vec这种形式的词向量,本文提出的模型是一种动态模型。在以往的词向量表示中,词都是一种静态的形式,无论在任何的上下文中都使用同一个向量。这种情况下很难表示一词多义的现象,而ELMo则可以通过上下文动态生成词向量,从理论上会是更好的模型,从实测效果来看在很多任务上也都达到了当时的SOTA成绩。

模型

Bidirectional language models

一般的语言模型都是利用前k-1个token来预测第k个token,如下:

而双向语言模型就是添加了另一个方向的预测,利用N~k+1个token来预测第k个token,如下:

目标函数便是上述两者的联合损失,如下:

这里需要注意的是θx\theta_xθx​是token的表示,而θs\theta_sθs​则为softmax参数,后续对此会详细说明。

ELMo

不同于其他类型的模型采用最顶层的输出作为token的表示,Elmo采用多个层的线性加和作为token的表示,对于每个token,在一个LLL层的biLm中可以输出2L+12L+12L+1个表示:

在下游任务中,可以将上述2L+12L+12L+1个表示进行整合,

其中,sjtask=softmax(w)s_j ^{task}=softmax(w)sjtask​=softmax(w),www是一个独立的可训练的参数shape = (num_layers, ),用来加权各个layer的分布,毕竟layer所表示的东西不同。同样的,γγγ也是一个可以训练的常量,用在具体任务中去缩放ELMo的大小,作者在论文中提到简单使用顶层输出作为token的表示,效果比baseline还要差。

Pre-trained bidirectional language model architecture

关于ELMo模型的整体结构及训练,论文中只是简单带过,具体借鉴了以下两篇文章:

Exploring the limits of language modeling
Character-Aware Neural Language Models

总的来说还是按照训练语言模型的方式,使用了CNN-BIG-LSTM结构,和一个层之间的残差链接:

The final model uses L = 2 biLSTM layers with 4096 units and 512
dimension projections and a residual connection from the first to
second layer. The context insensitive type representation uses 2048
character n-gram convolutional filters followed by two highway layers
(Srivastava et al., 2015) and a linear projection down to a 512
representation.

最后的结果是, 整个模型针对一个token, 可以产生三个向量, 原始 , 第一层以及第二层。作者认为低层的bi-LSTM层能提取语料中的句法信息,高层的bi-LSTM能提取语料中的语义信息。

Using biLMs for supervised NLP tasks

ELMo在监督任务中可以先固定权重,然后和预训练的词向量拼接为[xk;ELMoktask][x_k; ELMo^{task}_k][xk​;ELMoktask​]这种形式作为模型的输入;
也可以与RNN的隐藏层拼接,如[hk;ELMoktask][h_k; ELMo^{task}_k][hk​;ELMoktask​]这种形式作为输出进行使用,需要注意这里的ELMo权重应该和输入端的权重不相等。
同时,也可以在ELMo模型中加入dropoutdropoutdropout, 以及采用 L2lossL2 lossL2loss的方法来提升模型。这里的 L2L2L2 项的系数 ​ λ\lambdaλ 越大, 越有取各层平均值的意思, 越小, 越可以发挥各个层之间的不同带来的效果.。但是并不是说, 越小越好。

实验

论文从 Question answering, Textual entailment, Semantic role labeling, Coreference resolution, Named entity extraction, Sentiment analysis 等六个任务的验证中都取得了提升。
具体的验证结果这里就不贴出来了,详细参考原论文。

结论

动态的词向量生成方式,目前来说应该是在词向量这块最好的模型,当然在具体任务中效果还需要评测。但顶层使用基于字符的CNN,在英文这种形态丰富的语言中效果可能会比中文好很多,在中文任务中,顶层的token表示可能采用word级别的输入会更好一些。

引用

1、Deep contextualized word representations

Deep contextualized word representations相关推荐

  1. 论文笔记--Deep contextualized word representations

    论文笔记--Deep contextualized word representations 1. 文章简介 2. 文章概括 3 文章重点技术 3.1 BiLM(Bidirectional Langu ...

  2. Paper:《ELMO:Deep contextualized word representations》翻译与解读

    Paper:<ELMO:Deep contextualized word representations>翻译与解读 目录 <ELMO:Deep contextualized wor ...

  3. 文献阅读 - Deep Contextualized Word Representations

    Deep Contextualized Word Representations M. E. Peters, M. Neumann, M. Iyyer, M. Gardner, et al., Dee ...

  4. ELMo:最好用的词向量(Deep contextualized word representations)论文 pdf

    下载地址:https://u20150046.ctfile.com/fs/20150046-376633397 作者:Matthew E. Peters, Mark Neumann, Mohit Iy ...

  5. ELMo: Deep contextualized word representations

    Abstract 本文介绍一种新型的上下文词表示可以建模: 词的复杂用法特征(例如句法或者语义特征) 在不同的语言上下文中的用法变化(例如多义词) 我们的词向量是学到的深度双向语言模型(biLM)内部 ...

  6. Contextual Word Representations and Pretraining

    一.Word Representations 在2018年之前,我们使用的词向量表征技术主要有三个:Word2Vec.Glove.FastText.但是这三个方法都普遍存在在一些问题,就是无法解决一次 ...

  7. [Embeding-1]Efficient Estimation of Word Representations in Vector Space 译文

    1. abstract 我们提出了两种新的模型结构,用于计算非常大数据集中单词的连续矢量表示.这些表示的质量是在一个词相似性任务中测量的,并将结果与以前基于不同类型神经网络的最佳表现技术进行比较.我们 ...

  8. NLP系列:Word2Vec原始论文:Efficient Estimation of Word Representations in Vector Space

    译者按: 2013年,Google开源了一款用于词向量计算的工具--word2vec,引起了工业界和学术界的关注.首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练:其次,该工 ...

  9. nlp论文——《Efficient Estimation of Word Representations in Vector Space》(向量空间中词表示的有效估计)

    目录 <Efficient Estimation of Word Representations in Vector Space> 第一课时:论文导读 (1)语言模型 (2)词向量简介-- ...

最新文章

  1. Node.js建站笔记-使用react和react-router取代Backbone
  2. G6 图可视化引擎——入门教程——前言
  3. Notepad++ 插件之 TextFX (安装及作用)
  4. Java项目几个月能完成_c#项目转JAVA,第5个月,基本完成
  5. Android学习拾遗
  6. x264 struct学习 1
  7. 使用一次性密码本通过 SSH 安全登录 Linux
  8. zookeeper相关知识与集群搭建
  9. python面向对象——类(上)
  10. 首次启动优美新手指引tip
  11. linux下ssh下载命令,SSH 登录工具常用命令
  12. linux查看udp端口占用命令,详解Linux查看端口占用
  13. bit、Byte、KB、MB、GB互相转换的关系
  14. 【一】机器学习在网络空间安全研究中的应用
  15. 仓库盘点的四大方法和盘点流程
  16. docker搭建FastDFS及遇到的问题解决
  17. android浏览器固定宽度,Android浏览器宽度拉伸到iframe内容宽度,尽管溢出:隐藏...
  18. (二十三)Kotlin简单易学 基础语法-什么是函数式编程
  19. 极品冷幽默,搞笑没得说
  20. python做web后端_最简易的python web框架的后端实现

热门文章

  1. 用java面向对象的内容建立学生姓名,学号,id,班级,每一科的成绩,以及对管理员实现(对老师只实现查看):通过名字查询成绩,通过学号查询成绩,通过id修改姓名,通过姓名修改成绩
  2. 第八届真题-第五题:取数位
  3. 【Cocos开发者大会】触控科技CEO陈昊芝群访实录
  4. Java多线程案例8-2Svip优先办理服务
  5. Maven构建Hadoop工程
  6. Jim Zemlin:Linux在中国的机遇 [2008Linux开发者研讨会演讲]
  7. 一款可以录音示爱的蓝牙音响,这么有心机的告白我给满分丨钛空智慧星球推荐
  8. 蓝桥杯单片机第三届省赛题详细讲解(自动售水机)
  9. maven指定打的jar包的名字
  10. 【docker入门指北】第七篇 Docker镜像讲解