初识Bert

在学习Bert之前我们先了解“递归神经网络(RNN  Recurrent neural network)” 和 “长短期记忆(LSTM Long short-term memory)”

我们如果仅仅识别每个字的含义,那么在一句话中没有相同的字还是可以的但是如果一句话中有相同的字,那么我们进不能识别每个字的含义,因为有可能相同的字,位置不一样,词性也不一样,那么含义就会不一样。 

因此就引出了 递归神经网络(RNN  Recurrent neural network)和长短期记忆(LSTM Long short-term memory)

递归神经网络

RNN就是在传入模型的时候,也传入一个向量,就是一个记忆单元,我们可以形象的称为“传家宝”,因为传家宝会一直串行的传下去这样就能。有了这个传家宝,就可以根据上文判断当前文字的词性。

因为是串行传递,如果一句话很长,这也导致RRN模型中记忆单元也就是“传家宝”中记录的东西过多,导致最前面的信息和最后面的信息很难对应,如:

当我们问“谁与赛罕塔拉结下了不解之缘?”时,“传家宝”里的东西已经记录前面的太多信息了,无法准确的找到主语“我”。

为了解决这个问题,因此引出“长短期记忆(LSTM Long short-term memory)”模型。

长短期记忆

LSTM模型就是,还是那上面的例子,问“谁与赛罕塔拉结下了不解之缘?”时,我们就会把“传家宝”上锁,不会让中间无关紧要的信息进入“传家宝”,这样我们就能在“传家宝”当中找到我们想要的答案。

自注意力机制

通过学习RNN和LSTM模型,虽然问题已经解决,但是速度还是太慢了,先辈的巨人们就创造了Bart模型,在学习Bart模型前,我们要先了解自注意力机制(Self-attention)

所谓的注意力机制就是是一个特征转换器,考虑了句子整体的前后关系。注意力机制可以让模型在生成每个目标词的时候,选择性地“关注”源句子中相关联的部分,而不是等同对待整个源句子。

 通俗一点,注意力机制就是对于每个事件所分担注意力的比例是多少。

那么𝛼1,1, 𝛼1,2, 𝛼1,3, 𝛼1,4这些都是怎么求的呢?

得到的𝛼1,1, 𝛼1,2, 𝛼1,3, 𝛼1,4其概率和不为1,因此在经过一次Soft-max,得到概率和为1,这样我们就得到了𝛼1分配给每个字多少的注意力

b1就是𝛼1看过整句话结合注意力得到的值 ,这样可以求得b2,b3,b4,在计算得过程中都是全部都是并行的,完全不需要等待前面得内容,因此速度很快。

下面是具体得计算过程,

 

我们把每个字,也就是表示成768维向量称之为token

Bert

Bert就是一个编码器,与他对应的就是GPT-2解码器,先逐步分析Bert的过程:

Inputs就是将一个字以one-hot的编码形式展示出来,传去Input Embeadding中,就是对应的“词Embeadding”进行的操作就是进行一次全连接Linear(22128,768);在进行一次Positional Encoding,就是对应的“位置 Embeadding”,进行的操作是一次全连接Linear(512,768)。

经过两次全连接,进入的就是Muti-Head Attention(多头注意力机制),下面的三个箭头就是Wq、Wk、Wv,都是(768,768)的Linear,后面进行Norm,就是归一化,观察到还有一个箭头指向Add,这就是ResNet残差连接,因为有残差连接,网络才能走很深。传出还是768维。

传入Feed Forward,Feed Forward的操作就是进行两次全连接:nn.linear(768,3072)、nn.linear(3072,768),得到768维,在进行一次归一化和残差连接,这就算把特征提取出来了。

这就是Bert的一次完整的过程,当然,因为Bert整体的过程不改变维度,输入768维,输出768维,所以可以根据具体的情况进行N次。

            

这就是他们之间的关系 

 

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

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

相关文章

clickhouse源码分析

《ClickHouse源码分析》 当我们谈论数据库时,ClickHouse是一个不容忽视的名字。它是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其快速的数据查询能力而闻名。对于想要深入了解这个高效工具…

[网络爬虫] 动态网页抓取 — Selenium 元素定位

🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 在使用 Selenium 时,往往需要先定位到指定元素,然后再执行相应的操作。例如,再向文本输入框中输入文字之前,…

ArcGIS操作:15 计算点的经纬度,并添加到属性表

注意:需要转化为地理坐标系 1、打开属性表,添加字段 2、计算字段(以计算纬度为例 !Shape!.centroid.Y ) 3、效果

