ELMO语言模型

news2024/11/24 17:05:20
ELMO
    ELMO提出背景:解决一词多义问题。
    模型结构:双层双向的LSTM,字符卷积,第一层lstm表示更多的句法特征,第二层lstm表示更多的语义特征
    从ELMO开始以后学的语言模型都是预训练语言模型。
    预训练模型:
        1.预训练阶段:需要大量数据和高配置(一般都是下载别人训练的模型)
        2.微调阶段
            下游任务:用训练好的模型继续之后的任务
            E=r(S1*E1(词特征)+S2*E2(句特征)+S3*E3(语义特征))
    总结ELMO的优缺点:
        优点:

        1.使用lstm有了隐状态的概念,编码每个词可以根据上下文的信息去编码当前词,
                动态的基于上下文的调整向量,而不在是使用静态固定的向量,解决了一次多义问题
        2.使用了双向多层的LSTM可以提取到不同的,更多的句子或者单词的信息
        3.在多个NLP的任务当中,得到了或多或少的提升
        4.适用面比较广泛,可以用于多个NLP的任务
        缺点:
        1.特征提取方面使用到的是LSTM而不是transformer,transformer的特征提取能力远强于LSTM
        2.这种直接采用拼接的方式,融合双向的信息,并不是最好的方式,目前理论上是这样,但是还没有事实的证明出来这一点。


    双层双向LSTM:
        512维*2=1024维

ELMO:

在2013年提出的word2vec和2014年提出的Glove中,每个词都对应一个确定的固定的vector,这样就无法解决一词多意的问题,ELMO,提出了相应的解决方案,不同以往的方式,不在是每个词对应一个固定的向量,而在ELMO中,预训练好的模型也不再只是单词到向量之间的对应关系,而是训练好一个模型,在使用的时候将一句话或者一段话输入进去,模型会根据上下文的语义信息,来得到某个词的词向量。这样做的好处之一就是可以解决一词多义的问题。

比如能够很好的区分,苹果这个词说的到底是公司还是水果。

先了解一下单向的LSTM语言模型

给定一个字符串长度为N的词条(t1,t2,t3........tN),前向语言模型会根据历史的t1.....tN-1对tN进行建模,如图:

 

那么它的输入和输出是什么,具体的流程又是什么?

