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

网站搭建dns有用吗上海有限公司黄页

网站搭建dns有用吗,上海有限公司黄页,公共场所建设网站,为什么wordpress在ie打开很慢上一篇下一篇注意力机制(第1/4集)待编写 一、pytorch 中的多维注意力机制: 在 N L P NLP NLP 领域内,上述三个参数都是 向量 , 在 p y t o r c h pytorch pytorch 中参数向量会组成 矩阵 ,方便代码编写。…
上一篇下一篇
注意力机制(第1/4集)待编写

一、pytorch 中的多维注意力机制:

N L P NLP NLP 领域内,上述三个参数都是 向量 , 在 p y t o r c h pytorch pytorch 中参数向量会组成 矩阵 ,方便代码编写。

①结构图

注意力机制结构图如下:

在这里插入图片描述

②计算公式详解

计算注意力分数的方式有很多,目前最常用的就是点乘。具体如下:

当向量 q u e r y \large query query k e y \large key key 长度相同时,即 q 、 k i ∈ R ( 1 × d ) q、k_i∈R^{(1×d)} qkiR(1×d) ,则有:注意力分数 s ( q , k i ) = < q , k i > d k \large s(q,k_i)=\frac{<q,k_i>}{\sqrt{d_k}} s(q,ki)=dk <q,ki> ,符号 < q , k i > <q,k_i> <q,ki> 表示点乘/内积运算(向量点乘,结果为标量)。其中 d k d_k dk k i k_i ki 向量的长度(为什么要在原注意力分数底下除以 d k \sqrt{d_k} dk 后面会详解)。

当向量组成矩阵时,假设 Q ∈ R ( n × d ) Q∈R^{(n×d)} QR(n×d) K ∈ R ( m × d ) K∈R^{(m×d)} KR(m×d) V ∈ R ( m × v ) V∈R^{(m×v)} VR(m×v) 。每个矩阵都是由参数行向量堆叠组成。则有:

F ( Q ) = A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q ⋅ K T d k ) ⋅ V \Large F(Q)=Attention(Q,K,V)=softmax(\frac{Q·K^T}{\sqrt{d_k}})·V F(Q)=Attention(Q,K,V)=softmax(dk QKT)V
其中 Q K T d ∈ R ( n × m ) \large \frac{QK^T}{\sqrt{d}}∈R^{(n×m)} d QKTR(n×m) 是注意力分数,, s o f t m a x ( Q K T d k ) ∈ R ( n × m ) \large softmax(\frac{QK^T}{\sqrt{d_k}})∈R^{(n×m)} softmax(dk QKT)R(n×m) 是注意力权重, F ( Q ) ∈ R ( n × v ) \large F(Q)∈R^{(n×v)} F(Q)R(n×v) 是输出。

这是一种并行化矩阵计算形式,将所有的 q q q 组合成一个矩阵 Q Q Q k k k v v v 类似,都被组合成了矩阵 K K K V V V 。其详细过程如下:

已知 Q ∈ R ( n × d ) Q∈R^{(n×d)} QR(n×d) K ∈ R ( m × d ) K∈R^{(m×d)} KR(m×d) V ∈ R ( m × v ) V∈R^{(m×v)} VR(m×v) ,该尺寸表示有 n n n q q q m m m k k k m m m v v v 。则:

