语言模型-预训练模型(三)

news2024/9/24 17:09:54

预训练-BERT

  • 传统方法与预训练方法的比较
  • 预训练方式 --BERT
    • 训练任务
    • 模型结构
      • BERT结构-Embedding
      • BERT结构-Encoder
      • BERT结构-self-attention

传统方法与预训练方法的比较

在这里插入图片描述
思想解读: 预训练的概念就和我们人读书和工作一样;先是通过基础教育到大学毕业,学习了通用的基础知识,这个做大多数工作,我们都能够快速学习和上手。模型预训练同样如此;避免了每一个下游任务都从零开始训练模型

由于语言模型不需要特别的标注数据,所以非常适合做预训练的目标。

预训练方式 --BERT

Mask Language Model (MLM)

训练任务

1.完型填空
Bidirectional Language Model
a.依照一定概率,用[mask]掩盖文本中的某个字或词

在这里插入图片描述

b.通过遮住词两侧的内容,去预测被遮住的词

2.句子关系预测
Next Sentence Prediction
[CLS] 师徒四人历经艰险[SEP] 取得真经[SEP] -> True
[CLS] 师徒四人历经艰险[SEP] 火烧赤壁[SEP] -> False

释义: 通过上下两句话,去训练模型去判断是否为上下句子关系,即一个二分类任务。但是目前大家普遍不太使用该训练任务,因为这个规律模型比较容易学习到。

模型结构

BERT主要包含两个部分,第一部分是embedding层,以及在embedding层后面的网络结构。

与word2vec对比
区别:word2vec是静态的,而BERT是动态的;在相同的文本输入后,word2vec输出的向量是固定的,BERT通过embedding后,还需进行后续网络层的计算,那么就能抓住输入的字与字、词与词;即token之间的关系。并能够进行计算输出。

BERT结构-Embedding

释义图:
在这里插入图片描述
释义:

1.Token Embeddings就是传统的embedding;即将词或字转为对应的向量。所以它的大小:Word-list _Size * Vector_size 即词表大小和向量空间的大小
2.Segment Embeddings是由于训练任务中,需要区别两句话,前面我们说需要区分两句话是否为上下句;这里用两个向量就能够去标记是两句话,所以大小为:2 * Vector_size
3.Position Embeddings是对输入的数据进行位置标记,在初始版的BERT中,一条数据最多有512长度,即标记的向量最多512个;所以该层大小为:512 * Vector_size
4.加入 [CLS] [SEP] 来标记文本起始位置
5.上面3层embedding相加,就是整个embedding的结果;其大小为:World_Lenth(<=Position_Size) * Vector_Size
6.加和后会做Layer Normalization

BERT结构-Encoder

介绍: BERT的模型主体结构使用Google自己在17年提出的Transformer结构。

如下图:
在这里插入图片描述

详细释义:

1.embedding后得到输入X;这里的X1、X2可以理解为将输入复制了多份进入到自注意力模块训练
2.自注意力计算完后,需要经过一个线下层;才会进入下一个模块
3.Add & Normailize 是残差计算,这里会将自注意力计算后的结果加上输入注意力计算前的值;再过一个归一化层;这里加上原有值,即残差计算的目的:是为了使得模型搭的更深;因为self-attention会捕捉一些规律,但是也会遗失其他的信息;加上一个计算前的值(可以是前一层、也可以是前几层的值)就可以保留
4.前馈网络Feed Forward就是经过两个线性层;和一个激活层注意点 在基础的BERT中,进入前馈网络的结构为:World_Length* Vector_Size;这里的两个线性层分别为:Vector_Size * 4Vector_Size;和 4Vector_Size * Vector_Size;所以第二个线性层计算后,输出仍然为:World_Length* Vector_Size。
5.最后再次经过一个残差计算,残差计算经过一个线性层计算后,就完成了一个基础的transformer结构

BERT结构-self-attention

示意图:在这里插入图片描述
其中Z的计算公式:
在这里插入图片描述
释义:
1.我们先来梳理矩阵计算的情况

a.图中,x就是我们Embedding输入,是World_Length* Vector_Size
b.我们把x拆成3份,分别于紫色、黄色、蓝色的线下层想乘(Q、K、V);我们最后计算的结果,对矩阵的形状是不变的;所以输出的形状需要为:World_Length* Vector_Size;那么线下层的形状就是:Vector_Size * Vector_Size
c.公式中,Q、K进行相乘;那么K需要进行转置,即K左上角T的含义;转置后,K的矩阵形状:Vector_Size * World_Length;所以Q、K相乘的结果为:World_Length * World_Length
d.Q、K相乘后,进行一些列操作,不影响矩阵的形状,继续与V相乘,结果Z的形状就是:World_Length* Vector_Size;即和输入的形状一致

