NLP高频面试题(六)——decoder-only、encoder-only和encoder-decoder的区别与联系

一、基本概念与代表模型

1. Encoder-only 架构

Encoder-only 架构最具代表性的模型是 BERT。BERT 使用 masked language modeling(MLM)进行预训练,即随机遮蔽部分输入词汇,让模型预测被遮蔽的词汇。由于这种架构能够同时看到输入序列的上下文信息,BERT 非常擅长文本理解)任务,如文本分类、命名实体识别等。

2. Decoder-only 架构

Decoder-only 架构的经典代表是 GPT 系列模型,如 GPT-3 和 GPT-4。GPT 模型使用 next token prediction 进行训练,在生成某个词的表征时,仅能看到该词及其之前的所有信息,而不能看到后续信息。这种单向注意力机制称为 causal mask。

3. Encoder-decoder 架构

Encoder-decoder 架构最早由 Transformer 提出,用于seq2seq任务,代表模型有 T5 和 BART。Encoder 部分处理输入序列并抽取特征,Decoder 部分根据 Encoder 提供的特征生成目标序列,典型应用是翻译和摘要生成。

二、架构对比与分析

1. 信息关注方向的不同

  • Encoder-only 架构使用的是双向注意力,即在处理文本中任何一个词时,都能同时看到上下文信息,适合理解任务。
  • Decoder-only 架构使用的是单向(causal)注意力,仅关注当前位置及其之前的词汇信息,因此天然适合文本生成任务。
  • Encoder-decoder 架构则结合了二者的特点:Encoder 使用双向注意力进行充分的上下文理解,Decoder 则使用单向注意力机制进行序列生成。

2. 任务适应性与泛化性能

  • Encoder-only 模型由于其双向注意力机制,更适合文本理解类任务,但生成能力有限。
  • Decoder-only 模型,如 GPT,能够在仅使用无监督预训练(next token prediction)的情况下,实现出色的 zero-shot 和 few-shot 泛化能力,兼具理解和生成的特性,适合多种下游任务。
  • Encoder-decoder 模型则擅长 seq2seq 任务,比如翻译、摘要生成等特定场景,但通常需要一定量的任务特定微调数据来达到最佳性能,zero-shot 泛化性能不如 Decoder-only 模型。

3. 效率与工程实现问题

在实际应用中,尤其是多轮对话场景,Decoder-only 架构由于其能复用 KV 缓存(每个 token 的表示与之前输入的信息有关),极大提高了推理效率。而 Encoder-decoder 和 PrefixLM 等变种架构则难以做到高效的 KV 缓存复用,因此效率较低。

此外,Decoder-only 架构在大规模自监督学习(如当前主流的百亿甚至千亿参数模型训练)中效率更高,工程实现更为简单。

4. 理论基础:低秩问题

有研究指出,Encoder 的双向注意力存在所谓的“低秩问题”,即由于双向注意力看到的信息过于丰富,可能导致模型的有效表达能力受到限制。而 Decoder-only 的单向注意力则天然避免了这个问题,使得其在文本生成任务中更具优势。

三、模型架构选择

  • 如果你的任务以文本理解(NLU)为主,尤其是任务特定的微调数据丰富时,Encoder-only 架构(如 BERT)是优选。
  • 如果你的任务强调文本生成,且你希望模型具备出色的泛化能力、无监督训练和 few-shot 学习的能力,那么 Decoder-only 架构(如 GPT 系列)无疑是最佳选择。
  • 如果你面临典型的序列到序列任务,比如机器翻译、摘要生成等,且有一定量的任务特定数据进行微调,Encoder-decoder 架构(如 T5 或 BART)则更为合适。

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

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

相关文章

如何判断 MSF 的 Payload 是 Staged 还是 Stageless(含 Meterpreter 与普通 Shell 对比)

