Transformer: Attention is all you need

news2024/11/17 23:50:52

Transformer于2017年提出,最开始应用于NLP领域,随着Transformer的快速发展,在视觉领域中也越来越多的论文或应用用到了Transformer,这里记录一下自己学习的一些知识点。
PDF: 《Attention Is All You Need》
Code: attention-is-all-you-need-pytorch

一、前置知识

1.1 注意力机制

Transformer内部采用自注意力机制,注意力机制介绍可参考:https://www.cnblogs.com/xiaxuexiaoab/p/18302563
在这里插入图片描述

1.2 LayerNorm

不同于图像领域采用BatchNorm,NLP中每个样本的时序数据长度可能不一致,所以LayerNorm在文本处理中更常用,每个样本自己算均值和方差。LayerNorm可参考:https://www.cnblogs.com/xiaxuexiaoab/p/18325271
在这里插入图片描述

1.3 位置编码

将位置信息附加到原有词向量上,Transformer中采用的是正余弦函数计算绝对位置编码,更多的位置编码方式可以参考:https://0809zheng.github.io/2022/07/01/posencode.html
在这里插入图片描述

二、Transformer

首先对Transformer进行一个简单的认识,直接来一张论文原图。Transformer采用Encoder-Decoder架构,包含Input、Encoder、Decoder、Output几部分,其中Encoder由N个相同的模块按顺序组成,模块里面包含多头注意力、残差连接、LayerNorm以及前向推理等小模块;Decoder也由N个相同的模块组成,如果把中间一个红色子模块遮挡住(后续会介绍,先简单理解成一个模)就和Encoder一致了。
在这里插入图片描述

至此心里应该有个大体框架,接下来我们在进一步介绍Input、Encoder、Decoder、Output四个部分。

2.1 Input

原始输入的是句子或者一段语音,经过编码后得到词向量Input Embedding(可以编为OneHot编码,或者采用Word2Vec编码)。再通过位置编码得到位置向量Positional Encoding,最后将位置信息和原始词向量进行相加,实现位置信息附加到词向量上,能增加额外的位置信息,进而帮助模型更好地理解输入的顺序。
在这里插入图片描述

位置编码

在这里插入图片描述

论文中按照上式计算出绝对位置编码,其中pos表示词的索引,d表示词向量的维度,奇数位采用余弦值,偶数位采用正弦值。更多的编码方式可以参考:位置编码

两边输入的区别

左边Encoder的输入和上面说的一致,就是原始信息的词向量 + 位置编码。
右边是Outputs向右偏移作为输入是咋回事呢? 就是右边Decoder的输出依赖于前一个输出值。举个语音识别的例子应该就清楚了。
在这里插入图片描述

左边原始信息是一段语音(真实意思是机器学习),右边经过符号位BEGIN后预测得到第一概率最大的词为“机”,那么预测值“机”又会作为下一个预测时的输入,依此类推不断向右偏移,直到预测结束。

2.2 Encoder

在这里插入图片描述

论文中N设为6,也就是Encoder采用6个相同的模块,第一个模块词向量+位置编码作为输入,经过Multi—Head Attention后输出维度和输入一致,然后在把输出与输入通过残差连接在一起并对其进行LayerNorm,之后经过前向网络后再进行一次残差连接和LayerNorm,第二个模块以第一个模块的输出作为输入,依此类推,第6个模块的输出作为最终Encoder的输出。

Multi-Head Attention

Self Attention是考虑了所有输入向量的信息,其作用相当于权重的重新分配(输入向量越相关其对应的权重越大),输出向量数量和输入向量数量保持一致。可以参考self Attention
在这里插入图片描述

论文中采用的是多头注意力,就是几个注意力进行拼接,做的一点修改是除了一个key的维度。
在这里插入图片描述

其输出可以用下式表达:
在这里插入图片描述

Add & Norm

这里的Add是指残差连接,最先出现在ResNet,可以有效防止网络退化。
在这里插入图片描述

Norm是指LayerNorm
在这里插入图片描述

Feed Forward

有两个线性层组成,两个线性层之间加入ReLU激活函数。
在这里插入图片描述

2.3 Decoder

在这里插入图片描述

论文中N也是设为6,这里和Encoder不同的地方在于第一个子模块中多头注意力出现了Mask,第二个子模块中嵌入了Encoder的输出,第三个子模块和Encoder中一样。

Masked Multi-Head Attention

前面分析了Decoder的输入依赖于前一个节点的输出,因此这里不像Encoder那样可以看到所有输入信息,而是只能看到之前的信息,所以引入Mask来遮挡住后面的数值,即如果对第i个节点进行处理,这把第i个以后的输入全部不考虑(置为0即可)。

