大语言模型系列-ELMo

文章目录

  • 前言
  • 一、ELMo的网络结构和流程
  • 二、ELMo的创新点
  • 总结


前言

在前文大语言模型系列-word2vec已经提到word2vec的缺点:

  • 为每个词汇表中每个分词静态生成一个对应的词向量表示,没有考虑到语境,因此无法无法处理多义词

ps:先训练一个词嵌入模型,生成词向量表示,然后将生成的词向量输入下游任务新的模型中进行具体NLP任务训练,由于下游任务不再需要使用这些词嵌入模型,因此整个过程计算效率方面通常非常低,如Skip-Gram和GloVe。

ELMo对上述缺点进行了改进。


提示:以下是本篇文章正文内容,下面内容可供参考

一、ELMo的网络结构和流程

基于ELMo的NLP任务分为两个阶段:

  1. 第一个阶段是预训练,使用在大规模语料库上训练好的Word Embedding,输入ELMo模型中进行预训练
  2. 第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的词嵌入作为新特征补充到下游任务中

ps:由此可以看出ELMo是一种典型的基于特征融合的预训练模型。

具体的应用流程如下:

  1. 将句子输入ELMo网络中,这样句子中每个单词在ELMo网络中都能获得对应的三个Embedding;
  2. 赋予每个Embedding一个权重(这个权重可以由学习得来),然后通过加权求和将三个Embedding整合为一个;
  3. 将整合后的Embedding作为相应的单词输入,作为新特征给下游任务使用

在这里插入图片描述

二、ELMo的创新点

  1. 采用多层的Bi-LSTM网络以捕捉不同层次的特征
  2. 通过将token与word embedding对应,可以针对不同的上下文生成不同的词向量

ps:ELMO 的本质思想是:事先用语言模型学好一个单词的 Word Embedding,此时多义词无法区分,不过这没关系。在实际使用 Word Embedding 的时候,单词已经具备了特定的上下文了,这个时候我可以根据上下文单词的语义去调整单词的 Word Embedding 表示,这样经过调整后的 Word Embedding 更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。所以 ELMO 本身是个根据当前上下文对 Word Embedding 动态调整的思路。


总结

ELMo是一种动态词向量算法,它最大的特点就是在大型的语料库里训练一个 biLSTM (双向LSTM模型)。下游任务需要获取单词词向量的时候,可以直接将整个句子输入 biLSTM,利用 biLSTM 的输出作为单词的词向量,这样词向量就能包含上下文语义信息。

尽管ELMo考虑了上下文,可以针对不同的上下文生成不同的词向量,以表达不同的语法或语义信息,但其仍存在如下缺陷:

  1. 使用向量拼接方式融合上下文特征,这种方式获取的上下文信息效果不如想象中好。
  2. 特征提取能力弱,训练难且时间长,这也是RNN的本质导致的,极大限制了NLP的应用,直到Transformer出现,NLP迎来爆发式增长。
  3. 预训练模型(仅用于特征抽取)和实际下游任务模型仍是分开的、非端到端的,训练困难

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

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

相关文章

Python Web 开发之 Flask 入门实践

导语:Flask 是一个轻量级的 Python Web 框架,广受开发者喜爱。本文将带领大家了解 Flask 的基本概念、搭建一个简单的 Web 项目以及如何进一步扩展功能。 一、Flask 简介 Flask 是一个基于 Werkzeug 和 Jinja2 的微型 Web 框架,它的特点是轻…

JAVA RPC Thrift基操实现与微服务间调用

