一些NLP代表性模型

news2024/10/21 11:35:42

(一)BERT

Bidirectional Encoder Representations from Transformers的首字母组成,是encoder-only结构类型的代表。

模型分预训练和微调两步,预训练任务有两类:masked language model(MLM)、next sentence prediction(NSP);微调时全部参数都更新

模型结构

输入序列总是以[CLS]这一特殊token开头,其在最后一个隐藏层的向量表示记为C,C是输入序列的整合表示,在分类任务中,C被喂进输出层。两个句子之间以[SEP]这个token分割。

预训练

Task #1: Masked LM

输入序列中15%的token被随机mask,被mask的token的最后隐藏层向量表示链接一个softmax输出层,维度为词典大小,预测被mask的token是什么。

Task #2: Next Sentence Prediction (NSP)

任务1是一个句子内,token粒度的学习,而QA和推断任务都是基于对句子之间关系的理解。所以任务2是为了学习句子之间的关系而设计的。训练数据中句子A和句子B,预测B是否A的下一句。

微调

几类微调任务:下图中a和b是sequence-level任务,c和d是token-level任务

bert、GPT、elmo的区别

(二)BART

Bidirectional and Auto-Regressive Transformers首字母缩写,BART结合双向和自回归Transformer 对模型进行预训练

预训练包括两步:1)使用任意噪声函数破坏文本;2)学习模型来重建原始文本。

BERT难用于生成任务,GPT无法学习双向交互。BART使用双向模型编码被破坏的文本(左),然后使用自回归解码器计算原始文档的似然(右)。至于微调,未被破坏的文档是编码器和解码器的输入,研究者使用来自解码器最终隐藏状态的表征。

架构

BART采用标准的transformer,除了将激活函数从ReLU改为GeLU这一小改动。

base模型encoder和decoder各6层,large模型各12层。

预训练

BART训练是通过破坏原文档,然后优化重构损失——decoder的输出和原文档的交叉熵

噪声变换:

  • token 掩码:按照 BERT 模型,BART 采样随机 token,并用掩码替换它们。
  • token 删除:从输入中随机删除 token。与 token 掩码不同,模型必须确定缺失输入的位置。
  • 文本填充:采样多个文本段,文本段长度取决于泊松分布 (λ = 3)。用单个掩码 token 替换每个文本段。长度为 0 的文本段对应掩码 token 的插入。
  • 句子排列变换:按句号将文档分割成多个句子,然后以随机顺序打乱这些句子。
  • 文档旋转:随机均匀地选择 token,旋转文档使文档从该 token 开始。该任务的目的是训练模型识别文档开头。
模型微调

序列分类任务

序列分类任务中,编码器和解码器的输入相同,最终解码器 token 的最终隐藏状态被输入到新的多类别线性分类器中。该方法与 BERT 中的 CLS token 类似,不过 BART 在解码器最后额外添加了一个 token,这样该 token 的表征可以处理来自完整输入的解码器状态(见图 3a)。

token 分类任务

对于 token 分类任务,例如SQuAD答案提取——起始点判断,将完整文档输入到编码器和解码器中,使用解码器最上方的隐藏状态作为每个单词的表征。该表征的用途是分类 token。

序列生成任务

由于 BART 具备自回归解码器,因此它可以针对序列生成任务进行直接微调,如抽象问答和摘要。在这两项任务中,信息复制自输入但是经过了处理,这与去燥预训练目标紧密相关。这里,编码器的输入是输入序列,解码器以自回归的方式生成输出。

机器翻译

用新的随机初始化编码器替换 BART 的编码器嵌入层。该模型以端到端的方式接受训练,即训练一个新的编码器将外来词映射到输入(BART 可将其去噪为英文)。新的编码器可以使用不同于原始 BART 模型的词汇。

源编码器的训练分两步,均需要将来自 BART 模型输出的交叉熵损失进行反向传播。第一步中,冻结 BART 的大部分参数,仅更新随机初始化的源编码器、BART 位置嵌入和 BART 编码器第一层的自注意力输入投影矩阵。第二步中,将所有模型参数进行少量迭代训练。

