BERT技术架构

### **一、整体定位:纯编码器架构**

#### **核心设计思想**

> **预训练+微调**:

> 1. **预训练**:在海量无标签文本上学习通用语言规律

> 2. **微调**:用少量标注数据适配具体任务(如分类/问答)

> **类比**:

> - 预训练 = 医学生通读百万本医学文献

> - 微调 = 针对眼科进行3个月专项培训

 

---

 

### **二、核心架构详解**

#### **1. 输入表示层:处理多样化输入**

- **三位一体的嵌入组合**:

```python

输入 = 词嵌入 + 位置嵌入 + 段落嵌入

```

| 嵌入类型 | 作用 | 示例 |

|---------------|-------------------------------|--------------------------|

| **词嵌入** | 将词转为数字向量 | “猫”→ [0.2, -1.7, 0.5] |

| **位置嵌入** | 标记词的位置(0~511) | 首词位置0 → 特定波形编码 |

| **段落嵌入** | 区分句子A/B(用于问答等任务) | 句子A标0,句子B标1 |

 

- **特殊标记**:

- `[CLS]`:放置句首,用于分类任务的聚合表示

- `[SEP]`:分隔句子对(如问题与答案)

- `[MASK]`:预训练时的掩码占位符

 

> **输入示例**:

> `[CLS] 巴黎是法国的首都 [SEP] 埃菲尔铁塔在这里 [SEP]`

> *段落编码:0 0 0 0 0 0 1 1 1 1*

 

#### **2. 编码器堆叠:Transformer编码器层**

- **基础配置**:

- **BERT-base**:12层,每层12个注意力头,隐藏层768维

- **BERT-large**:24层,每层16头,隐藏层1024维

- **单层结构**:

```mermaid

graph LR

A[输入向量] --> B[多头自注意力]

B --> C[残差连接+层归一化]

C --> D[前馈神经网络]

D --> E[残差连接+层归一化]

```

 

#### **3. 核心机制:自注意力(以“猫追老鼠”为例)**

1. **生成Q/K/V向量**:

- 每个词通过权重矩阵生成三组向量

- “追”的Query向量包含动作意图

2. **计算相关性**:

- “追”的Query vs “猫”的Key → 高相似度

- “追”的Query vs “老鼠”的Key → 中等相似度

3. **加权融合**:

`“追”的新向量 = 0.7×"猫"的Value + 0.2×"老鼠"的Value + ...`

 

---

 

### **三、预训练任务:BERT的“通识教育”**

#### **任务1:掩码语言模型(Masked LM)**

- **操作**:

随机遮盖15%的词,其中:

- 80%替换为`[MASK]`:`猫 [MASK] 老鼠` → 预测“追”

- 10%替换为随机词:`猫 跳 老鼠` → 纠正为“追”

- 10%保留原词:`猫 追 老鼠` → 强化正确性

 

- **设计意图**:

强制模型**基于双向上下文推理**,破解传统语言模型的单向偏见

 

#### **任务2:下一句预测(Next Sentence Prediction)**

- **正例**:

```

句子A:巴黎是时尚之都

句子B:许多设计师在此工作 → 标签:IsNext

```

- **反例**:

```

句子A:巴黎是时尚之都

句子B:企鹅生活在南极 → 标签:NotNext

```

- **价值**:

学习句子间逻辑关系,对问答/推理任务至关重要

 

---

 

### **四、微调机制:快速适配具体任务**

#### **1. 分类任务(如情感分析)**

- 取`[CLS]`位置的输出向量

- 接全连接层分类:

`情感 = Softmax(W·h_[CLS] + b)`

 

 

#### **2. 问答任务(如SQuAD)**

- 输入:`[CLS]问题 [SEP] 文章 [SEP]`

- 输出:预测答案在文章中的起止位置

```

起始位置概率 = Softmax(W_s·文章每个词向量)

终止位置概率 = Softmax(W_e·文章每个词向量)

```

 

#### **3. 命名实体识别(NER)**

- 对每个词输出实体类型:

`“巴黎” → B-LOC(地点起始)`

`“铁塔” → I-LOC(地点延续)`

 

---

 

### **五、关键创新:为何BERT远超前辈?**

#### **1. 动态词向量 vs 静态词向量**

| 对比项 | Word2Vec | BERT |

|----------------|-------------------|-------------------|

| 词义表达 | 固定不变 | 随上下文动态变化 |

| 多义词处理 | “苹果”只有1种含义 | “苹果手机” vs “苹果好吃”不同向量 |

| 上下文感知 | 无 | 全句双向理解 |

 

#### **2. 预训练-微调范式革命**

- **传统方法**:每个任务需单独设计模型并标注大量数据

- **BERT方法**:

1. 无监督预训练(用维基百科等公开文本)

