transformer原理——个人笔记

知识来源

编码器/解码器注意力的主要思想是允许解码器跟踪输入中的重要单词

以翻译为例,将英文”Let’s go“翻译成其他语言
transformer框架
图1

token:Token是对文本进行切分和组织的最小单位。可以将Token视为单词、短语或其他文本片段的抽象表示。在语言模型中,Token可以是字、词、子词或更大的语言单元

  1. encoder
    上图所示,
    Word embedding:编码成向量
    position:token位置
    Self-attention:编码单词之间的联系
    Residual connections:更好的并行运算
    每个token的权重是相同的,权重可以通过反向传播(即训练 )来得到。图中每个token用两个值来表示
    在这里插入图片描述
    由于后续在预测时容易将token顺序弄混乱,所以加入token的位置。下图是position encoding的编码规则
    在这里插入图片描述
    使用不同频率的余弦函数来为每一个编码后的值添加位置信息。

    ①将位置编码和词向量相加可以得到包含有位置和词信息的值,后经过两个权重得到两个Query值来表示token:“let‘s”,并用它计算与“go”的相似度;
    ②再创建两个值表示“let’s”和“go”,称为key,并用query和key计算二则和相似度(点积),值越大,其越相似
    ③经过softmax函数得到其概率值,也是query与key的相似度
    ④再创建两个值表示“let‘s”,并按照1.0(概率值)的比例进行缩放,叫做Value;再创建两个值表示“go”,并按照0.0的比例进行缩放
    ⑤将缩放值相加,“let’s”和“go”的独立编码根据与“let‘s”的相似度的和,成为“let’s”的自注意力值

注:query、key、value的各个权重的值都是一样的,可以同时计算各个token的权重,transformer可以并行计算
在这里插入图片描述
可以看到,计算出来的自注意力值同样是两个,那么为什么不使用加入位置编码的值来表示“let’s”?

每个词的新自注意力值包含其他所有词的输入,有助于为每个词提供上下文,建立输入中每个词之间的关系,方便扩展(每个自注意力单元QVK有独自的权重,捕捉词之间的关系,论文的多头注意力机制 )

加入残差模块的作用?

更容易训练复杂NN,使得自注意力层在建立输入词之间关系时,不必同时保留词嵌入和位置编码信息

  1. decoder

在这里插入图片描述
与encoder类似,都经历一个自注意力模块,得到两个值。
在进行相似度计算时,将encoder的输出key与decoder的query进行相似度比对。在决定第一个单词应该被翻译成什么时,计算每个输入单词的value,然后按softmax百分比缩放这些值,相加得到编码器/解码器的注意力值。

对比图1看decoder。encoder的输出QVK模块接入全连接层,输出预测的token
在这里插入图片描述
计算Q、V、K的encoder-decoder attention与self-attention的权重集合不同,但相应的权重集合对每个单词都是一致的,使得transformer在输入、输出长度上具有灵活性,可以向堆叠self-attention一样堆叠encoder-decoder attention以跟踪复杂短语中的单词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_41824788

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值