2.Q*K.T和softmax的理解
Q*K.T即:World_Length * World_Length;这个World_Length就是我们输入的文本长度。
所以我们展开可有下面示意图
在这里插入图片描述
注意: 矩阵中的数据,是不是就代表着,这个词与该句子中其他词的关系紧密程度呢。所以这行数据,就是这个字对这句话的注意力。
softmax作用: 就是归一化操作,即将字与句子中其他词的关系程度之和,归一化到1的区间中来。

3.根号下dk的理解
我们在前面说,Q、K、V是通过输入x和对应的线下层相乘得到的;其形状为:World_Length* Vector_Size;
重点关注
1.在进行后续Q、K.T相乘 和乘V的步骤之间,是对Q K V进行拆分的;
2.比如:基础版本BERT的Vector_size为768;这里拆分成12部分,即多头数量为12,;那么每一个Q的形状:World_Length * 64
3.上面拆分后,V也会同样拆分,分别进行计算,最后合并在一起得到:World_Length* Vector_Size
4.最后合并的矩阵再进行 除于根号dk;再归一化的操作:

示意图:

在这里插入图片描述

注意、总结: 在多个Q * K.T中,不管Q、K的Vector_Size 拆分成多少份,即有多少个多头计算;但是在这里计算的结果都是:World_Length * World_Length ;我们上面说了,就是词与句子中其他词的关系紧密程度。

注意核心理解比喻: 这里的多头,造成有多个World_Length * World_Length的结果,其实就是模型在不同维度,去找句子中词与词之间的关系。多头1找的是名称关系紧密程度、多头2找的是动词的关系紧密程度…

dk的值: 在基础版本的BERT中,dk是64,这个值是词向量维度:768与多头数量12的商。
dk作用: 因为softmax是将多个值的和归一化为1;根据softmax的函数特性,会出现在进行归一化的数中,有的比较大,归一化后就接近1;而小的数,就接近零了;这样对于模型的计算不好,这种接近零的值要尽量避免;所以先除于dk;使得值的差距被缩放;再进行归一化。

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

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

相关文章

Gradio之文字输入输出

Gradio 是一个简单直观的交互界面的SDK组件。 在python 环境中安装使用pip install gradio 然后运行以下代码&#xff0c;就能在浏览器中展示 # 输入name字符串&#xff0c;输出Hello {name}!字符串 def greet(name):return "Hello " name "!"demo gr.I…

Python统计单词列表

文章目录 需求分析demo 需求 给定一组字符串words和每行能显示的最大字符数max_length&#xff0c;计算需要多少行才能完整显示所有的单词。 分析 思路很简单&#xff0c;从给定的字符串中按空格分割单词列表&#xff0c;计算一行能显示的单词数&#xff0c;将其添加到list中…

全国产飞腾D2000/8 ITX主板+银河麒麟Kylin/UOS 操作系统,应用于工业一体机, 工业平板、加固IPAD

ITX-F601一体机主板产品规格书 产品概述 ITX-F601是一款高性能一体机主板&#xff0c;基于国产飞腾处理器D2000/8 核处理器设计研发&#xff0c;低海岸线IO 设计&#xff0c;可用于工业一体机、工业平板等&#xff0c;合理摆放CPU&#xff0c;MINI-PCIE&#xff0c;M.2 槽位&…

UKP3D9.3版本导出报表文件

UKP3D9.3&#xff08;8.4&#xff09;号安装包&#xff0c;支持输出节点属性的文本报表。这个功能的实用性很强&#xff0c;适用于批量修改数据。 命令&#xff1a;TXTREPORT

百元护眼台灯有什么推荐?松下、飞利浦、书客看哪个更胜一筹

当前&#xff0c;近视问题在人群中的蔓延趋势愈发显著&#xff0c;几乎成为一种普遍现象。据最新出炉的2024年度统计数据显示&#xff0c;我国儿童及青少年群体的近视率已飙升至触目惊心的52.7%&#xff0c;这一数字不仅凸显了近视问题的严峻态势&#xff0c;更在社会上激起了广…

Java常见面试题-06-web

文章目录 TCP 与 UDP 区别&#xff1f;什么是 HTTP 协议&#xff1f;TCP 的三次握手HTTP 中重定向和请求转发的区别&#xff1f;Get 和 Post 的区别&#xff1f;cookie 和 session 的区别&#xff1f;介绍一下Ajax以及其优势axios 是什么&#xff1f;怎样使用它&#xff1f;怎么…

ICMP(Ping)功能原理及其C++实现简介

ICMP(Ping)功能原理及其应用简介 一、 Ping功能简介 1、 原始套接字(Raw Socket) 原始套接字&#xff08;‌Raw Socket&#xff09;‌是一种特殊的网络编程接口&#xff0c;‌它允许直接接收和发送网络层的数据包&#xff0c;‌而不是通过传输层。‌这种套接字可以接收本机网…

推荐 3个实用且完全免费的在线工具,每天都会用到,无需登录打开即用

