TransFormer相关
2025-1-2
| 2025-1-3
0  |  Read Time 0 min
type
status
date
slug
summary
tags
category
icon
password
参考:

LSTM

notion image

Seq2Seq

notion image

Attention

notion image

Transfomer

transformer是对Attention的进一步利用,也是在NLP中获得巨大影响力的一个结构模块

Encoder

Word Embedding

首先学习embbeding,词嵌入,它将一个单词转化为一个向量形式
  • 中间通过的神经网络用激活函数进行代替
notion image

Positional Encoding

需要进行单词之间的单词顺序的输入,这里的位置输入向量是复数个不同 的sin或者是cos函数在相同地方的值
  • sin和cos函数的宽度是越来越宽的
notion image
然后将两个向量进行相加,获得了存在位置关系的向量值
notion image

Self-attention

self-attention表示的是关于同一个输入中,相互之间的关系(或者说是权重)
  • 比如:对于以一个句子作为输入的情况,单词与单词之间的关系就是self-attention所关注的
  • 计算自身单词和其他所有单词(包括自身)的相关性
计算self-attention,涉及到三个指标
  • Query
  • Key
  • Value
每次计算score:
  • 自身的Query和要比较的向量的key进行计算,获得的结果进行SoftMax,获得权重
  • 计算自身Value与比较向量的Value,与权重分别向乘获得最终score
notion image
注意:
  • 计算QueryKeyValue的时候,权重 参数是共用的
  • 可以使用复数的self-attention模块,来获取复数attention值,这个流程叫做Multi-Head Attention
    • notion image

Residual Connections

和其他网络中的残差理论一样,这里需要添加残差,添加的是我们的位置embedding
notion image

Decoder

获取Decoder值

对Decoder来说,结构上和encoder几乎一样,之所以说是几乎,是因为还是存在一点区别:
  • Key、Value、Query三个权重矩阵的值和encoder是不一样的

获取Encoder-Decoder值

由于对于Decoder来说,不止需要自身自身参数计算attention值,还要与encoder中的参数做attention
notion image
然后我们将这个attention value经过一个全连接层,就能得到最后的结果
notion image

Transformer(矩阵理解)

开始理解在矩阵方面的transformer步骤,便于理解transformer代码

Encoder

Word Embedding

可以从下图看出对于一个token转为二维向量的情况下,从矩阵方面是这么实现的
  • 目的是一个二维embedding的时候,我们的词向量是一个one-hot编码的列向量
    • 向量表示都是列向量表示
  • 右乘一个权重矩阵
    • 这个权重矩阵中每一行表示相同的词向量的权重(相同颜色表示)
notion image
 
 

Positional Encoding

这一步就是添加位置参数,相同行代表同样的位置
  • 相同行的值代表从不同sin、cos函数中相同x值提取的y值,详细看前文
notion image

Self-Attention

在计算self-attention时,也是进行右乘矩阵,对于Key、Query、Value的计算
  • Key
    • 注意结果矩阵,每一行是每一个token的相应值
notion image
  • Value
notion image
  • Query
notion image
然后是计算相似score,这个值是一个标量,但是用矩阵表示每一个标量结果的集合
  • 注意是用的右 ,是key矩阵的转置矩阵
  • 结果矩阵需要进行一次缩放,缩放值d是每一个Token的维度
notion image
对Attention的公式来说,还需要进行SoftMax,之后再和Value矩阵进行相乘
  • SoftMax在这里是针对结果的每一行进行一次SoftMax
notion image
notion image

Residual Connection

添加残差
notion image

Decoder

对于Decoder来说,和encoder有一点不同的地方,在于Self-Attention中的公式
其他模块几乎相同,按揭不表

Self-Attention

notion image
看看这个公式,重点在于其在计算相似score的时候,使用了Mask
为什么要使用Mask?假设这只是一个普通的语言翻译NLP,在进行decoder的时候,input是以下token,由<SOS>开始,在<EOS>结束
notion image
所以重点:
  • 对于第一个输入来说,<SOS>不需要知道后面的单词的相似score,这样更加不会被其他因素影响
    • 所以将矩阵中,第一个<SOS>对应后面的相似分遮掩住,让他不被影响
    • notion image

Encoder-and-Decoder Attention

计算encoder和decoder之间的attention,同样是需要一组Key、Value、Query
  • 重点:Query来自Decoder,Key和Value来自Encoder
    • 都是self-Attention加上残差之后的结果
  • 右乘的三个矩阵是单独为这个阶段初始化的矩阵,和Decoder和encoder阶段的矩阵不一样
notion image
Attention计算公式
notion image
notion image
notion image
后面就是添加残差和进行全连接层了
notion image
  • 知识学习
  • 神经网络
  • 四川大学网络空间安全学院考研经验贴Mit6.5840 Lab1笔记
    • Giscus
    • Cusdis
    Catalog