2. 少量标注数据微调(如1000条电影评论做情感分类)

 

> **效果对比**:

> 情感分析任务准确率:

> - 传统模型:85%

> - BERT微调:92%

 

---

 

### **六、通俗总结:BERT像什么?**

1. **输入处理**:给每个词发“身份证”(词ID+位置卡+段落卡)

2. **编码过程**:12次“小组讨论会”(每层Transformer):

- 每个词自由与其他词交流(自注意力)

- 会后整理会议纪要(前馈神经网络)

3. **预训练**:

- **填空考试**(Masked LM):蒙住部分词猜内容

- **逻辑判断**(NSP):识别句子间是否连贯

4. **微调**:

- 分类任务:看`[CLS]`的总结报告

- 问答任务:在文章中划重点答案

 

> **核心突破**:

> 同一套模型既能理解法律条文,又能分析情书——

> **秘诀在于从海量阅读中学会“语言的本质规律”**。

 

---

 

### **附:架构参数速查表**

| 模型类型 | 层数 | 注意力头数 | 隐藏层维度 | 参数量 |

|--------------|------|------------|------------|---------|

| **BERT-base** | 12 | 12 | 768 | 110M |

| **BERT-large**| 24 | 16 | 1024 | 340M |

 

通过这种架构,BERT实现了语言理解的量子飞跃,成为NLP领域的里程碑式突破。

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

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

相关文章

Python+ArcGIS+AI蒸散发与GPP估算|Penman-Monteith模型|FLUXNET数据处理|多源产品融合|专业科研绘图与可视化等

结合Python编程与ArcGIS工具,通过AI辅助方法实现蒸散发与植被总初级生产力估算。学习国际流行的Penman-Monteith模型,掌握数据获取、处理、分析和可视化全流程,培养生态水文与双碳领域的实践应用能力。通过DeepSeek、豆包等AI工具辅助代码编写…

elasticsearch+logstash+kibana+filebeat实现niginx日志收集(未过滤日志内容)

单点部署 环境准备 基于Rocky9虚拟机,内存大小为4G yum -y install lrzsz useradd elkf passwd elkf#密码随意su - elk rz 导入包,笔者导使用版本为7.17.8下载地址:https://www.elastic.co/downloads/past-releases/ tar -xf elasticsearch-7…

hadoop 集群问题处理

1.1.JournalNode 的作用在 HDFS HA 配置中,为了实现两个 NameNode 之间的状态同步和故障自动切换,Hadoop 使用了一组 JournalNode 来管理共享的编辑日志。具体来说,JournalNode 的主要职责包括:共享编辑日志:JournalNo…

LeetCode--46.全排列

解题思路&#xff1a;1.获取信息&#xff1a;给定一个不含重复数字的数组&#xff0c;返回所有可能的全排列&#xff0c;可以按任意顺序返回提示信息&#xff1a;1 < nums.length < 6-10 < nums[i] < 102.分析题目&#xff1a;要获取到所有可能的全排列我们每次会从…

云徙科技----一面(全栈开发)

一、公司是做什么业务的&#xff1f;二、介绍一下自己会用的&#xff0c;熟悉的技术栈&#xff1f;三、“在 Spring 应用中&#xff0c;当你发起一个 RESTful API 请求时&#xff08;例如 GET /api/users/1&#xff09;&#xff0c;计算机系统是如何知道这个请求的&#xff1f;…

我是怎么设计一个订单号生成策略的(库存系统)

我是怎么设计一个订单号生成策略的&#xff08;库存系统&#xff09;一、背景 最近我在做一套自研的库存管理系统&#xff0c;其中有一个看似简单、实则很关键的功能&#xff1a;订单号生成策略。 订单号不仅要全局唯一&#xff0c;还要有一定的可读性和业务含义&#xff0c;比…

问津集 #1:Rethinking The Compaction Policies in LSM-trees

文章目录引言正文结束语引言 陪女朋友出门&#xff0c;我大概有两个小时左右的空闲时间&#xff0c;遂带上电脑&#xff0c;翻了下论文列表&#xff0c;选择了这篇文章做一个简读。 因为这一年负责时序系统的存储引擎和计算引擎演进&#xff0c;而Compaction又是串联读写的核心…

数据产品结构:从数据接入到可视化的完整架构指南

在数据驱动决策的时代&#xff0c;一套高效的数据产品结构是企业挖掘数据价值的基础。无论是巨头企业自建的完整体系&#xff0c;还是中小企业依赖的第三方工具&#xff0c;其核心逻辑都是实现 “数据从产生到呈现” 的全链路管理。本文将拆解数据产品的五层架构&#xff0c;对…

python学智能算法(二十三)|SVM-几何距离

