Transformer、BERT以及GPT系列联系

devtools/2024/10/18 23:36:53/

① Transformer使用自注意力机制进行编码和解码,能够处理长序列数据;
② BERT使用掩码语言模型和下一句预测任务进行训练,能够在不同的自然语言处理任务中取得良好的效果;
③ GPT大模型是一种基于自回归模型的语言模型,能够生成连贯、自然的文本内容。

Transformer是一种新型的神经网络架构,用于处理自然语言任务,比如机器翻译和文本生成。它的特点是能够同时考虑输入序列中所有位置的信息,并且具有非常好的并行化性能。它使用了自注意力机制进行序列建模的神经网络架构,也采用了残差连接和层归一化等技术,以加快模型收敛速度和提高模型的泛化能力。
自注意力机制是一种能够在序列中捕捉每个位置之间相对关系的机制。自注意力机制可以用于学习词之间的依赖关系,从而更好地理解和生成自然语言。

BERT是一种基于Transformer架构的预训练语言模型它使用大量未标记的文本进行预训练,然后使用标记的数 据进行微调。全称Bidirectional Encoder Representations from Transformers。
BERT的特点在于它可以双向地处理输入序列,从而更好地捕捉上下文中的语义信息。BERT模型的输入是两个序列,一个序列作为模型的输入,另一个序列作为模型的输出,模型需要判断这两个序列是否相互关联。这个过程被称为下一句预测任务。此外,BERT还使用了掩码语言模型,其中模型在输入序列中随机地掩盖一些单词,并要求模型预测这些被掩盖的单词。这个训练任务有助于模型更好地理解语言中的上下文信息。

(1)MLM是指在训练的时候随即从输入语料上mask掉一些单词,然后通过的上下文预测该单词,该任务非常像我们在中学时期经常做的完形填空。正如传统的语言模型算法和RNN匹配那样,MLM的这个性质和Transformer的结构是非常匹配的。在BERT的实验中,15%的WordPiece Token会被随机Mask掉。在训练模型时,一个句子会被多次喂到模型中用于参数学习,但是Google并没有在每次都mask掉这些单词,而是在确定要Mask掉的单词之后,做以下处理。

80%的时候会直接替换为[Mask],将句子 “my dog is cute” 转换为句子 “my dog is [Mask]”。
10%的时候将其替换为其它任意单词,将单词 “cute” 替换成另一个随机词,例如 “apple”。将句子 “my dog is cute” 转换为句子 “my dog is apple”。
10%的时候会保留原始Token,例如保持句子为 “my dog is cute” 不变。
这么做的原因是如果句子中的某个Token 100%都会被mask掉,那么在fine-tuning的时候模型就会有一些没有见过的单词。加入随机Token的原因是因为Transformer要保持对每个输入token的分布式表征,否则模型就会记住这个[mask]是token ’cute‘。至于单词带来的负面影响,因为一个单词被随机替换掉的概率只有15%*10% =1.5%,这个负面影响其实是可以忽略不计的。 另外文章指出每次只预测15%的单词,因此模型收敛的比较慢。

(2)Next Sentence Prediction(NSP)的任务是判断句子B是否是句子A的下文。如果是的话输出’IsNext‘,否则输出’NotNext‘。训练数据的生成方式是从平行语料中随机抽取的连续两句话,其中50%保留抽取的两句话,它们符合IsNext关系,另外50%的第二句话是随机从预料中提取的,它们的关系是NotNext的。这个关系保存在图4中的[CLS]符号中。

GPT大模型(全称是Generative Pre-training Transformer)技术是一种使用自回归模型进行语言建模的预训练模型,和Bert一样它也采用了Transformer架构,并使用了大量未标记的文本进行预训练。
GPT的特点在于它能够自动地生成自然语言文本,可以用于文本生成、对话系统等任务。它采用了无监督的预训练方法,不需要人工标注的数据,可以更好地利用现有的大规模文本语料库。它的独特之处在于它具有非常大的参数量和深度,能够学习到更多的语言知识,并生成更加自然的文本。GPT模型的输入是一个文本序列,目标是生成与输入序列相关的下一个单词或单词序列。在GPT中,每个单词的表示都是通过自回归模型计算得到的,这个模型会考虑前面所有的单词,以及它们对应的位置,来预测下一个单词。


11


http://www.ppmy.cn/devtools/126856.html

相关文章

Python进阶知识2

Python类和对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成…

86.#include预处理命令(1)

目录 一.#include预处理命令 二.扩展 三.视频教程 一.#include预处理命令 #include 也是C语言预处理命令的一种。也叫做文件包含命令,用来引入对应的头文件(.h文件)。 如何使用? 举例: 在…

2. 继承Mono的单例模式基类

前提 继承MonoBehaviour的脚本不能new继承MonoBehaviour的脚本一定得依附在GameObject上 实现挂载式的单例模式基类 挂载式 继承Mono的单例模式基类 /// <summary> /// 挂载式 继承Mono的单例模式基类 /// </summary> /// <typeparam name"T">&…

Git教程

Git教程 使用 git 在本地初始化 新建一个目录&#xff0c;用于存放下载下来的项目 进入新建的文件夹&#xff0c;右键选择“Git Bash Here” ​​ 点击之后可以看到下面的界面&#xff0c; git 的基础配置&#xff0c;作用是告诉 git 你是谁&#xff0c;你输入的信息将出现…

信道复用技术

一.概括 二.说明 信道复用技术&#xff1a;“复用”是一种将若干个彼此独立的信号&#xff0c;合并为一个可在同一信道上同时传输的复合信号的方法。比如&#xff0c;传输的语音信号的频谱一般在300~3400Hz内&#xff0c;为了使若干个这种信号能在同一信道上传输&#xff0c;可…

RHCE--at,crontab例行性工作

一&#xff1a;安装at &#xff08;1&#xff09;配置yum仓库&#xff1a;以配置网络源举例&#xff1a; 先在/etc/yum.repos.d/ 目录下创建一个以.repo结尾的文件 vim /etc/yum.repos.d/aliyun.repo 写入可以在阿里云镜像站查找appstream和baseos的地址阿里巴巴开源镜像站…

QML tableView设置role为index的问题

项目中&#xff0c;需要将一个tableview的第一列表示为索引&#xff0c;且索引需从1开始。于是编写代码如下&#xff1a; 下面展示一些 内联代码片。 ListModel {id: com_model;} GE_TableView {id: tableview;height: 510;anchors.top: root.top;anchors.left: root.left;anc…

从头开始的可视化数据 matplotlib:初学者努力绘制数据图

从头开始学习使用 matplotlib 可视化数据&#xff0c;对于初学者来说&#xff0c;可能会有些挑战&#xff0c;但 matplotlib 的核心理念非常清晰&#xff1a;绘制图表需要了解如何设置图形、坐标轴以及如何用数据填充它们。我们可以通过一些简单的例子来逐步介绍基本步骤。 1. …