生成式AI和LLM的革命:Transformer架构

近年来,随着一篇名为“Attention is All You Need”论文的出现,自然语言处理(NLP)领域经历了一场巨大的变革。2017年,在谷歌和多伦多大学发表了这篇论文后,Transformer架构出现了。这一架构不仅显著提升了NLP任务的性能,还引发了生成式人工智能能力的爆炸性增长。

Transformer架构的强大之处

Transformer架构的核心优势在于其能够学习句子中所有单词的相关性和上下文,而不仅仅是相邻单词之间的关系。通过应用注意力权重,模型可以学习输入中每个单词与其他单词的相关性,无论它们在输入中的位置如何。这使得模型能够理解句子的整体意义和上下文,从而提高了语言编码的能力。

“The teacher taught the student with the book.”以这句话为例,Transformer架构中,会学习每个单词之间的相关性,并且得到注意力权重。
下图是注意力图,有助于说明每个单词与其他单词之间的注意力权重。

Transformer架构的组成部分

最直接的就是拿出这张最经典的图表了,来自 “Attention is All You Need”论文。

编码器(Encoder)和解码器(Decoder)

Transformer架构分为两个主要部分:编码器(Encoder,上图左边)和解码器(Decoder,上图右边)。把上边的图简化一下:

标记化(Tokenization)和嵌入层(Embedding Layer)

在将文本输入模型进行处理之前,首先需要对单词进行标记化(Tokenization),因为大模型处理的是Token,不是单词。这一步将单词转换为数字,这个数字就是通常说的Token。

重要的是,一旦你选择了一个标记器(tokenizer)来训练模型,你在生成文本时必须使用相同的标记器(tokenizer)。

下图是两种不同的tokenizer:

然后,输入将被传递到嵌入层(Embedding Layer),该层是一个可训练的高维向量空间(trainable vector embedding space),每个Token表示为一个向量并占据该空间内的唯一位置。

下图是一个Embedding Layer的例子,每个TokenID被映射到这个向量空间的一个向量(Vector)上,论文中这个向量(Vector)的大小是512.

大模型将嵌入空间中彼此接近的Token联系起来,并且将Token之间的距离计算为一个角度,数学地理解语言。

当将Token Vector添加到编码器或解码器的基础时,同时还添加了位置编码(positional encoding)到Postiion embedding中。通过添加位置编码,保留了有关单词顺序的信息,不会丢失句子中单词位置的相关性。一旦将输入令牌和位置编码相加,就会将结果向量传递给自注意力层(Self-Attention Layer)。

自注意力机制(Self-Attention Layer)

自注意力机制是Transformer架构的关键特性之一。该层分析输入序列中令牌之间的关系,使模型能够关注输入序列的不同部分,从而更好地捕捉单词之间的上下文依赖关系。

多头自注意力(Multi-Head Self-Attention)

Transformer架构实际上具有多头自注意力(Multi-Head Self-Attention)。这意味着多个自注意力权重(attention weights)集(或称头)是并行独立学习的,每个头会学习语言的不同方面。例如,一个头可能关注句子中人物实体之间的关系,另一个头可能关注句子的活动,第三个头可能关注单词是否押韵。

全连接前馈网络( Fully-Connected Feed-Forward Network)

所有的注意力权重(attention weights)应用到输入数据后,输出将通过一个全连接的前馈网络(Fully-Connected Feed-Forward Network)进行处理。该层的输出是一个逻辑向量,与标记器词典(tokenizer dictionary)中每个Token的概率得分成比例。

然后,这些逻辑值被传递到一个softmax层,归一化为每个单词的概率得分。这个输出包括词汇表中每个单词的概率,所以这里可能有成千上万的分数。

Transformer架构的革命性影响

Transformer架构的出现改变了NLP的游戏规则。它不仅解决了传统RNN架构的局限性,还显著提高了生成式任务的性能。通过并行处理输入数据,并利用更大的训练数据集,Transformer架构能够高效地扩展使用多核GPU进行训练。更重要的是,它能够学习并关注处理单词时的语义,这一点在《Attention is All You Need》论文中得到了详细阐述。

总结

Transformer架构已经成为现代NLP任务的基础。通过其独特的自注意力机制和多头注意力,Transformer不仅提高了模型对语言的理解能力,还大大增强了生成式人工智能的能力。随着技术的不断发展,我们可以期待Transformer架构将在更多领域发挥更大的作用。

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

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

相关文章

【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator

ERROR: Failed building wheel for jupyter-nbextensions-configurator 目录 ERROR: Failed building wheel for jupyter-nbextensions-configurator 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我…

第 3 章 数据和 C

目录 3.1 示例程序 3.1.1 程序中的新元素 3.2 变量与常量数据 3.3 数据: 数据类型关键字 3.3.1 整数和浮点数 3.3.2 整数 3.3.3 浮点数 3.4 C 语言基本数据类型 3.4.1 int 类型 1. 声明 int 变量 2. 初始化变量 3. int 类型常量 4. 打印 int 值 5. 八进制和十六进…

