Transformer架构分析

news2024/9/29 14:22:42

1 encoder

每个称之为一个layer,重复N次
每个里面有两个sublayer;multi-head self-attention +MLP后面使用layer normalization LayerNorm(x + Sublayer(x))
残差连接需要两个维度一致,本文采用513。

2 decoder

3 注意力机制

输出维度和value维度一致
两个向量做内积,表示相似度

一 原文章阅读

二 动态视图

主要内容来自3Bule1Brown
相关blog
# GPT是什么?直观解释Transformer | 深度学习第5章 【3Blue1Brown 官方双语】
GPT—Generative Pre-trained Transformer

1 总体概览

预训练:

  • 模型经历了从大量数据中学习的过程

  • “预”暗示模型能针对具体任务,通过额外的训练进行微调
    Transformer

  • 一种神经网络模型
    Transformer

    |1125


    GPT–重复预测和抽样的过程
    数据在GPT中的流动过程
    |1125
    总体概览(输入与输出):

  • 输入:输入内容被切分为许多小片段,称为Token

    • |500
    • 单词 单词片段
    • 图像 小块图片
    • 音频 一段声音
    • 每个Token对应一个向量,即一组数字;旨在设法编码该片段含义;如果将向量看做高维空间中的坐标,那么意思相近的词,对应的向量往往相近
  • 输出:

    • 对最后一个向量操作,得出所有Token的概率分布
2 背景知识

本视频花时间介绍一些重要的背景知识,这些知识对于机器学习工程师来说,都应该是基本常识。
机器学习采用数据驱动、反馈到模型参数、指导模型行为
机器学习理念:不要试图在代码中,明确定义如何执行一个任务,那是AI发展初期的做法;而是去构建一个具有可调参数的灵活架构,像是旋钮和滑块;然后通过大量的实例和数据,调整各种参数值
线性回归

|875

  • 首先,无论构建任何模型时,输入的格式必须是实数数组
  • 可以是一维数列、二维数组,或者更常见的高维数组,也就是所谓的张量(Tensor)
  • 深度学习中,模型的参数称为权重
  • 参数与待处理数据唯一的交互方式是通过加权和,模型中虽然有非线性函数,但他们不依赖于参数
  • 数学中加权和不会赤裸裸地写出来,而是打包成矩阵乘的形式,本质上是一样的
  • 概念上更直观的方式是将充满可调参数的矩阵想象成能够代表待处理数据的向量进行变换的工具
  • 例如GPT-3中1750亿个参数组成近28000个矩阵,矩阵又分为8类,需要逐一了解各个类别的作用
  • 权重是模型的大脑,是在训练过程中学习到的,决定模型的行为模式
1 嵌入矩阵


每个词对应一列
矩阵WE:就和其他矩阵一样,它的初始值随机,但将基于数据进行学习

为什么嵌入矩阵设置为可调参数

  1. 增加泛化能力:如果设置为固定的,就无法适应特定任务的需求,通过训练,embedding层可以学习到更适合当前任务的词向量表示。例如,在情感分析任务中,某些词汇的情感色彩可能会比它们的一般含义更重要,因此让embedding参数随着训练而调整可以帮助捕捉这种细微差别。
  2. 协同优化:在端到端的训练过程中,embedding层和其他层的参数是共同优化的。这意味着embedding层的学习可以受益于后续层的信息,反之亦然。固定embedding层将切断这种潜在的信息流,可能导致次优解
    为什么嵌入矩阵设置为随机值
  3. 避免局部最小值:找到最优解
  4. 加速收敛:一些研究表明,良好的初始化可以加速训练过程中的收敛速度。例如,He初始化、Xavier/Glorot初始化等方法,都是为了在一定程度上平衡权重矩阵的方差,从而帮助模型更快地学习
  5. 利用上下文信息:对于嵌入层而言,随机初始化允许模型从头开始学习词汇或其他单元的最佳表示,而不是依赖于任何预先存在的假设。这对于训练一个从零开始的新模型尤为重要。
  • 词嵌入
    从几何角度理解向量,并将他们视为高维空间的点

    	import gensim.downloader
    	model=gensim.downloader.Load("glove-wiki-gigaword-50")
    	model["tower"]
    

    其中,glove-wiki-gigaword-50基于2B条推文、27B个令牌、120万个未加套的vocab的预训练得到的向量。



    用空间中一个方向编码性别信息,更有优势

    • 点积
      • 代数上
        所有对应分量相乘然后加和
      • 几何
        • 向量的方向相近,则点积为正
        • 方向垂直,点积为0
        • 向量指向相反,点积为负
        • 举例:cats-cat表示可能表示空间中复数的方向,其与名称复数的点积数据值大于与名词单数的点积;这表示它们在方向上更加对齐
    • 词嵌入的具体方式也是从数据中学来的
    • 嵌入矩阵一列对应一个单词,是模型中的第一组权重
    • 一开始,每个向量都是从嵌入矩阵中拉出来,最开始每个向量只能编码单个单词的含义,没有上下文含义
    • embedding作用
      • 词表包含token数量:50257
      • 每个token维度:12288
  1. Attention 网络
    • 主要目标
      • 使向量获得比每个词更丰富更具体的含义
    • 上下文长度
      • 一次只能处理特定数量的向量,称为上下文长度
      • GPT3上下文长度为2048,流经网络的数据有2048列,每列12288维

      • 上下文长度限制Transformer预测下个词时,能结合的文本量
  2. 最终阶段的处理
    1. 目标输出:下一个可能Token的概率分布
    2. 过程
      1. 每一行对应词库中的一个token
      2. Softmax函数将其归一化为概率分布
      3. 为什么只用最后一个嵌入做预测
        1. 训练过程中效率更高的方法是利用最终层的每一个向量,同时对紧随者这个向量的词进行预测
