草履虫直呼看懂了!最系统、最透彻的Transformer!!

要想系统而又透彻地理解 Transformer,至少要遵循下面这样一个思路(步骤):

  1. 首先,了解一些NLP领域的基本知识,比如文本是如何被表征的,序列文本信息的处理,基于(深度神经网络)的语言模型是如何处理自然语言的;

  2. Transformer主要解决了什么问题。重点关注的方面有(自)注意力机制,多头注意力,Transformer的内部结构;

  3. 动手实现一个Transformer应用。

第一点属于要求掌握一些背景知识,而第三点是有意向深入学习,甚至想在实践中用Transformer做点什么的人去关注。

在正式介绍之前,我这里有一份包含32个细分变体的2023最新Transformer及其变体论文仓库,绝对可以满足你学习Transformer的所有需求,如果你需要的话,可以让我的小助手无偿分享给你~

下面进入正题:

什么是 Transformer?

一切源于2017年谷歌Brain团队那篇鼎鼎大名的文章“Attention Is All You Need”(注意力就是你所需要的一切),就是这篇文章提出了Transformer网络结构。

Transformer的意义体现在它的长距离依赖关系处理和并行计算,而这两点都离不开其提出的自注意力机制。

首先,Transformer引入的自注意力机制能够有效捕捉序列信息中长距离依赖关系,相比于以往的RNNs,它在处理长序列时的表现更好。

而自注意力机制的另一个特点时允许模型并行计算,无需RNN一样t步骤的计算必须依赖t-1步骤的结果,因此Transformer结构让模型的计算效率更高,加速训练和推理速度。

Transformer最开始应用于NLP领域的机器翻译任务,但是它的通用性很好,除了NLP领域的其他任务,经过变体,还可以用于视觉领域,如ViT(Vision Transformer)。

这些特点让Transformer自2017年发布以来,持续受到关注,基于Transformer的工作和应用层出不穷。包括当下最热门的AI大语言模型/聊天机器人,比如ChatGPT、文心一言、Bard等等。

这些AI大模型能生成“真假难辨”的新闻、专业论文等等,跟人类进行对话,生成代码等一系列复杂的任务。

比如,就拿这个题目的问题去问ChatGPT。我想让它给一个没有深度学习、nlp领域知识的人介绍Transformer,看他如何作答。

如果觉得还是有不少专业词汇不理解,重新让它更通俗的解释Transformer。

既然提到ChatGPT,就多说几句。大家要学会利用好ChatGPT这个“老师”。对于很多领域,ChatGPT所掌握的知识深度都超过了一个本科生(甚至更高)的水平。

像我上面这个例子只是最简单的使用ChatGPT的方法,其实ChatGPT的能力远不止这些。

说回到问题,上面提到,Transformer中最重要的一个方面是自注意力机制,那么到底应该如何理解这个概念呢。

什么是注意力机制

首先来看注意力机制(Attention)用来干嘛?

我们人类在感知环境的时候(比如看一张图像或者一个句子),大脑能够让我们分清那部分是重要的,哪部分是次要的,从而聚焦更重要的方面以获得对应的信息。

而我们在设计神经网络模型的时候,希望模型也能具有这样的能力。例如,预测一个句子中的单词时,使用一个注意力向量来估计它在多大程度上与其他元素相关。

简单的说,注意力机制描述了(序列)元素的加权平均值,其权重是根据输入的query和元素的键值进行动态计算的。具体地,在注意力机制中,有4个概念需要明确。

  • Query:Query(查询)是一个特征向量,描述我们在序列中寻找什么,即我们可能想要注意什么。

  • Keys:每个输入元素有一个键,它也是一个特征向量。该特征向量粗略地描述了该元素“提供”什么,或者它何时可能很重要。键的设计应该使得我们可以根据Query来识别我们想要关注的元素。

  • Values:每个输入元素,我们还有一个值向量。这个向量就是我们想要平均的向量。

  • Score function:评分函数,为了对想要关注的元素进行评分,我们需要指定一个评分函数f该函数将查询和键作为输入,并输出查询-键对的得分/注意力权重。它通常通过简单的相似性度量来实现,例如点积或MLP。

由此,权重通过softmax函数计算得出:

下图直观描述注意力如何作用在一系列单词上。对于每个单词,都有一个键和一个值向量。使用评分函数(在本例中为点积)将query与所有键进行比较以确定权重。最后,使用注意力权重对所有单词的值向量进行平均。(为了简单起见,softmax 没有可视化。)

