[从0开始AIGC][LLM]:LLM中Encoder-Only or Decoder-Only?为什么主流LLM是Decoder-Only?

news2024/11/16 19:42:11

LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only?

文章目录

  • LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only?
    • 1. 什么是Encoder-only、Decoder-Only
    • 2. 为什么当前主流的LLM都是Decoder-only的架构
      • 低秩问题

1. 什么是Encoder-only、Decoder-Only

大模型(Large Language Model,LLM),目前一般指百亿参数以上的语言模型,主要面向文本生成任务。而"encoder-only"和"decoder-only"是两种不同的架构,它们都基于Transformer模型,但在处理输入和生成输出的方式上有所不同。

在这里插入图片描述

在 Transformer 模型中,编码器(Encoder)负责理解和提取输入文本中的相关信息。这个过程通常涉及到处理文本的序列化形式,例如单词或字符,并且用自注意力机制(Self-Attention)来理解文本中的上下文关系编码器的输出是输入文本的连续表示,通常称为嵌入(Embedding)。这种嵌入包含了编码器从文本中提取的所有有用信息,并以一种可以被模型处理的格式(通常是高维向量)表示。然后将编码的结果传递给解码器。解码器(Decoder)的任务是根据从编码器接收到的嵌入来生成翻译后的文本(目标语言)。解码器也使用自注意力机制(添加attn mask),以及编码器-解码器注意力机制,来生成翻译的文本。

[Encoder-only]:

  • Encoder-only模型,如BERT,主要用于理解和提取输入文本中的相关信息。这个过程通常涉及到处理文本的序列化形式,例如单词或字符,并且用自注意力机制(Self-Attention)来理解文本中的上下文关系。
  • BERT只使用了Transformer模型中的编码器部分,因为它主要用于处理单向输入数据。BERT的预训练目标是通过掩盖部分输入来预测其他部分,即完形填空,或者预测两个句子之间的关系,这些任务并不涉及到生成输出序列的自回归任务,因此不需要解码器。

自回归指输出的内容是根据已生成的token做上下文理解后一个token一个token输出的。

[Decoder-only]:

  • Decoder-only模型主要是为了预测下一个输出的内容/token是什么,并把之前输出的内容/token作为上下文学习。
  • 在Transformer模型的解码器中,自注意力机制允许每个位置的输出都依赖于输入序列中所有位置的信息。然而,当生成输出序列时,我们希望位置i的输出只依赖于位置i之前的已知输出,而不依赖于位置i之后的输出。为了实现这一点,Decoder使用了一种“掩码”技术(attn_mask),阻止模型关注位置i之后的位置。

[Encoder-Decoder]:

  • 这种架构的LLM通常充分利用了上面2种类型的优势,采用新的技术和架构调整来优化表现。这种主要用于NLP,即理解输入的内容NLU,又能处理并生成内容NLG,尤其擅长处理输入和输出序列之间存在复杂映射关系的任务,以及捕捉两个序列中元素之间关系至关重要的任务。
  • T5、BART

总的来说,encoder-only类型的更擅长做分类,理解场景;encoder-decoder类型的擅长输出强烈依赖输入的,比如翻译和文本总结,而其他类型的就用decoder-only,如各种Q&A。
在这里插入图片描述

2. 为什么当前主流的LLM都是Decoder-only的架构

引用自:苏神:https://kexue.fm/archives/9529

跟小尺度模型(10亿或以内量级)的“百花齐放”不同,目前LLM的一个现状是Decoder-only架构的研究居多,像OpenAI一直坚持Decoder-only的GPT系列就不说了,即便是Google这样的并非全部押注在Decoder-only的公司,也确实投入了不少的精力去研究Decoder-only的模型,如PaLM就是其中之一。那么,为什么Decoder-only架构会成为LLM的主流选择呢?

