transformer的特点
- transformer是并行处理的,相较于lstm(一个接一个的训练,前一刻的训练结束,才能进行下一时刻的训练),并行处理后加快了效率
- transformer中引用了位置嵌入,因为没有循环神经网络的迭代操作,所以要提供一句话每个词的位置信息,输入到transformer中,这样才能知道语言的顺序关系。
transformer的结构图
和大部分的seqseq模型一样,分为编码器和解码器两个部分
编码器部分:
inputs: X= [batch_size,sequence_len,embedding dimension]
positional encoding:位置嵌入的维度为[max sequence_len ,embedding dimension],这个位置嵌入的大小和输入的词嵌入大小相同,将input和positional encoding合并得到新的X
Multi-Head Attention(多头注意机制):
Q,K,V指的是将X分别与Wq,Wk,Wv参数相乘得到Q,K,V矩阵,将Q和K做相似度计算,然后归一化得到注意力权重,将对应的权重和V进行加权求和,这样使得结果向量中每个字向量中都包含当前句子中所有字向量的信息。
–多头注意力指的是定义一个超参数h(head数量)来提取多重语义的含义,作用是将embedding dimensions分割成h份
–mini batch是由多个不等长的句子组成,在做注意力机制计算时,我们需要按照最长句子的长度来补齐其他句子长度,一般用零来填充,这就是padding的过程。但是在softmax的时候padding的部分也参与了计算,相当于让无效的句子参与了计算,所以需要做一个mask让这些区域不参与计算。
Add&Norm(残差连接&LayerNorm) :避免梯度消失和将神经网络中的隐藏层归一化为标准的正态分布,加快训练和收敛的速度
–将经过注意力矩阵加权后得到的V与X进行残差连接
FeedForward+ADD&Norm: 一个简单的线性操作+残差连接&LayerNorm
论文连接《Attention is all you need》
视频学习从中文Transformer到BERT的模型精讲,以及基于BERT情感分类实战