Transformer 模型和 BERT 模型:概述

news2024/11/24 10:24:59

语言模型发展历程Language modeling history

多年来,语言建模一直在不断发展。过去十年的最新突破,包括使用神经网络来表示文本,比如2013年的Word2vec和N元语法,2014年开发的序列到序列模型,如RNN和LSTM帮助提高机器学习模型在NLP任务上的性能,例如翻译和文本分类,2015年注意力机制以及以注意力机制为基础的模型,如Transformer和BERT模型引起了广泛的热议。

Transformer基于2017年发布的一篇论文 《Attention is All You Need》

https://goo.gle/attentionpdf

文本呈现问题Problem of text presentation

尽管在Transformer之前的所有模型都能将单词表示为矢量,但这些矢量不包含上下文,单词的用法会随着上下文而变化。例如,river bank中的bank(河岸),与bankrobber中的bank(银行),两者可能会有相同的失量表示,以上这种情形存在于注意力机制面世之前。

Transformer是一种编码器-解码器模型A transformer is an encoder-decoder model

Transformer是一种使用注意力机制的编码器-解码器模型,它可以利用并行功能的优势,还可以同时处理大量数据,这是由其模型架构的特点决定的。

Transformer模型Transformer model

注意力机制有助于提高机器翻译应用的性能,Transformer模型是以注意力机制为核心而构建的。

Transformer模型由编码器和解码器组成,编码器对输入序列进行编码,再将它传递给解码器,然后解码器对表示形式进行解码,以完成相关的任务。

编码组件是相同数量的一些编码器组成的,以上提到的介绍Transfommer的研究论文中有六个编码器堆叠在一起,六不是一个神奇的数字,而仅仅是一个超参数。

编码器在结构上完全相同,但权重不同。每个编码器可以细分为两个子层,第一层称为自注意力层,编码的输入首先流经自注意力层,该层在对输入句子的中心单词进行编码时,会对单词的相关部分进行编码或查看。第二层称为前馈层,自注意力层的输出被馈送到前馈神经网络,完全相同的前馈神经网络独立应用于每个位置。解码器既有自注意力层,也有前馈层,但在两者之间还有一个编码器/解码器注意力层,用于帮助解码器专注于输入句子的相关部分。

在输入序列中嵌入单词后,每个嵌入矢量都流经编码器的两层,每个位置的单词都经过一个自注意力进程,然后再通过一个前馈神经网络,也就是每个矢量都分别流经的完全相同的网络。自注意力层中的这些路径之间存在依赖关系,但是,前馈层没有这些依赖关系。因此各种路径在流经前馈层时,可以并行执行。

在自注意力层中,输入嵌入被分解为查询矢量、键矢量和值矢量。这些矢量的计算基础是Transformer在训练过程中学习得来的权重。

所有这些计算在模型中以矩阵计算的形式并行发生。

一旦我们有了查询矢量、键矢量和值矢量,下一步就是将每个值矢量乘以softmax分数以准备对它们求和,这样做的目的是保持想要关注的单词的值不变,并通过将不相关的单词乘以很小的数。例如0.001,来降低它们的权重。

接下来我们必须对已经过加权计算的值矢量求和,从而生成自注意力层在该位置的输出。对于第一个单词,你可以将生成的矢量发送到前馈神经网络。

为了总结获得最终嵌入的这个过程,这里列出了我们采取的步骤,我们从自然语句开始嵌入句子中的每个单词

之后,计算多头注意力。图中示例中计算了八次,将嵌入的单词与各自的加权矩阵相乘,然后使用生成的QKV矩阵计算注意力。

最后,我们可以将这些矩阵串联以生成输出矩阵,这个输出矩阵与自注意力层最初得到的最终矩阵具有相同的维度。

预训练Transformer 模型Pre-trained transformer models

现在Transformer有多种变体版本,有些同时使用原始架构中的编码器和解码器组件。有些只使用编码器,而有些只使用解码器。

BERT 模型BERT model

一种流行的仅编码器架构是BERT,BERT是经过训练的Transformer模型之一,BERT代表Bidirectional Encoder Representations from Transformers,由Google于2018年开发。

从那以后,BERT诞生了多个变体版本。今天,BERT为Google搜索提供支持,我们可以看出,对于同一个搜索查询,在有BERT之前和之后的结果是多么地不同。

BERT 概述BERT overview

BERT的训练涉及到两个变体版本,一个模型包含BERT Base,它有12个Transformer,大约有1.1亿个参数,另一个模型包含BERT Large,有24层Transformer,有大约3.4亿个参数。BERT模型之所以强大,是因为它可以处理长输入上下文,它的训练以整个维基百科语料库以及BookCorpus为基础。BERT模型的训练经过了100万步,BERT接受了不同任务的训练,这意味着它具有多任务目标,这就是BERT如此强大的原因,因为它经受了多种任务的训练,它既适用于句子级别,也适用于词元级别。

BERT 版本BERT versions

