主要内容

注意

点积的关注

    描述

    注意力运算使用加权乘法运算聚焦于输入的部分。

    例子

    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(rand(querySize,numObservations, numQueries),“认知行为治疗”);keys = dlarray(rand(querySize,numObservations, numValues));values = dlarray(rand(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数组。

    • 可学习输出权值必须为a(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矩阵。

    • 可学习输出权矩阵是a(numChannels * numHeads)——- - - - - -(numChannels * numHeads)矩阵。

    函数Y = multiheadSelfAttention(X,numHeads,WQ,WK,WV,WO) queries = pagemtimes(WQ,X);键= pagemtimes(周,X);值= pagemtimes(西弗吉尼亚州,X);=注意(查询、键值、numHeads DataFormat =“施”);Y = pagemtimes(我们);结束

    您可以使用注意函数来创建一个函数,该函数将Luong注意操作应用于其输入。创建luongAttention函数,该函数列在示例的末尾,它应用Luong注意操作。

    指定数组大小。

    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函数根据Luong“一般”评分[2]返回上下文向量和注意评分。这相当于分别将查询、键和值指定为隐藏状态、加权潜在表示和潜在表示的点积注意。

    函数[context,attentionScores] = luongAttention(hiddenState,Z,weights) 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对象、逻辑数组或由0和1值组成的数字数组。

    当相应的元素在输入时,该函数阻止并允许注意输入数据键值对的元素PaddingMask分别为0和1。

    如果PaddingMask是一个格式化的dlarray,则格式必须与.如果PaddingMask不是格式化的dlarray,则函数使用与。相同的格式.的大小“S”(空间),“T”(时间)“B”(批)维度PaddingMask尺寸必须匹配对应的尺寸在而且

    默认值是与大小相同的逻辑数组

    注意掩码表示在应用注意操作时要包括哪些元素,指定为以下值之一:

    • “没有”-不要妨碍对元素位置的注意。如果AttentionMask“没有”,那么该软件就会阻止注意力的使用PaddingMask只有。

    • “因果”-防止元件到位“S”(空间)或“T”(时间)的维度查询从提供对位置元素的注意n > M的相应尺寸而且.在自动回归模型中使用此选项。

    • 逻辑或数字数组-避免注意的元素而且当数组中对应的元素为0,在那里AttentionMask是一个Nk——- - - - - -Nq矩阵或Nk——- - - - - -Nq——- - - - - -numObservations数组,Nk是尺寸的吗“S”(空间)或“T”(时间)的维度Nq对应尺寸的尺寸在吗查询,numObservations是尺寸的吗“B”维度查询

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串

    注意权重的退出概率,指定为小于1的非负标量。

    数据类型:|

    输出参数

    全部折叠

    输出数据,返回为dlarray对象。

    如果查询是一个格式化的dlarray对象,然后Y是一个格式化的dlarray具有相同维度标签的查询.的大小“C”(频道)的维度Y是否与尺寸相同的相应尺寸在.的大小“S”(空间)

    “T”维度的Y尺寸是否与相应尺寸相同查询

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

    注意权重,以未格式化的形式返回dlarray对象。

    权重是一个Nk——- - - - - -Nq——- - - - - -numHeads——- - - - - -numObservations,在那里Nk是尺寸的吗“S”(空间)或“T”(时间)的维度Nq对应尺寸的尺寸在吗查询,numObservations是尺寸的吗“B”(批)维度查询

    算法

    全部折叠

    点积的关注

    注意力运算使用加权乘法运算聚焦于输入的部分。

    给出了单头点积注意运算

    注意 K V 辍学 softmax 面具 λ K p V

    在哪里K,V分别对应于查询、键和值, λ 表示比例因子,是由1和0组成的掩码数组,和p是退出概率。掩码操作包含和排除输入的矩阵乘法设置值的值 对于零值掩码元素。蒙版是填充和注意蒙版的结合。dropout操作以概率将元素设置为零p

    多线程的自我关注

    输入的多头自注意操作X是由

    multiheadSelfAttention X h W W K W V W O 连接 1 ... h W O

    在哪里h是正面的次数,WWKWV,WO分别为查询、键、值和输出的可学习投影矩阵。每个权重矩阵都由串联的权重矩阵组成W对于每一个头。每一个 表示头操作的输出

    注意 X W X W K X W V

    参考文献

    [1] Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser和Illia Polosukhin。“你需要的就是关注。”神经信息处理系统的进展30(2017)。

    [2] Luong, Minh-Thang, Hieu Pham, Christopher D. Manning。“基于注意力的神经网络机器翻译的有效方法。”arXiv预印本arXiv: 1508.04025(2015)。

    扩展功能

    版本历史

    介绍了R2022b

    Baidu
    map