当前位置: 首页 > news >正文

自助建站基础工作主要包括郑州百度推广代运营

自助建站基础工作主要包括,郑州百度推广代运营,宁波网站建设就业方向,点的排版设计网站【备注】部分图片引至他人博客#xff0c;详情关注参考链接 【PS】query 、 key value 的概念其实来源于推荐系统。基本原理是#xff1a;给定一个 query#xff0c;计算query 与 key 的相关性#xff0c;然后根据query 与 key 的相关性去找到最合适的 value。举个例…【备注】部分图片引至他人博客详情关注参考链接 【PS】query 、 key value 的概念其实来源于推荐系统。基本原理是给定一个 query计算query 与 key 的相关性然后根据query 与 key 的相关性去找到最合适的 value。举个例子在电影推荐中。query 是某个人对电影的喜好信息比如兴趣点、年龄、性别等、key 是电影的类型喜剧、年代等、value 就是待推荐的电影。在这个例子中query, key 和 value 的每个属性虽然在不同的空间其实他们是有一定的潜在关系的也就是说通过某种变换可以使得三者的属性在一个相近的空间中。 1.综述 Transformer是一个利用注意力机制来提高模型训练速度的模型。关于注意力机制可以参看这篇文章trasnformer可以说是完全基于自注意力机制的一个深度学习模型因为它适用于并行化计算和它本身模型的复杂程度导致它在精度和性能上都要高于之前流行的RNN循环神经网络。那什么是transformer呢你可以简单理解为它是一个黑盒子当我们在做文本翻译任务是我输入进去一个中文经过这个黑盒子之后输出来翻译过后的英文。那么在这个黑盒子里面都有什么呢里面主要有两部分组成Encoder 和 Decoder当我输入一个文本的时候该文本数据会先经过一个叫Encoders的模块对该文本进行编码然后将编码后的数据再传入一个叫Decoders的模块进行解码解码后就得到了翻译后的文本对应的我们称Encoders为编码器Decoders为解码器。那么编码器和解码器里边又都是些什么呢细心的同学可能已经发现了上图中的Decoders后边加了个s那就代表有多个编码器了呗没错这个编码模块里边有很多小的编码器一般情况下Encoders里边有6个小编码器同样的Decoders里边有6个小解码器。 我们看到在编码部分每一个的小编码器的输入是前一个小编码器的输出而每一个小解码器的输入不光是它的前一个解码器的输出还包括了整个编码部分的输出。整个的transformer流程图如下 2.embedding 对于要处理的一串文本我们要让其能够被计算机处理需要将其转变为词向量方法有最简单的one-hot或者有名的Word2Vec等甚至可以随机初始化词向量。具体的实现细节参考本人博客Word2vec词向量文本分析详解经过Embedding后文本中的每一个字就被转变为一个向量能够在计算机中表示。《Attention is all you need》这一论文中作者采用的是512维词向量表示也就是说每一个字被一串长度为512的字向量表示。3.Positional Encoding 首先为什么需要位置编码我们对于RNN在处理文本时由于天然的顺序输入顺序处理当前输出要等上一步输出处理完后才能进行因此不会造成文本的字词在顺序上或者先后关系出现问题。但对于Transformer来说由于其在处理时是并行执行虽然加快了速度但是忽略了词字之间的前后关系或者先后顺序。同时Transformer基于Self-Attention机制而self-attention不能获取字词的位置信息即使打乱一句话中字词的位置每个词还是能与其他词之间计算出attention值因此我们需要为每一个词向量添加位置编码。那么位置编码如何计算这是《Attention is all you need》论文中给出的计算公式。pos表示字词的位置2i表示在512维词向量中的偶数位置2i1表示在512维词向量中的奇数位置dmodel表示词向量的维度例如为512公式表达的含义是在偶数的位置使用sin函数计算在奇数的位置使用cos函数计算如下图。得到512维的位置编码后我们将512维的位置编码与512维的词向量相加得到最终的512维词向量作为最终的Transformer输入。4.Encoder 放大一个encoder发现里边的结构是一个自注意力机制加上一个前馈神经网络。5.self-attention 首先self-attention的输入就是词向量即整个模型的最初的输入是词向量的形式。那自注意力机制呢顾名思义就是自己和自己计算一遍注意力即对每一个输入的词向量我们需要构建self-attention的输入。在这里transformer首先将词向量乘上三个矩阵得到三个新的向量之所以乘上三个矩阵参数而不是直接用原本的词向量是因为这样增加更多的参数提高模型效果。对于输入X1(Thinking)乘上三个矩阵后分别得到Q1,K1,V1同样的对于输入X2(Machines)也乘上三个不同的矩阵得到Q2,K2,V2。那接下来就要计算注意力得分了这个得分是通过计算Q与各个单词的K向量的点积得到的。我们以X1为例分别将Q1和K1、K2进行点积运算假设分别得到得分112和96。 将得分分别除以一个特定数值8K向量的维度的平方根通常K向量的维度是64这能让梯度更加稳定。 将上述结果进行softmax运算得到softmax主要将分数标准化使他们都是正数并且加起来等于1。 将V向量乘上softmax的结果这个思想主要是为了保持我们想要关注的单词的值不变而掩盖掉那些不相关的单词例如将他们乘上很小的数字。步骤结果如下图将带权重的各个Z向量加起来至此产生在这个位置上第一个单词的self-attention层的输出其余位置的self-attention输出也是同样的计算方式。将上述的过程总结为一个公式就可以用下图表示其中dk一般取64在上面的案例中有两个序列“Thinking”“Machines”那么X矩阵第一行表示“Thinking”第二行表示“Machines”X矩阵是2×512维。权重矩阵WQWKWV都是512×64维的【这里的64 512 / 8 8表示论文中作者定义多头个数】因此得到的Query、Keys、Values三个矩阵都是2×64维的。得到Query、Keys、Values三个矩阵后计算Attention Value步骤如下a. 将Query(2×64)矩阵与Keys矩阵的转置(64×2)相乘【作者论文中采用的是两个矩阵点积当然还可以采用其他方式计算相似度得分余弦相似度MLP等】得到相关性得分score(2×2)b. 将相关性得分score / 根号下(dk)dk64是矩阵Keys的维度这样可以保证梯度稳定c. 进行softmax归一化将相关性评分映射到0-1之间得到一个2×2的概率分布矩阵αd. 将概率分布矩阵α与Values矩阵进行点积运算得到(2×2) ⊙ (2×64) 2×64 维的句子Z。6.MultiHead-attention 为了进一步细化自注意力机制层增加了“多头注意力机制”的概念。 对于多头自注意力机制我们不止有一组Q/K/V权重矩阵而是有多组论文中使用8组所以每个编码器/解码器使用8个“头”可以理解为8个互不干扰自的注意力机制运算每一组的Q/K/V都不相同。然后得到8个不同的权重矩阵Z每个权重矩阵被用来将输入向量投射到不同的表示子空间。在Transformer中使用的是MultiHead Attention其实这玩意和Self Attention区别并不是很大。先明确以下几点然后再开始讲解a. MultiHead的head不管有几个参数量都是一样的。并不是head多参数就多。b. 当MultiHead的head为1时并不等价于Self AttetnionMultiHead Attention和Self Attention是不一样的东西c. MultiHead Attention使用的也是Self Attention的公式d. MultiHead除了 Wq, Wk, Wv三个矩阵外还要多额外定义一个Wo。而MultiHead Attention在带入公式前做了一件事情就是拆它按照“词向量维度”这个方向将Q,K,V拆成了多个头如图所示这里我的head数为4。既然拆成了多个head那么之后的计算也是各自的head进行计算如图所示但这样拆开来计算的Attention使用Concat进行合并效果并不太好所以最后需要再采用一个额外的Wo矩阵对Attention再进行一次线性变换。对于第5节中的案例两组词向量2x512对应的原始维度为512x512的WQ、WK和WV被拆分为8个512x64的矩阵故计算后得到8个2x64的Z矩阵形式类似下图然后前馈神经网络的输入只需要一个矩阵就可以了不需要八个矩阵所以我们需要把这8个矩阵压缩成一个。只需要把这些矩阵拼接起来然后用一个额外的权重矩阵Wo与之相乘即可。最终的Z经过残差后就作为前馈神经网络的输入。如下图图中W即为上文中提到的Wo7.残差结构 下图中X1X2词向量经过添加位置编码后黄色的X1X2输入到自注意力层输出Z1Z2接着将添加位置编码后黄色的X1X2组成的矩阵与Z1Z2组成的矩阵对位相加将对位相加后的结果进行LayerNormalize操作。LayerNormalize后得到的新的Z1和Z2作为输入喂给前馈网络。8.Feed_Forward(前馈网络) 在Transformer中前馈全连接层就是具有两层线性层的全连接网络。即FCReLUFC。作用是考虑到注意力机制可能对复杂过程的拟合程度不够通过增加两层网络来增强模型的能力。其公式如下公式中的x表示多头注意力机制输出的Z(2×64)假设W1是64×1024W2是1024×64那么经过FFN(x) (2×64)⊙(64×1024)⊙(1024×64) 2×64最终的维度并没有变。这两层的全连接层作用是将输入的Z映射到高维 (2×64)⊙(64×1024)(2×1024)然后再变为原来的维度。最后再经过一次残差结构并计算AddNormalization输入到下一个Encoder中经过6次就可以输入到Decoder中。9.Decoder 首先来看看Decoder模块的整体架构图。同样Decoder也是堆叠6层虽然Decoder的模块比Encoder部分多但很多是重复的。10.Decoder输入 论文中的结构图采用的是Outputs进行表示其实是整个Transformer上一时刻的输出作为Decoder的输入。具体可以分类为训练时的输入和预测时的输入。训练时就是对已经准备好对应的target数据类似CV groundtruth标定。例如翻译任务Encoder输入“Tom chase Jerry”Decoder输入对应的中文翻译标定“汤姆追逐杰瑞”。预测时预测时Decoder的输入其实按词向量的个数来做循环输入Decoder首次输入为起始符然后每次的输入是上一时刻Transformer的输出。例如Decoder首次输入“”Decoder输出为本时刻预测结果“汤姆”然后Decoder输入“汤姆”Decoder输出预测结果“汤姆追逐”之后Decoder输入“汤姆追逐”则输出预测结果“汤姆追逐杰瑞”最后Decoder输入“汤姆追逐杰瑞”预测输出“汤姆追逐杰瑞”此时输入输出一致则结果整个流程。可以看出预测阶段的Decoder其实是一个循环推理的过程为了词的前后关联性从而根据分词方式来确定时间序列的长度tDecoder执行的次数。而前述的Encoder的输出给到Decoder作为输入其实是Encoder给了Decoder的Multi-Head Attention提供可Keys和Values矩阵。故6个叠加的Decoder中每个注意力均使用同一个Keys和Values矩阵。整个流程可以使用下面的一个流程范例来帮助理解。假设我们是要用Transformer翻译“Machine learning is fun”这句话。首先我们会将“Machine learning is fun” 送给Encoder输出一个名叫Memory的Tensor如图所示之后我们会将该Memory作为Decoder的一个输入使用Decoder预测。Decoder并不是一下子就能把“机器学习真好玩”说出来而是一个词一个词说或一个字一个字这取决于你的分词方式首次输入起始值posDecoder根据Memory推理输出“机”字如图所示紧接着我们会再次调用Decoder这次是传入“bos 机”然后推理得到“器”字依次类推直到最后输出eos结束当Transformer输出eos时预测就结束了。11.Masked MultiHead-attention 由于解码器采用自回归auto-regressive即在过去时刻的输出作为当前时刻的输入也就是说在预测时无法看到之后的输入输出但是在注意力机制当中可以看到完整的输入(每一个词都要和其他词做点积计算相关性)为了避免这种情况的发生在解码器训练时在预测t时刻的输出时不应该能看到t时刻以后的输入。做法是采用带掩码的Masked注意力机制,从而保证在t时刻无法看到t时刻以后的输入保证训练和预测时的行为一致性。所以Masked-MultiHead-attention的其它部分计算流程实际上与Encoder中的计算过程一致区别只是在计算出scores矩阵时对其沿对角线上部分进行mask掩码。其主要在训练阶段屏蔽t时刻之后的输入生效而在预测阶段其实并没有真实作用。如第10节所举之例预测“机器学习真好玩”的过程。对于Decoder来说是一个字一个字预测的所以假设我们Decoder的输入是“机器学习”时“习”字只能看到前面的“机器学”三个字所以此时对于“习”字只有“机器学习”四个字的注意力信息。但是训练阶段传的是“机器学习真好玩”还是不能让“习”字看到后面“真好玩”三个字所以要使用mask将其盖住这又是为什么呢原因是如果让“习”看到了后面的字那么“习”字的编码就会发生变化。例如我们只传入了“机”此时使用attention机制将“机”字编码为了 [ 0.13 , 0.73 , . . . ] 。但如果传入了“机器”此时使用attention机制如果我们不将“器”字盖住的话那“机”字的编码就会发生变化它就不再是是[ 0.13 , 0.73 , . . . ]了也许就变成了[ 0.95 , 0.81 , . . . ]。这样就可能会让网络有问题。所以我们为了不让“机”字的编码产生变化所以我们要使用mask掩盖住“机”字后面的字。而mask掩码的方式原理很简单self-attention的输出是经过softmax的scores向量故对应scores屏蔽即可。例如v1、v2为Decoder输入的词向量矩阵A元素为α为self-attention计算得到的分数则输出为向量o。当只输入词向量v1时得到的输出o1为而当输入两个词向量时得到的输出o1和o2为此时对应的输出o1α11*v1α21*v2与只输入v1得到的o1完全不同。所以这样看那这样看我们只需要将α21盖住即可这样就能保证两次的o1一致了。如下图依次类推如果执行到第n时刻时scores矩阵Aα、词向量v和输出o的关系应当如下但是在实际代码中scores矩阵中的mask掩码并非置0而是使用了-1e9负无穷。这是由于代码中在softmax之前已初始化掩码矩阵故softmax-1e9约等于0如下Transformer推理时是一个一个词预测而训练时会把所有的结果一次性给到Transformer但效果等同于一个一个词给而之所以可以达到该效果就是因为对target进行了掩码防止其看到后面的信息也就是不要让前面的字具备后面字的上下文信息。12.Masked Multi-Head attention输出 第11节输出的向量o即可看作第8节所述的attention输出的矩阵Z然后通过残差结构和Masked Mukti-Head attention输入X做add和LayerNormalize。而重AddNormalize的输出可以作为Decoder模块Multi-Head attention的输入QQuery矩阵同时联合Encoder输出的Keys、Values矩阵进行Decoder的Multi-Head attention模块。而Decoder的Multi-Head attention模块计算流程与Encoder部分完全一致。Multi-Head attention计算完毕后进入同Encoder一样的Feed-Forward前馈模块。整个Masked Multi-Head attentionAddNormMulti-Head attentionAddNormFeed ForwardAddNorm被执行6次。13.Transformer输出 Liner和Softmax层将解码器最终输出的实数向量变成一个word线性变换层是全连接神经网络将解码器产生的向量投影到一个比它大得多的、被称作对数几率logits的向量里。假设模型从训练集中学习一万个不同的word则对数几率向量为一万个单元格长度的向量每个单元格对应某一个单词的分数。softmax层将分数变成概率概率最高的单元格对应的单词被作为该时间的输出。仍按前例如输入一个2x512的词向量矩阵前述Decoder重复执行6次后得到一个2x64的矩阵然后进过FCLinear线性变换后得到一个1x2的向量进行最终的softmax评分得到最高分数即为target中某个词的概率。参考链接[1]Transformer原理详解_敷衍zgf的博客-CSDN博客[2] 十分钟理解Transformer - 知乎 (zhihu.com)[3] MultiHead-Attention和Masked-Attention的机制和原理_masked multi-head attention_iioSnail的博客-CSDN博客[4] 【手撕Transformer】Transformer输入输出细节以及代码实现pytorch_顾道长生的博客-CSDN博客[5] 举个例子讲下transformer的输入输出细节及其他 - 知乎 (zhihu.com)
http://www.w-s-a.com/news/63999/

