当前位置:   article > 正文

10分钟入门transformer_transform中的logit

transform中的logit

理解本文需要以下基础知识

  • 前向神经网络
  • attention
  • encoder-decoder
  • sequence to sequence learning

背景介绍

基于RNN的神经网络在自然语言处理领域一直处于领先地位。RNN衍生的两个方法LSTMGRU很好的解决了梯度消失的问题,因此基于RNN的神经网络成为sequence to sequence learning的优先选择。

Ilya Sutskever[6]等人在2014年将encoder-decoder用于机器翻译。先用一个LSTM模型编码输入的序列的信息,再用一个LSTM输出另一个序列。如图
在这里插入图片描述但是,通过encoder得到是一个固定长度的向量,当句子较长时,RNN结构无法关注到距离较远的信息。Bahdanau等人[7]在2016提供了attention结构用于关注句子中的重点信息。

无论是encoder-decoder还是attention都基于RNN的网络结构作出的改进,而RNN迭代式计算的效率不高,很难充分利用GPU的进行并行计算。

因此,一些学者打算抛弃RNN结构。Facebook AI 团队在2017年采用CNN卷积核的网络结构[8],把句子通过卷积核提取信息,在底层CNN覆盖的语义范围小,而越到高层,覆盖的语义环境会越大[9]。如下图
在这里插入图片描述虽然CNN结构可以并行化,但是依然无法解决长距离依赖的问题。同年,google brain发表了论文《Attention Is All You Need》,完全使用attention进行训练。提出的self-attention结构充分考虑了句子所有词的关系,更好地编码序列中的数据。

文中提出的transformer结构如下图。一眼看过去是不是有点晕,没事,我们接下来按照数据流向解析一下这张图
在这里插入图片描述

Transformer结构解析

第一部分:Embedding

Input Embedding

input embedding和word embedding 方式一样。可以选择pretrained 的embedding比如fasttext, word2vec,或者直接初始化一个embedding matrix,在模型中训练参数。

Position Encoding(划重点)

transformer不像RNN结构保留了序列中的相对位置信息。因此使用position encoding来记录序列的位置信息。这里用的是sine and cosine函数(见公式)表示position encoding。作者认为 P E ( p o s + k ) PE{(pos + k)} PE(pos+k) P E ( p o s ) PE{(pos)} PE(pos) 线性相关,因此用三角函数能够表示这种关系(我也不知道为啥,大家可以看看https://kazemnejad.com/blog/transformer_architecture_positional_encoding/

P E ( p o s , 2 i ) = s i n ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos, 2i)} = sin(pos/10000^{2i/d_model}) PE(pos,2i)=sin(pos/100002i/dmodel)

P E ( p o s , 2 i + 1 ) = c o s ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos, 2i + 1)} = cos(pos/10000^{2i/d_model}) PE(pos,2i+1)=cos(pos/100002i/dmodel)

在这里插入图片描述

第二部分:Encoder

Encoder (见下图)叠加了6层相同的layer, 每个layer有两个sublayer,一个sublayer是multi-head self-attention, 一个sublayer是position-wise feed forward neural network。在每个sublayer后面,采用了residual learning 和 layer normalization计算输出,输出为LayerNorm(x + sublayer(x))。residual learning是由Kaiming He[1]等人提出的,用于解决CNN层数过多导致的训练误差增大,模型性能下降的问题。residual learning 的表现形式之一: y = f ( x ) + x y = f(x) + x

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/883513
推荐阅读
相关标签
  

闽ICP备14008679号