前言
transformer 上(encoder)
一、transformer是什么?
Transformer是一个sequence-to-sequence(seq2seq)的模型,输出序列的长度是由模型决定。
Seq2seq模型里面会分为两块,encoder和decoder,encoder负责处理输入,decoder负责输出什么样的序列。
二、Encoder
Encoder,做的事情是给一排向量输出另一排向量(self-attention、cnn、rnn都可以做到),transformer用的就是self-attention。
Encoder里面会有很多block,每个block都是输入一排向量,输出一排向量,最后一个block输出向量序列,一个block里面是好几个layer在做的事情。
Block中,先做一个self-attention,之后输出另一排向量,将这些向量输入到fully connected,在输出另一排向量,这些向量就是block的输出。
另外transformer里面在self-attention里面还有一个设计,不仅是输出一个考虑所有向量产生的向量,还要加上原来的这个向量得到新的输出。这个架构叫做residual connection。
得到residual结果之后,做layer norm。计算出新的向量。xi’=(xi - mean)/(standard deviation)。这个输出才是fully connected的输入。
Fully connected也有residual。这个residual的结果再做一次layer norm。这个结果才是一个block的结果。
总结
学习视频地址:https://www.bilibili.com/video/BV13Z4y1P7D7/?p=12&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec