主要内容

注意

点积的关注

自从R2022b

    描述

    注意操作的重点部分输入使用加权乘法操作。

    Y=关注(查询,,,numHeads)点积注意操作适用于指定的查询,钥匙,使用的数量和价值的关注numHeads。查询输入参数必须是一个格式化的dlarray对象。

    例子

    (Y,权重]= (查询,,,numHeads)应用点积注意操作并返回关注重量. .

    例子

    (Y,权重]= (查询,,,numHeads,DataFormat = FMT)点积的注意操作适用于非格式化dlarray对象查询带格式的规定FMT。例如,DataFormat =“认知行为治疗”指定的数据格式“认知行为治疗”(通道、批量、时间)。

    例子

    (Y,权重]= (查询,,,numHeads,名称=值)使用一个或多个名称参数指定附加选项。例如,DropoutProbability = 0.01指定一个辍学概率为0.01。

    例子

    全部折叠

    指定查询的大小、键和值。

    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对象。

    查询最多只能有一个吗“S”(空间)或“T”维度(时间)。任何尺寸查询标签“U”(不明)必须独立。如果查询是一个非格式化dlarray对象,然后指定数据格式使用DataFormat选择。

    的大小“C”(频道)维度必须匹配相应尺寸的大小查询

    的大小“B”(批)维度查询,,必须匹配。

    键指定为一个dlarray对象或数字数组。

    如果是一个格式化的dlarray对象,那么它的格式必须匹配的格式查询。如果不是一个格式化的dlarray函数对象,然后使用相同的格式查询

    任何大小的“S”(空间)或“T”维度(时间)必须匹配相应尺寸的大小

    的大小“C”(频道)维度必须匹配相应尺寸的大小查询

    的大小“B”(批)维度查询,,必须匹配。

    值,指定为一个dlarray对象或数字数组。

    如果是一个格式化的dlarray对象,那么它的格式必须匹配的格式查询。否则,该函数使用相同的格式查询

    任何大小的“S”(空间)或“T”维度(时间)必须匹配相应尺寸的大小

    的大小“B”(批)维度查询,,必须匹配。

    头,指定为一个正整数。的价值numHeads必须均匀划分的大小“C”(频道)的维度查询,,

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

    例子:关注(查询、键值、numHeads DataFormat =“认知行为治疗”)注意操作申请非格式化数据和指定的数据格式“认知行为治疗”(通道、批量、时间)。

    维度的非格式化输入数据,指定为一个特征向量或字符串标量FMT为每个维度的数据提供一个标签。

    当你指定的格式dlarray对象,每个字符为每个维度的数据提供了一个标签,必须这些选项之一:

    • “S”——空间

    • “C”——频道

    • “B”批处理(例如,样品和观察)

    • “T”时间(例如,时间序列的步骤)

    • “U”——未指明的

    您可以使用标签“C”“B”最多一次,一维标签“S”“T”

    您必须指定DataFormat当输入数据不是一个格式化的dlarray对象。

    数据类型:字符|字符串

    乘法因子扩展点积的注意[1],指定这些值之一:

    • “汽车”——点积乘以 λ = 1 d k ,在那里dk表示键的频道数量除以头的数量。

    • 数字标量,点积乘以指定的比例因子。

    数据类型:||字符|字符串

    面具指示元素输入对应于填充的值,指定为一个dlarray对象,一个逻辑数组,或binary-valued数字数组。

    功能防止键值,并允许关注元素的输入数据时,相应的元素PaddingMask01,分别。

    如果PaddingMask是一个格式化的dlarray必须匹配的对象,那么它的格式。如果PaddingMask不是一个格式化的dlarray函数对象,然后使用相同的格式。的大小“S”(空间),“T”(时间)“B”(批)维度PaddingMask必须匹配相应尺寸的大小

    默认值是一个逻辑数组的大小一样

    注意面具指示元素包括应用注意操作时,指定这些值之一:

    • “没有”——不会阻止注意元素对他们的位置。如果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|逻辑|字符|字符串

    辍学概率权重的关注指定为一个标量范围在[0,1)。

    数据类型:|

    输出参数

    全部折叠

    注意操作的结果,作为一个返回dlarray对象。

    如果查询是一个格式化的dlarray对象,然后Y是一个格式化的dlarray对象与相同尺寸的标签查询。的大小“C”(频道)的维度Y相应尺寸的大小是一样的。的大小“S”(空间)或“T”维度的Y中相应的尺寸大小一样吗查询

    如果查询不是一个格式化的dlarray对象,然后Y是一个非格式化dlarray对象。

    权重的关注,作为一个非格式化返回dlarray对象。

    权重是一个Nk——- - - - - -N——- - - - - -numHeads——- - - - - -numObservations数组,Nk的大小吗“S”(空间)或“T”(时间)的维度,N相应尺寸的大小吗查询,numObservations的大小吗“B”(批)维度查询

    算法

    全部折叠

    点积的关注

    注意操作的重点部分输入使用加权乘法操作。

    单头点积注意操作的

    注意 ( , K , V ) = 辍学 ( softmax ( 面具 ( λ K , ) ) , p ) V ,

    地点:

    • 表示查询。

    • K表示键。

    • V表示的值。

    • λ 表示比例因子。

    • 是一个面具的1和0组成的数组。

    • p是辍学概率

    掩模操作包括和不包括矩阵乘法的值设置的输入值 新鲜感面具元素。面具是填充的结合和注意力面具。将softmax函数可实现输入数据海峡对岸的价值维度,这样一个总结。辍学操作元素设置为零的概率p

    多线程Self-Attention

    多线程self-attention操作的输入X是由

    multiheadSelfAttention ( X , h , W , W K , W V , W O ) = 连接 ( 1 , , h ) W O ,

    地点:

    • h是正面的次数。

    • W查询是一种可习得的投影矩阵。

    • WK是一种可习得的投影矩阵的钥匙。

    • WV是一种可习得的投影矩阵的值。

    • WO是一种可习得的投影矩阵的输出。

    每个权重矩阵是由连接权重矩阵W对于每一个头。每一个 表示由头的输出操作

    = 注意 ( X W , X W K , X W V )

    引用

    阿施施,[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)。

    扩展功能

    版本历史

    介绍了R2022b