以“The cat sat on the mat”这句话为例,在某一个时刻k时,输入为The,输出cat的概率。过程是这里面包含了几步:

  1. 将 The 转换成word embedding:所谓word embedding就是一个n * 1维的列向量,在ELMo中用的是cnn-big-lstm生成的word embedding,其实跟word2vec等也差不多,就是提前单独训练好的模型,模型喂入单词就能得到单词的word embedding。总之,在这第一步里,就是简单将单词转换成了n * 1的列向量,而这个列向量,对应于我们普通LSTM中的输入xt

     

    1. 将上一时刻的隐状态和当前这步的word embedding共同输入到LSTM当中,并得到当前时刻的隐状态的输出ht,其中隐状态是一个m * 1的列向量。
    2. 将LSTM的隐状态乘以w权重矩阵进行输出,即w * ht 得到一个列向量,再将这个向量softmax归一化,其中假定数据集有V个单词,那么这个w就是V * m的矩阵,ht是一个m * 1的一个矩阵,于是就会得到一个V * 1的向量,再把这个向量经过softmax激活函数,归一化,就可以得到每个单词输出的一个概率了。

    从上边的三步就是LSTM的大概流程了,和神经网络语言模型或者RNN语言模型差不多。

    接着来看一下ELMO的结构,它内部是含有两层双向的LSTM,注意:有两个改进:1.增加了多层的LSTM,2.增加了后向的语言模型。

    模型结构:

     

    前向的LSTM负责从前往后提取信息,后向的LSTM负责从后往前提取信息。

    也正是因为在这个模型中是双向的模型,因此代价函数也稍微有所不同,如下图所示:

     

    其中的Θx是映射层的参数,Θlstm是lstm中的参数,Θs是输出层也就是说上边的w的参数,这三个参数在其中都是共享的。同时Θx和Θs在前向和反向中也是共享的。

    ELMO对于每一个token,都会通过L层的biLstm计算出来2L + 1个表示,+1是最初是的embedding。

     

     

    在实际的应用当中就是将R这里边的多个向量压缩成一个单个的向量,就可以得到一个词的向量了,那么如何使用或者得到这个向量呢,最简单的一种方式就是,获取最后一层的隐藏层的输出,但是这样并不是最好的一种方法,而我们最常用的方法就是:

     

    在其中的s是通过softmax获取到的L层向量中,每一层向量的权重值,而r是一个缩放因子,在论文中提到,r的作用比s的作用要大。同时我们也可以将L层中的多个向量进行相加求平均等等的操作,但是实验证明,学习出来的s和r要比其他方式好很多。同时在不同的下游任务当中,不同的s和r也会有很大的影响。

    ELMO的主要思想就是:事先通过语言模型,训练好一个固定的单词的embedding,此时的向量还不具备区分一词多意的能力,但是此时的它已经具备了上下文的信息。这个时候我们再去根据上下文的语义信息去调整这个embedding,自然也就解决了一词多意的问题,所以,

    ELMO本身就是一个根据上下文对embedding动态调整的思路。

    ELMO的使用:

    ELMO 采用了典型的两阶段过程,第一个阶段是利用语言模型进行预训练;第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的 Word Embedding 作为新特征补充到下游任务中。

    第一阶段:预训练,它的网络结构采用了双层双向 LSTM,目前语言模型训练的任务目标是根据单词 wi 的上下文去正确预测单词 wi , wi 之前的单词序列 Context-before 称为上文,之后的单词序列 Context-after 称为下文。图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词外 wi 的上文 Context-before;右端的逆向双层 LSTM 代表反方向编码器,输入的是从右到左的逆序的句子下文 Context-after;每个编码器的深度都是两层 LSTM 叠加。这个网络结构其实在 NLP 中是很常用的

    使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,如果训练好这个网络后,输入一个新句子Snew,句子中每个单词都能得到对应的三个Embedding:最底层是单词的 Word Embedding,往上走是第一层双向LSTM中对应单词位置的 Embedding,这层编码单词的句法信息更多一些;再往上走是第二层LSTM中对应单词位置的 Embedding,这层编码单词的语义信息更多一些。也就是说,ELMO 的预训练过程不仅仅学会单词的 Word Embedding,还学会了一个双层双向的LSTM网络结构,而这两者后面都有用。

    第二阶段:微调,比如我们的下游任务仍然是 QA 问题,此时对于问句 X,我们可以先将句子 X 作为预训练好的 ELMO 网络的输入,这样句子 X 中每个单词在 ELMO 网络中都能获得对应的三个 Embedding,之后给予这三个 Embedding 中的每一个 Embedding 一个权重s,这个权重可以学习得来,根据各自权重累加求和,将三个 Embedding 整合成一个。

    然后将整合后的这个 Embedding 作为 X 句在自己任务的那个网络结构中对应单词的输入,以此作为补充的新特征给下游任务使用。对于上图所示下游任务 QA 中的回答句子 Y 来说也是如此处理。

    因为 ELMO给下游提供的是每个单词的特征形式,所以这一类预训练的方法被称为“Feature-based Pre-Training”。至于为何这么做能够达到区分多义词的效果,你可以想一想,其实比较容易想明白原因。

    总结ELMO的优缺点:

    优点:

    1. 动态的基于上下文的调整向量,而不在是使用静态固定的向量,解决了一次多义问题
    2. 使用了双向多层的LSTM可以提取到不同的,更多的句子或者单词的信息
    3. 在多个NLP的任务当中,得到了或多或少的提升
    4. 适用面比较广泛,可以用于多个NLP的任务

    缺点:

    1. 特征提取方面使用到的是LSTM而不是transformer,transformer的特征提取能力远强于LSTM
    2. 这种直接采用拼接的方式,融合双向的信息,并不是最好的方式,目前理论上是这样,但是还没有事实的证明出来这一点。

    评估:

     

    同时论文中还证明了,正则项λ的值会影响到结果,并且λ为0.001的时候要比λ为1的时候效果要好,因为λ大的时候效果类似于取到L层就直接平均的向量了,而λ小的时候就类似于对层与层之间的权重不会有大的变化,那么也就是说不会影响到每一层中不同的加权值:

     

    论文阅读总结:

    注:在论文中提到,高层的LSTM可以更好的提取到语义信息,而底层的LSTM可以更高的提取到句法的信息,没有哪个好哪个坏,高层的包含语义信息,我们可以做单词消除歧义,但是底层的提取到了更多的句法结构我们可以做词性标注等。

    在3000万的数据集合上进行训练的

    模型结构,512维的向量,4096个单元,两层双向的LSTM等

    微调调整的是r,s值

    ELMo 是一种动态词向量算法,在大型的语料库里训练一个 biLSTM (双向LSTM模型)。下游任务需要获取单词词向量的时候,将整个句子输入 biLSTM,利用 biLSTM 的输出作为单词的词向量,包含了上下文信息。可以理解成,biLSTM 是一个函数,函数的输入是一个句子,输出是句子中单词的词向量。

    ELMO的流程:


    使用词向量:

     


    作者提出了两种使用的方法:

     

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微机-------输入/输出接口(第六章)