一般的NLP任务都是根据给定的输入来预测输出,完全无条件的随机生成是很少的,换句话说,任何NLP任务都可以分解为“输入”跟“输出”两部分,我们可以把处理“输入”的模型叫做Encoder,生成“输出”的模型叫做Decoder,那么所有任务都可以从“Encoder-Decoder”的视角来理解,而不同模型之间的差距在于Encoder、Decoder的注意力模式以及是否共享参数:

共享参数:

  • 在GPT模型中,"共享参数"主要是指输入层和输出层的参数是共享的。
  • 在GPT模型中,输入和输出都是词汇表中的单词,因此它们可以共享同一个词嵌入矩阵
Encoder注意力Decoder注意力是否共享参数
GPT单向单向
UniLM双向单向
T5双向单向

这里的GPT就是Decoder-only的代表作;UniLM则是跟GPT相似的Decoder架构,但它是混合的注意力模式;T5则是Encoder-Decoder架构的代表作,主要是Google比较感兴趣。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
双向混合单向(正向)单向(反向)

Google在T5和UL2两篇论文中做了较为充分的对比实验,结果均体现出了Encoder-Decoder架构相比于Decoder-only的优势,但由于从LLM的角度看这两篇论文的模型尺度都还不算大,以及多数的LLM确实都是在做Decoder-only的,所以这个优势能否延续到更大尺度的LLM以及这个优势本身的缘由,依然都还没有答案。

从上表可以看出,其实GPT跟UniLM相比才算是严格控制变量的,如果GPT直接跟T5相比,那实际上产生了两个变量:输入部分的注意力改为双向以及参数翻了一倍。而之所以会将它们三个一起对比,是因为它们的推理成本大致是相同的。

相比GPT,既然T5有两个变量,那么我们就无法确定刚才说的Encoder-Decoder架构的优势,究竟是输入部分改为双向注意力导致的,还是参数翻倍导致的。为此,笔者在10亿参数规模的模型上做了GPT和UniLM的对比实验,结果显示对于同样输入输出进行从零训练(Loss都是只对输出部分算,唯一的区别就是输入部分的注意力模式不同),UniLM相比GPT并无任何优势,甚至某些任务更差

假设这个结论具有代表性,那么我们就可以初步得到结论:

输入部分的注意力改为双向不会带来收益,Encoder-Decoder架构的优势很可能只是源于参数翻倍。

换句话说,在同等参数量、同等推理成本下,Decoder-only架构很可能是最优选择。当然,要充分验证这个猜测,还需要补做一些实验,比如Encoder和Decoder依然不共享参数,但Encoder也改为单向注意力,或者改为下一节介绍的正反向混合注意力,然后再对比常规的Encoder-Decoder架构。但笔者的算力有限,这些实验就留给有兴趣的读者了。

低秩问题

突破瓶颈,打造更强大的Transformer - 科学空间|Scientific Spaces

为什么**“输入部分的注意力改为双向不会带来收益”呢?明明输入部分不需要考虑自回归生成,直觉上应该完整的注意力矩阵更好呀?笔者猜测,这很可能是因为双向注意力的低秩问题**带来的效果下降。

Attention矩阵一般是由一个低秩分解的矩阵加softmax而来,具体来说是一个 n × d n×d n×d 的矩阵与 d × n d×n d×n 的矩阵相乘后再加softmax(在NLP问题中 n ≫ d n≫d nd),这种形式的Attention的矩阵因为低秩问题而带来表达能力的下降,具体分析可以参考《Attention is Not All You Need: Pure Attention Loses Rank Doubly Exponentially with Depth》。而Decoder-only架构的Attention矩阵是一个下三角阵,注意三角阵的行列式等于它对角线元素之积,由于softmax的存在,对角线必然都是正数,所以它的行列式必然是正数,即Decoder-only架构的Attention矩阵一定是满秩的!满秩意味着理论上有更强的表达能力,也就是说,Decoder-only架构的Attention矩阵在理论上具有更强的表达能力,改为双向注意力反而会变得不足。