2 解嵌入矩阵Wu
  1. 和其他权重矩阵一样,初始值随机,但在训练过程中学习;
  2. 他的每一行对应词汇库中的每一个词,每一列对应一个嵌入维度
  3. 与嵌入矩阵相似,只是行列对调

  4. transformer中嵌入矩阵和解嵌入矩阵是同一个矩阵吗
    在Transformer模型中,嵌入矩阵(embedding matrix)和解嵌入矩阵(通常称为投影矩阵或解码矩阵)并不一定是同一个矩阵。具体取决于模型的设计和实现方式。
  5. 嵌入矩阵:这是将输入的离散符号(如词汇索引)映射到连续向量空间的一个矩阵。每个词汇对应一个特定的行向量,这些行向量构成了嵌入矩阵。
  6. 解嵌入矩阵:在一些模型中,特别是在分类任务中,输出层可能会有一个额外的矩阵来将Transformer的最后一层的输出映射回原始词汇空间或其他标签空间。这个矩阵有时被称为投影矩阵或解码矩阵。
    在许多情况下,特别是在机器翻译任务中,输入词汇表和输出词汇表是相同的。这时,为了简化模型并共享参数,可以使用同一个矩阵作为嵌入矩阵和解嵌入矩阵。这种方法的一个好处是可以减少模型参数的数量,从而减少过拟合的风险,并且在实践中也被证明可以提高性能。
    在Transformer的原始论文中提到,对于机器翻译任务,如果输入和输出共享相同的词汇表,则可以在输出层使用与输入嵌入相同的权重矩阵。这意味着在训练过程中,这个矩阵既用于嵌入输入序列,又用于将最终的模型输出投影回词汇空间。这样做可以通过共享输入和输出之间的信息来进一步提升模型性能。
    然而,并不是所有的实现都会这样做。在一些任务中,输入和输出词汇表可能不同,或者即使相同,也可能选择不共享嵌入矩阵以避免潜在的问题。因此,是否使用同一个矩阵取决于具体的应用场景和设计选择。
  • Softmax函数
    • 基本想法
      • 若想将一串数字作为概率分布,比如所有可能得下一个词的概率分布,那么每一值必须介于0-1,并且总和为1
      • 给函数增加一些趣味性
      • 给指数加个分母,常量T,被称为温度
      • 当T较大时,会给低值赋予更多的权重,使得分布更均匀
      • T=0,所有权重给最大值
      • 术语 logits
小节
  • karate kid wax-on-wax-off式基础训练