引言 前序学习文章中&#xff0c;已经探究了电荷超平面的距离计算方法&#xff0c;相关文章为点与超平面的距离。 在这片文章中&#xff0c;我们了解到计算距离的公式&#xff1a; Fmin⁡i1...myi(w⋅xib)F\min_{i1...m}y_{i}(w\cdot x_{i}b)Fi1...mmin​yi​(w⋅xi​b) 计算…

[每日随题11] 贪心 - 数学 - 区间DP

整体概述 难度&#xff1a;1000 →\rightarrow→ 1400 →\rightarrow→ 1600 P3918 [国家集训队] 特技飞行 标签&#xff1a;贪心 前置知识&#xff1a;无 难度&#xff1a;橙 1000 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 样例输入&#xff1a;…

Elasticsearch 9.x 搜索执行流程(源码解读)

1. 搜索执行流程概述 Elasticsearch的搜索执行是一个分布式过程,涉及协调节点和数据节点之间的多阶段交互 #mermaid-svg-QGh2GjrUKcs5jzQp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QGh2GjrUKcs5jzQp .error…

暑期训练8

E. G-C-D, Unlucky!题目要求判断是否存在一个长度为 n 的数组 a&#xff0c;使得p[i] 是 a[0..i] 的前缀 GCDs[i] 是 a[i..n-1] 的后缀 GCD思路前缀 GCD 非递增后缀 GCD 非递减首尾 GCD 一致桥梁条件成立对于每个位置 i&#xff0c;gcd(p[i], s[i1]) 必须等于整个数组的 GCD&am…

深入解析Hadoop HDFS高可用性:原理、故障切换与元数据同步

Hadoop HDFS高可用性(HA)概述在分布式存储领域&#xff0c;Hadoop分布式文件系统(HDFS)作为Hadoop生态系统的核心存储组件&#xff0c;其高可用性(HA)设计一直是架构师们关注的焦点。传统HDFS架构中&#xff0c;NameNode作为单一主节点管理整个文件系统的元数据&#xff0c;这种…

Freertos源码分析:任务创建/删除

任务创建/删除流程1.简介FreeRTOS 中任务创建通过 xTaskCreate() 或 xTaskCreateStatic() 实现。动态创建&#xff08;xTaskCreate&#xff09;会自动分配任务栈和TCB&#xff08;任务控制块&#xff09;&#xff0c;静态创建&#xff08;xTaskCreateStatic&#xff09;需用户预…

warning: _close is not implemented and will always fail

相关问题&#xff1a; 一、undefined reference to _exit undefined reference to ‘end‘ warning: _close is not implemented and will always fail 一、环境&#xff1a; ubuntu24.04实体机、 arm-none-eabi-gcc gcc version 13.2.1 20231009 (15:13.2.rel1-2) 二…

MyBatis之缓存机制详解

MyBatis之缓存机制详解一、MyBatis缓存的基本概念1.1 缓存的核心价值1.2 MyBatis的两级缓存体系二、一级缓存&#xff08;SqlSession级别缓存&#xff09;2.1 工作原理2.2 实战案例&#xff1a;一级缓存演示2.2.1 基础用法&#xff08;默认开启&#xff09;2.2.2 一级缓存失效场…

云服务器搭建自己的FRP服务。为什么客户端的项目需要用Docker启动,服务端才能够访问到?

简单回答&#xff1a;在云服务器搭建FRP服务时&#xff0c;客户端项目用Docker启动并非必需&#xff0c;而是因为Docker的特性简化了配置&#xff1a; Docker通过端口映射&#xff08;如-p 本地端口:容器端口&#xff09;能固定项目对外暴露的端口&#xff0c;减少本地端口冲突…

6 STM32单片机的智能家居安防系统设计(STM32代码+手机APP设计+PCB设计+Proteus仿真)

系列文章目录 文章目录 系列文章目录前言1 资料获取与演示视频1.1 资料介绍1.2 资料获取1.3 演示视频 2 系统框架3 硬件3.1 主控制器3.2 显示屏3.3 WIFI模块3.4 DHT11温湿度传感器3.5 烟雾/燃气传感器模块&#xff1a;MQ-23.6 火焰传感器3.7 门磁模块MC-38 4 设计PCB4.1 安装下…

DevOps落地的终极实践:8大关键路径揭秘!

本文来自腾讯蓝鲸智云社区用户: CanWay当前&#xff0c;DevOps因其能够降低IT运营成本、提高软件质量并加快上市时间的能力而在全球范围内引起广泛关注。它打破了传统软件开发与运营的界限&#xff0c;消除了新功能发布延迟和软件质量下降的障碍。DevOps通过实施持续集成、持续…

react - 根据路由生成菜单

后端返回菜单的格式menuList:[{index: true,name: "",component: "../views/Home",meta: { title: "首页", requiresAuth: true,roles:[user]},},{path: "/admin",name: "admin",meta: { title: "管理页", roles:…