Transformer详解(附代码)
Posted 鬼道2022
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Transformer详解(附代码)相关的知识,希望对你有一定的参考价值。
引言
T r a n s f o r m e r \\mathrmTransformer Transformer模型是 G o o g l e \\mathrmGoogle Google团队在 2017 2017 2017年 6 6 6月由 A s h i s h V a s w a n i \\mathrmAshish\\text Vaswani Ashish Vaswani等人在论文《 A t t e n t i o n I s A l l Y o u N e e d \\mathrmAttention\\text Is\\text All \\text You \\text Need Attention Is All You Need》所提出,当前它已经成为 N L P \\mathrmNLP NLP领域中的首选模型。 T r a n s f o r m e r \\mathrmTransformer Transformer抛弃了 R N N \\mathrmRNN RNN的顺序结构,采用了 S e l f \\mathrmSelf Self- A t t e n t i o n \\mathrmAttention Attention机制,使得模型可以并行化训练,而且能够充分利用训练资料的全局信息,加入 T r a n s f o r m e r \\mathrmTransformer Transformer的 S e q 2 s e q \\mathrmSeq2seq Seq2seq模型在 N L P \\mathrmNLP NLP的各个任务上都有了显著的提升。本文做了大量的图示目的是能够更加清晰地讲解 T r a n s f o r m e r \\mathrmTransformer Transformer的运行原理,以及相关组件的操作细节,文末还有完整可运行的代码示例。
注意力机制
T r a n s f o r m e r \\mathrmTransformer Transformer中的核心机制就是 S e l f \\mathrmSelf Self- A t t e n t i o n \\mathrmAttention Attention。 S e l f \\mathrmSelf Self- A t t e n t i o n \\mathrmAttention Attention机制的本质来自于人类视觉注意力机制。当人视觉在感知东西时候往往会更加关注某个场景中显著性的物体,为了合理利用有限的视觉信息处理资源,人需要选择视觉区域中的特定部分,然后集中关注它。注意力机制主要目的就是对输入进行注意力权重的分配,即决定需要关注输入的哪部分,并对其分配有限的信息处理资源给重要的部分。
Self-Attention
S e l f \\mathrmSelf Self- A t t e n t i o n \\mathrmAttention Attention工作原理如上图所示,给定输入 w o r d e m b e d d i n g \\mathrmword\\text embedding word embedding向量 a 1 , a 2 , a 3 ∈ R d l × 1 a^1,a^2,a^3 \\in \\mathbbR^d_l \\times 1 a1,a2,a3∈Rdl×1,然后对于输入向量 a i , i ∈ 1 , 2 , 3 a^i,i\\in \\1,2,3\\ ai,i∈1,2,3通过矩阵 W q ∈ R d k × d l , W k ∈ R d k × d l , W v ∈ R d l × d l W^q\\in \\mathbbR^d_k \\times d_l,W^k\\in \\mathbbR^d_k \\times d_l,W^v\\in \\mathbbR^d_l\\times d_l Wq∈Rdk×dl,Wk∈Rdk×dl,Wv∈Rdl×dl进行线性变换得到 Q u e r y \\mathrmQuery Query向量 q i ∈ R d k × 1 q^i\\in\\mathbbR^d_k \\times 1 qi∈Rdk×1, K e y \\mathrmKey Key向量 k i ∈ R d k × 1 k^i\\in \\mathbbR^d_k \\times 1 ki∈Rdk×1,以及 V a l u e \\mathrmValue Value向量 v i ∈ R d l × 1 v^i\\in \\mathbbR^d_l \\times 1 vi∈Rdl×1,即 q i = W q ⋅ a i k i = W k ⋅ a i , i ∈ 1 , 2 , 3 v i = W v ⋅ a i \\left\\\\beginalignedq^i&=W^q \\cdot a^i\\\\k^i&=W^k \\cdot a^i,\\quad i\\in\\1,2,3\\\\\\v^i&=W^v \\cdot a^i\\endaligned\\right. ⎩⎪⎨⎪⎧qikivi=Wq⋅ai=Wk⋅ai,i∈1,2,3=Wv⋅ai如果令矩阵 A = ( a 1 , a 2 , a 3 ) ∈ R d l × 3 A=(a^1,a^2,a^3)\\in\\mathbbR^d_l \\times 3 A=(a1,a2,a3)∈Rdl×3, Q = ( q 1 , q 2 , q 3 ) ∈ R d k × 3 Q=(q^1,q^2,q^3)\\in\\mathbbR^d_k \\times 3 Q=(q1,q2,q3)∈R以上是关于Transformer详解(附代码)的主要内容,如果未能解决你的问题,请参考以下文章
深度学习 Transformer 中的 Encoder 机制,附Pytorch完整代码
完全解析!Bert & Transformer 阅读理解源码详解
完全解析!Bert & Transformer 阅读理解源码详解