注意
语法
描述
注意操作的重点部分输入使用加权乘法操作。
例子
应用注意操作
指定查询的大小、键和值。
querySize = 100;valueSize = 120;numQueries = 64;numValues = 80;numObservations = 32;
创建随机阵列包含查询、键和值。为查询指定dlarray
格式“认知行为治疗”
(通道、批量、时间)。
查询= dlarray(兰特(querySize、numObservations numQueries),“认知行为治疗”);键= dlarray(兰德(querySize, numObservations numValues));值= dlarray(兰德(valueSize, numObservations numValues));
指定数量的关注。
numHeads = 5;
应用关注操作。
[Y,重量]=注意(查询、键值,numHeads);
视图的大小和格式输出。
大小(Y)
ans =1×3120 32 64
退去(Y)
ans =“认知行为治疗”
视图权重的大小和格式。
大小(重量)
ans =1×480 64 5 32
dim(权重)
ans = 0×0空字符数组
创建多线程自我关注功能
您可以使用注意
函数来实现多线程操作自我关注[1]的重点部分输入。
创建multiheadSelfAttention
函数,列出的多线程的自我关注功能部分的例子。的multiheadSelfAttention
函数作为输入数据X
正面的次数,可学的权重查询,钥匙,价值观,和输出数据,并返回多线程的注意值。
的X
输入必须是无格式dlarray
对象,第一个维度对应于输入通道,第二维度对应于时间和空间维度,第三维度对应批维度。
创建一个数组序列数据。
numChannels = 10;numObservations = 128;numTimeSteps = 100;X =兰德(numChannels numObservations numTimeSteps);X = dlarray (X);大小(X)
ans =1×310 128 100
指定数量的多线程的注意。
numHeads = 8;
初始化参数可学的多线程的注意。
可学的查询、关键和重量必须价值
(numChannels * numHeads)
——- - - - - -numChannels
数组。必须是可学的输出权重
(numChannels * numHeads)
——- - - - - -(numChannels * numHeads)
数组中。
outputSize = numChannels * numHeads;WQ =兰德(outputSize numChannels);工作=兰德(outputSize numChannels);西弗吉尼亚州=兰德(outputSize numChannels);我们=兰德(outputSize outputSize);
应用多线程自我关注操作。
Y = multiheadSelfAttention (X, numHeads WQ工作,西弗吉尼亚州,我们);
视图的大小输出。产量的大小(numChannels * numHeads)
——- - - - - -numObservations
——- - - - - -(numTimeSteps)
。
大小(Y)
ans =1×380 128 100
多线程的自我关注功能
的multiheadSelfAttention
函数作为输入数据X
正面的次数,可学的权重查询,钥匙,价值观,和输出数据,并返回多线程的注意值。
的
X
输入必须是无格式dlarray
对象,第一个维度对应于输入通道,第二维度对应于时间和空间维度,第三维度对应批维度。可学的查询、键和值权重矩阵
(numChannels * numHeads)
——- - - - - -numChannels
矩阵。可学的输出权值矩阵
(numChannels * numHeads)
——- - - - - -(numChannels * numHeads)
矩阵。
函数Y = multiheadSelfAttention (X, numHeads WQ工作,西弗吉尼亚州,我们)查询= pagemtimes (WQ X);键= pagemtimes(周,X);值= pagemtimes(西弗吉尼亚州,X);=注意(查询、键值、numHeads DataFormat =“施”);Y = pagemtimes(我们);结束
创建陈德良注意函数
您可以使用注意
函数创建一个函数应用陈德良注意操作的输入。创建luongAttention
函数,列出的例子,应用陈德良注意操作。
指定数组的大小。
numHiddenUnits = 100;latentSize = 16;
创建包含输入数据的随机阵列。
hiddenState = dlarray(兰德(numHiddenUnits, 1));Z = dlarray(兰德(latentSize, 1));重量= dlarray(兰德(numHiddenUnits latentSize));
应用luongAttention
函数。
[背景下,attentionScores] = luongAttention (hiddenState Z、重量);
视图的大小输出。
大小(上下文)
ans =1×216个1
大小(attentionScores)
ans =1×21
陈德良关注功能
的luongAttention
函数返回上下文向量和关注分数据陈德良“通用”评分[2]。这个操作相当于点积关注查询,键和值指定为隐藏状态,加权潜在的代表,和潜在的表示。
函数[背景下,attentionScores] = luongAttention (hiddenState Z、重量)numHeads = 1;查询= hiddenState;键= pagemtimes(重量、Z);值= Z;[背景下,attentionScores] =注意(查询、键值、numHeads规模= 1,DataFormat =“认知行为治疗”);结束
输入参数
查询
- - - - - -查询
dlarray
对象
查询指定为一个dlarray
对象。
查询
最多只能有一个吗“S”
(空间)或“T”
维度(时间)。任何尺寸查询
标签“U”
(不明)必须独立。如果查询
是一个非格式化dlarray
对象,然后指定数据格式使用DataFormat
选择。
的大小“C”
(频道)维度键
必须匹配相应尺寸的大小查询
。
的大小“B”
(批)维度查询
,键
,值
必须匹配。
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:关注(查询、键值、numHeads DataFormat =“认知行为治疗”)
注意操作申请非格式化数据和指定的数据格式“认知行为治疗”
(通道、批量、时间)。
DataFormat
- - - - - -维非格式化数据的顺序
特征向量|字符串标量
维度的非格式化输入数据,指定为一个特征向量或字符串标量FMT
为每个维度的数据提供一个标签。
当你指定的格式dlarray
对象,每个字符为每个维度的数据提供了一个标签,必须这些选项之一:
“S”
——空间“C”
——频道“B”
批处理(例如,样品和观察)“T”
时间(例如,时间序列的步骤)“U”
——未指明的
您可以使用标签“C”
和“B”
最多一次,一维标签“S”
或“T”
。
您必须指定DataFormat
当输入数据不是一个格式化的dlarray
对象。
数据类型:字符
|字符串
规模
- - - - - -乘法因子扩展点积的注意
“汽车”
(默认)|数字标量
PaddingMask
- - - - - -掩码表示填充的值
dlarray
对象|逻辑阵列|binary-valued数值数组
AttentionMask
- - - - - -注意面具
“没有”
(默认)|“因果”
|数字数组|逻辑阵列
注意面具指示元素包括应用注意操作时,指定这些值之一:
“没有”
——不会阻止注意元素对他们的位置。如果AttentionMask
是“没有”
,那么软件防止注意使用PaddingMask
只有。“因果”
——防止元素的位置米在“S”
(空间)或“T”
(时间)的维度查询
提供关注元素的位置n,在那里n大于米在相应的尺寸键
和值
。使用这个选项对自回归模型。逻辑或数值数组——防止注意力的元素
键
和值
在数组中对应的元素0
,在那里AttentionMask
是一个Nk——- - - - - -N问矩阵或Nk——- - - - - -N问——- - - - - -numObservations
数组,Nk的大小吗“S”
(空间)或“T”
(时间)的维度键
,N问相应尺寸的大小吗查询
,numObservations
的大小吗“B”
维度查询
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|逻辑
|字符
|字符串
DropoutProbability
- - - - - -辍学概率
0
(默认)|标量范围在[0,1)
辍学概率权重的关注指定为一个标量范围在[0,1)。
数据类型:单
|双
输出参数
算法
点积的关注
注意操作的重点部分输入使用加权乘法操作。
单头点积注意操作的
地点:
问表示查询。
K表示键。
V表示的值。
表示比例因子。
米是一个面具的1和0组成的数组。
p是辍学概率
掩模操作包括和不包括矩阵乘法的值设置的输入值 新鲜感面具元素。面具是填充的结合和注意力面具。将softmax函数可实现输入数据海峡对岸的价值维度,这样一个总结。辍学操作元素设置为零的概率p。
多线程Self-Attention
多线程self-attention操作的输入X是由
地点:
h是正面的次数。
W问查询是一种可习得的投影矩阵。
WK是一种可习得的投影矩阵的钥匙。
WV是一种可习得的投影矩阵的值。
WO是一种可习得的投影矩阵的输出。
每个权重矩阵是由连接权重矩阵W我对于每一个头。每一个 表示由头的输出操作
引用
阿施施,[1]Vaswani Noam Shazeer Niki Parmar, Jakob Uszkoreit, Llion琼斯,艾丹·n·戈麦斯Łukasz凯撒,Illia这样Polosukhin。“注意你所需要的。”先进的神经信息处理系统(2017年12月30日):6000 - 6010。https://papers.nips.cc/paper/7181-attention-is-all-you-need。
[2]陈德良、Minh-Thang Hieu Pham,克里斯托弗·d·曼宁。“有效的机器翻译方法引起的神经。”arXiv预印本arXiv: 1508.04025(2015)。
扩展功能
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
使用笔记和限制:
当至少一个输入参数
gpuArray
对象或一个dlarray
对象的基础数据类型gpuArray
,这个函数在GPU上运行。查询
键
值
有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
版本历史
介绍了R2022b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。