大模型(5)——编码器(Encoder)、解码器(Decoder)
文章目录
- 一、编码器(Encoder)
- 1. 核心作用
- 2. 典型结构(以Transformer为例)
- 3. 应用场景
- 二、解码器(Decoder)
- 1. 核心作用
- 2. 典型结构(以Transformer为例)
- 3. 应用场景
- 三、编码器与解码器的协作模式
- **1. 独立架构**
- 2. 联合架构(Seq2Seq)
- 3. 多模态协作
- 四、关键技术对比
- 五、前沿演进方向
- 六、总结
在大模型(如Transformer架构的LLM、多模态模型)中,**编码器(Encoder)和解码器(Decoder)**是核心组件,负责将输入数据转化为高层表示并生成目标输出。它们的结构、功能差异及协作方式直接影响模型性能。
一、编码器(Encoder)
1. 核心作用
- 输入表示学习:将原始输入(文本、图像等)转化为高维向量(Embeddings),捕捉语义和上下文信息。
- 特征提取:通过多层神经网络(如Transformer层)逐步抽象出数据的深层特征。
2. 典型结构(以Transformer为例)
# 伪代码示例:Transformer编码器层
class EncoderLayer:def __init__(self):self.self_attention = MultiHeadAttention() # 自注意力机制self.feed_forward = FeedForwardNetwork() # 前馈网络self.norm1, self.norm2 = LayerNorm(), LayerNorm() # 层归一化def forward(self, x):# 自注意力 + 残差连接attn_output = self.self_attention(x, x, x) # Query=Key=Valuex = x + self.norm1(attn_output)# 前馈网络 + 残差连接ff_output = self.feed_forward(x)x = x + self.norm2(ff_output)return x
- 关键模块:
- 自注意力机制(Self-Attention):计算输入序列中所有位置的关联权重,捕获长距离依赖。
- 位置编码(Positional Encoding):为序列添加位置信息,解决Transformer的置换不变性问题。
- 层归一化(LayerNorm)和残差连接(Residual Connection):稳定训练过程。
3. 应用场景
- 纯编码器模型(如BERT、RoBERTa):
- 适用于理解型任务(文本分类、实体识别)。
- 通过掩码语言建模(MLM)预训练,学习双向上下文表示。
- 多模态编码器(如CLIP的视觉编码器):
- 将图像/文本映射到共享向量空间,支持跨模态检索。
二、解码器(Decoder)
1. 核心作用
- 序列生成:基于编码器输出或历史生成内容,逐步预测下一个token(如文本生成、图像合成)。
- 自回归推理:每一步依赖前一步的输出(如GPT的"逐词生成"模式)。
2. 典型结构(以Transformer为例)
# 伪代码示例:Transformer解码器层
class DecoderLayer:def __init__(self):self.self_attention = MultiHeadAttention() # 自注意力(掩码)self.cross_attention = MultiHeadAttention() # 交叉注意力(编码器-解码器)self.feed_forward = FeedForwardNetwork()self.norm1, self.norm2, self.norm3 = LayerNorm(), LayerNorm(), LayerNorm()def forward(self, x, encoder_output):# 掩码自注意力(防止未来信息泄露)attn_output = self.self_attention(x, x, x, mask=attention_mask)x = x + self.norm1(attn_output)# 编码器-解码器注意力cross_output = self.cross_attention(x, encoder_output, encoder_output)x = x + self.norm2(cross_output)# 前馈网络x = x + self.norm3(self.feed_forward(x))return x
- 关键模块:
- 掩码自注意力(Masked Self-Attention):防止解码时看到未来信息(确保自回归性)。
- 交叉注意力(Cross-Attention):解码器查询编码器输出(用于Seq2Seq任务)。
- 位置编码:与编码器类似,但需处理生成序列的动态扩展。
3. 应用场景
- 纯解码器模型(如GPT系列):
- 通过自回归生成完成文本续写、代码生成等任务。
- 预训练目标:预测下一个token(因果语言建模)。
- 编码器-解码器模型(如T5、BART):
- 适用于序列到序列任务(翻译、摘要)。
- 编码器处理输入,解码器生成输出。
三、编码器与解码器的协作模式
1. 独立架构
- 编码器-only(如BERT):仅用于特征提取,需接任务特定头(分类器)。
- 解码器-only(如GPT):直接生成内容,无显式编码器输入。
2. 联合架构(Seq2Seq)
- 工作流程:
- 编码器将输入序列(如英文句子)编码为上下文向量。
- 解码器基于该向量逐步生成目标序列(如中文翻译)。
- 经典模型:T5、BART、mBART。
3. 多模态协作
- 示例:图像描述生成(如BLIP模型):
- 视觉编码器(ViT)提取图像特征。
- 文本解码器生成描述文本。
四、关键技术对比
特性 | 编码器 | 解码器 |
---|---|---|
注意力机制 | 自注意力(双向) | 掩码自注意力 + 交叉注意力 |
训练目标 | 重构输入(MLM等) | 预测下一个token(自回归) |
输入/输出 | 固定长度输入 | 可变长度输出生成 |
典型预训练任务 | BERT的掩码语言模型 | GPT的因果语言模型 |
应用场景 | 理解、特征提取 | 生成、推理 |
五、前沿演进方向
- 统一架构:
- Prefix Decoding(如UniLM):通过控制注意力掩码,使单一模型同时支持编码和解码。
- 高效解码:
- Speculative Decoding:并行预测多个token加速生成。
- 多模态融合:
- Flamingo等模型:交替使用图像/文本编码器与解码器,处理跨模态生成。
六、总结
- 编码器是“理解者”,擅长从数据中提取抽象特征;
- 解码器是“生成者”,擅长基于上下文创造新内容;
- 两者协作可处理复杂任务(如翻译、对话),而独立设计则针对特定场景优化(如GPT纯生成、BERT纯理解)。
现代大模型(如LLaMA、PaLM)常采用解码器-only架构,因其生成能力更适配通用任务,而编码器-解码器架构在需精确对齐输入输出的场景(如翻译)中仍不可替代。
相关文章:
大模型(5)——编码器(Encoder)、解码器(Decoder)
文章目录 一、编码器(Encoder)1. 核心作用2. 典型结构(以Transformer为例)3. 应用场景 二、解码器(Decoder)1. 核心作用2. 典型结构(以Transformer为例)3. 应用场景 三、编码器与解码…...
Web3怎么本地测试连接以太坊?
ETHEREUM_RPC_URLhttps://sepolia.infura.io/v3/你的_INFURA_API_KEY 如果你没有 Infura Key,注册 Infura 或 Alchemy,拿一个免费测试网节点就行: Infura:https://infura.io Alchemy:Alchemy - the web3 developme…...
Vue-02 (使用不同的 Vue CLI 插件)
使用不同的 Vue CLI 插件 Vue CLI 插件扩展了 Vue 项目的功能,让你可以轻松集成 TypeScript、Vuex、路由等功能。它们可以自动进行配置和设置,从而节省您的时间和精力。了解如何使用这些插件对于高效的 Vue 开发至关重要。 了解 Vue CLI 插件 Vue CLI…...
理解vue-cli 中进行构建优化
在 Vue CLI 项目中进行构建优化,是前端性能提升的重要手段。它涉及到 Webpack 配置、代码分包、懒加载、依赖优化、图片压缩等多个方面。 🧱 基础构建优化 设置生产环境变量 NODE_ENVproduction Vue CLI 会自动在 npm run build 时开启以下优化&…...

