自然语言处理---Transformer机制详解之BERT GPT ELMo模型的对比

news/2024/7/6 5:17:08 标签: 自然语言处理, transformer, bert

1 BERT、GPT、ELMo的不同点

  • 关于特征提取器:

    • ELMo采用两部分双层双向LSTM进行特征提取, 然后再进行特征拼接来融合语义信息.
    • GPT和BERT采用Transformer进行特征提取.
    • 很多NLP任务表明Transformer的特征提取能力强于LSTM, 对于ELMo而言, 采用1层静态token embedding + 2层LSTM, 提取特征的能力有限.
  • 单/双向语言模型:

    • 三者之中, 只有GPT采用单向语言模型, 而ELMo和BERT都采用双向语言模型.
    • ELMo虽然被认为采用了双向语言模型, 但实际上是左右两个单向语言模型分别提取特征, 然后进行特征拼接, 这种融合特征的能力比BERT一体化的融合特征方式弱.
    • 三者之中, 只有ELMo没有采用Transformer. GPT和BERT都源于Transformer架构, GPT的单向语言模型采用了经过修改后的Decoder模块, Decoder采用了look-ahead mask, 只能看到context before上文信息, 未来的信息都被mask掉了. 而BERT的双向语言模型采用了Encoder模块, Encoder只采用了padding mask, 可以同时看到context before上文信息, 以及context after下文信息.

bert-gpt-elmo">2 BERT、GPT、ELMo的优缺点

ELMo

  • 优点: * 从早期的Word2Vec预训练模型的最大缺点出发, 进行改进, 这一缺点就是无法解决多义词的问题. * ELMo根据上下文动态调整word embedding, 可以解决多义词的问题.
  • 缺点: * ELMo使用LSTM提取特征的能力弱于Transformer. * ELMo使用向量拼接的方式融合上下文特征的能力弱于Transformer.

GPT

  • 优点: * GPT使用了Transformer提取特征, 使得模型能力大幅提升.
  • 缺点: * GPT只使用了单向Decoder, 无法融合未来的信息.

BERT:

  • 优点: * BERT使用了双向Transformer提取特征, 使得模型能力大幅提升. * 添加了两个预训练任务, MLM + NSP的多任务方式进行模型预训练.
  • 缺点: * 模型过于庞大, 参数量太多, 需要的数据和算力要求过高, 训练好的模型应用场景要求高. * 更适合用于语言嵌入表达, 语言理解方面的任务, 不适合用于生成式的任务.

3 小结

学习了BERT, GPT, ELMo之间的区别:

* 三者所选取的特征提取器不同.

* BERT采用的是Transformer架构中的Encoder模块.

* GPT采用的是Transformer架构中的Decoder模块.

* ELMo采用的双层双向LSTM模块.

  • 三者所采用的语言模型单/双向不同.
    • BERT采用的是最彻底的双向语言模型, 可以同时关注context before和context after.
    • GPT采用的是单向语言模型, 即Transformer中的Decoder, 由于采用了mask机制, 所以未来信息context after都不可见.
    • ELMo表面上被认为是双向语言模型, 但实际上是左右两个单向LSTM模型分别提取特征, 在进行简单的拼接融合.

http://www.niftyadmin.cn/n/5111247.html

相关文章

数据结构数组 Array 手写实现,扩容原理

数组数据结构 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型数据的集合。 数组的特点: 数组是相同数据类型的元素集合(int 不能存放 double)数组中各元素的存储是有先…

sqlmap防御以及文件读写

一.防御 过滤 1.使用过滤函数 $email filter_var($_POST[email], FILTER_VALIDATE_EMAIL); if ($email) { // input is a valid email address } else { // input is not a valid email address 使用 filter_var() 函数和 FILTER_VALIDATE_EMAIL 过滤器来验证用户输…

2023-10-17 LeetCode每日一题(倍数求和)

2023-10-17每日一题 一、题目编号 2652. 倍数求和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个正整数 n ,请你计算在 [1,n] 范围内能被 3、5、7 整除的所有整数之和。 返回一个整数,用于表示给定范围内所有满足约束条件的数…

laravel 中 npm run 同时执行多个命令

在使用laravel 启动项目时 经常需要同时运行两个命令。 1.前端既是 npm run dev 2.后端php则是 php artisan serve 可以安装 使用 concurrently 进行并行启动 concurrently - npm npm install concurrently --save 之后修改 package.json 在 scripts 中增加 (多条…

双指针——快乐数

一, 题目要求 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 …

前端数据可视化之【Echarts下载使用】

目录 🌟下载🌟浏览器引入🌟模块化引入 🌟使用🌟基本使用步骤 🌟绘制一个简单的图表🌟写在最后 🌟下载 🌟浏览器引入 官网下载界面:官方网站 或 Echarts中文…

【LeetCode】144. 二叉树的前序遍历 [ 根结点 左子树 右子树 ]

题目链接 文章目录 Python3方法一: 递归 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二: 迭代 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法三: Morris ⟮ O ( n ) 、 O ( 1 ) ⟯ \lgroup O(n)、O(1) \rgroup ⟮O(n)、O(1)⟯ C…

Excel函数中单元格的引用方式

如下图在D列第一行输入sum(A1:C1); 回车之后结果如下;先要输入等号,然后输入sum,以及左括号,这是调用了sum求和函数; A1表示A列第一行,C1表示C列第一行; A1:C1,中间是冒号…