相关文章:

  • 措勤网站建设罗定城乡建设局网站
  • 苏州建网站流程wordpress不显示内容你
  • 网站流量数据golang建设网站
  • 2020电商网站排行榜如何开设网站
  • 绍兴seo网站管理创新的网站建站
  • 做网站需要的图片网站的视频怎么下载
  • 教人做家务的网站滕州网站建设网站行吗
  • 湖北专业的网瘾学校哪家口碑好seo百度百科
  • 保定网站制作软件网页制作工具程
  • o2o网站建设教程计算机培训班培训费用
  • 赤峰网站制作php智能建站系统
  • 做高防鞋 哪个网站能上架net网站开发net网站开发
  • 做网站公司郑州推广计划步骤
  • 网站建设计无形资产外国做美食视频网站
  • 创立一个网站需要什么网推技巧
  • 网站的会员功能怎么做wordpress主题开拓右边栏
  • 做个一般的网站要多少钱nas 建网站
  • 网页设计作品源代码彼岸花坊网站seo测评
  • 用什么软件做动漫视频网站好环保网站设计价格
  • 合肥网站设计服投稿网站源码
  • 为什么很多网站用php做上海口碑最好的装修公司排名
  • 运城网站推广找人做小程序要多少钱
  • 做外链哪个网站好seo诊断网站
  • 网站建设与管理考查方案上海公司免费起名
  • 哪个网站做h5好做汽车网站
  • 汝州网站制作住房和城乡建设部官网进行查询
  • 怎么做整人点不完的网站获取网站访客qq号码源码
  • 自建网站软件网站如何减少404跳转
  • 我想学制作网站吗公司起名网站十大排名
  • 广州白云手机网站建设淘宝店铺怎么推广