Q × K T = [ [ ⋯ q 1 ⋯ ] [ ⋯ q 2 ⋯ ] ⋮ [ ⋯ q n ⋯ ] ] ● [ [ ⋮ k 1 ⋮ ⋮ ] [ ⋮ k 2 ⋮ ⋮ ] ⋯ [ ⋮ k m ⋮ ⋮ ] ] = [ q 1 ⋅ k 1 q 1 ⋅ k 2 ⋯ q 1 ⋅ k m q 2 ⋅ k 1 q 2 ⋅ k 2 ⋯ q 2 ⋅ k m ⋮ ⋮ ⋱ ⋮ q n ⋅ k 1 q n ⋅ k 2 ⋯ q n ⋅ k m ] Q \times K^T =\\ \begin{bmatrix} \begin{bmatrix} \cdots & q_1 & \cdots \end{bmatrix} \\ \begin{bmatrix} \cdots & q_2 & \cdots \end{bmatrix} \\ \vdots \\ \begin{bmatrix} \cdots & q_n & \cdots \end{bmatrix} \end{bmatrix} ● \begin{bmatrix} \begin{bmatrix} \vdots \\ k_1 \\ \vdots \\ \vdots \end{bmatrix} & \begin{bmatrix} \vdots \\ k_2 \\ \vdots \\ \vdots \end{bmatrix} & \cdots & \begin{bmatrix} \vdots \\ k_m \\ \vdots \\ \vdots \end{bmatrix} \end{bmatrix}= \begin{bmatrix} q_1 \cdot k_1 & q_1 \cdot k_2 & \cdots & q_1 \cdot k_m \\ q_2 \cdot k_1 & q_2 \cdot k_2 & \cdots & q_2 \cdot k_m \\ \vdots & \vdots & \ddots & \vdots \\ q_n \cdot k_1 & q_n \cdot k_2 & \cdots & q_n \cdot k_m \end{bmatrix} Q×KT= [q1][q2][qn] k1 k2 km = q1k1q2k1qnk1q1k2q2k2qnk2q1kmq2kmqnkm

上述运算可以得到每个小 q q q m m m 个小 k k k 的注意力分数,再经过放缩(除以 d k \sqrt{d_k} dk )和 s o f t m a x softmax softmax 函数后得到每个小 q q q m m m 个小 k k k 的注意力权重矩阵,其尺寸为 n × m n×m n×m ,最终和 V V V 相乘,得到 F ( Q ) F(Q) F(Q) ,其尺寸为 n × v n×v n×v ,对应着 n n n q q q v a l u e value value

③公式细节解释

  1. 第一点:

    使用点乘来计算注意力分数的意义:矩阵点乘 Q ⋅ K T Q·K^T QKT 就意味着做点积/内积,(在注意力机制中,点积通常等同于内积,在数学上点积是内积的特例),内积可直接衡量两个向量的方向对齐程度。若两个向量方向一致(夹角为 0 ° 0° ),则内积最大;方向相反(夹角为 180 ° 180° 180° ),则内积最小。点乘不仅包含方向信息,还隐含向量长度的乘积。例如,若两个长向量方向一致,内积值会显著高于短向量,可能更强调其相关性。

  2. 第二点:

    上述公式中, s o f t m a x softmax softmax 里对注意力分数还除以了 d k \sqrt{d_k} dk ,是因为:由于 s o f t m a x softmax softmax 函数的计算公式用到了 e e e 的次方,当两个数之间的倍数很大时,比如说 99 和 1 ,经过求 e e e 的次方运算之后,差别会指数倍增加,这样求出来的概率会很离谱,不是0.99和0.01,而是0.99999999和0.0000000001(很多9和很多0)。让其中每个元素除以 d k \sqrt{d_k} dk 之后,会降低倍数增加的程度(更数学性的解释可以看 00 预训练语言模型的前世今生(全文 24854 个词) - B站-水论文的程序猿 - 博客园 这篇博客中的有关注意力机制的讲解)。其功能类似于防止梯度消失。

  3. 第三点:

    一般来说,在 t r a n s f o r m e r transformer transformer 里, K = V K=V K=V 。当然 K ≠ V K≠V K=V 也可以,不过两者之间一定是有对应关系,能组成键值对的。

二、自注意力机制(Self-Attention)

当上述的三个参数都由一个另外的共同参数 经过不同的线性变换 生成时(即三者同源),就是自注意力机制。其值体现为 Q ≈ K ≈ V Q≈K≈V QKV

这三个矩阵是在同一个矩阵 X X X 上乘以不同的系数矩阵 W Q 、 W K 、 W V W_Q、W_K、W_V WQWKWV 得到的,因此自注意力机制可以说是在计算 X X X 内部各个 x i x_i xi 之间的相关性。其后续步骤和注意力机制一样。(为什么叫自注意力机制,估计是因为这里是计算自己内部之间的相关性吧)

注意】:最终生成的新的 v a l u e value value 其实依然是小 x x x 的向量表示,只不过这个新向量蕴含了其他的小 x x x 的信息。

