文献阅读笔记—Deep contextualized word representations

文献阅读笔记—Deep contextualized word representations迁移学习在 nlp 领域的应用之 pretrainlang 四连载 建议按顺序看 看完对该方向一定会非常清楚的 一 ELMO Deepcontextu 二 UniversalLan tuningforTex 三 openAI

迁移学习在nlp领域的应用之pretrain language representation,四连载,建议按顺序看,看完对该方向一定会非常清楚的!

(一)ELMO:Deep contextualized word representations

(二)Universal Language Model Fine-tuning for Text Classification

(三)openAI GPT:Improving Language Understanding by Generative Pre-Training

(四)BERT: Pretraining of Deep Bidirectional Transformers for Language Understanding

1. 问题描述

这是NAACL 2018的最佳论文。本笔记结合原文使用更佳哦。

以前的词向量都是与上下文无关的词向量,比如用word2vec训练的时候,使用单层神经网络,通过几个周围单词预测中心单词,但是这几个周围单词的顺序并不重要,而且生成的词向量只是代表一种统计意义上最大概率上的语义,即生成的词向量与句法、放入某个特定环境的语义等没有太多关联。

本文采用多层、双向LSTM结构,采用上述词向量,subword向量(使用cnn生成character的上下文无关向量)作为输入,输出和上下文有关的词向量,因为LSTM会结合上下文,提取句法特征,并且多层结构更能提取出语义特征,因此生成的词向量引入了句法、语义等要素。并且对多层结构的hidden state做一个线性组合,不同的线性组合可以适用于不同的task。

2. 双向语言模型

训练语料是单语哦!不需要双语哦!因为它和word2vec一样都是在单语上建立语言模型哦!怎么建立呢!类似于最大似然估计!

前向语言模型如下图所示,反向语言模型就是把下图方向反一下即可,相当于两个方向的decoder啦。

文献阅读笔记—Deep contextualized word representations

 目标函数为

文献阅读笔记—Deep contextualized word representations

3. ELMO词向量

L层LSTM,对于每个token来说,前向有L个hidden state,反向有L个hidden state,加上输入语言模型的原始词向量,总共2L+1个向量的线性组合,就是ELMO词向量。有的只采用最上层的hidden state(cove就是)。一般情况就如下式:

文献阅读笔记—Deep contextualized word representations

 \gamma是对生成的ELMO词向量整体放大或者缩小,一方面平衡加权平均形成的ELMO词向量的大小,一方面更适合某个task。

也可以对每一层的LSTM 的hidden state做normalization,类似于batch normalization的作用啦。

4. ELMO词向量于nlp task结合

先用其他大型语料pretrain好ELMO词向量,再用该task的语料fine tuningELMO词向量,然后固定该ELMO词向量的参数,将ELMO词向量 concat 原始词向量后作为task model的输入,在这个过程中不断的学习S_j^{task}这个线性权重参数。部分task中是将ELMO词向量用在输出那部分的,是将ELMO词向量 concat task model最后的hidden state,其实就是作为最后全连接层的输入,也是不断的学习S_j^{task}这个线性权重参数。

在实验中还会对ELMO做了dropout、对线性权重参数做正则化\lambda \left \| \omega \right \|_2^2

5. 实验

本文使用双层LSTM,hidden state是4096维,hidden state到output的全连接为4096*512,两层之间加residual network,character embedding是通过cnn+highway network做的,cnn是2048卷积核,卷积核到output的全连接映射为2048*512。这些网络改编自2016年Jo ́zefowicz的CNN-BIG-LSTM。character embedding可以解决OOV问题。

1. 本文在Question answering、Textual entailment、Semantic role labeling、Coreference resolution、Named entity extraction、Sentiment analysis六个方向都做了实验。

文献阅读笔记—Deep contextualized word representations

可以看到使用ELMO词向量提升很大。 

