BERT模型入门系列: Attention机制入门

Attention模型在NLP领域用的风生水起,但是一直对attention模型的基本原理不理解,看了很多别人的文章,似乎是看懂了,但实际上在真正理解起来的时候,就是没办法说出个所以然来,所以用自己的理解方式来写一篇。

Encoder-Decoder模型

说起Attention模型,就不得不先说一下seq2seq模型,seq2seq解决的问题,简单说来就是解决一个句子映射到另外一个句子的问题,例如下面的应用场景:

机器翻译:待翻译的文本序列–>翻译文本序列

语音识别:声学特征序列–>识别文本序列

问答系统:问题描述单词序列–>生成答案单词序列

文本摘要:文本序列–>摘要序列

而基础的seq2seq模型主要包括Encoder、Decoder、以及固定长度的语义向量。Encoder-Decoder模型在《Sequence to Sequence Learning with Neural Networks》中提出。以机器翻译为例,展示一下Encoder-Decoder模型的基本原理

Encoder和Decoder是神经网络,可以是RNN或者LSTM等,我们以RNN为例,将模型展开,其流程如下图所示

Encoder

[公式][公式][公式][公式] 是输入序列,如若是机器翻译任务,那么 [公式][公式][公式][公式] 就是输入待翻译的词语。

Encoder是神经网络,可以是RNN、LSTM等。

以RNN为例,RNN的当前隐藏状态是上一个输入的隐藏状态和当前输入决定的,所以:

当前RNN隐藏节点状态计算

[公式]

[公式] 表示RNN当前隐藏状态

[公式] 表示上一个输入的隐藏状态

[公式] 表示当前的输入

在输入结束, 得到了所有输入的隐藏层状态后,生成最后的语义向量C

语义向量C计算

[公式]

语义向量C是一个固定长度的向量,这个向量会作为Decoder的输入。

Decoder

同样,Decoder部分可以是RNN,也可以是LSTM,Decoder部分的输入是Encoder输出。 [公式][公式] 就是decoder解码出来的结果,如果是机器翻译任务,那么这个就是机器返回出来的结果。

这个阶段中,给定的语义向量 [公式] 和已经生成的输出序列 [公式][公式] 、…、 [公式] ,预测下一个输出单词yt

[公式]

也可以写作

[公式]

[公式] 为RNN的隐藏状态,那么,可以简写成

[公式]

即当前的输出 [公式] 有上一个输出 [公式] 、上一个输出的隐藏状态 [公式] 、Encoder输出的语义向量 [公式] ,经过 [公式] 函数运算得到,其中 [公式] 是一个非线性的神经网络,在这里为RNN

但是,这种方式存在缺陷: 由于Encoder编码输出的语义向量是固定长度,对于比较长的输入,会有部分信息丢失,导致Decoder出来的结果不佳,针对这个问题,KyungHyun Cho等人对Encoder-Decoder模型进行改造,提出了早期的Attention模型(NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE)。

Attention模型:

为了解决固定长度语义向量导致的信息丢失问题,KyungHyun Cho等人引入了Attention模型,Attention模型的机制与人类翻译文章的思路相似,都是关注于要翻译的词,结合上下文进行翻译。Attention模型会寻找源语句对应的几个词,结合已经翻译出来的词语做相应的翻译。例如:我们翻译机器学习的时候,当翻译到机器的时候,Attention的注意力会集中在“机器”,这样,Decoder就可以看到Encoder的每个词的信息,而不局限于固定长度的隐藏向量而导致信息丢失。

具体流程如下:

对于一个句子 [公式][公式] 、…、 [公式]

1、输入序列编码,先用某种方法获的词语的向量,再输入到Encoder中进行编码,得到编码后的向量,这里记为 [公式][公式] 、…、 [公式] ,在这里,其中编码方式我们可以用RNN或者LSTM等,这里还是以RNN为例。

2、注意力权重的计算,为方便记录,定义注意力权重为 [公式],Decoder后的向量为 [公式][公式] 、…、 [公式] , 其中i为句子输入序列的下标

对于当前需要decoder的向量qi,其对应的注意力权重 [公式][公式] 、…、 [公式] 通过一个函数

[公式] 计算得到,我们也可以把Decoder后的向量当作Query,解码后的向量为字段,这里,我们就是用query查找字段对应权重的过程

3、计算语义向量 [公式][公式] (其中, [公式] 为注意力权重, [公式] 为Encoder得到的向量)

4、Decoder下一个输出 根据语义向量C,上一个Decoder的输出、上一个Decoder输出的隐藏状态,预测下一个输出

加入了Attention机制后,增加了两点不同之处

1、每次Decoder一个词的时候都需要计算一次注意力权重

2、每Decoder都需要重新计算语义向量 [公式]

计算注意力权重,需要两个信息:

  • Encoder后得到的向量[公式][公式] 、…、 [公式],这个向量包含了解码后所有单词的信息,我们可以把它当作一个字典
  • 第i-1个decoder得到的向量[公式]

以第一个例子进行讲解,

首先、输入文本“机器学习”经过RNN的Encoder之后,得到了隐藏状态[公式][公式][公式][公式]

第二步进行注意力权重计算,此处刚开始,还没有Decoder的隐藏状态, [公式] 一般是固定的start token

在得出注意力权重后,根据Encoder得到的隐藏状态[公式][公式][公式][公式],以及相应的注意力权重计算得到语义向量 [公式] ,最后Decoder得到结果machine

Decoder第二个词的时候,步骤也是一样的,不同的是计算注意里权重的时候,使用的是Decoder的得到的隐藏状态 [公式]

那这里问题来了,这个函数_F_是什么函数呢?一般,计算注意力权重有以下的方法

  • Bilinear方法

[公式]

用一个权重矩阵直接建立 [公式][公式] 的关系映射,比较直接,且计算速度较快。

  • Dot Product

[公式]

这个方法更直接,省掉了权重,直接建立 [公式][公式] 的关系映射,优点是计算速度更快了,且不需要参数,降低了模型的复杂度。但是需要 [公式][公式] 的维度要相同。

  • scaled-dot Product

[公式]

上面的点积方法有一个问题,就是随着向量维度的增加,最后得到的权重也会增加,为了提升计算效率,防止数据上溢,对其进行scaling。

Talk is cheap, show me the code!!!下一篇将会努力实现模型。

如何学习大模型 AI ?

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

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

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

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

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

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

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓

在这里插入图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值