Encoder怎么和Decoder模块连接

第二个子模块连接了Encoder的输出,具体而言就是将Encoder的输出经过矩阵后生成相应的K和V,然后Decoder中子模块的输出作为Q,中间在按照注意力进行进行连接输出。这种也称作Cross Attention。还是以之前语音识别的例子来展示。
在这里插入图片描述

cross attention可以参考:Listen, attend and spell: A neural network for large vocabulary conversational speech recognition 以及Cross Attention Source of image

2.4 Output

在这里插入图片描述

这个就想对简单了,Decoder的输出经过一个线性层得到的特征向量再通过softmax激活函数得到输出的概率值。

三、相关细节

3.1 如何知道预测的长度

前面分析了Decoder的预测依赖于前面的输出,可以像一个序列一样一直延伸下去,那问题点在于在不知道结果的情况下如何确定输出的长度。通常有两种方式。

  • 通过网络预测一个输出长度
  • 给定一个上限值,再忽略掉END标志位之后的输出

第一种通常需要引入额外的网络对输出长度进行预测,这里还是以之前语音识别的例子讲下第二种,引入END标志位,当预测的标志位概率最大时停止。
在这里插入图片描述

3.2 训练和推理

主要区别在于训练时OutPuts是采用的真实结果,而推理时采用的是真实的预测值作为下一个的输入。那这就出现了一个问题:推理时不知道真实输出,训练采用真实输出,如何处理这中间的差异,换句话就是训练看到的是全对的,而预测有可能错,预测错一个对后续会有影响?

一个措施是采用Scheduled Sampling,也就是在训练的时候人为加入一些噪音。更多内容可以参考:

  • Original Scheduled Sampling
  • Scheduled Sampling for Transformer
  • Parallel Scheduled Sampling

3.3 并行化体现在哪里

采用自注意力机制相比于RNN一个优点是可以并行化处理数据,那这里并行化又如何体现了,Encoder里面一次性输入全部句子,所以不管训练还是推理都可以并行,但是在Decoder部分推理依赖于前面的输出,所以推理时Decoder是没办法并行处理的,而训练时采用正常值作为输入,借助Masked可以实现并行。

  • Encoder: 训练和推理都可以并行
  • Decoder: 训练时可以并行,推理时不能并行

3.3 位置编码还有哪些

位置编码的作用是将位置信息附加到原有词向量之上,提供模型额外的位置信息。
在这里插入图片描述

参考Transformer中的位置编码(Position Encoding)还有更多的位置编码方式。
在这里插入图片描述

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

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

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

相关文章

【HTML5】html5开篇基础(3)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

带您了解《人工智能机器视觉应用工程师》

人工智能机器视觉应用是指利用人工智能技术和机器视觉技术相结合,使机器能够像人类一样通过视觉感知和理解环境,从而实现各种应用。随着人工智能技术的不断发展,机器视觉应用在各个领域得到了广泛应用。 在工业制造领域,人工智能机…

Unity3D入门(三) : Android和Unity3D交互 - Android调用Unity

1. 前言 上篇文章,我们讲了如何在Unity3D中过渡地切换相机视角。这篇文章,我们来讲一下Unity3D怎么与Android交互。 1.1 unity和Android的三种通信方式 Unity官方提供的接口 : 有一个弊端,它有一个传输内容量的一个限制,传输内…

Java---异常及处理