大多数注意力机制在使用哪些query、如何定义键、值向量,以及使用什么评分函数方面有所不同。

Transformer 架构内部应用的注意力称为自注意力(self-attention)。在自注意力中,每个序列元素提供一个键、值和query。对于每个元素,根据其query作用一个注意力神经层,检查所有序列元素键的相似性,并为每个元素返回一个不同的平均值向量。

自注意力机制

自注意力背后的核心概念是缩放点积注意力(Scaled Dot Product Attention)。目标是建立一种注意力机制,序列中的任何元素都可以关注任何其他元素,同时仍能高效计算。

点积注意力将一组查询Q,键K和值V(三者矩阵尺寸为T*d,T为序列长度,d为查询、键或值的维度)。点积注意力的计算方法如下:

多头注意力

缩放点积注意力让模型对一个序列进行“关注”。然而,序列元素通常需要关注多个不同方面,并且单个加权平均值并不是最佳选择。这就是提出多头注意力机制(Multi-Head Attention)的根源,即相同特征上的多个不同的(查询,键,值)三元组。

具体来说,给定一个查询、键和值矩阵,我们将它们转换为h个子查询、子键和子值,然后分别输入给点击注意力模型,最后连接头部并将它们与最终的权重矩阵组合起来。

在这里插入图片描述

多头注意力的一个关键特征是它相对于输入具有置换同变性(permutation-equivariant)。因此,多头注意力实际上不是将输入视为序列,而是视为一组元素。这一特性使得多头注意力模块和 Transformer 架构适用广泛。

然而,可能很多人也想到了,如果输入的顺序对于解决任务(例如语言建模)实际上很重要怎么办?答案是对输入特征中的位置进行编码。

Transformer编码器

最初,Transformer 模型是为机器翻译而设计的。它是一个编码器-解码器结构,其中编码器将原始语言的句子作为输入并生成基于注意力的表征。而解码器关注编码信息并以自回归方式生成翻译的句子,就像 RNN 一样。

编码器由N个相同的模块组成,输入x首先通过上面提到的多头注意力块。使用残差连接将输出添加到原始输入,每一次都有归一化操作。

残差连接在 Transformer 架构中至关重要

1、首先,与 ResNet 类似,Transformers 层级很深。某些模型的编码器中包含超过 24 个blocks。因此,残差连接对于模型梯度的平滑流动至关重要。

2、如果没有残余连接,原始序列的信息就会丢失。多头注意力层忽略序列中元素的位置,并且只能根据输入特征来学习它。删除残余连接意味着该信息在第一个注意层之后(初始化之后)丢失,并且使用随机初始化的查询和键向量,位置i的输出向量与其原始输入无关。注意力的所有输出都可能表示相似/相同的信息,并且模型没有机会区分哪些信息来自哪个输入元素。

归一化层在 Transformer 架构中也发挥着重要作用,它可以实现更快的训练速度。

除了多头注意力之外,模型中还包括一个小型全连接前馈网络,应用于每一个block。它增加了模型的复杂度,并允许单独对每个序列元素进行转换。


位置编码

上面已经提到过,多头注意力模块是置换同变性的,并且无法区分一个输入是否出现在序列中的另一个输入之前。然而,在语言理解等任务中,位置对于解释输入单词非常重要。因此可以通过输入特征添加位置信息。Transformer通过向输入的每个嵌入(embedding)中添加一个向量完成位置编码(position encoding)。

学习资源

最后,介绍几个比较优秀的Transformer的论文解读和教程,供大家参考。

1、Transformer: A Novel Neural Network Architecture for Language Understanding

谷歌官方团队在Transformer刚出来时的一篇博客,重点关注Transformer在机器翻译领域的应用。

下面的动画展示了如何将 Transformer 应用到机器翻译中。用于机器翻译的神经网络通常包含一个编码器,读取输入句子并生成它的表示。然后,解码器逐字生成输出句子,同时参考编码器生成的表示。Transformer 首先为每个单词生成初始表示或嵌入。这些由未填充的圆圈表示。然后,使用自注意力机制,它聚合来自所有其他单词的信息,根据整个上下文生成每个单词的新表征,由实心球表示。然后对所有单词并行重复此步骤多次,连续生成新的表征。

如何学习大模型 AGI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

-END-


👉AGI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

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

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

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

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

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

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

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

👉AGI大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉AGI大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值