目录 输入/输出接口概述输入/输出接口的功能CPU与输入/输出接口之间的信息⭐⭐输入/输出端口的编址方式统一编址独立编址输入/输出接口概述 CPU与外部设备进行信息交换时的困难: ①CPU和外设的速度差异非常大 ②CPU不能和外设直接通过引脚连接 注意: CPU和外设之间必须要设置…

5G LDPC polar 3GPP 定案过程

前言 看到中科大袁老师一段关于3GPP 组织 在 5G LDPC, polar 编解码定案过程,简单分享一下 一 简介 整个方案上百家公司整整争论了一年,最终定下来 其里碑阶段分3段如下: 二 主要争论点 当初主要有两大纠纷: 1: 数字信道 和控制…

基于thinkphp校园二手交易网站#毕业设计

随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 东方二手交易网站设计管理系统网站主要的功能模块包括首页、个人中心、卖家管理、买家信息管理、商品信息管理、订单信息管理、商品分类管理、系统管理…

基于51单片机电子微波炉控制系统(源程序+仿真+原理图+全套资料)

资料编号:203 功能介绍: 该电子微波炉采用51单片机制作,有基本的加热、冷却、启动、停止等功能,并通过MCU 控制其加热、冷却时间,LED 数码管显示时间。程序采用C语言编写,仿真使用Proteus,程序…

Redis的分布式锁问题(十)最强分布式锁工具:Redisson

Redisson的引入 我们先来看看之前的基于setnx实现的分布式锁存在的问题: 我们之前实现的分布式锁是基于redis的setnx命令的特性的! 但是,这样子实现起来会有很多弊端! 不可重入 简单的来说就是一旦setnx [key] [value]后&…

这才是图扑数字孪生污水处理厂该有的样子

近年来,智慧水务、数字水务成为水务行业的热点领域。对于污水处理领域,如何贯彻落实双碳战略,积极推进智慧水厂建设,显得尤为关键。 图扑软件依托自主研发的 HT for Web 产品,并结合视频融合、BIM、5G、物联网、云计算…

matplotlib 中子图subplot 绘图时标题重叠解决办法

引言 使用Python的matplotlib库绘制子图发现标题发生了重叠。 原来的代码: plt.rcParams[font.family][SimHei] datayear_genfor i in range(1,11):plt.subplot(5,2,i)typetype_df.index[:][i-1]setplot_TypeTime(i,data,type)plt.show()上网上寻找解决办法。 按照…

Allegro添加渐近线操作指导

