Transformer模型-4-Inputs

news2024/9/24 15:24:29

Encoder的输入层和Decoder的输入层是一样的结构,都是由Token embedding(词向量 word embedding)Positional embedding(位置向量) 组合而成,并到最终的 输入向量x

Transformer引入Positional embedding主要是解决词序问题。因为Transformer不包含任何递归和卷织(不采用RNN的结构),都同时使用流经编码和解码堆栈(全局信息),无法捕捉到序列的顺序信息,因此没有特殊的顺序或位置,单使用Token embedding会存在不知词序的情况。因此Transformer中单词的输入向量x,该x则是由 Word EmbeddingPosition Embedding相加得到。

Embedding时Transformer会提取重要的两个信息:词的意思(Input Embedding) 和 词的位置信息 (Position Embedding), 并将位置信息加入到 Input embedding里面
Word Embedding = Token embedding

word embedding

所谓的词嵌入层 是自然语言处理(NLP)中的一种表达技术,它将词语或短语从词汇表映射到向量的实数空间中。

image.png

处理流程

image.png

送词入模型

首先将每个词的信息放入到模型中,得到的数据维度将为 (batch_size, seq_length, bemedding_size(d_model))

batch_size是批次大小, seq_len是序列长度
embedding_size(d_model):维度,transfomer为512维,BERT是768维

进行预处理 (进行文本填充(PAD)和截断)和 分词等

如上图:不足的用特殊文本PAD填充,截断的信息会造成信息丢失

构建Index词表

同时确定"按字或按词处理"的处理方式,确定维度512维(该维度由所选模型而定,Transformer的整个向量传输都是512维 BERT则是768维)

