transformer详解

个人的阅读笔记,观看李宏毅老师的视频记录

基本概念

sequence代表序列

embeddding代表嵌入是一种将高维数据映射到低维空间的技术,其实就是特征提取

Seq2Seq模型

全名为“序列到序列”模型,是一种深度学习模型架构,用于处理序列数据的生成和转换任务。

Seq2Seq模型的基本思想是将一个输入序列转换成一个输出序列。它由两个主要部分组成:编码器(Encoder)和解码器(Decoder)。这两部分可以是循环神经网络(RNN)或长短时记忆网络(LSTM)等循环神经网络的变种,也可以是Transformer等基于注意力机制的模型。

以下是Seq2Seq模型的工作流程:

  1. 编码器(Encoder):接受输入序列并将其转换为一个固定长度的上下文向量(Context Vector),这个向量包含了输入序列的信息摘要。编码器在处理输入序列的同时,也可以用于实现序列的压缩和特征提取。

  2. 上下文向量(Context Vector):这是编码器输出的中间结果,包含了输入序列的语义信息。通常情况下,上下文向量的维度是固定的,独立于输入序列的长度。

  3. 解码器(Decoder):接受上下文向量和一个特殊的起始标记作为输入,然后生成目标序列。解码器通过生成一个标记或词汇的概率分布,然后根据这个分布选择下一个标记,然后将其作为输入进行递归生成,直到生成一个特殊的终止标记或达到最大长度。

 self-Attention

attention就是拿两个向量,看看这两个向量有多匹配,会输出一个分数

在自注意力(self-attention)机制中,"match"(匹配)通常指的是计算一个序列中每个元素与其他元素之间的相关性或权重。自注意力机制用于分配不同元素之间的权重,以反映它们之间的关联程度。

每个input 都要乘上三个不同的transformation

q   match其他人query

k  key to be matched

v information to be extracted

  1. 查询(Query):是需要计算相关性的元素。对于每个查询元素,都会计算它与序列中所有其他元素的相关性。

  2. 键(Key):是用来比较查询元素与其他元素的特征。键元素的特征表示了序列中的信息。

  3. 值(Value):与键元素一一对应,它们包含了与键元素相关的信息。

匹配(match)发生在查询元素和键元素之间,通过计算它们之间的点积(或其他相关性度量),以确定它们之间的相似度或相关性。这个匹配过程的结果将用于分配值元素的权重,以生成最终的自注意力输出。 

dim代表维度,先做attention

 接下来做soft-max激活函数和归一化方法,

  1. 概率分布:Softmax 将输入值转换为概率分布,确保所有输出的值都在0和1之间,并且所有输出的总和等于1。这使得它可以用于表示每个类别的概率,以便进行分类决策。

  2. 类别选择:在多类别分类问题中,Softmax 可以帮助确定哪个类别最有可能是正确的。它将输入的分数或权重值转化为每个类别的概率,然后选择概率最高的类别作为最终的分类结果。

  3. 抑制强信号:Softmax 通常会增强概率最高的类别,并减小其他类别的概率。这有助于确保模型对最有可能的类别有更强的置信度,同时抑制对其他类别的过度自信。

 然后与V进行相乘,在这里,其实b1就是涉及到a1到a4,如果要做local(局部)的话,可以使上一步的attention 输出的值为0

每个q都要跟每个k做attention

 得到所有position(位置)的value

 执行a的平行运算  A 代表attention 

.

然后soft max

最后得到所有layer输出

整个流程



Multi-head Self-attention(多头注意力机制)

将qkv乘上不同的w使得q可以分裂成多个,并且在q乘k再乘v中,只乘以相同的位置的元素

将bi1和bi2连接起来,如果dim有要求,可以乘上w进行降维

有可能不同的head关注的点不一样

有的head想看local的咨询,有的head想看global的咨询

对于self attention的input的那个序列的顺序不重要,因为它做的事情是跟每个input sequence都做self attention,所以对每个时间点来说,并没有位置的信息

但是,我们希望我们可以把所输入的sequence的position考虑进来,所以加入的一个ei,是手设的,人工设置,而且ei代表了位置的咨询,每个位置都有一个不同的ei,比如ai对应一个ei

为什么是相加,而不是contact(连接),

vector代表矢量

TransFormer

其实就是两部分,第一部分encode,第二部分decode

add是将multi-head的input跟output加起来

norm是将得到的b‘进行layer norm

batch norm是将每个batch的u=0,o=1

而layer norm是将每个元素都设置u=0,o=1

encoding部分

"feed forward" 是 transformer 模型中的一个关键组件,具有以下作用:

  1. 非线性变换:Feed forward 层引入了非线性变换,允许模型学习更复杂的函数关系。这有助于模型更好地拟合数据,捕捉输入数据中的复杂模式和特征。

  2. 特征提取:Feed forward 层在编码器和解码器的每个位置上都应用,用于提取输入序列中的相关特征。它将输入序列的表示映射到一个更高维度的中间表示,从而使模型能够更好地理解和处理输入。

  3. 位置信息处理:Transformer 模型是基于自注意力机制(self-attention)的,但它不包含位置信息。Feed forward 层有助于处理位置信息,使模型能够更好地理解输入序列中不同位置的信息。

  4. 卷积操作:在一些变种的 transformer 架构中,feed forward 层采用卷积操作来处理输入数据。这种卷积操作可以捕捉输入数据中的局部模式和特征。

  5. 增加模型深度:通过在多个层次堆叠多个 feed forward 层,可以增加模型的深度,从而提高其表达能力。深度模型通常能够更好地捕捉数据中的抽象特征。

总之,transformer 模型中的 feed forward 层是一个重要的组件,用于引入非线性性、特征提取和位置信息处理,从而提高模型的性能,使其适用于各种序列处理任务,尤其是在自然语言处理中取得了显著的成功。

 decodeing部分

Masked代表在self attention的时候,只会atted到已经产生的sequence

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值