还有个间接支持这一观点的现象,那就是线性Attention在语言模型任务上(单向注意力)与标准Attention的差距,小于它在MLM任务上(双向注意力)与标准Attention的差距,也就是说,线性Attention在双向注意力任务上的效果相对更差。这是因为线性Attention在做语言模型任务时,它的Attention矩阵跟标准Attention一样都是满秩的下三角阵;在做MLM任务时,线性Attention矩阵的秩比标准Attention矩阵更低(线性Attention是 n × d n×d n×d 的矩阵与 d × n d×n d×n 的矩阵的秩不超过d,标准Attention是n×d的矩阵与d×n的矩阵相乘后加softmax,softmax会有一定的升秩作用,参考《Transformer升级之路:3、从Performer到线性Attention》中的“低秩问题”一节及评论区)。

反过来,这个结论能不能用来改进像BERT这样的双向注意力模型呢?思路并不难想,比如在Multi-Head Attention中,一半Head的Attention矩阵截断为下三角阵(正向注意力),另一半Head的Attention矩阵截断为上三角阵(反向注意力);又或者说奇数层的Attention矩阵截断为下三角阵(正向注意力),偶数层的Attention矩阵截断为上三角阵(反向注意力)。这两种设计都可以既保持模型整体交互的双向性(而不是像GPT一样,前一个token无法跟后一个token交互),又融合单向注意力的满秩优点。

笔者也简单做了对比实验,发现正反向混合的注意力在MLM任务上是比像BERT这样的全双向注意力模型效果稍微要好点的:

在这里插入图片描述

全双向注意力与正反向混合注意力的训练曲线比较

好消息是看得出略有优势,间接支持了前面的猜测;坏消息是这实验的只是一个base版本(1亿参数)的模型,更大模型的效果尚未清楚。

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

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

相关文章

欧瑞康oerlikon PECVD 系统 KAI MT R1.0 模块化 操作说明

欧瑞康oerlikon PECVD 系统 KAI MT R1.0 模块化 操作说明

HTML5手机端通用网站模板源码

文章目录 1.设计来源1.1 主界面1.2 文章信息界面1.3 文章列表界面1.4 双列文章列表界面1.5 通用标签界面1.6 联系我界面1.7 折叠框标签界面1.8 相关界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作…

如何给笔记本或台式机顺利升级内存条

先查一下主板还有无剩下卡槽 win r 输入命令 taskmgr 调用后台查看 获取两个关键信息 速度 2666MHZ ,卡槽 2/4 意味着还剩下两个空卡槽 接下来 用鲁大师纯净版查一下主板型号 鲁大师 v5.21.1300 绿色纯净版 - 果核剥壳 (ghxi.com) 查完之后&#xff0…

如何使用双重IP代理实现更安全的网络访问

在进行网络爬虫或其他需要隐匿真实IP的操作时,单一的代理IP有时并不能完全满足我们的需求。为了进一步提高安全性和隐私保护,我们可以使用双重IP代理。本文将详细介绍如何使用Java实现双重IP代理,帮助你在网络环境中更加游刃有余。 什么是双重…

TOMCAT “tom小猫”向你招手!!赶紧学起来!

一、WEB技术 1.1HTTP协议和B/S 结构 操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提供计算服务。…

文件系统 -文件的基本了解

文章目录 一、文件的基本了解1. 文件 内容 属性2. 文件被访问之前,要被打开3. 谁在打开文件? 二、fopen()w 方式打开文件① 基本使用:② 标准重定向: a 方式打开文件① 基本使用:② 重定向: fopen&#x…

Runtime:源码解析Golang 的map实现原理

go version 1.15.6 map作为一种常见的 key-value 数据结构,不同语言的实现原理基本差不多。首先在系统里分配一段连接的内存地址作为数组,然后通过对map键进行hash算法(最终将键转换成了一个整型数字)定位到不同的桶bucket(数组的索引位置),然…

【国产游戏行业的崛起与挑战:技术革新与全球市场机遇】