100font 100font是一个专业的免费商用字体下载网站&#xff0c;专注于收集、整理和分享各种免费无版权的商用字体。用户可以在这个平台上找到并下载简体中文、繁体中文、英文、日文、韩文等多种语言类型的字体。 该网站的特点包括清晰的分类和直观的下载流程&#xff0c;用户可…

金字塔原理帮助你理清思路,提升职场表达力

金字塔原理帮助你理清思路 1分钟理清思路&#xff0c;提升职场表达力 金字塔原理概述 原则 解释 模型 结论先行 中心思想和结论只有一个&#xff0c;放在最前面 SCQA模型 以上统下 任一层的思想必须是下一层次思想的概括 演绎推理 归纳推理 归类分组 每组中的思想必…

【Linux网络】其他协议和技术:DNS、ICMP、NAT

本篇博客补充了 TCP/IP 分层模型中&#xff0c;应用层的 DNS 协议、网络层的 ICMP 协议、网络层的 NAT 技术&#xff0c;旨在让读者更加深入理解网络协议栈的设计和网络编程。 目录 一、DNS 协议 1&#xff09;技术背景 2&#xff09;域名与域名解析 二、ICMP 协议 1&…

Webstorm的下载与安装

Webstorm的下载 1 在浏览器的地址栏输入https://www.jetbrains.com/webstorm/&#xff0c;进入主页面 2 点击右上角的Download按钮&#xff0c;进入下载页面&#xff0c;如图所示 Webstorm的安装 按步骤逐步安装即可

tomcat文件上传漏洞练习

1、靶场账号注册 vulfocus 注册后邮箱中点击激活 2、首页选择并开启靶场 复制映射的ip和端口 在浏览器输入ip和端口 改成put并把1.jsp中内容复制进去 3打开哥斯拉&#xff0c;连接上面的网址

TCP协议程序设计

文章目录 前言一、TCP协议程序是什么&#xff1f;二、使用步骤 1.服务器端与客户端2.实操展示总结 前言 TCP网络程序设计是指利用Socket类编写通信程序。利用TCP协议进行通讯的两个应用程序是有主次之分的&#xff0c;一个称为服务器程序&#xff0c;另一个称为客户机程序&…

Go语言编程大全,web微服务数据库十大专题精讲

本课程主要从数据结构、Go Module 依赖管理、IO编程、数据库编程、消息队列、加密技术与网络安全、爬虫与反爬虫、web开发、微服务通用技术、Kitex框架等方面讲解~ 链接&#xff1a;https://pan.quark.cn/s/d65337a0e60d

S32K144 CAN使用

S32K144是恩智浦半导体推出的一款高性能微控制器&#xff08;MCU&#xff09;&#xff0c;主要针对汽车和高可靠性的工业应用。在汽车工业应用中使用CAN总线必不可少。 需要注意的是在ISO 11898(High Speed&#xff0c;速度在5kbps-1Mbps)中&#xff0c;隐形电平电压差在0附件…

收银机打印机相关知识 windows7 查看打印机名称--未来之窗智慧经营收银系统百科

一、名词解释 打印机型号&#xff0c;打印机厂家&#xff0c;打印机接口、打印机驱动&#xff0c;打印机名称 机器的机身都有&#xff0c;打印机品牌&#xff0c;型号 二、什么是打印机接口 2.1 usb接口 一般用在收银小票&#xff0c;结账单&#xff0c;水单 2.2 并口接口 …

RK3568平台开发系列讲解(文件系统篇)什么是 inode?

一、什么是 inode? 为了存储一个文件,除了本身的文件内容块,还需要一个地方来存储文件相关的元信息信息。承载这些文件元数据的数据结构就是 inode(index node),inode 包含了文件元信息,比如文件的所有者、权限、修改时间戳等。 可以使用 ls -i 查看一个文件的 inode 号…

java基础概念11-方法

一、什么是方法 方法&#xff08;method&#xff09;是程序中最小的执行单元。 方法中的程序&#xff0c;要不然就是一起执行&#xff0c;要不然就是一起不执行&#xff01;&#xff01;&#xff01; 二、方法的定义 在Java中&#xff0c;方法定义的一般格式如下&#xff1a;…

牛客 河南萌新联赛2024第(四)场:河南理工大学 B题

比赛链接&#xff1a; 河南萌新联赛2024第&#xff08;四&#xff09;场&#xff1a;河南理工大学_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com) B题&#xff1a;小雷的神奇电脑 题目描述&#xff1a; 小雷有一台特殊的电脑&#xff0c;这台电…

搜维尔科技:如何使用 SenseGlove Nova 在其“CAVE”投影室中操纵虚拟物体

AVR 创建了一个创新的基于 PC 的多面沉浸式环境&#xff0c;参与者完全被虚拟图像和声音包围。 需要解决的挑战&#xff1a; 传统的 VR 系统通常缺乏逼真的触觉反馈&#xff0c;限制了用户的沉浸感。AVR Japan 旨在通过将触觉技术融入其 CAVE 系统来解决这一挑战&#xff0c;使…