Transformer架构记录(三)

摘要:
Transformer架构记录(二)中提到,整个Encoder-block的结构如下图所示:本文聚焦上图中的Multi-HeadAttention模块,即下图所示:1.self-Attentionself-Attention是理解Multi-HeadAttention模块的基础,因此需要理解自注意力机制在Transformer中的具体原理。

Transformer架构记录(二)中提到,整个Encoder-block的结构如下图所示:

Transformer架构记录(三)第1张

本文聚焦上图中的Multi-Head Attention模块,即下图所示:

Transformer架构记录(三)第2张

1. self-Attention

self-Attention是理解Multi-Head Attention模块的基础,因此需要理解自注意力机制在Transformer中的具体原理。

1.1 Q、K、V计算

对于Transformer架构记录(二)中提到的输入 X (X的行数表示一句话中的Token数目,列数表示每个Token的embedding维数,与词向量维数、位置向量维数一致),将 X 与3个矩阵(WQ、WK、WV)做乘法得到 Q、K、V 3个矩阵;

显然,WQ、WK、WV的行数必需与 X 的列数保持相同(确保矩阵乘法得以实施);至于WQ、WK、WV的列数,一般要求WQ、WK的列数相同,WV的列数并不强制要求与WQ、WK的列数相同。

WQ、WK、WV作为模型参数,其具体数值可在模型训练过程中得以更新。

Transformer架构记录(三)第3张

1.2 attention计算

在得到的Q、K、V 上施以函数Attention(),具体如下:

Transformer架构记录(三)第4张

  1. 即Q乘以K的转置,得到的矩阵QK^T的size为NxN(N为一句话中的Token数目);

  2. 将QK^T的每个元素除以d_k(d_k即前述矩阵Q、K的列数,也是WK、WV的列数)的算术平方根;

  3. 对2所得矩阵的每一行进行 Softmax,即使得矩阵每一行的和都变为 1;

  4. 对3所得矩阵与先前的矩阵 V 作矩阵乘法,所得矩阵记为 Z, Z的size为(N, d_v) d_v表示矩阵 V 的列数。

可以看到,self-attention利用一组矩阵(WQ、WK、WV),将输入 X(N, E)转换为 Z (N, d_v),N为一句话中的Token数目,E词向量维数,d_v表示矩阵 V 的列数。

2. Multi-Head Attention

Multi-Head Attention即为输入 X 配置多组(WQ_i、WK_i、WV_i),从而得到多个Z (N, d_vi),d_vi为对于矩阵 WV_i 的列数,一般设置所有的 WV_i 列数相同。

如下图所示:

Transformer架构记录(三)第5张

得到 8 个输出矩阵 Z1 到 Z8 之后,将它们拼接在一起 (Concat),再次乘以矩阵(该矩阵的列数与输入 X 的列数相同),得到 Multi-Head Attention 最终的输出 Z。

Transformer架构记录(三)第6张

输出的矩阵 Z 与其输入的矩阵 X 的维度是一样的

上述输出矩阵 Z 对应到“ Transformer架构记录(二)”中的 X_mha .

下期预告:Decoder-block理解

参考资源
链接:https://www.jianshu.com/p/9b87b945151e
《Attention Is All You Need》

免责声明:文章转载自《Transformer架构记录(三)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Visual Basic了解win10家庭版 更改C盘用户文件名下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NUMA微架构

NUMA微架构written by qingran September 8th, 2011 no comment 现在开始补日志,逐步的扫清以前写了一半的和“欠账未还的”。半年之前开的头,今天先把NUMA说完。 PC硬件结构近5年的最大变化是多核CPU在PC上的普及,多核最常用的SMP微架构: 多个CPU之间是平等的,无主从关系(对比IBM...

神经网络实现

转自  http://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html 神经网络实现    1. 数据预处理         在训练神经网络前一般需要对数据进行预处理,一种重要的预处理手段是归一化处理。下面简要介绍归一化处理的原理与方法。 (1) 什么是归一化?  数据归一化,就是将数据映射到[0,...

零基础入门深度学习(5)

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,...

基于移动最小二乘的图像变形和曲线拟合

在最近的项目中经常遇到给出几个点需要拟合出一条曲线。 在离散的点云中,求曲线曲面拟合,不能简单地连接这些点,如果知道曲线曲面的形式,如为二次曲线等,可以简单地使用最小二乘法估计参数;但如果曲线曲面形式未知,可以使用移动最小二乘法或者主曲线方法。 转载:https://blog.csdn.net/liumangmao1314/article/details/...

混淆矩阵(Confusion matrix)的原理及使用(scikit-learn 和 tensorflow)

原理   在机器学习中, 混淆矩阵是一个误差矩阵, 常用来可视化地评估监督学习算法的性能. 混淆矩阵大小为 (n_classes, n_classes) 的方阵, 其中 n_classes 表示类的数量. 这个矩阵的每一行表示真实类中的实例, 而每一列表示预测类中的实例 (Tensorflow 和 scikit-learn 采用的实现方式). 也可以是,...

openstack 5大组件之间的关系和基本架构思维导图

  云计算是一种按使用量付费的模式,这种模式提供可用的/便捷的/按需的网络访问,进入可配置的计算资源共享池(资源包括网络/服务器/存储/应用软件和服务),这些资源能够被快速提供,只需投入很少的管理工作或与服务供应商进行很少的交互。   OpenStack作为一种资源管理平台,主要常用的有以下几大组件:   (1)Keystone:认证管理服务     提供...