近年来,国产游戏行业确实取得了显著的发展,不仅在技术水平上不断提升,而且在国际市场上也崭露头角。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍面临一些挑战和机遇。 首先,国产游戏在原创IP方面存在…

Autodesk系列软件批量激活工具出现许可证管理器版本不被支持问题解决方案!

使用Autodesk系列软件批量激活工具时,如果出现许可证管理器版本不被支持。 解决办法: 1、确定您安装的最高Autodesk软件版本。 例如,如果您同时安装了AutoCAD2020和Inventor 2022,那么您应该下载2022版对应的AdskLicensing。 说明&#xf…

汽车信息安全--攻破SecOC,就在今天!

目录 1.SecOC和系统安全? 2.破解实录 2.1 破解安全访问授权 2.2 程序控制的漏洞 3.小结 2020年左右,汽车信息安全开始在业内普及。 对于这种新概念,部分OEM仍采取以往开发模式,在不影响软件架构的大背景下,直接进…

企业级NoSql数据库Redis集群

一、关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类:关系型数据库与 NoSQL 数据库 关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL、Oracle、MS SQL Server 和 …

OpenHarmony中的fastjson gson应该这样用

【问题背景】 随着越来越多的开发者开始投入北向应用的开发,无数的人开始问我:鸿蒙三方库是否有fastjson,是否有gson,当前json和对象的转换要怎么搞。 作为程序员,我的每个项目都逃不掉fastjson/gson等三方库&#x…

C++基础知识5 string

string 1. string类1.1 C语言中的字符串 2. 标准库中的string类2.1 string类(了解)2.2 auto和范围for2.3 string类的常用接口说明 3. string类对象的访问及遍历操作4. string类对象的修改操作5. string类非成员函数6. vs和g下string结构的说明7. string类的模拟实现8.写时拷贝(…

认知杂谈35

今天分享 有人说的一段争议性的话 I 《日常藏宝,多留意》 嘿,你想想看哈,生活里那些让咱佩服得不行的小窍门,其实都藏在咱平常的小事儿里呢。 I 就好比啊,很多有用的道理其实就在咱身边晃悠,就看咱有没有…

nginx访问控制、用户认证、https

nginx访问控制 用于location段 Allow:设定允许哪台或哪些主机访问,多个参数间用空格隔开 Deny:设定禁止那台或哪些主机访问,多个参数间用空格隔开 //deny [rootnginx ~]# vim /usr/local/nginx/conf/nginx.conflocation /stat…

【数据结构篇】~链式二叉树(附源码)

链式二叉树 前言(含头文件)头文件 1.链式二叉树的组成2.前、中、后、层序遍历1.前序遍历2.中序遍历3.后序遍历 3.结点个数以及高度等​4.判断二叉树是否为完全二叉树 前言(含头文件) 之前的堆是特殊的二叉树是顺序结构的二叉树&a…

python库(20):Jsonschema库描述JSON数据的规范

1 Jsonschema简介 在当今信息时代,数据规范与交换变得越来越重要,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于网络通信与前后端数据交互。 JSON Schema是一种用于描述JSON数据的规范…

计算机二级题--函数(scanf)章节

1.scanf函数 1. 2. A:默认使用scanf函数的时候,如果空格,回车或跳格就结束了,不能再继续输入了 (同上知识点)

【JavaEE初阶】HTTP协议与使用Fiddler抓包

目录 🎍HTTP协议是什么? 🍀应用层协议(HTTP)存在的意义 🎄HTTP 协议的工作过程 🌴HTTP 协议格式 🌳Fiddler抓包工具的使用 🚩如何抓HTTPS的包? &#…

“视频号小店分销:让你的微信小店也能分销”

在数字时代的浪潮中,微信视频号利用其深厚的社交根基和庞大的用户基础,正逐渐成为新零售领域的一股新兴力量。特别是其视频号小店功能的推出,为商家提供了一个集商品展示、销售促进和营销策略于一体的全方位运营平台,实现了业务流…