3 Attention
  • 提问被编码为另一个向量,也就是另一组数字

  • Query矩阵:要计算查询向量,先取一个矩阵Wq,然后乘以嵌入向量

  • Wq内部数值是模型的参数,具体行为模式从数据中学得

  • 可以理解为将嵌入空间中某个方向映射为较小的查询空间的方向,用向量来编码“寻找前置形容词”的概念

  • 每个token算出一个查询向量

  • Q(Query)矩阵:查询矩阵代表了模型想要查询的信息。它是由输入序列的嵌入经过一个线性变换得到的。查询向量反映了输入序列中的每个位置想要获取的信息类型。

  • Key矩阵

  • K(Key)矩阵:键矩阵包含的是每个位置处的信息摘要,它同样由输入序列的嵌入经过另一个线性变换得到。键向量用于匹配查询向量,以确定哪些信息片段应该被关注。

  • 从概念上可以把Key视作想要回答的Query

  • Key矩阵也填满可调参数,类似Q矩阵,将嵌入向量映射到相同的低为维度空间

  • 当键和查询方向相对齐时,认为它们相匹配

  • 用点积表示相关量

  • 分数表示每个词与更新其他词的含义有多相关

  • 分数的用法就是对每一列加权求和,权重是相关性

  • 对每一列使用Softmax函数归一化,用归一化的值填入网络,里面的值称为Attention Pattern

  • 掩码:防止后面的token影响前面的token

  • 其大小等于上下文长度的平方

  • 值矩阵

  • V(Value)矩阵:值矩阵包含了实际的信息内容,它也是通过输入嵌入经过第三个线性变换获得的。一旦确定了哪些信息片段需要关注,值向量就会被用来构建最终的输出。

  • 值向量可以想象成与对应的Key向量相关联

  • key query value矩阵:三种填满了可调参数的矩阵

  • V矩阵:输入与输出都存在于高维的嵌入空间中

  • 如果按照下图的方式,参数太多了 1.5亿个参数

  • 更有效的方式是值矩阵需要的参数量等于键矩阵和查询矩阵的参数量之和

  • 将值矩阵分解为两个小矩阵相乘,整体视为线性映射

  • 右边:将较大的嵌入向量降维到较小的空间中

  • 左边:将较小的向量映射到较大的嵌入空间中

小节
4 多头注意力机制
  • 96个不同的键和查询矩阵,会产生96种不同的注意力模式,每个注意力头有独特的值矩阵
  • 通过并行多头运算,模型能学到根据上下文改变语义的多种方式
  • 多个结构不断迭代;某个词吸收上下文信息后,还有更多机会被周围含义细致的词语影响
  • 修饰,语法结构,情感、语气、诗意、科学原理
三 架构静态分析

词嵌入层可以看做是查找表,用于获得每个单词的向量表示
|500
|500
|425

乘法可能产生爆炸效果,通过开平方让得分缩放

|625
Softmax–较低的得分收到抑制,较高的得分得到增强。模型对于关注的词更有信息

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

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

相关文章