Linux I2C驱动程序

Linux I2C驱动 前言 主要目的记录一下我在野火的i.MX6ULL mini开发板上面编写了一个Linux I2C设备驱动去驱动SSD1306 OLED屏幕的开发过程。源码用的是野火提供的内核源码。 SSD1306 OLED和I2C接口 这块OLED屏幕大家应该都比较熟悉了,小巧迷你,DIY很好…

习题2.24

没啥好说, 先看解释器给出的结果 说起来也简单,这是一个多层的列表,第一个元素是1 第二个元素是(2 ( 3 4)) 第二层第一个是2 第二个是 (3 4) 第三层第一个是 3 第二个…

stm32入门-----ADC模数转换器(理论篇——上)

目录 前言 一、ADC模数转换器 1.简介 2.ADC的结构 3.输入通道 4.转换模式 5.触发控制 6.数据对齐 7.转换时间 8.校准 前言 本期就开始学习ADC模数转换器,这个大家在学习51单片机的时候应该就接触过了,实际上就是把模拟电压转换为…

YOLOv5改进 | 卷积模块 | 即插即用的递归门控卷积gnConv

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

认识到自己的无知,需要一定的智慧

知识本是补药,却被变成毒药——“新无知”的三种表现 今天,一个人如果把评书、演义、宫廷剧当作真实历史,把当年从教科书上学来的过时理论当做“观世界”的金科玉律,并以此嘲笑别人“无知”的,属于典型的“新古人”—…

线程的同步和优先级

文章目录 前言一、优先级和同步各是什么?二、使用方法 1.线程的优先级2.线程的同步总结 前言 线程不仅可以实现代码的单线程运行和并发运行,在线程安全的情况下,还可以实现共同处理相同的系统资源。该篇文章还介绍了开发者如何设置线程运行的…

【数据结构】单链表带头双向循环链表的实现

一、链表的概念及结构 1.链表的概念 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 2.链表的结构 一般讲的链表包括数据域和指针域: 二、链表的种类 实际中链表的结构…

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架同时支持云、边…

fatal: refusing to merge unrelated histories

出现本地仓库和远程仓库的代码合并不兼容问题,解决方法: 添加--allow-unrelated-histories,让git允许提交不关联的历史代码。 成功提交:

gitee的fork

通过fork操作,可以复制小组队长的库。通过复制出一模一样的库,先在自己的库修改,最后提交给队长,队长审核通过就可以把你做的那一份也添加入库 在这fork复制一份到你自己的仓库,一般和这个项目同名 现在你有了自己的库…

git 学习总结

文章目录 一、 git 基础操作1、工作区2、暂存区3、本地仓库4、远程仓库 二、git 的本质三、分支git 命令总结 作者: baron 一、 git 基础操作 如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库. 1、工作区 存放项目代码的地方,他有两种状态 Unm…

Vue3时间选择器datetimerange在数据库存开始时间和结束时间

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

《GPT-4o mini:开启开发与创新的新纪元》

在科技发展的快速进程中,OpenAI 推出的 GPT-4o mini 模型如同一阵春风,给开发者们带来了新的希望和机遇。它以其卓越的性能和极具吸引力的价格,成为了行业内热议的焦点。 当我首次听闻 GPT-4o mini 的消息时,内心充满了好奇与期待…

详解Mysql InnoDB引擎 04

文章目录 1. InnoDB 简介2. 逻辑存储结构2.1 表空间 idb文件2.2 段2.3 区 1M2.4 页 16KB2.5 行 3. 架构3.1 内存结构3.1.1 Buffer Pool 缓冲池3.1.2 Change Buffer 更改缓冲区3.1.3 Adaptive Hash Index3.1.4 Log Buffer 3.2 磁盘结构 4. 后台线程5. 事务原理5.1 redo log 重做…

运行python项目出现ModuleNotFoundError: No module named ‘sklearn‘问题

问题1:ModuleNotFoundError: No module named sklearn 1.WindowsR键,输入cmd,进入命令行窗口 2.安装sklearn,使用清华镜像安装: python -m pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple …

算法学习day22

一、函数的独占时间 给你一个进程数量,和运行日志。运行日志log的格式为:进程id:(start/end):运行时间 其中一个进程运行时可以被另一个优先级较高的进程抢占cpu。求每个进程独占cpu的时间。 输入:n 2, logs ["0:start:0","1:start:…

Spring Boot - 优雅实现支持通配符和IP段的IP访问黑白名单机制

文章目录 CodeIpAccessInterceptoraddInterceptor工具类配置文件 application.yml单元测试 Code 废话不多说,直接上码 IpAccessInterceptor package cn.cloud.bus.module.servicebus.framework.ipconfig;import cn.cloud.bus.module.servicebus.util.IpFilterUti…