(三)T5

Text-to-Text Transfer Transformer

参考文章:https://www.bilibili.com/read/cv22768750/

LLM模型比较全的一个盘点:简单之美 | 大模型(LLMs)盘点跟踪

未完待续

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

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

相关文章

我作为TypeScript开发人员是如何学习Rust的

讲讲我作为TypeScript开发人员学习Rust的经验吧,希望对你有帮助 像许多开发人员一样,我通过专注于网络技术开始了我的编程生涯。我相信这是一个很好的起点,JavaScript,互联网的语言,以及许多,是一个令人难…

Axure原型设计秘籍:解锁高效设计与开发的宝藏工具

​ 在快速迭代的数字时代,原型设计成为了产品开发与用户体验优化的关键环节。Axure,作为一款备受推崇的原型设计工具,凭借其强大的功能、直观的界面和丰富的资源,成为了设计师和产品经理们的得力助手。本文将带你深入探索Axure的原…

JavaScript中的对象,常用内置对象和数据类型

一、对象 1.概念 什么是对象? 在JavaScript中,对象是一组无序的相关属性和方法集合,所有的事物都是对象,例如:字符串、数值、数组和函数等等。 对象是由属性和方法组成的。 属性:事物的特征,在…

使用CSS Flexbox创建简洁时间轴

使用CSS Flexbox创建简洁时间轴 在网页设计中,时间轴是一种常见且有效的方式来展示事件的顺序和进程。本文将介绍如何使用CSS Flexbox创建一个简洁优雅的时间轴,无需复杂的JavaScript代码。 基本HTML结构 首先,我们需要创建基本的HTML结构: html复制<div class"ti…

《CUDA编程》8.共享内存的合理使用

共享内存是 一种可被程序员直接操控的缓存&#xff0c;主要作用有两个&#xff1a; ①减少核函数中对全局内存的访 问次数&#xff0c;实现高效的线程块内部的通信 ②提高全局内存访问的合并度 将通过两个具体的例子阐明共享内存的合理使用&#xff0c;一个数组归约的例子和讨矩…

深入解析“低代码平台”与“零代码平台”:区别与应用场景

随着企业数字化转型的加速&#xff0c;低代码平台与零代码平台作为提升开发效率、降低IT成本的有效工具&#xff0c;正逐渐成为企业软件开发的新趋势。这两种平台虽然都旨在简化应用开发过程&#xff0c;但在功能、适用场景及用户群体上存在着显著差异。 低代码平台&#xff1a…

如何通过Chrome设置保护你的在线隐私

在当今数字时代&#xff0c;保护个人隐私和在线安全变得尤为重要。谷歌浏览器作为全球最受欢迎的网络浏览器之一&#xff0c;提供了多种功能来帮助用户保护自己的在线隐私。本教程将指导你如何通过谷歌浏览器设置来提高你的在线隐私保护水平。&#xff08;本文由https://www.li…

highcharts样式记录