华为OD机试 - 匿名信(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布

2024年9月29日,MeterSphere开源持续测试工具正式发布v3.3版本。 在这一版本中,接口测试方面,接口导入功能支持导入Postman、JMX、HAR和MeterSphere格式的文件,接口场景的自定义请求步骤支持cURL快捷导入;测试管理方面…

大数据实时数仓Hologres(一):Hologres 简单介绍

文章目录 Hologres 简单介绍 一、什么是实时数仓 Hologres 二、产品优势 1、专注实时场景 2、亚秒级交互式分析 3、统一数据服务出口 4、开放生态 5、MaxCompute查询加速 6、计算存储分离架构 三、应用场景 搭建实时数仓 四、产品架构 1、Shared Disk/Storage &am…

sql注入工具升级:自动化时间盲注、布尔盲注

项目地址:https://github.com/iamnotamaster/sql-injecter 给我之前写的sql注入脚本进行了一些升级,此文章就是对升级内容的分析,升级内容如下: 使用占位符foo来填充payload里需要经常修改的部分 自动判断循环 支持爆破和二分查…

UE4_Niagara基础实例—6、蓝图与粒子系统的通信

效果图: 分析: 通过键盘按键来修改粒子系统粒子的大小。 步骤: 1、粒子系统使用上一个实例的粒子系统,大体参数如下: 参数都是乱调的,自己可以随意设置,只注重方法而不在意好看,汗…

求5X5的次小值/次大值

我们知道,求最大值和最小值是比较容易的,就是通过分组判断,然后再次比较即可求出,那么求出次小值/次大值怎么实现呢,本文提供一个设计的思路。 以5x5为例,求出次小值, 第一步,先分…

H5 随机身份证号码、社会统一信用代码、手机号、名字、银行卡号码

平时注册可能会用到这些,原本用自己服务器搭了个,感觉纯前端的还能引入到项目中挺好的,之后再追加一些常用的随机数据,这样写表单应该就会好测试了(●’◡’●)。 在线链接 https://linyisonger.github.io/H5.Examples/?name./07…

华为OD机试 - 箱子之字形摆放(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

【vue3】防抖与节流

1.防抖 (多次触发 只执行最后一次) 作用: 高频率触发的事件,在指定的单位时间内,只响应最后一次,如果在指定的时间内再次触发,则重新计算时间防抖类似于英雄联盟回城6秒,如果回城中被打断&…

基于Next.js和TailwindCss的TailwindCss

最近在研究 Next.js 和 TailwindCss ,这两天没事的时候就搞了一个 c。 目前工具部署在 Vercel ,欢迎各位体验(能提出意见更好嘿嘿) 体验地址: https://icon.999872.xyz/ 图片预览 👇

DRF实操学习——商城

DRF实操学习——商城 1. 商城模型的设计2. 优化商品分类表1. 序列化器和查询集的优化2. 得到指定类目的所有商品 商品表1. 视图的基础权限等配置2. 增加上传商品图片的接口3. 优选商品接口 分析: 商品分类表商品表商品图片表:一个商品有多张图片 1. 商城…

(undone) MIT6.824 Lab1

参考:http://nil.csail.mit.edu/6.824/2021/labs/lab-mr.html task1: 熟悉讲义,尤其是搞明白如何运行测试程序(完成) ------------------------------------------------ start 先看 Introduction 我们的目标:构建一个MapReduce系统。 细节&…

数据结构_2.2、顺序表插入删除查找

1、线性表的顺序存储表示定义: 线性表:是具有相同数据类型的n (n≥0)个数据元素的有限序列 顺序表:用顺序存储的方式实现线性表 顺序存储:把逻辑上相邻的元素存储在物理 位置上也相邻的存储单元中&#…

前端大模型入门:实战篇之Vue3+Antdv+transformers+本地模型实现增强搜索

本文将之前的文章,实现一个场景的实战应用,包含代码等内容。利用纯前端实现增强的列表搜索,抛弃字符串匹配,目标是使用番茄关键字可以搜索到西红柿 1 准备工作 1.1 了解llm和web开发 web端的ai开发参考 前端大模型入门&#xff…

MPI程序实例:数值积分(π值计算)

目录 一、算法介绍 二、代码实现 一、算法介绍 本程序实例通过下面的公司计算定积分的近似值: (1) 其中为积分区间数,为积分步长,为积分区间的中点,被积函数。 假设总进程数为p(程序中的numprocs变量)&a…

判断JDK是否包含某个class

问题描述:今天遇到个问题,把oracle替换为openjdk,应用启动时,提示noclassdeffounderror 解决办法:先确认下环境里的jdk里是否包含这个class,进入jdk安装目录的/jre/lib,执行命令:ja…

tar命令:压缩、解压的好工具

一、命令简介 用途: tar​ 命令用于创建归档文件(tarball),以及从归档文件中提取文件。 标签: 文件管理,归档。 特点: 归档文件可以保留原始文件和目录的层次结构,通常使用 .tar ​…

每日OJ题_牛客_HJ108求最小公倍数_C++_Java

目录 牛客_HJ108求最小公倍数_C_Java 题目解析 C代码 Java代码 牛客_HJ108求最小公倍数_C_Java 求最小公倍数_牛客题霸_牛客网 题目解析 A 和 B 的最小公倍数 A * B / 两者的最大公约数。最大公约数&#xff1a;辗转相除法。 C代码 #include <iostream> #includ…

C语言—顺序表(含通讯录项目)

目录 一、顺序表的概念及结构 二、顺序表的分类 &#xff08;2.1&#xff09;静态顺序表 &#xff08;2.2&#xff09;动态顺序表 三、动态顺序表的实现 &#xff08;3.1&#xff09;基本结构定义 &#xff08;3.2&#xff09;初始化和销毁 &#xff08;3.2.1&#xff0…

【MWORKS专业工具箱系列教程】控制系列工具箱第四期:时域分析

本工具箱教程以控制系统模型创建、分析与设计流程为主线&#xff0c;通过大量示例介绍MWORKS控制系统工具箱的功能和具体使用。共计10篇文章&#xff0c;上一篇主要介绍了控制系统连接与化简。 同元软控&#xff1a;【MWORKS专业工具箱系列教程】控制系 列工具箱第三期&#x…