[项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键

基于FreeRTOS的STM32四轴飞行器: 七.遥控器 一.遥控器按键摇杆功能说明二.摇杆和按键的配置三.按键扫描 一.遥控器按键摇杆功能说明 两个手柄四个ADC。 左侧手柄: 前后推为飞控油门,左右推为控制飞机偏航角。 右侧手柄: 控制飞机飞行方向&a…

Redis 内存淘汰策略深度解析

Redis 作为高性能的内存数据库,其内存资源的高效管理直接关系到系统的稳定性和性能。当 Redis 的内存使用达到配置的最大值(maxmemory)时,新的写入操作将触发内存淘汰机制(Eviction Policy),以释…

【面试】Java 集合

集合 1、常见的集合有哪些2、说说 List、Set、Queue、Map 四者的区别3、Collection 和 Collections 有什么区别4、Comparable 和 Comparator 的区别5、ArrayList 和 LinkedList 的区别是什么6、ArrayList 和 Vector 的区别是什么7、ArrayList 和 Vector 的扩容机制8、CopyOnWri…

【c++】平移字符串

说明 实现字符串的左移与右移 示例代码 #include <iostream> #include <string> using namespace std;int main() {string str1 "12345";//左移2位string str2 str1.substr(2) str1.substr(0, 2);cout << str2 << endl;//右移2位&…

密码学(终极版)

加密 & 解密 备注&#xff1a;密码学领域不存在完全不能破解的密码&#xff0c;但是如果一个密码需要很久很久&#xff0c;例如一万年才能破解&#xff0c;就认为这个密码是安全的了。 对称加密 非对称加密 公钥加密、私钥解密 私钥签名、公钥认证 非对称的底层原理是…

FreeRTOS任务状态查询

一.任务相关API vTaskList&#xff08;&#xff09;&#xff0c;创建一个表格描述每个任务的详细信息 char biaoge[1000]; //定义一个缓存 vTaskList(biaoge); //将表格存到这缓存中 printf("%s /r/n",biaoge); 1.uxTaskPriorityGet&#xff08;&#xf…

yolov5代码详解--3.python代码脚本

三、val.py val.py的主要作用是对训练好的模型进行验证&#xff08;或评估&#xff09;。具体来说&#xff0c;它用于在指定的验证集上评估模型的性能&#xff0c;计算各项评估指标&#xff0c;并输出结果。val.py通常在模型训练完成后运行&#xff0c;用于验证模型的检测精度、…

无人机应用探索:玻纤增强复合材料的疲劳性能研究

随着无人机技术的快速发展&#xff0c;轻量化已成为其结构设计的核心需求。玻纤增强复合材料凭借高强度、低密度和优异的耐环境性能&#xff0c;成为无人机机身、旋翼支架等关键部件的理想选择。然而&#xff0c;无人机在服役过程中需应对复杂多变的环境&#xff1a;高空飞行时…

Python SQLite3 保姆级教程:从零开始学数据库操作

Python SQLite3 保姆级教程&#xff1a;从零开始学数据库操作 本文适合纯新手&#xff01;无需任何数据库基础&#xff0c;跟着步骤操作即可掌握 SQLite3 的核心用法。 目标&#xff1a;让你像用记事本一样轻松操作数据库&#xff01; 目录 什么是 SQLite3&#xff1f;环境准…

C语言中的整数类型(short,int,long和long long)

整数是编程中最常见的一种数据类型&#xff0c;C语言提供了多种整数类型&#xff0c;包括 short、int、long 和 long long&#xff0c;它们的主要区别在于存储范围和内存占用的大小。 本节将详细讲解这些整数类型的定义、特性、使用场景以及注意事项&#xff0c;帮助你全面理解…

使用jcodec库,访问网络视频提取封面图片上传至oss

注释部分为FFmpeg&#xff08;确实方便但依赖太大&#xff0c;不想用&#xff09; package com.zuodou.upload;import com.aliyun.oss.OSS; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.zuodou.oss.OssProperties;…

游戏引擎学习第147天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾 具体来说&#xff0c;我们通过隐式计算来解决问题&#xff0c;而不是像数字微分分析器那样逐步增加数据。我们已经涵盖了这个部分&#xff0c;并计划继续处理音量问题。不过&#xff0c;实际上我们现在不需要继续处理…

使用Dockerfile打包java项目生成镜像部署到Linux_java项目打docker镜像的dockerfile

比起容器、镜像来说&#xff0c;Dockerfile 非常普通&#xff0c;它就是一个纯文本&#xff0c;里面记录了一系列的构建指令&#xff0c;比如选择基础镜像、拷贝文件、运行脚本等等&#xff0c;每个指令都会生成一个 Layer&#xff0c;而 Docker 顺序执行这个文件里的所有步骤&…

Linux -- 磁盘结构、文件系统ext2

一、磁盘 1.磁盘的物理结构 2.磁盘的存储结构 盘片&#xff1a;是机械硬盘存储数据的主要介质&#xff0c;一般由铝合金或玻璃等材料制成&#xff0c;表面涂有一层磁性材料。数据通过磁头在盘片的磁性涂层上进行磁化来记录&#xff0c;磁化的不同方向代表二进制的 0 和 1。盘面…

标量、向量、矩阵与张量:从维度理解数据结构的层次

在数学和计算机科学中,维度描述了数据结构的复杂性,而标量、向量、矩阵、张量则是不同维度的数据表示形式。它们的关系可以理解为从简单到复杂的扩展,以下是详细解析: 1. 标量(Scalar):0维数据 定义:单个数值,没有方向,只有大小。 维度:0维(无索引)。 示例: 温度…

点云数据处理--splat转3dtiles

文章目录 处理流程简介核心功能实现数据读取与格式转换定义Point类数据读取splat转gltf 点云数据分割定义四叉树递归生成3dtiles瓦片 生成tileset.json递归生成tileset.json计算box 主函数调用渲染 下一步工作性能优化渲染效果调优其他 源码地址&#xff1a; github 处理流程简…

OneM2M:全球性的物联网标准-可应用于物联网中

OneM2M 是一个全球性的物联网(IoT)标准,旨在为物联网设备和服务提供统一的框架和接口,以实现设备之间的互操作性、数据共享和服务集成。OneM2M 由多个国际标准化组织(如 ETSI、TIA、TTC、ARIB 等)共同制定,目标是解决物联网领域的碎片化问题,提供一个通用的标准,支持跨…