理解计算机系统_线程(九):线程安全问题
前言 以<深入理解计算机系统>(以下称“本书”)内容为基础,对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 接续理解计算机系统_线程(八):并行-CSDN博客,内容包括12.7…...

vue3基本类型和对象类型的响应式数据
vue3中基本类型和对象类型的响应式数据 OptionsAPI与CompstitionAPI的区别 OptionsAPI Options API • 特点:基于选项(options)来组织代码,将逻辑按照生命周期、数据、方法等分类。• 结构:代码按照 data 、 methods…...

3.8.4 利用RDD实现分组排行榜
本实战任务通过Spark RDD实现学生成绩的分组排行榜。首先,准备包含学生成绩的原始数据文件,并将其上传至HDFS。接着,利用Spark的交互式环境或通过创建Maven项目的方式,读取HDFS中的成绩文件生成RDD。通过map操作将数据映射为二元组…...

python web flask专题-Flask入门指南:从安装到核心功能详解
Flask入门指南:从安装到核心功能详解 Flask作为Python最流行的轻量级Web框架之一,以其简洁灵活的特性广受开发者喜爱。本文将带你从零开始学习Flask,涵盖安装配置、项目结构、应用实例、路由系统以及请求响应处理等核心知识点。 1. Flask安…...
C语言中的“类框架”工具
C语言中的“框架”:库与轻量级工具生态解析 一、C语言的设计哲学与框架定位 C语言作为一门系统级编程语言,核心目标是提供高效、灵活的底层控制能力。与Java、Python等高级语言不同,C语言本身不内置全栈框架…...