【词表格式】

  • 行数: 行Id为Index,通过Lookup或查询可以查到唯一的一个字/词。
  • 纵深: 一个字的维度(512维),如上图中第二列的图(如上图,一行10个字,一个字512维,一行共有10*512维,即每一切片都按维度seq_len * embedding_size计算
  • 高度: batchsize,一批样本的批次大小。transformer是按Batchsize处理文字/词的,当所有的文本都转换完成之后,会形成一个高为Batchsize的矩阵,如上上图最右侧的矩阵。,每一切片代表输入的一行文本即一个序列, 如上上图最右则矩阵。

形成矩阵

最后数据会以右侧矩阵的方式输入到模型里(每一行的结构都是 seq_len * embedding_size 的结构,如上一点所述)

总结

经过Embedding后,文本中的每一个字就被转变为一个向量 ,能够在计算机中表示。《Attention is all you need》这一论文中,作者采用的是 512维词向量表示,也就是说,每一个字被一串长度为512的字向量表示。

特征向量工具

将词汇表示成特征向量的方法有多种, 对于要处理的一串文本,我们要让其能够被计算机处理,需要将其转变为词向量,方法有最简单的one-hot或者有名的Word2Vec等,甚至可以随机初始化词向量。本文介绍One-hot和数字表示。

One-hot编码

One-hot编码使用一种常用的离散化特征表示方法,在用于词汇向量表示时,向量的列数为所有单词的数量,只有对应的词汇索引为1,其余都为0。

举个例子,“我爱我的祖国”这句话,总长为6,但只有5个不重复字符,用One-hot表示后为6*5的矩阵,如图所示:

image.png

但是这种数据类型十分稀疏,即便使用很高的学习率,依然不能得到良好的学习效果。

数字表示

数字表示是指用整个文本库中出现的词汇构建词典,以词汇在词典中的索引来表示词汇。所以与其叫做“数字表示”,还不如叫“索引表示”。

举个例子,还是“我爱我的祖国”这句话,就是我们整个语料库,那么整个语料库有5个字符,假设我们构建词典{‘我’:0, ‘爱’:1, ‘的’:2, ‘祖’:3, ‘’:4},“我爱我的祖国”这句话可以转化为向量:[0, 1, 0, 2, 3, 4]。如图所示。这种方式存在的问题就是词汇只是用一个单纯且独立的数字表示,难以表达出词汇丰富的语义。

image.png

主流文本处理工具

现在主流的工具是BPE,在早期用 结巴/Word2vec等需要自己手工切词,自己建词表等。而BPE不需我们建词表等,而且性能更高。

BPE(BytePairEncoding) 是一种用于自然语言处理(NLP)的技术,它可以将较大的语料库压缩到更小的尺寸,以便更好地处理。

BPE的原理是通过查找文本中出现次数最多的字节对(bytepair),然后将它们合并为一个新的字符,从而减少语料库中的字符数量。

BPE现在已经被广泛应用于NLP领域,例如机器翻译、语音识别、自然语言理解等,它可以帮助模型更好地处理大规模的语料库,从而提高模型的性能。

关于中文处理
1.大模型不需要大动词量,特别是百川2等模型出来之后,完全不需要修改中文词表(基本包含全网数据,垂直领域的词也不需要)
2.llama2直接训练,可能需要修改词表。如果需要添加,只需追加

position embedding

Transformer 中除了Word Embedding,还需要使用Position Embedding 表示单词出现在句子中的位置。因为 Transformer 不采用 RNN 的结构,而是使用全局信息,因此是无法捕捉到序列顺序信息的,例如将K、V按行进行打乱,那么Attention之后的结果是一样的。但是序列信息非常重要,代表着全局的结构,因此必须将序列的分词相对或者绝对position信息利用起来。

文本是时序型数据,词与词之间的顺序关系往往影响整个句子的含义。

绝对位置编码

给每个位置的位置信息建模,最简单的实现方式:使用每个词汇的次序 1,2,…,T 作为位置编码信息。

例如,BERT使用的是Learned Positional Embedding(可学习的位置嵌入),先初始化位置编码,再放到预训练过程中,训练出每个位置的位置向量。

绝对位置编码问题解析

绝对位置编码存在一个严重的问题,假如模型最大序列长度为 512,那么预测阶段输入超过 512 的序列就无法进行处理:pos = 1,2,3,...,T-1总结就是 当文本较长时,位置序列没有上界,T位置的编码比0位置的编码大很多,这会导致与 token embedding 合并后出现特征在数值的倾斜和干扰。

归一化同样存在问题 如果对上面的位置序列进行归一化: pos = pos / (1 + T)还是有问题,不同长度的位置编码的步长是不同的,在较短的文本中相邻的两个字的位置编码的差异与长文本中的相邻两个字的位置编码存在数量级上的差异,这会导致长文本的相对位置关系被稀释

1. 念熹编程培训(T=5)
pos() = 1 / 5 = 0.2
pos(熹)= 2 / 5 = 0.4

2. 念熹编程是一家优秀的培训机构,秉承... (T=500)
pos() = 1 / 500 = 0.002
pos(熹) = 2 / 500 = 0.004

相对位置编码 - 使用 sin/cos 函数

相对位置并没有每个输入的位置信息做完整建模,而是在计算Attention的时候考虑当前位置与被Attention的位置的相对距离

由于自然语言一般更依赖于相对位置,所以相对位置编码通常也有着优秀的表现。在Transformer中使用的就是相对位置编码的方式

Transformer引入了相对位置的概念-使用 sin/cos函数,根据上面的讨论,位置编码能满足transformer以下的需求:

1.能够体现词汇在不同位置的区别(特别是同一词汇在不同位置的区别)。
2.能够体现词汇的先后次序,并且编码值不依赖于文本的长度。
3.有值域范围限制。

使用 sin/cos 函数(有界周期函数)来表示相对位置, sin/cos 函数周期变化规律稳定,使得编码具有一定的不变性 。因此,Transformer在不同维度上使用不同的函数来生成位置编码,也就是给位置编码的每一维赋予不同的α,同时区分奇偶维度的函数形式 。

Position Embedding 用 PE表示,PE 的维度与Word Embedding 是一样的。PE 可以通过训练得到,也可以使用某种公式计算得到。在 Transformer 中采用了后者,《Attention is all you need》论文中给出的计算公式:

在这里插入图片描述

其中 pos表示字词的位置,2i表示在512维词向量中的偶数位置,2i+1表示在512维词向量中的奇数位置dmodeld_{model}dmodel​表示词向量的维度(例如为512);公式表达的含义是在偶数的位置使用sin函数计算,在奇数的位置使用cos函数计算。为了表示方式, 用 α 表示分母: 100002i/dmodel10000^{2i}/d_{model}100002i/dmodel​

通过α来调节函数周期,α越大,1/α 越小,sin图像在纵轴方向被“压扁”,周期变长,相邻位置(横坐标)的位置编码差值变小(相邻横坐标对应y值差异减小)。在 sin/cos 函数 [-1, 1] 的值域范围内,如果 α 比较大,相邻字符之间的位置差异体现得不明显;如果 α 比较小,在长文本中还是可能会有一些不同位置的字符的编码一样。

在上式中,不同的维度会有不同的α值,周期从2π到10000*2π,并且区分了奇偶维度的函数形式,这使得每一维度上都包含了一定的位置信息,而各个位置字符的编码值又各不相同。

image.png

但从BERT之后,就没有再用sin与cos的方式,是直接变成可训练的形式,下一章节介绍更好的编码工具。

更优秀的编码方式

从BERT之后,就没有再用sin与cos的方式,从BERT之后是直接变成可训练的形式。目前,已经出现了更优秀的位置编码方式:RoPE(Rotary Positional Embedding)和ALiBi(Attention with Linear Biases),两个都是相对位置编码形式。

RoPE它兼顾了绝对位置信息与相对位置信息,可以不受固定长度限制处理任意长度的序列。其工作原理是,通过一个基于位置的旋转矩阵将每个位置的嵌入旋转到一个新的位置。该方法的优点是可以保持相对位置信息的一致性,在旋转后相邻的位置仍然会有相似的嵌入。

ALiBi能够让Transformer语言模型在推理时可以处理比训练时更长的序列。它在处理文本序列时不使用实际的位置嵌入,而是在计算某个键和查询之间的注意力时,根据键和查询之间的距离对查询可以分配给键的注意力值进行惩罚。当键和查询靠近时,惩罚非常低,当它们远离时,惩罚非常高 —— 动机:靠近的词比远离的词更重要

在大模型时代,我们如何有效的去学习大模型?

现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,下面是我整理好的一套完整的学习路线,希望能够帮助到你们学习AI大模型。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

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

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

在这里插入图片描述

三、AI大模型经典PDF书籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、AI大模型各大场景实战案例

在这里插入图片描述

结语

【一一AGI大模型学习 所有资源获取处(无偿领取)一一】
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

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

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

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

相关文章

开源程序实操:岩土工程渗流问题的有限单元法应用

有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元解法。尽管各类商业软件使用方便,但其使用对用户来说往往是一个“黑箱子”。相比而言,开源的有限元程序计算方法透明、计算过程可控,…

Linux configure.ac:51: error: possibly undefined macro: AC_MSG_ERROR

bug: 解决方法: cd /usr/local/share/autoconf/autoconf  cp *.m4 /usr/share/aclocal

编程语言中的特殊类的设计

文章目录 不能被拷贝的类只能在堆上创建对象的类:方式一方式二 设计类只能创建栈对象实现类, 不能被继承单例模式设计饿汉模式懒汉模式线程安全问题 不能被拷贝的类 c98 只声明(不生成, 编译器默认会生成, 有浅拷贝等的问题), 不实现, 并将其访问设为private c11使用delete来…

Python数据可视化库之bqplot使用详解

概要 在数据科学和机器学习领域,数据可视化是理解和分析数据的重要工具。bqplot 是一个基于 Jupyter Notebook 的 Python 可视化库,专注于交互式数据可视化。它结合了 D3.js 的强大功能和 Python 的易用性,使用户能够在 Jupyter 环境中创建丰富的交互式图表。bqplot 的设计…

如何使用GPT画出带中文的图和表?-已解决GPT画图表出现乱码的问题

众所周知,GPT的中文库有点问题,要求他画带中文的图或表存在中文的时候,就会出现乱码或者方框。 可以发现,GPT的中文库有问题,那么该如何解决这个问题呢? 直接在promote的时候上传你需要它使用的字体&…

高斯混合模型GMM

一、两个角度看GMM 1、从几何角度来看:加权平均值,多个高斯分布叠加而成 纵轴——f(x)概率密度函数,横轴——数据点 2、从混合模型角度看 x:observed variable z:latent variable →对应的样本是属于哪一个高斯分布&…

【SQL】筛选上级经理离职的员工

目录 题目 分析 代码 题目 表: Employees ----------------------- | Column Name | Type | ----------------------- | employee_id | int | | name | varchar | | manager_id | int | | salary | int | ----------------------- 在 SQ…

word文档合并样式问题

word协同工作时,在mac用office编辑后发送给对方进行合并时,出现了一些不该看到的样式。 需要注意的几点: 1、大家均需要使用同样的软件,如office,如果使用wps,会导致新增很多样式。 2、在样式窗格&#…

gitlab SSH的使用

一、 安装git bash https://git-scm.com/download/win 下载windows 版本,默认安装即可。 二、使用命令 打开本地git bash,使用如下命令生成ssh公钥和私钥对 ssh-keygen -t rsa -C ‘xxxxxx.com’ 然后一路回车 (-C 参数是你的邮箱地址) 若是想输入密码可以输入…

浅谈线性表——栈

文章目录 一、什么是栈?二、栈顺序、链式存储时的时间复杂度三、自我实现一个栈3.1、实现代码3.2、熟练使用栈 四、栈的应用场景4.1、不可能的出栈顺序4.2、表达式4.2、OJ题 一、什么是栈? 栈是一种特殊的线性表,他只允许在固定的一端进行插…

直播美颜API与视频美颜SDK的开发指南:构建高效实时美颜工具

在主播美颜的背后,直播美颜API与视频美颜SDK是实现这一切的技术核心。接下来,小编将深入讲解如何开发高效的直播美颜API与视频美颜SDK。 一、视频美颜SDK的概述 视频美颜SDK则是一个开发工具包,提供了完整的美颜功能实现,开发者…

STM32(F103ZET6)第四课:串口中断

目录 需求一、串口中断过程与作用二、中断实现流程1.中断优先级分组2.配置串口中断 三、需求的实现 需求 1.设备上电后四个灯灭。 2.按下KEY1,LED1灯亮,同时串口发送“LED1灯亮”。 3.再次按下KEY1,LED1灯灭,同时串口发送“LED1灯…

大数据计算-SQL优化手段(CBO)-以Flink为例

文章目录 背景理论知识示例结果展示结果解释 背景 大数据计算中,SQL生成的执行计划第一轮会经过固定规则的优化,第二轮会根据原计划,生成多条结合成本的的执行计划,根据cost 进行排序,选出最优的执行计划。 理论知识…

深入调研亚马逊云科技AI平台Amazon Bedrock热门开发功能

国际数据公司(IDC)在2024 年 8 月发布了《 中国大模型平台市场份额, 2023 :大模型元年——初局 》调研报告 。IDC的数据显示,2023年中国大模型平台及相关应用市场规模达惊人的17.65亿元人民币,且科学计算大…

带有音频的ppt导出视频 带有音频的ppt自动播放

之前帮导师申请基金,基金委的要求是提交ppt的讲解视频,这个需求比较容易实现。只要提前把各页的音频录制好,插入对应页,然后直接选择导出-创建视频即可,不需要设置幻灯片自动切换,以及自动换片时间&#xf…

C++ 设计模式——享元模式

C 设计模式——享元模式 C 设计模式——享元模式1. 主要组成成分2. 享元模式内部状态3. 享元模式外部状态4. 逐步构建享元模式4.1 抽象享元类定义4.2 具体享元类实现4.3 享元工厂类实现4.4 主函数 5. 享元模式 UML 图享元模式 UML 图解析 6. 享元模式的优点7. 享元模式的缺点8.…

TMDOG的微服务之路_07——初入微服务,NestJS微服务快速入门

TMDOG的微服务之路_07——初入微服务,NestJS微服务快速入门 博客地址:TMDOG的博客 在前几篇博客中,我们探讨了如何在 NestJS 中的一些基础功能,并可以使用NestJS实现一个简单的单体架构后端应用。本篇博客,我们将进入…

Python 如何进行简单的 GUI 编程(Tkinter)

图形用户界面(GUI)编程是指使用窗口、按钮、文本框等元素与用户进行交互的编程方式。在Python中,Tkinter是一个非常流行的标准库,它使得我们可以轻松地创建和管理图形用户界面。 Tkinter是Python内置的GUI库,它提供了…

Datawhale X 李宏毅苹果书 AI夏令营(深度学习进阶)task1(1.1+1.2)

深度学习的基础 常见的临界点的种类为局部最小值和鞍点 task1.1 1.局部最小值 对于任何目标函数f(x),如果在x处对应的f(x)值小于在x附近任意其他点的f(x)值,那么f(x)可能是局部最小值。如果f(x)在x处的值是整个域中目标函数的最小值,那么…

爬虫中使用第三方打码平台(识别验证码)

引入 在爬虫程序中,常常会遇到验证码校验的关卡,人工识别不仅慢而且很费精力,使用打码平台就成了高效,省时且便利的选择。 本次案例对于高清资源库1080zyk.com进行爬虫采集,使用超级鹰验证码识别(chaojiying.com)和python的requests库具体实现,类似的第…