具体公式如下:
Q = W Q ⋅ X , K = W K ⋅ X , V = W V ⋅ X F ( Q ) = A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q ⋅ K T d k ) ⋅ V \large Q=W_Q·X,~~~~K=W_K·X,~~~~V=W_V·X\\ \Large F(Q)=Attention(Q,K,V)=softmax(\frac{Q·K^T}{\sqrt{d_k}})·V Q=WQX,    K=WKX,    V=WVXF(Q)=Attention(Q,K,V)=softmax(dk QKT)V
N L P NLP NLP 中,可以举一个小例子理解一下(矩阵内数值即为注意力权重):

在这里插入图片描述

上图中,每一个单词就是一个小 q q q ,单词用向量表示。(有个误区:不是说自注意力机制中,小 q q q 和自己的注意力分数就是最大的,这个要看具体语义需求)

其他变种:交叉注意力机制( Q Q Q V V V 不同源, K K K V V V 同源)。

三、掩码自注意力机制(Masked Self-Attention)

N L P NLP NLP 里,在训练过程中,比如说我想训练模型生成:“The cat is cute” 这样一个句子,并且计算其自注意力权重,这个时候 “The cat is cute” 就是已知的 label 。但是句子是一个一个单词生成的( The → The cat → The cat is → The cat is cute),第一个生成 The ,第二个生成 cat … 在没有完全生成之前,都是不能提前告诉模型后面的答案。已知句子总长度为 4 4 4 ,那么注意力权重的个数依次是 1 → 2 → 3 → 4 。如下图所示:

在这里插入图片描述

注意了,这里的生成是指训练时的生成,掩码机制只在训练时使用,因为训练时机器知道有位置信息的句子(句子的长度也已知晓),为了防止窥探到下一个字就要掩码。但在实际使用模型时(测试时),是没有参考答案的,所以不需要掩码!

其实还有其他作用,诸如:避免填充干扰等,后面在 transformer 里会详解。

四、多头注意力机制(Multi-Head Self-Attention)

本质上就是: X X X 做完三次线性变换得到 Q 、 K 、 V Q、K、V QKV之后,将 Q 、 K 、 V Q、K、V QKV分割成 8 8 8 块进行注意力计算,最后将这 8 8 8 个结果拼接,然后线性变换,使其维度和 X X X 一致。(并不是直接对 X 进行切分,也不是对 X 进行重复线性变换)

意义:原论文其实也说不清楚这样做的意义,反正给人一种能学到更细致的语义信息的感觉(深度学习就是这样~~)。

流程图如下:

在这里插入图片描述

第一步:

输入序列 X X X 首先经过三次独立的线性变换,生成查询( Q u e r y Query Query)、键( K e y Key Key)、值( V a l u e Value Value)矩阵:

Q = W Q ⋅ X Q=W_Q·X Q=WQX K = W K ⋅ X K=W_K·X K=WKX V = W V ⋅ X V=W_V·X V=WVX 。其中, W Q 、 W K 、 W V W_Q、W_K、W_V WQWKWV 是可学习的权重矩阵。

第二步:

Q 、 K 、 V Q、K、V QKV 矩阵沿特征维度平均分割为多个头。一般头数均为 8 8 8(即 h = 8 h=8 h=8),假设 Q 、 K 、 V Q、K、V QKV 的特征维度为 M M M ,则分割之后每个头的特征维度为 M / 8 M/8 M/8

第三步:

每个头各自并行计算注意力并得到各自的输出(先点积,再缩放,再做 s o f t m a x softmax softmax ,再乘以 v a l u e value value )【每个头学习不同子空间的语义关系】

第四步:

合并多头输出,将所有头的输出拼接为完整维度,再通过一次线性变换整合信息:

O u t p u t = C o n c a t ( h e a d 1 , … , h e a d h ) ⋅ W O Output=Concat(head_1,…,head_h)⋅W_O Output=Concat(head1,,headh)WO 。其中 W O W_O WO 是最后的线性层的投影矩阵。

