概述
在自然语言处理中,我们常用的主流框架会包括卷积神经网络,但是卷积神经网络有一个特点,就是连续。连续的意思可以理解为,我们的输入在转化成 state
的过程中,依赖前一个过程中的 state
,这样每个值都和之前的数据相关联,那如果是距离较远的数据,计算就会变得复杂。Transformer
的出现很大程度上提高了 Sequence
的计算效率,使两者距离较远的数据也可以接收到操作,相当于 relate 这些操作到不同距离上。因为在处理自然语言过程中,我们会使用 Encoder-Decoder
的机制,所以 Sequence
是无法避免的,但 Transformer
很有效的规避了其局限性,对于程序员而言,可以理解成同步的数据变得可以并发执行,这样大大提升了运行效率,但 Transformer 还不止于此,在提升效率的基础上,benchmark
的值也提升了。
Encoder-Decoder
Transformer
本质上使用 Encoder-Decoder
,但在 Encoder
和 Decoder
的两层连接变成全连接。全连接可以理解成,每一层的任意一个 neuron
都和另一层的任意一个 neuron
相连接。
Attention
Attention
方法接收三个参数,query
,key
和 value
,key-value
是一对,可以理解成 tuple
。这里我们这里使用大写的 Q 和 K 来表示并发执行后的 query
,key
和 value
。Attention 会先内积 Q
和 K
,在 scale 一下其结果后,与 V
相乘,最后使用 softmax
转化成一个概率数。