U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

(pytorch进阶之路二)transformer学习与难点代码实现

来源:http://www.tudoupe.com时间:2022-07-01

https://github.com.com/yyz159756/pytorch_learn/tree/main/transformer

文章目录

  • 理解
  • Encoder
  • Decoder
  • word embedding
  • position embedding
  • Attention
  • Encoder self attention mask
  • Intra attention mask
  • Decoder self attention mask
  • Mask loss

理解

变换器和cnn和rnn最大的区别在于其预定的假设(继承偏差)相对较小,没有假设的本地关联(cnn),我们也不假定是有序的建模(rnn),它假设任何位置都可以与其他位置关联。基本上没有假设。其优点是,与cnn和rnn相比,它能更快地学习长期和短期相关性。但对数据量的需求与假设的程度不同。也就是说,越 preconceived假设,越我们把更多的经验注入了我们的生活中,模型就更容易去学,所需数据的数量越小。

因此,我们也不能使用没有大脑的变换器模型。因为假设很少,要使用一个好的变压器模型,根据不同的任务,插入一些与任务有关的假设,例如,关于注意力或损失的机制,或者是模型结构上,根据这些初步假设做一些修改或优化。例如,对于每个位置的注意机制的计算不需要指向整个序列。相反,它瞄准周围的几块牌子,这种假设是局部相关性。

另一个特点是,在注意机制中变换器核心计算的平方复杂度与序列长度的平方是比例的。

主要任务:机器翻译和语音识别

Encoder

主要有以下的组成,position embedding,多头的自我关注,layer norm & residual,传送神经网络

仅编码器模型:bert,分类任务(例如句子情感判断),非流任务

Decoder

主要有以下的组成,position embedding,随意多头的自我关注, layer norm & residual,memory base multi head cross attention(QKV),feedforward neural network

仅解码器模型:GPT模型,语言模型,自回归任务,流模型,

word embedding

嵌入函数是将高维离散符号映射到低维密集符号
假设任务背景:英语翻译到德语,首先我们需要建立一个英语句子源序列和一个目标序列,目标句子是德语,源序列src_seq和目标序列tgt_seq
如何构造一个序列?与NLP联系不应是罕见的。序列字符以字典dict中的索引的形式表示

指定序列长度,假设src和tgt镜头

输出结果: 索引([2, 4]),索引([4, 2]),表示src句子是2和4,tgt句子是4和2,总共是两个句子
在这里插入图片描述

然后我们建造了分数,假设src和tgtdict有最大序列8,是最大字数是8,在列表中随机生成seq,为了 确保 判决 的 期限 是 一致 的,我也需要打padding操作,在功能上使用平板功能,然后通过解压和猫将序列转换为[批量大小,最大len]作为批量输入的 Tensor

输出结果:
在这里插入图片描述

输入完成,中间部分使用 pytorch API, nn.Embedding 进行嵌入
第一个参数是num_embeddings,字数,我们通常采用最大字表大小+1,铺设0
第二个参数是embedding_dim,一个词矢量维度,通常是512,这让我们更容易得到8

在这里插入图片描述

position embedding

注意是你所需要的唯一东西 There is an expression for PE (position embedding), which is basically to convert the information about the position of a word in a sentence into a vector and then add it to WE (word embedding)
在这里插入图片描述

首先,PE是一个二维矩阵:[max_len, dim],最大长度可以匹配 max_source_seq_len,这里指定 max_position_len=5
PE矩阵可以被看作是两个矩阵的乘法(不是矩阵乘法,而是广播每个元素的乘法),一个矩阵是pos(/左),另一个矩阵是i(/右),奇行和偶行分别由罪和cos乘法

构造 n.模组替换重量

为了构造输入,我们需要通过位置索引,这是自然地与范围进行的,最后计算PE

Attention

Encoder self attention mask

自我注意面具面具的目的是去除0的铺垫

面具通常放在软max上,softmax是一个模块函数,输入负无穷输出接近0,因此我们构建的面具矩阵(bool matrix)使用 masked_fill来设置面具元素的分数为负无穷。

面具形状[batch_size, max_src_len, max_src_len], max_src_len是最大句长

我们首先建立一个有效的姿势,增加到max_src_len,用不挤猫的bmm重新形状面具,构造面具泡沫矩阵,最后使用 masked_fill来构造 masked_score

Intra attention mask

内部注意力是解码器块的中间部分,作为查询的解码器目标序列的自注意输出,记住编码器为密钥和值,Q和K计算一个分数,你通过软max获得重量,然后用重量和值加重来补偿,得到一个新的表征,这种表示反应是对目标序列和源序列之间的关联的表示。

在上述解码器的内部注意机制过程中,涉及一个与目标序列和源序列有关的面具

Decoder self attention mask

解码器是一个自回归模型,一旦只预测一个值,将预测值发送回解码器作为输入,并产生第二个输出,从而重复,即每个单词预测是基于以前的单词预测。

因此,为了使训练阶段与推导阶段过程保持一致,我们需要在训练阶段覆盖解码器输入。

如果您直接输入tgt seq到解码器中,您会违反原因和效果,事先知道答案,而且训练是毫无意义的。

因此,训练阶段需要通过解码器输出封锁答案并预测答案,以便它们能够与预测(infer)阶段保持一致。

所以解码器自我注意的面具是一个三角面罩矩阵,第一个输入是特殊字符,第二个输入是特殊字符和目标值,第三个输入是..

Mask loss

手动mask

使用 ignore_mask 参数

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息