在渗透测试领域,Metasploit Framework(MSF)的 msfvenom 工具是生成 Payload(载荷)的核心利器。然而,当我们选择 Payload 时,经常会遇到一个问题:这个 Payload 是 Staged(…

基于FPGA的3U机箱模拟量高速采样板ADI板卡,应用于轨道交通/电力储能等

板卡简介: 本板为模拟量高速采样板(ADI),主要用于电机转速和相电流检测,以实现电机闭环控制。 性能规格: 电源:DC5V,DC3.3V,DC15V,DC24V FPGA:…

Gymnasium Cart Pole 环境与 REINFORCE 算法 —— 强化学习入门 2

Title: Gymnasium Cart Pole 环境与 REINFORCE 算法 —— 强化学习入门 2 文章目录 I. Gymnasium Cart Pole 环境II. REINFORCE 算法1. 原理说明2. REINFORCE 算法实现 I. Gymnasium Cart Pole 环境 Gymnasium Cart Pole 环境是一个倒立摆的动力学仿真环境. 状态空间: 0: Ca…

Python高级:GIL、C扩展与分布式系统深度解析

文章目录 📌 **前言**🔧 **第一章:Python语言的本质与生态**1.1 **Python的实现与版本演进**1.2 **开发环境与工具链** 🔧 **第二章:元编程与动态特性**2.1 **描述符协议(Descriptor Protocol)*…

C++学习笔记(二十一)——文件读写

一、文件读写 作用: 文件读写指的是将数据从程序存储到文件,或从文件读取数据,以实现数据的持久化存储。 C 提供了 fstream 头文件,用于文件操作,主要包括: ofstream(输出文件流)—…

RBA+minibatch的尝试

目录 还是咬着牙来写 RBA了 JAX JAX->TORCH torch tensor的变形 pytorch怎么把一个【3,3,5】的tensor变成【3,10,5】,多的用0填充 pytorch如何把shape【100】转成【100,1】 把torch shape【100,1】变成【100】 SQUEEZE grad_fn 不能两次反向传播 还…

基于Python+Django的二手房信息管理系统

项目介绍 PythonDjango二手房信息管理系统(Pycharm Django Vue Mysql) 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 - 前台功能包括:首页、二手房信息、公告管理、…

爬虫基础之爬取猫眼Top100 可视化

网站: TOP100榜 - 猫眼电影 - 一网打尽好电影 本次案例所需用到的模块 requests (发送HTTP请求) pandas(数据处理和分析 保存数据) parsel(解析HTML数据) pyecharts(数据可视化图表) pymysql(连接和操作MySQL数据库) lxml(数据解析模块) 确定爬取的内容: 电影名称 电影主演…

解决Qt信号在构造函数中失效的问题

情景引入:音乐播放器的“幽灵列表”问题 假设你正在开发一个音乐播放器应用,其中有一个功能是用户首次打开应用时,需要从服务器拉取最新的歌曲列表并显示在“本地音乐”页面中。你可能会写出类似这样的代码: // LocalSong 类的构…

Hadoop 启动,发现 namenode、secondary namenodes,这两个没有启动,报错超时。

今天在启动 hadoop 的时候,发现本应该同时启动的 namenode、secondary namenodes 却都没有启动。我还以为是坏了又重新装了虚拟机,重新下载 Hadoop 重新配置结果还是同样的问题,那没办法只能去解决问题了。 首先先再次尝试启动看他报错是什么…

Ranger 鉴权

Apache Ranger 是一个用来在 Hadoop 平台上进行监控,启用服务,以及全方位数据安全访问管理的安全框架。 使用 ranger 后,会通过在 Ranger 侧配置权限代替在 Doris 中执行 Grant 语句授权。 Ranger 的安装和配置见下文:安装和配置 …

Sqlserver安全篇之_启用和禁用Named Pipes的案列介绍

https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/named-pipes-properties?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/client-protocols-named-pipes-properties-protocol-tab?viewsql-server-ver16 默认…

深入解析过滤器模式(Filter Pattern):一种灵活高效的设计模式

过滤器模式(Filter Pattern),也被称为标准模式,是一种常见的结构型设计模式。它通过将对象分为不同的标准或条件,使得对对象集合的操作变得更加灵活和高效。特别适用于处理复杂查询和条件过滤的场景。过滤器模式不仅能…

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言 Elasticsearch 是一个开源的分布式搜索引擎,广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程,在 Spring Boot 项目中整合 Elasticsearch,轻松实现数据存储与查询。 1. 创建 Spring Boot 项目 首先&#xff…

2025年Postman的五大替代工具

虽然Postman是一个广泛使用的API测试工具,但许多用户在使用过程中会遇到各种限制和不便。因此,可能需要探索替代解决方案。本文介绍了10款强大的替代工具,它们能够有效替代Postman,成为你API测试工具箱的一部分。 什么是Postman&…

Redis之单线程与多线程

redis 单线程与多线程 Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包含获取(socket读)、解析、执行、内容返回(socket写)等都由一个顺序串行的主线程处理,这就是…

C#的简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式是一种创建型设计模式,主要将对象的创建和使用分离,使得系统更加灵活和可维护。常见的工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式,以下是 C# 实现的三个案例: 简单工厂模式 简单工厂模式通过一个工厂类来创建…

python基础8 单元测试

通过前面的7个章节,作者学习了python的各项基础知识,也学习了python的编译和执行。但在实际环境上,我们需要验证我们的代码功能符合我们的设计预期,所以需要结合python的单元测试类,编写单元测试代码。 Python有一个内…

算法刷题力扣

先把大写的字母变成小写的&#xff0c;用大写字母32即可变为小写字母。 写循环跳过字符。 然后判断是否相等即可。具体代码如下&#xff1a; class Solution { public: bool isPalindrome(string s) { int sizes.size(); int begin0; int ends.size()-1; for(int i0;i<s…

allure下载安装及配置

这里写目录标题 一、JDK下载安装及配置二、allure下载三、allure安装四、allure环境变量配置五、allure验证是否安装成功 一、JDK下载安装及配置 allure 是一个java测试报告框架。所以要基于JDK环境。 JDK下载与安装及配置&#xff1a;https://blog.csdn.net/qq_24741027/arti…