一、Thrift 基操实现 1.1 thrift文件 namespace java com.zn.opit.thrift.helloworldservice HelloWorldService {string sayHello(1:string username) }1.2 执行命令生成Java文件 thrift -r --gen java helloworld.thrift生成代码HelloWorldService接口如下 /*** Autogene…

MBR扇区修复和GRUB引导修复实验

修复MBR扇区 步骤一:在进行实验之前我们需要新加一块磁盘,并对新加磁盘进行分区处理,用来备份sda磁盘的MBR及分区表信息。(注:在实验中可以不像我如此这么繁琐,一个主分区,并格式化挂载即可&am…

Android 通过adb命令查看应用流量

一. 获取应用pid号 通过adb shell ps | grep 包名 来获取app的 pid号 二. 查看应用流量情况 使用adb shell cat /proc/#pid#/net/dev 命令 来获取流量数据 备注: Recevice: 表示收包 Transmit: 表示发包 bytes: 表示收发的字节数 packets: 表示收发正确的包量…

【CompletableFuture任务编排】游戏服务器线程模型及其线程之间的交互(以排行榜线程和玩家线程的交互为例子)

需求: 1.我们希望玩家的业务在玩家线程执行,无需回调,因此是多线程处理。 2.匹配线程负责匹配逻辑,是单独一个线程。 3.排行榜线程负责玩家的上榜等。 4.从排行榜线程获取到排行榜列表后,需要给玩家发奖修改玩家数…

【GitHub项目推荐--不错的 C 开源项目】【转载】

大学时接触的第一门语言就是 C语言,虽然距 C语言创立已过了40多年,但其经典性和可移植性任然是当今众多高级语言中不可忽视的,想要学好其他的高级语言,最好是先从掌握 C语言入手。 今天老逛盘点 GitHub 上不错的 C语言 开源项目&…

【代码随想录11】239. 滑动窗口最大值 347. 前 K 个高频元素

目录 239. 滑动窗口最大值题目描述做题思路参考代码 347. 前 K 个高频元素题目描述参考代码 239. 滑动窗口最大值 题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每…

详解C语言中`||`的短路机制

在C语言中,逻辑或运算符(||)是一种常用的逻辑运算符,用于组合多个条件表达式。与其他编程语言一样,C语言中的逻辑或运算符具有短路机制,这是一种非常重要的概念,本文将深入解释C语言中的||短路机…

sportplay项目

1.编写userMapping.xml时报错, Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘easyuser’ W…

MSVS C# Matlab的混合编程系列2 - 构建一个复杂(含多个M文件)的动态库:

前言: 本节我们尝试将一个有很多函数和文件的Matlab算法文件集成到C#的项目里面。 本文缩语: MT = Matlab 问题提出: 1 我们有一个比较复杂的Matlab文件: 这个MATLAB的算法,写了很多的算法函数在其他的M文件里面,这样,前面博客的方法就不够用了。会报错: 解决办法如下…

华为机考入门python3--(0)模拟题2-vowel元音字母翻译

分类:字符串 知识点: 字符串转list,每个字符成为list中的一个元素 list(string) 字符串变大小写 str.upper(), str.lower() 题目来自【华为招聘模拟考试】 # If you need to import additional packages or classes, please import …

分享5款简单实用的软件,值得收藏

​ 电脑上的各类软件有很多,除了那些常见的大众化软件,还有很多不为人知的小众软件,专注于实用功能,简洁干净、功能强悍。 1.自定义图标——TileIconifier ​ TileIconifier 是一款可以自定义 Windows 开始菜单图标的软件&#…

蓝牙运动耳机什么牌子的好?2024年运动无线耳机推荐

​在选择运动耳机时,我们需要综合考虑音质、舒适度以及适应不同运动场景的能力。好的运动耳机能够提高运动效率,增添锻炼的乐趣。今天,我为大家介绍几款在音质、佩戴舒适度、防水防汗等方面表现卓越的运动耳机,助你选购最适合的一…

《GreenPlum系列》GreenPlum初级教程-05GreenPlum语言DDLDMLDQL

文章目录 第五章 DDL&DML&DQL1.DDL(Data Definition Language)数据定义语言1.1 创建数据库1.2 查询数据库1.3 删除数据库1.4 创建表1.5 修改表1.6 清除表1.7 删除表 2.DML(Data Manipulation Language)数据操作语言2.1 数据导入2.2 数据更新和删除2.3 数据导出 3.DQL(D…

04 单链表

目录 链表的概念和结构单链表OJ练习 1. 链表的概念和结构 1.1 链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 1.从上图可以看出链式结构在逻辑上是连续的,物理上不一定连续 2.现…

139 删除链表中的重复元素II

问题描述:存在一个按照升序排列的链表,给你这个链表的头结点head,请你删除链表中所有存在数字重复情况的节点,只保留链表中没有出现的数字,返回的结果同样按升序的结果链表。 求解思路:双指针求解&#xf…

常用的gpt-4 prompt words收集4

1. it poses a certain risk to my work 这对我来说是一个风险点 2. one point to note is that 需要说的一个问题是 3. What is the English phonetic transcription of ‘emoji’? emoji的音标是什么? 4. it would be best if you can insert some proper …

Docker(十)Docker Compose

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! Docker Compose 项目 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式…

Vue diff原理

✨ 专栏介绍 在当今Web开发领域中,构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架,正是为了满足这些需求而诞生。它采用了MVVM架构模式,并通过数据驱动和组件化的方式,使…

NIO和netty的常用类

Netty的NIO的常用概念 ServerBootstrap ServerBootstrap 是一个用于帮助配置和启动服务器的类。它是Netty中用于创建服务器端应用程序的主要入口点 Channel 在计算机网络编程中,Channel(通道) 是一种抽象概念,代表着数据在源和…