这是最初发布的BERT的两个不同版本,一个是BERT Base,它有12层,另一个BERT Large则有24层,而原始的Transformer则仅有6层。

掩码语言建模Masked language modeling(MLM)

BERT经受了两种不同任务的训练,任务一称为掩码语言模型,在该任务中,句子被遮盖,模型经过训练来预测被遮盖的单词,如果你要从头开始训练BERT,则必须遮盖语料库中一定比例的单词推荐的遮盖百分比是15%,遮盖百分比要在遮盖太少和过多之间取个平衡值,遮盖太少会使训练过程的成本特别高,而遮盖太多则会失去模型所需的上下文。

下一句预测Next sentence prediction(NSP)

任务二是预测下一个句子,例如,给模型两组句子,BERT的目标是学习句子之间的关系,并根据第一个句子,预测下一个句子。例如,句子A可以是“一个人去了商店”,句子B是“他买了一加仑牛奶”,BERT负责分类判断,句子B是否是句子A之后的下一个句, 这是一个二元分类任务,有助于BERT在句子级别执行任务。

BERT 输入嵌入BERT input embeddings

为了训练BERT,对于输入的句子,你需要给模型提供三种不同的嵌入,嵌入有3种不同的类型,词元嵌入、片段嵌入和定位嵌入,词元嵌入是每个词元在输入语句中的嵌入表示,单词会转换为特定维度的矢量表示,BERT也可以解决。涉及文本分类的NLP任务,一个例子是判断两个句子的语义是否相似,例如“我的狗很可爱”和“他喜欢玩”,输入文本对会简单地串联起来并馈送给模型,BERT如何区分给定的成对文本中的输入?答案是使用片段嵌入。

有一个由SEP表示的特殊词元,用于分隔句子的两个不同分块,另一个问题是学习句子中单词的顺序,BERT由一些Transformer组成,BERT可处理长度达到512的输入序列,输入序列的顺序信息被纳入定位嵌入中,这使得BERT可以学习每个位置的矢量表示。

BERT可用于各种下游任务,尽管BERT接受的是大规模语言建模培训以及单句分类训练,它仍可用于常见NLP任务,例如句对分类、问答以及单句标记任务。

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

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

相关文章

舵机驱动详解(模拟/数字 STM32)

目录 一、介绍 二、模块原理 1.舵机驱动原理 2.引脚描述 三、程序设计 main.c文件 servo.h文件 servo.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 舵机(Servo)是在程序的控制下,在一定范围内连续改变输出轴角度并保持的电机系统。即舵机只支持…

九、3 串口发送+printf函数移植+打印汉字

1、接线图 TX与RX交叉连接,TXD接STM32的PA10,RXD接STM32的PA9 VCC与3.3V用跳线帽连接 2、函数介绍 3、代码部分 (1)发送字节的函数(Byte) 可直接发送十六进制数 如0x41,也可直接发送字符 如A …

通信工程学习:什么是AIOT智能物联网

AIOT:智能物联网 AIOT智能物联网,即Artificial Intelligence of Things(人工智能物联网),是人工智能(AI)与物联网(IoT)技术的深度融合。这一技术通过物联网产生、收集来自…

import torch报错问题:OSError: [WinError 126] 找不到指定的模块。

今天在python中导入import torch时&#xff0c;发生了报错。 import torch File "D:\python\Lib\site-packages\torch\__init__.py", line 148, in <module>raise err OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\python\Lib\site-pac…

一、Python(介绍、环境搭建)

一、介绍 Python 是一种高级编程语言&#xff0c;具有简洁易读的语法、丰富的库和强大的功能。Python是解释型语言&#xff0c;运行代码必须依赖安装好的解释器。Python目前存在两个版本&#xff1a;Python2、Python3&#xff08;主流使用&#xff09; 二、环境搭建 1.安装P…

Midjourney零基础学习

Midjourney学习笔记TOP01 什么是AI艺术 AI艺术指的是使用AI技术创作的艺术作品&#xff0c;包括AI诗歌、AI音乐、AI绘画等多种艺术表现形式&#xff1b;AI艺术可以被视为计算机程序与人类合作创作作品&#xff1b;除了Midjourney&#xff0c;比较流行的AI图像生成工具还有Stab…

停车位识别数据集 图片数量12416张YOLO,xml和txt标签都有; 2类类别:space-empty,space-occupied;

YOLO停车位识别 图片数量12416张&#xff0c;xml和txt标签都有&#xff1b; 2类类别&#xff1a;space-empty&#xff0c;space-occupied&#xff1b; 用于yolo&#xff0c;Python&#xff0c;目标检测&#xff0c;机器学习&#xff0c;人工智能&#xff0c;深度学习&#xff0…

HDLBits中文版,标准参考答案 |3.1.1 Basic Gates | 基本门电路

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 8 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 Wire | 连线 2 GND | 地线 3 NOR | 或非门 4 Another gate | 另外的门电路 5 Two gates | 两个门电路 6 More logic gates | 更多逻辑门电路 7 7420 chip | 7420 芯片 8 …