一.异常 1.概念 程序的非正常执行。高级语言都有异常处理机制(C,Java) 2.一般处理异常的方法 Scanner sc new Scanner(System.in);System.out.println("请输入一个数字:");String s sc.nextLine();if (s.matches("[0-9]&qu…

数据结构 - 排序算法

一.冒泡排序 /*** description: 冒泡排序* param - a : 要进行排序的数组的指针* param - length : 数组中元素的个数* return : 无 */ void Bubble_sort(int *a,int length) {int temp,i,j;for(i 0;i < length -1;i){for(j…

基于SpringBoot+Vue的小儿推拿培训管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目

一、源码特点 smm VUE电影售票管理系统是一套完善的完整信息管理类型系统&#xff0c;结合SSM框架和VUE、redis完成本系统&#xff0c;对理解vue java编程开发语言有帮助系统采用ssm框架&#xff08;MVC模式开发&#xff09;&#xff0c;系 统具有完整的源代码和数据库&#…

Vue devtools 插件

一、安装 去这下载https://chrome.zzzmh.cn/ 打开chrome的扩展程序 再打开开发模式 把刚才下载的拖到这里 然后把它固定到工具栏 就是这样了。 二、使用 程序通过open on live server后&#xff0c;打开开发者工具&#xff0c;找到vue就可以了。 这是代码 <div id"ap…

C++ 基础入门-命名空间、c++的输入输出、缺省参数、函数重载、引用、内联函数超详细讲解

这篇文章主要对c的学习做一个基础铺垫&#xff0c;方便后续学习。主要通过示例讲解命名空间、c的输入输出cout\cin&#xff0c;缺省参数、函数重载、引用、内联函数&#xff0c;auto关键字&#xff0c;for循环&#xff0c;nullptr以及涉及到的周边知识&#xff0c;面试题等。为…

遍历递归数结构,修改里的disabled值

返回参数中新增字段 disabled,后端给的值为1和2, disabled1时&#xff0c;代表该节点需要置灰&#xff0c;不可选中 现在需要将disabled的值,改为布尔类型; 后端给的数结构是对象类型,tree接收数组类型; 先将对象类型的数据,遍历递归,修改里面的disabled值,最后再加[ ],改为…

Magnific推V2图像生成服务 可直出4K图像

人工智能 - Ai工具集 - 集合全球ai人工智能软件的工具箱网站 近日&#xff0c;AI图像处理领域再迎重大突破&#xff0c;Magnific推出的V2图像生成服务引领行业潮流。此次升级&#xff0c;不仅使Magnific从高端软件跻身为顶级AI图像生成器&#xff0c;更彰显了其在技术创新及用…

html+css+js实现Progress 进度条

实现效果 代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>progress</title><st…

动手学深度学习(李沐)PyTorch 第 4 章 多层感知机

4.1 多层感知机 隐藏层 我们在 3.1.1.1节中描述了仿射变换&#xff0c; 它是一种带有偏置项的线性变换。 首先&#xff0c;回想一下如 图3.4.1中所示的softmax回归的模型架构。 该模型通过单个仿射变换将我们的输入直接映射到输出&#xff0c;然后进行softmax操作。 如果我们…

5V继电器模块详解(STM32)

目录 一、介绍 二、模块原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 relay.h文件 relay.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 继电器(Relay)&#xff0c;也称电驿&#xff0c;是一种电子控制器件&#xff0c;它具有控制系统…

力扣75道热门算法题 第一天

1768、交替合并字符串 题解&#xff1a; class Solution {public String mergeAlternately(String word1, String word2) {int m word1.length(),n word2.length();int i 0, j 0; //双指针遍历两个数组StringBuilder sb new StringBuilder(); //生成一个StringBuilder对象…

如何禁止电脑上某个软件运行?电脑设置禁止运行软件的4个方法速成

在日常使用电脑的过程中&#xff0c;可能会遇到需要禁止某些软件运行的情况。 无论是为了防止员工随意使用与工作无关的软件&#xff0c;还是为了管理孩子的电脑使用时间&#xff0c;禁止特定软件运行都是有效的解决方案。 下面介绍4个速成方法&#xff0c;帮你轻松禁止电脑上…

AlmaLinux 9 安装mysql8.0.38

文件下载 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.39-linux-glibc2.12-x86_64.tar 选择合适系统版本 下载后解压 tar -xvf mysql-8.0.39-linux-glibc2.12-x86_64.tar解压后里面有三个文件夹 使用mysql-8.0.39-linux-glibc2.12-x86_64.tar.xz即可&#xff0c…

《牧神记》PV初体验,玄机科技再塑经典国漫

2024年9月26日《牧神记》动画版在Bilibili正式宣布定档于10月27日&#xff0c;并在各大社交媒体平台上发布系列精美海报&#xff0c;瞬间点燃了广大动漫爱好者的热情与期待&#xff01;作为一个长期关注国产动画的漫迷&#xff0c;我对玄机科技的作品一直抱有很高的期待&#x…

Ubuntu 16.04安装填坑记录

一. 问题描述&#xff1a; &#xff08;1&#xff09;Ubuntu 16.04使用USB启动盘安装时&#xff0c;出现"try ubuntu without installation"或“install ubuntu”选择&#xff0c;Enter选择安装后&#xff0c;显示器黑屏无任何显示。 原因分析&#xff1a; 显示黑…

26:WDG看门狗

WDG看门狗 1、看门狗的简介2、独立看门狗3、窗口看门狗4、独立看门狗代码5、窗口看门狗代码 1、看门狗的简介 1、看门狗的作用是监控程序的运行状态。当程序因为设计漏洞、硬件故障、电磁干扰等原因&#xff0c;出现卡死或跑飞现象时&#xff0c;看门狗能及时复位程序&#xf…