【HW系列】—web组件漏洞(Strtus2和Apache Log4j2)
本文仅用于技术研究,禁止用于非法用途。 文章目录 Struts2Struts2 框架介绍Struts2 历史漏洞汇总(表格)Struts2-045 漏洞详解 Log4j2Log4j2 框架介绍Log4j2 漏洞原理1. JNDI 注入2. 利用过程 Log4j2 历史漏洞JNDILDAP 反弹 Shell 流程 Strut…...
第六十八篇 从“超市收银系统崩溃”看JVM性能监控与故障定位实战
目录 引言:当技术问题遇上生活场景一、JVM的“超市货架管理哲学”二、收银员工具箱:JVM监控三板斧三、典型故障诊断实录四、防患于未然的运维智慧五、结语:从故障救火到体系化防控 引言:当技术问题遇上生活场景 想象一个周末的傍…...
Debian 11 之使用hostapd与dnsmasq进行AP设置
目录 1: 安装必要的软件2: 配置dnsmasq3: 配置 hostapd4: 配置网络接口5: 启动服务总结 在Debian 11(也称为Bullseye)下设置热点,你可以使用多种方法,但最常见和简单的方法之一是使用hostapd工具配合dnsmasq。这种方法不需要额外的…...
有铜半孔的设计规范与材料创新
设计关键参数 孔径与间距限制 最小孔径需≥0.6mm,孔边距≥0.5mm,避免铜层脱落;拼版时半孔区域需预留2mm间距防止撕裂。 阻焊桥设计 必须保留阻焊桥(宽度≥0.1mm),防止焊锡流入孔内造成短路。 猎板的材料…...

机器学习知识体系:从“找规律”到“做决策”的全过程解析
你可能听说过“机器学习”,觉得它很神秘,像是让电脑自己学会做事。其实,机器学习的本质很简单:通过数据来自动建立规则,从而完成预测或决策任务。 这篇文章将用通俗的语言为你梳理机器学习的知识体系,帮助…...

STM32之FreeRTOS移植(重点)
RTOS的基本概念 实时操作系统(Real Time Operating System)的简称就叫做RTOS,是指具有实时性、能支持实时控制系统工作的操作系统,RTOS的首要任务就是调度所有可以利用的资源来完成实时控制任务的工作,其次才是提高工…...
做好测试用例设计工作的关键是什么?
测试用例设计是软件测试的核心环节,好的测试用例能高效发现缺陷,差的测试用例则可能漏测关键问题。结合多年测试经验,我认为做好测试用例设计的关键在于以下6点: 1. 深入理解需求(核心基础) ✅ 关键点: 与产品经理/开发对齐,确保理解无偏差(避免“我以为”式测试) 拆…...

R语言科研编程-标准偏差柱状图
生成随机数据 在R中,可以使用rnorm()生成正态分布的随机数据,并模拟分组数据。以下代码生成3组(A、B、C)随机数据,每组包含10个样本: set.seed(123) # 确保可重复性 group_A <- rnorm(10, mean50, sd…...
未来教育考试答题软件4.0【自用链接备份】
未来教育考试答题软件4.0【自用链接备份】 http://www.downyi.com/downinfo/240413.html 补丁地址:https://www.wodown.com/soft/43108.html...