Crypto虐狗记---”你“和小鱼(外传)

前言&#xff1a;剧情十(我没看见还有一个。。。。) 提示&#xff1a; 下载&#xff1a; 参数有了&#xff0c;直接搞就行。。。 参考&#xff1a; *crypto*练2--攻防世界--easy_ECC - kubopiy - 博客园 (cnblogs.com) 大佬的脚本&#xff1a; 攻防世界 easy_ECC - diakla -…

SpringBoot:让开发更加简单

文章目录 前言什么是 SpringBoot快速启动一个 SpringBoot 项目开发一个登录功能小结 前言 有一天&#xff0c;你脑海中闪现了一个想法&#xff1a;“学了 Java 好像还没怎么使用&#xff0c;今天要不用 Java 开发一个自己的网站&#xff1f;” 你想着不禁激动起来&#xff0c;…

python爬虫案例——处理验证码登录网站(12)

文章目录 前言1、任务目标2、网页分析3、代码编写前言 我们在爬取某些网站数据时,可能会遇到必须登陆才能获取网页内容的情况,而大部分网站登录都需要输入验证码才能登录成功,所以接下来我将会通过实际案例来讲解如何实现验证码登录网站 1、任务目标 目标站点:中文古诗网(…

Codeforces Round 977

这场比赛是晚上vp的&#xff0c;太逆天了自己&#xff0c;给我自己都菜笑了&#xff0c;第二题当时差了一个那个循序渐进的点没想到&#xff0c;关键细节都想到了&#xff0c;当时以为是错的就没写&#xff0c;第二题没做出来确实好久没遇到过了&#xff0c;裂开 话不多说&…

SpringBoot基础(四):bean的多种加载方式

SpringBoot基础系列文章 SpringBoot基础(一)&#xff1a;快速入门 SpringBoot基础(二)&#xff1a;配置文件详解 SpringBoot基础(三)&#xff1a;Logback日志 SpringBoot基础(四)&#xff1a;bean的多种加载方式 目录 一、xml配置文件二、注解定义bean1、使用AnnotationCon…

MySQL之复合查询与内外连接

目录 一、多表查询 二、自连接 三、子查询 四、合并查询 五、表的内连接和外连接 1、内连接 2、外连接 前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;即数据的查询都是在某一时刻对一个表进行操作的。而在实际开发中&#xff0c;我们往往还需要对多个表…

05:(寄存器开发)定时器一

定时器 1、系统定时器SysTick1.1、SysTick中断的使用1.2、使用SysTick制作延迟函数 2、基本定时器2.1、基本定时器中断的使用2.2、使用基本定时器制作延时函数 1、系统定时器SysTick 1.1、SysTick中断的使用 ①SysTcik系统滴答定时器和片上外设定时器不同&#xff0c;它在CPU…

【c语言——指针详解(3)】

文章目录 一、字符指针变量二、数组指针变量1、 数组指针变量是什么&#xff1f;2、 数组指针变量怎么初始化 三、⼆维数组传参的本质四、函数指针变量1、函数指针变量的创建2、函数指针变量的使⽤3、两段有趣的代码1&#xff09;typedef 关键字2&#xff09;typedef和define的…

<<迷雾>> 第8章 学生时代的走马灯(3)--走马灯 示例电路

几个首尾相连的触发器使用同一个控制端&#xff0c;能同时触发 info::操作说明 鼠标单击开关切换开合状态 注: 其中 CP 为按钮开关, 每点击一次, Q 的输出前进一级 注: 第一个触发器的输出端 Q 需要先置入高电平. 如果重置了电路, 可外接电源先使第一个 Q 置入高电平. 另: 因为…

开源跨平台三维模型轻量化软件osgGISPlugins-2、如何编译

上一篇&#xff1a;开源跨平台三维模型轻量化软件osgGISPlugins-1、简介 1、编译前的准备&#xff1a;安装、配置vcpkg包管理器 1&#xff09;安装及国内镜像替换教程(Windows和Linux环境都有):vcpkg国内镜像源替换 2&#xff09;下载第三方依赖库(Readme文档中所给出的百度网…

DBCCompare_TreeView中的同步查找功能实现方案

引言 在应用程序中&#xff0c;数据的可视化和交互性至关重要。TreeView 控件作为一种层级数据展示工具&#xff0c;能够有效地展示复杂的数据结构。本文将重点探讨如何在 TreeView 中实现同步查找功能&#xff0c;使得使用人员在操作一个树形结构时&#xff0c;能够自动更新另…

2-114 基于matlab的CA模型

基于matlab的CA模型&#xff0c;Singer模型对单机动目标进行跟踪算法&#xff0c;具有10页实验文档。采用蒙特卡罗方法对一个二坐标雷达对一平面上运动的目标进行观测&#xff0c;得到跟踪滤波结果。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-114 …