预训练模型之ELMO -《Deep contextualized word representations》论文笔记 + 高频面试题

news/2024/11/7 14:34:07/

😄 无聊学学罢了,非常简单的一个模型吧,算是一个比较经典的模型。ELMO更多的像是一个承上启下的角色,对于我们去了解那些词向量模型的思想也是很有帮助的。但由于同期的BERT等模型过于耀眼,使得大家并不太了解ELMO。

🚀 发表自NAACL-2018,当年的best paper。
🚀 论文链接:https://arxiv.org/pdf/1802.05365.pdf

在这里插入图片描述

🚀 导航

ID内容
NO.11、ELMO解决两个问题
NO.22、何为前向语言模型?
NO.33、何为后向语言模型?
NO.44、双向语言模型
NO.55、ELMO模型
NO.66、如何预训练ELMO?
NO.77、如何冻结 or 微调 ELMO?
NO.88、高频面试题

1、ELMO解决两个问题:

1、复杂的语法和语义特征。
2、解决一词多义的问题 (随上下文而动态改变),不像word2vec那样,训练完就不变了,相同的词同样的输出。

ELMO全称为Embeddings from Language Models。即ELMO通过训练语言模型得到,且ELMO是一个双向语言模型 (前向+后向)。



2、何为前向语言模型?

> 根据前文预测当前token



3、何为后向语言模型?

在这里插入图片描述



4、双向语言模型

在这里插入图片描述



5、ELMO模型

ELMO模型说白了就是两个 两层的LSTM构成。
在这里插入图片描述
ELMO模型=前向语言模型+后向语言模型,上图左边是左到右的前向LSTM,右边是右到左的后向LSTM。前向LSTM和后向LSTM由两层LSTM堆叠而成。之前的双向语言模型仅使用最后一层LSTM的输出作为softmax层的输入,而ELMO引入了一个线性组合函数把所有层的输出结果汇总起来,作为softmax层的输入。

在这里插入图片描述



6、如何预训练ELMO?

⭐ELMO将输出的向量映射到 vocab_size的长度,经过softmax后,取出概率最大的元素对应的下标,作为对下一个字的预测。相当于做一个分类,类别数量是词表大小,即自回归

ELMO的输入输出例子:
在这里插入图片描述
在这里插入图片描述



7、如何冻结 or 微调 ELMO?

在这里插入图片描述

在这里插入图片描述



8、高频面试题

ELMO使用两层LSTM的意义?

答:

  • ELMo堆叠了两层LSTM,每层提取到的语言特征是不一样的。

  • 论文分别用各层的输出做语义消歧和词性标注任务,发现用第二层的输出做语义消歧效果好于用第一层的输出;相反,做词性标注时则用第一层输出比较好。从而验证低层能建模词性等语法特征,高层能进一步建模语义特征。

  • 虽然每层提取的特征侧重不同,但是实际应用时,不管什么任务,用的都是所有的特征,只是权重分配不同。

ELMO的优缺点?

答:
优点:

  • 1、单词的嵌入取决于上下文,解决了一词多义问题。
  • 2、将各层的输出进行线性组合,得到的词表示融合了语法和语义信息。
  • 3、输入可以基于词也可以基于字符,可适应不同NLP任务。
  • 4、无OOV问题,因为embedding是基于char-level的。

缺点:

  • 1、特征提取用的LSTM模型,一方面不能并行,另一方面不好捕捉长距离依赖,所以elmo一般在短文本任务上表现好。
  • 2、难以学到更深层次的语义,因为当LSTM的层数超过了3层,层与层之间的梯度消失情况会变得非常明显,网络训练更新迭代缓慢,收敛效果与计算效率急剧下降,甚至进入局部最小的情况。

ELMO的embedding层?

ELMO是通过字符卷积来得到embedding的,即通过卷积(不同卷积核)来获取char之间的类似n-gram的特征。n个卷积核,就有n个输出,n个输出拼接聚合得到单词的embedding。即完成char到word的转变。
在这里插入图片描述

为什么ELMO用两个单向的LSTM代替一个双向的LSTM呢?

吐槽一下把,网上大多数博客互相抄来抄去,以为自己解释对了,实则连Bi-LSTM都不懂。
这个提问本来就是错的:为什么ELMO用两个单向的LSTM代替一个双向的LSTM呢?。因为ELMO就是用双向LSTM。
答:平时用的BLSTM是将前向输出和后向输出词向量对应进行拼接,拼接后的词向量纬度扩展为原来的两倍,如果用拼接后的词向量来计算最大似然会出现自己看到自己的情况,因此不拼接词前后向向量,而是将他们的最大对数似然进行相加,联合前向和后向来计算最大似然。



http://www.ppmy.cn/news/2147.html

相关文章

Vue--》动态组件和插槽的使用讲解

目录 动态组件 keep-alive使用 keep-alive的include和exclude属性 插槽 动态组件 动态组件指的是动态切换组件的显示与隐藏&#xff0c;vue提供了一个内置的<component>组件&#xff0c;专门用来实现动态组件的渲染。什么意思呢&#xff1f;接着往下看&#xff1a; …

毕业设计 基于stm32的智能平衡小车 - 单片机 物联网嵌入式

文章目录0 前言1 项目背景2 设计思路3 硬件设计4 软件设计4.1 核心PID控制4.2 直立控制程序设计4.3 速度控制程序设计4.4 方向控制程序设计4.5 关键代码5 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点…

JavaScript -- 字符串常用方法及示例代码介绍

文章目录字符串的方法1 length2 索引3 str.at()4 str.charAt()5 str.concat()6 str.includes()7 str.indexOf() 和 str.lastIndexOf()8 str.startsWith() 和 str.endsWith()9 str.padStart() 和 str.padEnd()10 str.replace() 和 str.replaceAll()11 str.slice() 和 str.substr…

NoSQL之Redis配置与优化

目录 一、redis简介 1、redis的优点 2、redis的缺点 3、redis应用场景 4、redis为什么这么快 5、redis与memcached比较 二、关系数据库与非关系型数据 1、关系型数据库 2、非关系型数据库 3、关系型数据库和非关系型数据库区别 三、redis安装部署 四、redis命令工具…

Oracle Database 19c 新特性之 ANY_VALUE 聚合函数

ANY_VALUE 函数是 Oracle 19c 新增的一个聚合函数&#xff0c;可以为分组操作之后的每个组返回一个任意值&#xff0c;可以解决查询字段不属于 GROUP BY 字段的问题。 假如我们想要获取每个部门中的员工数量&#xff0c;可以使用 COUNT 函数和 GROUP BY 子句&#xff08;示例数…

华为机试真题 Python 实现【积木最远距离】【2022.11 Q4 新题】

目录 题目 思路 考点 Code 题目 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的距离,小薇请你帮忙替…

3.20 关于怎样做好小红书直播的一些技巧【玩赚小红书】

一、直播前准备 首先&#xff0c;我们需要知道&#xff0c;与其他直播平台不同&#xff0c;在小红书平台中&#xff0c;直播模块和带货模块是分开的。如果主播想在小红书直播&#xff0c;需要同时申请开通直播权限和带货权限。如果少一个&#xff0c;就不能在小红书平台上带货…

刷爆力扣之最短无序连续子数组

刷爆力扣之最短无序连续子数组 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&…