大模型基础之注意力机制和Transformer

news/2024/11/8 15:01:16/

【注意力机制】

核心思想:在decoder的每一步,把encoder端所有的向量提供给decoder,这样decoder根据当前自身状态,来自动选择需要使用的向量和信息.

【注意力带来的可解释性】

decoder在每次生成时可以关注到encoder端所有位置的信息。

通过注意力地图可以发现decoder所关注的点。

注意力使网络可以对齐语义相关的词汇。

【注意力机制的优势】

RNNs顺序计算阻碍了并行化

论文:Attention is all you need

【Transformer的结构】

概览encoder-decoder结构

把句子/单词序列切分成一个个的单元,每个单元叫做token,通过embedding幻化为一个向量。

输入层:token的byte pair encoding+token的位置向量(表示它在文本中的位置)

中间模型结构:一些编码和解码块的堆叠。

输出: 一个在词表上的概率分布

损失函数:交叉熵

【输入层:BPE + PE】

BPE byte pair encoding一种分词算法

解决了OOV(out of vocabulary)问题,把罕见字词和未知词编码为字词,例如用一些词根组合来表示。

PE:位置编码

因为不像RNN顺序依次处理每个单词,所以要把位置信息编码后喂给模型。

input=bpe+pe

以上就是论文中比较经典的图啦,对于小白来说太复杂了,暂时不建议深究。

【对transformer的感性认识】

作为一个实用主义者,为了更好的理解和方便后续应用大模型,此处粗略从感性角度讲一下,不妥之处请大拿评论区斧正。

【tansformer由两部分组成】

Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。

如论文中图1所示:Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block。橘黄色部分为 Multi-Head Attention(多头注意力),是由多个 Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

【自注意结构和多头注意力结构】

图2左边是 Self-Attention 的结构,右边是多头,即Self-Attention 重复N遍。

Self-Attention 的结构,在计算的时候需要用到矩阵Q(查询),K(键值),V(值)。而Q,K,V正是通过 Self-Attention 的输入层(词嵌入表示+位置编码)进行线性变换得到的。

其中有个操作时:每个词的Q矩阵都要与其他每个单词的K进行内积,我猜以此来表征句子中每个单词间关系,同时通过权重来反映“注意力”落在了哪里。

那多头就是重复N次自注意力结构的结算,Transformer 中 Multi-Head Attention 中有多个 Self-Attention,可以捕获单词之间多种维度上的相关系数 attention score。

Feed Forward 层比较简单,是一个两层的全连接层,将高维变低维度,方便后续的分类或其他任务。

【decoder块】

1、自底向上方法第一个多头的是masked多头,就是遮盖的意思,在生成第i个词的时候遮住第i个以后的词。它的输入是:样本输出句子编码矩阵/翻译后的句子编码矩阵+masked矩阵。

2、自底向上方法第二个多头矩阵和encoder里的多头计算基本一致。 主要的区别在于其中 Self-Attention 的 K, V矩阵不是使用 上一个 Decoder block 的输出计算的,而是根据 Encoder 的输出 C计算得到 K, V,根据上一个 Decoder block 的输出 Z 计算 Q

这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息。

原理的知识暂且分享到这里,后面以更加实用的应用知识为主。

课后阅读:

transformer模型详解


http://www.ppmy.cn/news/665763.html

相关文章

C++ Primer Plus笔记: 2023.06.30

1.C新手在指定结构成员时,搞不清楚何时应使用句点运算符,何时应使用箭头运算符。如果结构标识符是结构名,则使用句点运算符,如果标识符是指向结构的指针,则使用箭头运算符。 2.输出char *类型的指针指向的字符数组的地…

【C语言初阶(6)】猜数字游戏

文章目录 1. 游戏描述2. 代码结构2.1 菜单函数2.2 游戏函数2.3 主体函数 3. 代码实现 1. 游戏描述 电脑自动生成一个1-100以内的数字。我们输入一个我们猜的数字。如果我们猜的数字比电脑随机生成的数字大,那么输出(猜大了),反之…

如何在微信小程序中下载APP?

方案you 1、官方api接口;——目前小程序官方未提供专门下载APP的接口;小程序目前是不允许将流量导出到APP之外,所以合理推断,该方案短期内并不可行。 2、通过web-view在小程序内打开网页,然后提供触发下载功能&#xf…

微信表情包下载保存到本地,(新版微信可用)简单教程

问题:微信新版无法保存表情包(微信表情包加密),且微信网页版不能登录 方法一: 1、登录你的企业微信、添加外部微信联系人(自己的微信号) 2、微信(自己的微信号)向企业…

让微信扫描直接下载你的APK

去年在做一个项目的时候,用微信扫描apk下载失效,显示空白页,网上找找发现在后面加一个字符串即可,于是简单搞定。过了一阵子,今年不行了,我的敏捷个人下载二维码也失效了,今天和大家说一下&…

微信视频号下载视频工具3.0,实测有效免费保存!

1.首先下载提供的绿色特别版软件,安装之后,按照以下步骤操作: ①下载后运行,每次运行会检测网络适配器,请耐心等待安装完成; ②接着会弹出一个升级提示,直接无视X掉它即可; ③接着进…

微信开发者工具下载使用

一.搜索微信开发者工具,到官网下载 https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 二.下载git代码拉取工具,将需要调试的代码拉到指定的位置。 git clone -b master https://codeup.aliyun.com/5fdb2f0a99b59ba3c5ead6c7…

在微信里面打开APP下载链接

这个问题我查看了许多资料,最后总结一下: 我首先看了IOS端微信关于下载app的整个逻辑: 关于公众号里面关于微官网里面的app下载,如果你将你的应用中在微信开发平台认证过来,这个是要掏钱的;你点微官网app…