小白总结Transformer模型要点(一)(上)

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。

前言

本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。

一、模型架构

0.背景知识

seq2seq模型:

由Encoder和Decoder共同组成,之间由Attention机制来建立关联性。

可以分为3类:

CNN

  • 权重共享(平移不变性、可并行计算)

  • 滑动窗口(局部关联性建模)

  • 对相对位置敏感、对绝对位置不敏感

RNN(依次有序递归建模)

  • 对顺序敏感(当前的输入依赖于上一层的输出)

  • 串行计算耗时

  • 长程建模能力弱

  • 单步计算复杂度不变,计算复杂度与序列长度呈线性关系

  • 对相对位置和绝对位置都敏感

TRM

  • 无局部假设(可并行计算,对相对位置不敏感)

  • 无有序假设

需要增加位置编码来反映位置变化对特征的影响;

对绝对位置不敏感。

  • 任意两字符均可建模

擅长长短程建模;

自注意力机制需要序列长度的平方级别复杂度。

1.整体架构

2345_image_file_copy_151.jpg

6个Encoder的结构相同,但不是完全相同,只是结构相同、参数不同,在训练时不是训练一个Encoder、再复制到6份,而是6个Encoder都独立训练,这与预训练模型ALBERT共享Transformer中的某些层的参数达到减少BERT参数量的目的是有所区别的;

6个Decoder的结构也相同,参数不同,与Encoder类似。

2345_image_file_copy_153.jpg

输入和输出的说明如下:

2345_image_file_copy_154.jpg

可以看到,有3个输入,解码端的真实标签,与解码端的输出计算损失,同时解码端是不能并行的,只能顺序执行,因为这一层解码器(当前时刻)的输入取决于(依赖于)上一层(上一时刻)的输出,因此真实标签与解码端的输入是错了一位的;

同时,在实际应用中,为了加快训练时的收敛速度,此时会使用到Teacher Forcing,即将真实标签与解码端原来的输入一起输入,为了不影响训练(即在训练当前单词时不看到后面的单词),此时就需要将当前单词后面的单词全部mask住,以达到更好的预测效果。

实际计算中是将多个句子作为一个Batch来处理的,可以使用矩阵来加快计算,但是句子的长度可能不一致,此时超过最大长度的就被舍弃,不够最大长度的就用Padding填充字符来填充,在注意力层中将其置为-∞,避免其对其他词产生影响:

2345_image_file_copy_156.jpg

2.Embedding和位置编码

Encoder包含3部分:

  • 输入部分
  • 注意力机制
  • 前馈神经网络

2345_image_file_copy_157.jpg

输入部分包含Embedding和位置嵌入(位置编码)。

Embedding:

2345_image_file_copy_158.jpg

输入部分包含Embedding和位置嵌入(位置编码)。

Embedding:

2345_image_file_copy_159.jpg

使用随机初始化word2vec都可以,具体可以根据实际使用到的情况选择;

Embedding由稀琉的one-hot进入一个不带bias的FFN得到一个稠密的连续向量,用来表征单词。

2345_image_file_copy_160.jpg

从RNN到位置编码:

RNN的结构天然与时序关系很符合,可以实现先处理某些数据、再处理另外的数据的效果。

(1)RNN的参数共享

RNN的U输入参数、W隐层参数和输出V是一套参数,对于所有的time step都共享一套参数,例如对于NLP任务来说,所有的单词都共用了这一套参数。

(2)RNN的梯度消失

不是因为连乘效应造成了梯度衰减,这里的梯度是梯度的和,其梯度消失不是指梯度逐渐趋近于0,而是总梯度被近距离梯度主导、被远距离梯度忽略不计。

在TRM中:

实现了并行化,可以一起处理多个单词、而不是逐个地处理,这样可以加快处理速度,但是会忽略掉单词之间的相对位置信息,这时候就需要位置编码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKGspfzc-1654266200425)(image/image_h8VM501H7C.png)]

之所以选择sin/cos来表征位置编码,是因为:

每个位置都是固定的

对于不同的句子,相同位置的距离一致

泛化能力较强,可以推广到更长的句子

通过使用sin/cos,可以使得pe(pos+k)可以写成pe(pos)和pe(k)的线性组合。

将位置编码和嵌入相加(维度相同):

2345_image_file_copy_162.jpg

绝对位置向量包含着相对位置信息:

2345_image_file_copy_163.jpg

同时,虽然在注意力机制中会消除相对位置信息,但是由于残差连接的存在,因此位置编码表征的位置信息可以向更高的层传递(流入深层),因此位置信息是一直存在的,不会消失。

这里之所以选择正弦和余弦函数,是因为正余弦函数可以拆解,从而将以后时刻的位置表示为前面位置的线性组合,因此可以增加泛化能力。

具体实现位置编码时,有2种方式:

(1)将得到的PE矩阵直接与Word Embedding相加

(2)将得到的PE来构造Embedding,并对词语序列进行Embedding编码,得到位置的Embedding,再与Word Embedding相加。

相关文章
|
6月前
|
机器学习/深度学习 并行计算 算法
Transformer 一起动手编码学原理
学习Transformer,快来跟着作者动手写一个。
94340 9
|
6月前
|
机器学习/深度学习 存储 算法
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
183 1
|
算法 Java 测试技术
我的算法基础实验代码-下篇
算法题目,Java语言版
74 0
|
机器学习/深度学习 自然语言处理 计算机视觉
图解BERT:通俗的解释BERT是如何工作的
图解BERT:通俗的解释BERT是如何工作的
490 0
图解BERT:通俗的解释BERT是如何工作的
|
机器学习/深度学习 自然语言处理
小白总结Transformer模型要点(一)(下)
本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。
小白总结Transformer模型要点(一)(下)
|
机器学习/深度学习 自然语言处理
小白总结Transformer模型要点(二)(上)
本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。
小白总结Transformer模型要点(二)(上)
|
机器学习/深度学习 自然语言处理 语音技术
小白总结Transformer模型要点(二)(下)
本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。
小白总结Transformer模型要点(二)(下)
|
机器学习/深度学习 数据挖掘
无监督学习-自编码器-补充|深度学习(李宏毅)(二十)
无监督学习-自编码器-补充|深度学习(李宏毅)(二十)
324 0
无监督学习-自编码器-补充|深度学习(李宏毅)(二十)
|
机器学习/深度学习 人工智能 并行计算
深度学习模型训练推理——基础环境搭建推荐博文查阅顺序【❤️基础安装—认真帮大家整理了❤️】
博主这里梳理了自己过去两年,认真撰写的一些基础知识方面的干货博文,希望能够有效帮助到更多刚刚投身于ML、DL 领域不久的小伙伴们
375 0
深度学习模型训练推理——基础环境搭建推荐博文查阅顺序【❤️基础安装—认真帮大家整理了❤️】
|
算法 数据挖掘 C++
DL之GCN:GCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之GCN:GCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之GCN:GCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略