2. 正则化项,\lambda=1时,因为比较大,对线性权重限制较大,所以线性权重比较均匀,\lambda=0.001时, 因为比较小,对线性权重限制较小,所以线性权重变化比较大,因此线性权重起的作用比较大,因此效果相对好一点。

3. 多层双向LSTM结构,低层更能提取句法特征,高层更能提取出语义特征,可以将LSTM相应层的hidden state直接应用在pos tagging和word sense disambiguation上对比的。

文献阅读笔记—Deep contextualized word representations

4. 训练效率问题,使用ELMO词向量可以少98%epoch就能训练好,对于数据量越少的情况,使用ELMO效果好的越多。 

文献阅读笔记—Deep contextualized word representations

代码  http://allennlp.org/elmo

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222475.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:43
下一篇 2026年3月17日 下午3:43


相关推荐

  • python运维和开发实战-高级篇

    python运维和开发实战-高级篇python运维和开发实战-高级篇python运维和开发实战-高级篇课程链接如下:通过如下链接地址购买课程可享受2.5折优惠哈,时间有限~????https://edu.51cto.co…

    2022年7月14日
    17
  • 反转每对括号间的子串java_栈和队列具有相同的逻辑结构

    反转每对括号间的子串java_栈和队列具有相同的逻辑结构给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“dcba”示例 2:输入:s = “(u(love)i)”输出:“iloveu”示例 3:输入:s = “(ed(et(oc))el)”输出:“leetcode”示例 4:输入:s = “a(bcdefghijkl(mno)p)q”输出:“apmnolkjihgfedcb

    2022年8月11日
    5
  • modprobe命令详解

    modprobe命令详解modprobe 工具可以智能的添加和删除一个模块 之所以说它智能 是因为它能够通过配置的一些预定义的规则解析出模块之间的依赖关系 并且自动加载依赖的模块 modprobe 会从 lib modules uname r 目录中查找要加载的模块以及对应的依赖规则 除了这个目录以外 modprobe 还有一个配置目录 etc modprobe d 这个配置目录中是用户可以自定义的一些 modprobe 行

    2025年6月22日
    7
  • 命令行中使用adb安装apk「建议收藏」

    命令行中使用adb安装apk「建议收藏」在你的android—IDE中找到D:\Softwave_Ghost\技术软件\IDE\adt_android_eclipse\adt-bundle-windows-x86-20130219\sdk\platform-tools目录下有adb.exe  cd到这个目录下然后可以进行adb操作 或者设置环境变量 我的电脑->属性->高级系统设置->环境变量->path编辑将上面那个目录复

    2022年5月10日
    32
  • java.exe 0xc000012d_应用程序无法正常启动0xc000012d,此情况要怎么解决,望大神交一交…

    java.exe 0xc000012d_应用程序无法正常启动0xc000012d,此情况要怎么解决,望大神交一交…应用程序无法正常启动0xc0000142解决方法:1、打开“运行”输入→cmd→回车2、然后把下面这行字符复制到黑色cmd框里面去回车等待dll文件全部注册完成就关闭可以了,为防止输入错误可以复制这条…电脑上出现应用程序正常2113初始化(0xc000142)失败,5261这是由于计算机中的系统进程出错4102导1653致的,具体的修复方法如下:1、首先,在电脑上打开设备管理器:2、然…

    2026年4月14日
    3
  • Docker—大型项目容器化改造

    Docker—大型项目容器化改造虚拟化和容器化是项目云化不可避免的两个问题 虚拟化由于是纯平台操作 一个运行于 linux 操作系统的项目几乎不需要做任何改造就可以支持虚拟化 而项目如果要支持容器化则需要做许多细致的改造工作 容器化相对于虚拟化的优势也相当明显 运行于裸机性能高 秒级启停容器 更不用说开发 测试 布署一致的环境 DevOps 理念 以及上篇提到的微服务的能力 大家还可以找到各种文章来介绍容器化 Dock

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号