transformer

![[Pasted image 20231014205841.png]]

传统是堆叠RNN这种自回归模型
引入(因为缺少rnn的时序性)位置编码–输入位置信息

注意力机制–通过注意力分数判断一个词的重要性–即需要关注的力度

求注意力分数:

  • q(query–任务内容-----目标序列),k(key-索引),v
  • 注意力分数–
    query,key的相似度
  • 归一化–避免在求相似度(点积)时受到向量大小的影响
    归一化后还要通过softmax计算权重

自注意力机制

注意力机制关注不同句子,看他们词与词之间的对应关系

而自注意力机制则是自己与自己比,查看句子中每个单词与单词的关系
query,key和value都变成了一个相同序列
两个词之间注意力分数越高,关联越高(比如代词指代问题)
做一次子注意力只会关注一种关系(还是例如代词指代关系),但是一个句子通常不会只有一种关系(可能还有情感关系),因此只做一次子注意力时不够的

多头注意力

考虑到词之间关系不可能通过作一次注意力就求出来
因此要扩展到使模型以不同的角度关注不同部分
实现—对qkv分别乘上不同的权重,将归一化除上的d-model映射到多个小维度空间(d-k)
由此得到的多个d-k,为多个小维度空间

即对输入的embedding乘上不同的权重参数形成一个组合,以此将其映射到不同的小维度空间,这样一个组合我们称之为头,每个头并行计算自己的注意力分数

transformer结构

Encoder–将原语句进行分析技术,提取特征放入Decoder
但是在加入encoder之前,需要对序列做加工

  • word Embedding将序列转换为模型所能理解的词向量----指的是内容信息
  • positionEcoding(位置编码)—通过编码放入位置信息

decoder :两个多头注意力层

  1. masked是子注意力
    1. 要注意的是这里面是masked带掩码的,即通过三角矩阵的形式,实现t时刻的模型只能观察到直到t-1时刻的词元
  2. 第二个是比较原语句与目标语句(匹配度),计算注意力分数

Q1:
1. 为什么计算注意力权重之后要和value进行矩阵乘法
1. 将加权后的注意力权重与value进行操作是为了得到最终的注意力输出结果。
在注意力机制中,通过计算注意力权重,我们可以确定在给定的query和key之间,对value的不同部分分配不同的权重。
这些权重反映了query和key之间的相关性或重要性。将这些权重应用于value,可以对value进行加权,以突出与query相关的信息。
通过将注意力权重与value进行操作(矩阵乘法),可以将注意力权重应用于value,从而得到加权后的输出结果。这个输出结果将更加关注与query相关的value部分,同时减少对与query不相关的value部分的关注。这有助于在注意力机制中提取和聚焦于与任务相关的信息,从而提高模型的性能和表现。

B:多少个句子,N:句子有多少个字,d:就是这个字是多少维。
卷积中最后映射成一维bnd,而文本numsteps不定,所以我们要有两层,变成相同的bnd
因为n是可变的,那n跟batch合并,可以保证ffn的dimension d的一致性。可以理解为ffn处理了 n x batch 这样多个token
layer是对每个句子的全部字归一,batch是全部句子的第d个维度归一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值