值得一提的是:针对 “将 Q 、 K 、 V Q、K、V QKV分割成 8 8 8 块” 这个步骤,《Attention Is All You Need》论文原文说的是: linearly project h times ,意思就是将 Q 、 K 、 V Q、K、V QKV通过线性层将其变换为 8 8 8 个新的特征维度为 M / 8 M/8 M/8 Q ′ 、 K ′ 、 V ′ Q^{'}、K^{'}、V^{'} QKV 。不过这在数学上等效于直接分割成 8 8 8 块,并且后者在算法实现上能提高效率。代码如下:

Q = torch.randn(batch_size, seq_len, h*d_k)
Q = Q.view(batch_size, seq_len, h, d_k)  # 分割为 h 个头

.view() 函数的作用是变换尺寸,将原来的三维张量,变成四维张量( h 个三维张量),元素的值不变,元素的总数也不变,其效果等于切割。



文章转载自:

http://JnLhkQtx.zrgdd.cn
http://mdRh7Aqk.zrgdd.cn
http://xV9dtt3I.zrgdd.cn
http://ZUsfl4AI.zrgdd.cn
http://57R8Zop2.zrgdd.cn
http://pJ32Ncd2.zrgdd.cn
http://mfwg9hLv.zrgdd.cn
http://fBtVht4c.zrgdd.cn
http://fCG1NimH.zrgdd.cn
http://FjmEvR83.zrgdd.cn
http://D07SL3t7.zrgdd.cn
http://1ich4sTO.zrgdd.cn
http://eGUqDO3M.zrgdd.cn
http://YjsVLGMV.zrgdd.cn
http://YD5YMPam.zrgdd.cn
http://xLf6T1IX.zrgdd.cn
http://OTuzn92J.zrgdd.cn
http://YvLcVeDh.zrgdd.cn
http://qsAsYe0y.zrgdd.cn
http://pv4NtGnu.zrgdd.cn
http://c5Or6k83.zrgdd.cn
http://khiTMZBk.zrgdd.cn
http://SwvP7QAF.zrgdd.cn
http://zKe7GtzC.zrgdd.cn
http://Egr3EIvT.zrgdd.cn
http://LBVaRWgi.zrgdd.cn
http://rLRa6KWr.zrgdd.cn
http://BMfGa21r.zrgdd.cn
http://ffd5YNdB.zrgdd.cn
http://wHRby0jz.zrgdd.cn
http://www.dtcms.com/wzjs/610100.html

相关文章:

  • 学做网站论坛会员账户做一个网站需要哪些步骤
  • 付网站开发费计入什么科目ui作品集展示模板
  • 医疗医院网站建设wordpress主题 食品
  • 织梦怎么制作手机网站源码所有网站收录入口
  • python做的网站哪些保护环境做网站素材
  • 美食网站开发计划湖北城乡建设网站
  • jsp开发网站开发源码美容 网站源码
  • 网页框架模板广州seo网站多少钱
  • 兰州网站seo技术厂家长沙百度首页排名
  • 网站服务器ipv6手机优化电池充电是什么意思
  • 网站建设 网站内容 采集wordpress 主题制作 视频
  • 发朋友圈吸引顾客话术免费刷seo
  • 新闻类的手机网站怎么做灰色行业seo大神
  • 新网站秒收录技术网站开发数据库动态管理
  • 企业营销型网站概念做网站都需要准备什么
  • 网站建设技术外文wordpress谷歌seo
  • 卖文章的网站源码高明网站设计公司
  • 网站制作流程 优帮云德清网站公司建设
  • 做网站报价明细表短视频关键词优化
  • 杭州网站建设哪家比较好h5网页制作素材
  • 网站建设费用 会计分录菏泽公司网站建设
  • 做网站 没内容开发公司名字起名大全
  • 天猫淘宝优惠券网站怎么做做落地页的网站
  • 以色列网站后缀网页设计个人实训报告
  • 建网站多少牡丹江商城网站开发设计
  • 网站建设策划怎么谈wordpress文章分段
  • 网站的侧边栏怎么做手机网站实例
  • 湘西网站建设吧这个网址你会感谢我的
  • 怎么创建自己的网站平台徐州网站建设大前端
  • 网站建设运营协议书wordpress 虚拟浏览量