图表设置 const rendChart (min, max) > {Highcharts.setOptions({global: { useUTC: false },});Highcharts.chart(hourly-chart, {chart: {spacingBottom: 0,marginLeft: 53,marginTop: 10,marginBottom: 0,marginRight: 13,style: {fontSize: 0.2rem,color: #363a44,li…

论文笔记 ICLR 2024 MogaNet: Multi-Order Gated Aggregation Network

配图中有2个分支&#xff0c;一个是subtract的输出和缩放因子&#xff08;γs&#xff09;相乘之后的结果&#xff0c;另一个是11卷积输出的结果&#xff0c;这两个分支的输出进行element-wise addition&#xff0c;这两个分支的输出分别代表什么&#xff1f; 为什么”增强局部…

1486. 数组异或操作

1486. 数组异或操作 题目含义&#xff1a;根据整数 n n n 和 s t a r t start start 构造一个数组&#xff0c;数组元素为 n u m s [ i ] 2 i s t a r t , i ∈ [ 0 , n − 1 ] nums[i] 2i start, i \in [0,n-1] nums[i]2istart,i∈[0,n−1]&#xff1b;最后返回这个数组…

电脑 WiFi 上网,开发板和电脑直连,如何才能让开发板也有网络

目录 问题 解决方法 1.设置电脑为WLAN共享模式 2、设置以太网IP 3、设置开发板IP及网关 4、测试 5、开发板重启之后会自动清空 /etc/resolv.conf文件中的内容问题解决 问题 电脑 WiFi 上网&#xff0c;开发板和电脑直连,如何才能让开发板也有网络 解决方法 1.设置电脑…

父子情深!汤姆克鲁斯已经结束英国的奢华生活搬回美国跟儿子团聚

汤姆克鲁斯似乎一直专注于在英国的奢华生活方式。过去五年里&#xff0c;他拍摄了许多电影&#xff0c;还被看到与皇室成员和一线明星一起参加派对。但消息人士称&#xff0c;他可能正在准备搬回美国&#xff0c;以便更接近他的儿子康纳。 在跨过大西洋的五年后&#xff0c;他…

使用electron+vue开发桌面应用

electron是什么 electron由Node.jsChromiumNative APIs构成。你可以理解成&#xff0c;它是一个得到了Node.js和基于不同平台的Native APIs加强的Chromium浏览器&#xff0c;可以用来开发跨平台的桌面级应用。 它的开发主要涉及到两个进程的协作——Main&#xff08;主&#x…

力扣题解(鸡蛋掉落)

887. 鸡蛋掉落 已解答 困难 相关标签 相关企业 给你 k 枚相同的鸡蛋&#xff0c;并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f &#xff0c;满足 0 < f < n &#xff0c;任何从 高于 f 的楼层落下的鸡蛋都会碎&#xff0c;从 f 楼层或比它…

JVM可视化监控

1 JConsole 一、介绍 JConsole 是一种 Java 监控和管理控制台工具&#xff0c;可以用于监视 Java 虚拟机&#xff08;JVM&#xff09;的性能和资源利用情况。它提供了一种图形化界面&#xff0c;可以实时查看 JVM 的运行状态、内存使用情况、线程活动、垃圾回收等信息&#xf…

Spring 实现 3 种异步流式接口,干掉接口超时烦恼

大家好&#xff0c;我是小富&#xff5e; 如何处理比较耗时的接口&#xff1f; 这题我熟&#xff0c;直接上异步接口&#xff0c;使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性&#xff0c;处理结果仅返回单个值。在某…

每日OJ题_牛客_小乐乐改数字_模拟_C++_Java

目录 牛客_小乐乐改数字_模拟 题目解析 C代码 Java代码 牛客_小乐乐改数字_模拟 小乐乐改数字_牛客题霸_牛客网 (nowcoder.com) 描述&#xff1a; 小乐乐喜欢数字&#xff0c;尤其喜欢0和1。他现在得到了一个数&#xff0c;想把每位的数变成0或1。如果某一位是奇数&#…

Python 工具库每日推荐【PyAutoGUI】

文章目录 引言Python桌面自动化库的重要性今日推荐:PyAutoGUI工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:自动化图像识别和点击案例分析高级特性失败安全机制相对坐标操作扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 Python工…

如何远程查看孩子的电脑使用?

越来越多的家庭拥有了多台电脑和智能设备。家长们往往没有办法时刻陪伴在孩子身边&#xff0c;监督他们的上网行为。而远程控制电脑可以帮助家长在任何时间、任何地点对孩子的电脑进行监控和管理&#xff0c;确保他们能够安全、健康地使用互联网。 通过远程控制软件&#xff0c…

锦锐科技CA51F7系列笔记

1、PWM &#xff08;1&#xff09;芯片一共有6个PWM通道&#xff08;PWM0~PWM5&#xff09; &#xff08;2&#xff09;IRCH时钟&#xff08;IRCH 频率为 16MHz&#xff09; &#xff08;3&#xff09;IRCL时钟&#xff08;IRCL频率为100KHz&#xff09; &#xff08;4&…