Allegro添加渐近线操作指导 Allegro支持添加渐近线,让线宽变化的地方进行圆环的过渡,对于射频信号优化有很大帮助,类似下图 具体操作如下 首先设置参数,route-Gloss-Parameters 点击Fillet and Taper Trace前面的方框 勾选Allowed DRC, Unused Nets 勾选Tapered Trac…

BLUElegend传奇引擎不使用路由器架设单传奇的办法

使用BLUE LEGEND架设传奇私发服单机的朋友,是不是因为找不到路由器而无法架设单机服务端呢,这里介绍一种方法不需要买路由器来架设。 为什么LEG引擎需要路由器才能架设呢? 网上找了很多教程都得不到答案,有些人说是为了固定ip地址…

[附源码]计算机毕业设计SpringBoot网上鲜花购物系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

leetcode-每日一题-1779-找到最近的有相同 X 或 Y 坐标的点(简单,数学思想)

今天这道每日一题很简单,没啥可说的,细心点即可 1779. 找到最近的有相同 X 或 Y 坐标的点 难度简单73收藏分享切换为英文接收动态反馈 给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。同时,在同一个坐标系下给你一…

基于verdaccio工具搭建npm私服vue组件库

大纲 搭建npm私服的必要性搭建npm私服操作步骤发布私有包的过程 一、搭建npm私服的必要性 下载速度更快便于管理,可以分配权限可以修改第三方包,放入我们得私服可以只在公司局域网中用,不公开 二、搭建npm私服的主要操作 环境准备 确保服…

Google单元测试框架gtest之官方sample笔记4--事件监控之内存泄漏测试

sample 10 使用event listener监控Water类的创建和销毁。在Water类中,有一个静态变量allocated,创建一次值加一,销毁一次值减一。为了实现这个功能,重载了new和delete关键字,然后在new和delete函数中,做all…

Sqoop概述 第1关:Sqoop概述

为了完成本关任务,你需要掌握: 1.Sqoop 概述; 2.Sqoop 基本架构。 Sqoop 概述 设计动机 Sqoop 从工程角度,解决了关系型数据库与 Hadoop 之间的数据传输问题,它构建了两者之间的“桥梁”,使得数据迁移工…

【Linux】ls命令

ls:List Directory Contents,显示目录下内容。 .表示当前目录 …表示上一级目录 .开头文件为隐藏文件 说明: 查看文件大小 ls -asSh ls -al ls -alh fan

门面/外观模式

一、门面模式 1、定义 门面模式(Facade Pattern)又称作外观模式,是指提供一个统一的接口,用来访问子系统中的一群接口,属于结构型设计模式。 门面模式的主要特征是定义了一个高层接口,让子系统更容易使用。…

PHP基于thinkphp的网上图书管理系统#毕业设计

本论文主要论述了如何使用php语言开发一个网上图书管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,将论述网上图书管理系统的当前背景以及系统开发的目的,后续章节将严格按照软…

基于PHP+MySQL协同办公系统的设计与实现

随着全球经济一体化进程的加快和信息技术的飞速发展,Internet技术及其应用给人们的日常生活和工作等各个方面带来了深刻的影响。网络应用技术的不断提高,企业对于相互之间的通讯能力提出了更高的要求。许多企业都具有一定信息化基础,有一定数…

HTML文本溢出处理

有时在做某些需求布局时,需要处理文本溢出时的情况,如果不处理可能会重新重叠的效果,关于设置文本溢出,主要就是多行/单行的处理,代码如下 1.处理单行文本溢出 /* 设置文本溢出时的处理模式 */text-overflow:ellipsis;overflow: hidden;white-space: nowrap; 2.处理多行文本溢出…

视频播放 (三) 视频列表

1. 配置信息 1.1 AndroidManifest.xml 添加网络权限 <uses-permission android:name"android.permission.INTERNET" /> 1.2 使用 Http 明文设置 android:usesCleartextTraffic"true" 1.3 使用竖屏设置 android:screenOrientation"portrait&q…