OpenGL Chan视频学习-11 Uniforms in OpenGL
bilibili视频链接: 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 函数网站: docs.gl 说明: 1.之后就不再单独整理网站具体函数了,网站直接翻译…...
Flink系列文章列表
把写的文章做一个汇总,会陆续更新的。 Flink流处理原理与实践:状态管理、窗口操作与容错机制-CSDN博客...

GitLab 从 17.10 到 18.0.1 的升级指南
本文分享从 GitLab 中文本 17.10.0 升级到 18.0.1 的完整过程。 升级前提 查看当前安装实例的版本。有多种方式可以查看: 方式一: /help页面 可以直接在 /help页面查看当前实例的版本。以极狐GitLab SaaS 为例,在浏览器中输入 https://ji…...

产业集群间的专利合作关系
需要准备的文件: 全国的专利表目标集群间的企业名单 根据专利的共同申请人,判断这两家企业之间存在专利合作关系。 利用1_filter_patent.py,从全国的3000多万条专利信息中,筛选出与目标集群企业相关的专利。 只要专利的申请人包…...
PyQt学习系列02-模型-视图架构与数据管理
PyQt学习系列笔记(Python Qt框架) 第二课:PyQt的模型-视图架构与数据管理 一、模型-视图架构概述 1.1 什么是模型-视图架构? 模型-视图(Model-View)是Qt框架中用于数据展示和交互的核心设计模式。它将数…...
redis主从复制架构安装与部署
redis主从复制架构安装与部署 1、Redis 一主两从架构的优势2、环境准备3、下载redis4、解压缩文件5、编辑配置文件6、创建数据目录并启动Redis7、检查主从状态8、 Redis Sentinel 模式 1、Redis 一主两从架构的优势 Redis 采用一主两从(1个主节点 2个从节点&#…...
Kotlin 中 Lambda 表达式的语法结构及简化推导
在 Kotlin 编程中,Lambda 表达式是一项非常实用且强大的功能。今天,我们就来深入探讨一下 Lambda 表达式的语法结构,以及它那些令人 “又爱又恨” 的简化写法。 一、Lambda 表达式完整语法结构 Lambda 表达式最完整的语法结构定义为{参数名…...
YOLOv2 深度解析:目标检测领域的进阶之路
在计算机视觉领域,目标检测一直是研究和应用的热点方向。YOLO(You Only Look Once)系列算法以其快速高效的特点,在目标检测领域占据了重要地位。YOLOv2 作为 YOLO 系列算法的重要迭代版本,在 YOLOv1 的基础上进行了诸多…...

KT6368A通过蓝牙芯片获取手机时间详细说明,对应串口指令举例
一、功能简介 KT6368A双模蓝牙芯片支持连接手机,获取手机的日期、时间信息,可以同步RTC时钟 1、无需安装任何app,直接使用系统蓝牙即可实现 2、同时它不影响音频蓝牙,还支持一些简单的AT指令进行操作 3、实现的方式࿱…...

计算机网络实验课(二)——抓取网络数据包,并实现根据条件过滤抓取的以太网帧,分析帧结构
文章目录 一、添加控件二、代码分析2.1 代码2.2 控件初始化2.3 打开和关闭设备2.4 开始和结束捕获2.5 设置捕获条件2.6 捕获数据包 三、运行程序四、结果分析 提要:如果你通过vs打开.sln文件,然后代码界面或者前端界面都没找到,视图里面也没找…...
自动生成提示技术突破:AUTOPROMPT重塑语言模型应用
AUTOPROMPT 预训练语言模型的显著成功促使人们研究这些模型在预训练期间学习了哪些类型的知识。将任务重新表述为填空题(例如,完形填空测试)是衡量此类知识的自然方法 但是,它的使用受到编写合适提示所需的手动工作和猜测的限制。为了解决这个问题,我们开发了 AUTOPROMP…...

78. Subsets和90. Subsets II
目录 78.子集 方法一、迭代法实现子集枚举 方法二、递归法实现子集枚举 方法三、根据子集元素个数分情况收集 方法四、直接回溯法 90.子集二 方法一、迭代法实现子集枚举 方法二、递归法实现子集枚举 方法三、根据子集元素个数分情况收集 方法四、直接回溯法 78.子集…...