初识Bert

news/2025/3/10 23:24:28/

在学习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.ppmy.cn/news/1578200.html

相关文章

解释 HTTP 中的内容协商,如何根据客户端偏好返回合适的内容?

一、内容协商的本质与价值 内容协商(Content Negotiation)是HTTP协议中客户端与服务器就资源表现形式达成一致的协商机制。其核心价值在于:​用同一URI提供资源的不同表现形式,同时保证客户端获得最适合自身环境的内容版本。 典…

20250307-vue侦听器

当我们需要在状态变化时执行一些 “副作用”:例如更改 DOM,或是根据异步操作的结果去修改另一处的状态。 我们可以使用 watch 选项在每次响应式属性发生变化时触发一个函数。(响应式属性‌是指那些能够在被修改时自动更新视图的属性) 【 什么是 Promi…

使用 Docker 部署 Nginx,配置后端 API 轮询与多个子域名前端应用

使用 Docker 部署 Nginx,配置后端 API 轮询与多个子域名前端应用 在这篇博客中,我们将介绍如何通过 Docker 部署 Nginx 服务器,并配置 多个后端 API 的轮询负载均衡,同时通过 子域名 部署多个不同的前端应用。Nginx 将作为反向代…

利用pdf.js+百度翻译实现PDF翻译,创建中文PDF

基于JavaScript的PDF文档解析与智能翻译系统开发实践 一、功能预览 1.1 PDF加载 1.2 PDF翻译 二、系统架构设计 2.1 PDF智能翻译系统架构设计 层级模块名称功能描述技术实现呈现层Canvas渲染器PDF文档可视化渲染PDF.js + 动态视口计算 + 矩阵变换

C++修炼之路:初识C++

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 引言 …

Locker 是 Godot 的一个开源插件,它提供了一种快速且可扩展的方式来使用不同的策略保存和加载数据,并且具有开箱即用的 JSON 和加密功能。

一、软件介绍 文末提供下载 Locker 插件是在 Godot 4.3 中创建的框架&#xff0c;旨在简化在 Godot 项目中保存、加载和管理数据的过程。该插件的主要目标之一是对用户自定义开放&#xff0c;允许使用不同的用户定义策略来访问数据。并且具有开箱即用的 JSON 和加密功能。 二、…

web—HTML

什么是web ●Web:全球广域网&#xff0c;也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 在浏览器中呈现精美的网页。 1.网页由那几部分组成&#xff1f; >文字、图片、视频、音频、超链接&#xff0c;&#xff0c;&#xff0c; 2.我们看到的网页&#xf…

Android Dagger2 原理深度剖析

一、绪论 1.1 依赖注入在 Android 开发中的重要性 在 Android 开发的复杂生态中&#xff0c;构建高效、可维护和可测试的应用程序是开发者们始终追求的目标。依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;作为一种关键的设计模式&#xff0c;在达…