人工智能注意力机制是什么?解决什么问题?介绍,人工智能的注意力机制是受到人类大脑中注意力分配方式的启发而提出的一种模型结构,指在使机器学习系统能够像人类一样, 在处理信息时,根据重要性分配不同的注意力。注意力机制的核心思想是在信息处理过程中, 不同部分的输入数据可以有不同的权重,从而可以更加有效的处理复杂的输入信息。个人理解,比如你正在看这个文章,那么你首先看到的是标题,然后是内容,其他你非关注点之外的都会被忽略,比如这里别人发消息给你。 注意力机制的主要作用包括,一、提高模型对输入信息的理解能力。通过关注 输入数据中的关键部分,注意力机制可以帮助模型更好的理解输入的含义,从而提高了模型的性能。二、解决长距离依赖问题在传统的神经网络结构中,当输入序列较长时, 信息在不同层之间的传递会变得困难。注意力机制可以帮助模型更好的捕捉远距离的依赖关系,从而提高了模型在处理长序列数据时的效果。 三、实现可解释性通过注意力权重可以清晰的看到模型在处理数据时所关注的重要部分,这样可以增加模型的可解释性,帮助用户理解模型的决策过程。 注意力机制通过为每个输入部分分配不同的权重,使得模型在处理输入信息时能 更加灵活高效的分配注意力,从而提高了模型的表达能力和泛化能力。这一机制在自然语言处理、计算机视觉等领域得到了广泛应用, 并取得了显著的成果。最后,注意力机制来源于人类的视觉处理系统。比如,当我们正在看此篇文章时候, 那么你更多关注你正在看的内容,其他都被忽略了下。 详细全文请关注技术趋势进行详细了解。
粉丝30获赞205

attention mechanism is inspired by human visual processing system when you read a page in a book the majority of what is in your field of vision is actually disregarded and you pay more attention to the word that you are currently reading this allows your brain to focus on what matters most while ignoring everything else in order to imitate the same effect in our deep learning models, we assign an attention to each of our inputs these ways represent the relative importance of each input element to the other input elements this way we guide our model to pay greater attention to particular inputs that are more critical to performing the task at hand attention mechanism in deep learning was first used by bardina for machine translation the traditional method of machine translation was to use sequence to sequence models in these models we pass the input sentence to an rnn that functions as an encoder rnns as you may know have a hidden estate in addition to their outputs, which are represented with the letters h for encoder and s for the decoder, which is also an rnn these hidden states can contain information from all the previous words in our sentence a context victor is constructed from the last hidden state in encoder rna, which actually includes the content of the source sentence this is then passed to decoder so that the decoder can translate the words into the target language the challenge with this approach was that if the sentence was long all of the information could not be compressed in that last hidden state the main idea of attention which bardina also used in his paper is that we give context victor to the entire input sequence instead of just the last hidden state in this way, even if the length of the sentence increases the context sweater can still contain the contents of the sentence now we just need to assign an attention weight on each of those inputs so that the decoder can focus on the relevant positions in the input sequence, but how can this be achieved we should take the current decoder hidden state and every encoder hidden state and feed them into a score function the idea behind score function is to measure the similarity between two vectors using the score function allows our model to selectively concentrate on helpful parts of the input sequence and thereby learned alignments between them there are many ways to calculate the score here i've outlined four options for doing so dot general concate and the location based function in which the alignment scores are computed from solely the target decoder states next step is to calculate the alignment victor as the formula in this slide shows we should simply use soft max function to convert or score values into probabilities now we have the attention weights we were searching for given the alignment victor as fates the context victor is computed as the weighted average over all the source hidden mistakes now we can pass the context victor into the decoder so that or decoder can access the entire input sequence and also focus on the relevant positions in the input sequence so to put it simply attention model works like an accounting notebook for every query, which in our example was the last hidden state of decoder that attention gives us a table which shows us how much attention we owe to each of the keys which in our case where the encoder hidden states。

注意力机制 attention machnism 是深度学习中常用的模块,作为一种资源分配方案,他将有限的计算资源用来处理更重要的信息,是解决信息超载问题的主要手段。今天我们要向大家介绍的是发表在 tt 的上的深度学习注意力机制综数论文。 论文作者是来自 irasmus university 的 johnny browers 和 flavius fresncar, 论文 pdf 电子版可在专之网站查阅。注意力是一种重要的机制, 可用于跨许多不同领域和任务的各种深度学习模型。论文提供了一个关于深度学习注意力机制的重要概述,各种注意力机制通过一个由注意力模型、 统一符号和一个全面的分类注意力机制组成的框架来进行解释。在隐言部分,作者指出,我们今天所知道的注意力 机制的真正起点通常是源于自然语言处理领域。注意力之所以能成为深度学习中的一种流行技术,主要基于四方面的原因。首先,整合了注意力机制的模型,在很多任务中都获得了最先进的结果。 其次,大多数注意力机制可以与基本模型联合训练。第三,啊,贪审,像神经网络模型引入了一种特定类型的解释, 这种解释非常复杂。第四, transformer 模型的引入进一步证明了注意力的有效性,从而进一步提高了注意力机制的受欢迎程度。这篇论文宗述的目的是解释注意力的一般形式, 并提供一个在深度学习注意力技术的全面概述。其贡献主要包括两大方面,首先,这项宗述提供了一个跨领域的注意力技术概述。作者以一种通用的方式讨论 注意力技术,使他们能够被理解并应用于各种领域。其次,论文通过使用统一符号的单一框架,结合技术和直观的解释,提出了重要的注意力技术, 并对注意力机制进行了全面的分类。论文一共分为五部分,第一节为引盐部分,对论文进行整体概述。第二节介绍了一个一般的注意力模型, 为读者提供了一个基本的了解注意力的属性和如何应用它。第三节介绍了注意力技术的分类。在本节中,作者将根据所提供的分类法对注意机制进行解释和分类。第四节概述了评估注意力模型的性能、测量和方法。最后,在第五部分, 作者给出了结论和进一步研究的建议。在通用注意力模型方面,作者将一个完整的模型称为任务模型,这个 模型只接受一个输入,执行指定的任务并产生所需的输出任务模型由四个子模型组成及特征模型、查询模型、 注意力模型和输出模型。论文指出,特征模型和查询模型是用来为注意力计算准备输入的。注意力模型和输出模型则与产生输出相关。基于是否关注技术是设计来处理特定类型的特征项链。特定类型的模型查询或它仅仅是一个通用的机制。 注意机制可以分成三大类,第一类是特征相关注意力机制,它是基于特定的一组输入数据特征模型提取特征项链,从而使注意力模型能够关注这些不同的项链特征。相关注意力机制处理的主要包括特征的多样性、特征的级别或特征的表示等。第二、 第二类是通用注意力机制,其组建的结构可以分解为以下几个子方面,注意力平分函数、注意力对其和注意力维度。第三类是查询相关的注意力机制。查询是任何注意力模型的重要组成部分, 因为他们直接决定从特征项链中提取哪些信息。这一类中的机制处理以下两个查询特征之一及查询的类型或查询的多样性。在对注意力模型评价方面,论文介绍了各种类型的注意力模型的评估。作者通过分类法来评估注意力模型的结构, 并基于模型实现的注意力机制进行了相应的概述和分析,同时讨论了评价注意力模型表现的各种技术。总的来说,这篇论文宗述了近年来关于深度学习中的注意力模型的研究进展,同时提出了一个全 前面的分类,他可以用来分类和解释不同数量的注意力机制。提出的文献这种分类法的组织基于任务模型的结构。此外,作者还使用基于查询建货值的框架讨论了注意力机制,并展示了如何使用外在和内在的测量方法来评估注意力模型的表现, 以及如何使用分类方法来分析注意力模型的结构。论文 pdf 电子版已在专之网更新,需要可直接前往专之网站查阅获取。

注意力训练背后的神经科学原理主要涉及到大脑中的多个神经回路的连接和交互作用。首先,注意力系统,它是一个神经回路由蓝斑、福哥河、杏仁河、前额叶和小脑等各个功能区域连接在一起组成的, 这些区域在注意力的产生、维持和执行过程中起着关键作用。当外界信息被反馈进入神经回路时,福格荷向前额叶皮层发出包含愉悦和满足感的信号,如果这个信号足够强,前额叶就会开始驱动整个注意力系统进行高速的运转, 使孩子进入高度的专注状态。注意力训练通过任务开始和结束信号、任务维持信号以及任务执行误差反馈信号来控制和锁定相关脑区的工作状态,加强相关脑区的连接性, 让我们的大脑临时性、软性的改变结构变得更加任务特异化。这种神经回路和信号的交互作用,使孩子能够更好的集中注意力,提高任务处理效率。那同时呢,避免内在和外在的连接,避免任务被打断。 此外,任务执行的误差反馈信号与奖赏和惩罚有着直接的关系,如果奖赏和惩罚来的越快越准,任务执行控制的误差反馈也就越准确, 对任务执行能力的训练以及对应注意力的训练或者是强化就越有帮助。总的来说,注意力训练背后的神经科学原理就是通过优化大脑神经回路的连接和交互作用, 提高孩子对任务的专注度和处理效率,同时排除干扰,尽量避免任务被打断,从而实现注意力的提升。

缺失否默是一种令人惊艳的模型,他推翻了循环神经网络的处理方式,并引入全新的注意力机制和编码器解码器的结构,它是一种基于注意力机制的模型,可以同时处理整个输入序列。那就有人会问,究竟什么是缺失否默呢? 他是怎么工作的?下面我会举一个简单的例子,让你轻轻松松,简简单单的明白。现在有这么一句话,我喜欢这部电影,我想让 ai 预测下一句我会说什么。我们先把这句话输入到嵌入层,将每个单词转化成向量表示,下一步这些向量表示会被输入到缺失风格中的编码器中。 这里面的编码器有两个子成,分别是 sif 和通信和乾坤神经网络。在 sif 和通信里面,会对输入的单词和其他单词之间的关系进行计算,并对这些关系进行平分,这样就可以知道哪些单词对当前单词的理解更好。在这个例子里面,我们会看到我与 喜欢的相关性更高。而在潜规神经网络中就不一样,模型会对每个单词的项量进行非线性变化和处理,以进一步提取这句话表达的意思。经过多个编码器的分析,模型逐渐提取出输入句子中每个单词的丰富含义, 包括了单词的语意、上下文和关系信息。最后,解码器会根据这些提取出来的信息来生成输出序列。而在这个例子中,模型根据输入句子的编码器表示,结合语言模型的知识,预测出下一句单词可能是好看或者是其他的语言。 以上就是确实分母的工作流程,他在机器翻译、文本生成等领域功能非常强大。以上就是全部内容分享到这里就结束了,我们下期再见。


进入 transform 架构之前,我们先来理解概念,那今天是第一部分的概念,也是我认为最重要的部分,也就是说矩阵相乘是怎么做的,以及矩阵相乘背后所代表的这个关注度。呃,他的几何逻辑是什么? 我们先来简单复习一下线性代数最基础的部分啊。在矩阵之前呢,我们先看一个数字情况下,它叫什么,它叫做标量啊,跟老师一起学英语,它叫 scaler, 一个数字是标量,当有很多数字组成的一个数组的情况呢,那个叫做 vector, 也就是向量。那么 很多个项链叠加在一起组成这样的一个矩阵啊,这个东西就是矩阵了,也叫做 matrix。 那我们这个蓝色的例子里面,它是一个三乘以四的矩阵,也就是三行四列这样的一个矩阵。那么其实矩阵也可以看作是多维的项量,什么意思呢?比如说这个矩阵可以看作是三个 向量的堆叠,那么它就是三乘四的矩阵。三行四列,那么这个呢,也是四行三列的一个矩阵,它可以看成是三个竖的这样的向量的堆叠。那么它组成了一个矩阵 之后,我们就看一下矩阵是如何相乘的了。我们拿两个小矩阵来举例子,分别是四行三列的矩阵,四行三列和一个三行四列的矩阵。那么首先矩阵可以做相乘,有个前提条件,就是第一个矩阵的列数等于第二个矩阵的行数, 并且他们相乘出来的这个形状呢,是等于第一个矩阵的行数和第二个矩阵的列数,也就是四乘四。 这里面有个简单的 hack, 就是说我们把矩阵写成这样的形式,四乘三和三乘四的形式,那么他们可以做相乘,是因为第一个矩阵的第二个数等于第二个矩阵第一个数啊,三三相等才能做相乘,乘出来的结果的矩阵的形状是第一 一个矩阵里的第一个数和第二个矩阵里第二个数,也就是四四这样的一个矩阵。那么矩阵相乘呢?也叫做点击相乘,叫做 dot product 啊,我们经常在大语言模型里面听过这个叫线,所谓线性变换啊,也叫做 linear transformation, 其实线性变换就是矩阵相乘,我们可以把线性变换理解成一个特殊的情况下的矩阵相乘,也就是我们第二个矩阵其实只有一列的情况下,你看这样的情况, 那么就是第一个矩阵乘以一个只有一列的矩阵,那这种情况呢?他也叫做一个向量,所以叫做线性变化,变成一条线了 啊,他也符合我们说的这个矩阵相乘的这个 hack 啊,他三和三相等,所以可以做矩阵相乘,那乘出来结果是四合一,就是四行一列好了。那么我们把矩阵相乘也可以看作什么呢?是 多个线性变换的叠加啊,这里面是假如想做四次这样线性变换,那我们整成一批来做,就是你看四个放在一起变成个矩阵了,那么结果就是把四个呃一条裂的结果堆在一起变成一个矩阵,所以是一个道理,大家不用紧张。那么实际上矩阵相乘的结果是怎么计算的呢?也很简单, 第一行里的第一个元素和第一列里的第一个元素做相乘,第一行里第二个元素和第一列的第二个元素做相乘,然后第一行里第三个元素和第一列里第三个元素做相乘,那么三次相乘结果加在一起求和,就放在了结果矩阵的第一行第一列。 同理,我们把第一行、第一个矩阵的第一行和第二个矩阵的第二列每一个元素分别做相乘之后乘出来的结果再做相加,得出来那个总和,放在了结果矩阵里面的 第一行的第二列。那么同理,第一个矩阵的第一行和第二个矩阵里的第三列做乘法,加和就放在这块,第一个矩阵第一行和第二个矩阵最后一列,那么就放在这。 其实这个也叫做加权求和啊,每一行和每一列分别做了加权求和之后,那么就组成了这样的一个结果的矩阵, 那么它的意义是什么呢?为什么要做乘法呢?那我们来看一个几何方面的解释。我们先看 a 和 b 这样两个 矩阵,很小的矩阵,都是一乘二的矩阵,一行两列啊,一行两列的一个矩阵,那么这个矩阵就可以画在我们的镶嵌表上。什么呢?就是 a 和 b, 它两个坐标,三和五,三和五, b 呢是一和四,一和四, 那么这两个坐标点画出来以后呢,我们就可以画两条象线啊,分别代表这两个坐标点。那我们说 a 和 b 这两个点相似,大家 直觉会觉得如何判断他俩相似,那就是他俩离得比较近喽,以及这两个项链他们之间的夹角比较小喽,那不就说明他俩比较近啊?举一个反面的例子,如果这个负三和一的啊,这个项链,或者说这个矩阵所代表的点,明显的就离 a 很远, 比 b 离 a 要远很多,在线性代数中呢,实际上规定了啊,如何判断两个顶点是不是相似?那么有一个定理叫做鱼旋相似度, 那么上公式了,我估计很多人要点走了,那么从现在开始啊,见到公式不要害怕,听张老师来讲大白话,所谓的这个叫渔权相似度,他的定义呢,就是两个顶点,他们的坐标 是什么?坐标就是矩阵,他们的矩阵相乘的结果除以这两个向量的长度的乘积啊,这个也就是 一个分子,一个分母,那么这个除来的结果越大呢?证明他两个越近似,哈哈,这是定理所定义的,那我们来看一下,实际上也就是分子越大,对吧?他们结果越大, 那么分子是什么呢?就是这个坐标点,也就是矩阵,也就是说这两个矩阵相乘结果越大,那么它的相似度越高。 这也就是为什么我们在大语言模型里面分别做矩阵相乘,然后看乘积的结果大小,来寻找他们的相似度高低的原因之一。那么有人会问了,那你怎么不说分母了呢? 啊,其实大家看一下,如果分别把它线段变长,虽然说分母 a、 b 的长度也分别变长了,但是矩阵的点也分别变长了,他们矩阵相乘的成绩结果的增幅永远大于 ab 这两个线段成绩结果的增幅,所以 ab 同时变大的时候呢,这个成绩就变得更大啊, 这个是我们直观的一个直觉,那么如果想证明他呢,也很简单,首先我们把这个公式单提出来啊,我们给他变换一下,把分母放在左边, ab 矩阵相乘等于呢?等于 a 的长度乘以 b 的长度,再乘以一个扣三 a, c 打就这么来的,那我们看一下 b 的长度乘以扣三 a c, 他是什么? 给大家答案,那么这个就代表了 b 在 a 的投影长度,什么意思呢?我们把 a 和 b 画出来看,这是 a 的这个项链,这是 b 的项链,这个是库塞,谁的这个角,我们做一个垂线,那么实上这个就是什么?这就是一个直角三角形, 那么 cosine, 我们知道直角三角形,这个 cosine 的邻边等于 cosine c 的乘以斜边,也就是邻,斜边就是 b 的长度,对吧?乘以 cosine c 的,那么这一部分就代表了邻边, 也就是红色这部分,那么这部分恰好是 b 向量在 a 向量这个方向上的投影,也就是红色这部分。那我们就可以把这个公式写成什么呢? ab 矩阵相乘的大小等于 a 的长度 乘以 b 在 a 的投影长度,也就是蓝色部分乘以红色部分,那么就很简单了,大家看也就是寻找两个相量的相似度,我们也就是看其中一个相量在另一个相量投影的长度大小,你投影的越多,那么这个乘积就越大,因为 a 是不变的嘛。假如说我们这个相量拉长也得拉到这, 那我们直觉就知道,哎,你这个点和 a 肯定是比这个点离 a 更近的,为什么证明上来做个垂线,那么垂线到这,这个的红线的长度就更长了。同理,如果有一个点比较远,在这我去做垂线的话,那就是一个负数了,那同 那负数乘以一个正数,结果就更小,就是这个道理。所以我们就明白了, ab 这两个顶点的矩阵相乘的结果大小就代表了这两个点的相似度高低。 那么回到我们的例子当中,现在我们是在一个二维平面上规定了一个 x y 轴两个坐标点,如果我们是三维平面呢?那我们就会有个 z 轴, z 轴在这,那么就是三个坐标点来规定他的三维空间的这个坐标, 那么四维、五维更高维呢?其实数学逻辑是不变的,同理都是他们所代表的矩阵相乘的结果代表了这两个点在多维空间中的相似度。 那么理解了矩阵相乘的结果代表了相似度高低呢?我们回到我们的例子当中,在大语言模型训练的时候,我们的矩阵都是用来存放我们的样本文字的,它 token, 比如说我们现在有个四乘三的矩阵, 每一行代表了每一个头啃的文字,每一列呢,代表了我们想学习多少维度的这个鱼信息。那我们给他做小一点,就四个样本文字,有三个维度,分别代表了猫爱吃鱼啊,第二个维度的猫爱吃鱼,第三个维度的猫爱吃鱼。然后 我们第二个矩阵实际上就是第一个矩阵,我们给他调了个个百分之九十度旋转。之所以要这么做,是因为我们利用了先行代数里面的矩阵相乘,因为你看 第一个矩阵的第一行乘以第二个矩阵第一列,那么就是猫和猫自己去做相乘,并且是每一个维度下的猫和猫的乘积相加, 得出来了猫对应猫的这个字的关注度的关系,那么这个值越大呢,就代表了猫对应猫这个字关注度越高。那我们来举个例子,我们拿猫和鱼来举例子,那么就是说第一个矩阵的第一行乘以第二个矩阵的 第四列,也就是放在这啊,对应的猫和鱼他俩的对应关系,如果这个值很大的话,说明了什么?说明猫和鱼他俩的 关注度很高,那实际上在坐标里面呢?假如说我们就是三维的很好画,那猫假设是七七七七六这样的一个坐标,鱼呢是六四五这样的坐标,那很明显你看他俩关系比较近, 而爱吃鱼的爱字呢,他这个坐标就比较远,所以说猫和鱼他们之间的鱼关系比较近,爱呢鱼鱼关系比较远, 那么这个高低也是通过他们的这个坐标乘积矩阵相乘得来的。这个数字我们给它换成数字的形式表示一下。假说猫的坐标是七七六,我们在三维平面当中,那么给它填进来不同的维度上分别代表了不同的初始化的值。 然后鱼呢,也是三个维度,六四五啊六四五,那么他在这样做矩阵相乘,其实就是做 他们的坐标,这个矩阵相乘得出来的结果恰好是一百了,那么这个一百就是猫和鱼的关注度的值。实际上这些数字是我们初始化时候随机初始化的,那么在初始化的时候呢,猫和鱼肯定不是这么近, 当然而且初始画时候值也是比较小的,大部分都在一的这个范围之内,那么我们为了演示,我们给他画长一些, 实际上初始化的时候,这个值可能是随机的很远,那么在模型的训练过程当中,他做的事情反反复复的事情,其实就是在找猫和鱼最佳应该匹配的这些坐标点。那么举个例子,我们现在初始化数可能在这,那么第一次循环在这,第二次循环在这, 然后慢慢慢慢的每次循环,最终找到了猫和鱼最近的这个关系点,那么当然很复杂,除了猫和鱼之外呢,我们还有爱和吃,那猫和吃啊,鱼 和海海鲜等等多个不同维度下多个不同数字组合,那么这个就是大圆模型其实在训练当中在做的事情了,不断在找最佳的对应关系, 所以最终呢,我们通过不断的这种矩阵相乘的循环,不断的更新参数,那么我们会找到猫爱吃鱼对应猫爱吃鱼这几个字里面的关注度,如果学习效果很好,那么关注度最高的应该是猫和鱼的关注度。 好,那我们理解完了第一部分,下一个视频呢,我们一起来看一看神经网络和 layer norm 是什么样的一个概念,如果不理解的同学呢,也可以私信我,我近期会开始在抖音上做公开课直播啊,欢迎大家关注,记得点赞关注哦!

hello, 朋友们,今天呢我们继续来讲注意力机制,然后这一节呢会主要讲我们最关心的这个 self attention, 它主要是什么样的一个结构? 首先让我们来回顾一下注意力机制,他核心思想是什么呢?他其实就是将一个目标像和一组其他像进行一个比较,以便揭示他们在给力上下文当中的一个相互关联性。 所以呢他的想法呢,就是说我现在呢不会认为啊,某一个 context vector 能够代表所有的内容,比如说像我们之前在 sequence to sequence 里面说的那样,他说我要利用所有我能利用的东西, ok, 那么就是说我们前面的所有项目都要被比较,那么这个注意力机制呢,其实我们可以简短的先提一下,他一共有两种使用方式,一种是这个 backward looking self attention, 就是我向回看 嗯的这么一个呃模式。那么另外一种呢是 general by directional self attention, 以双向注意力,所以他前面后面都可以用。 那么首先呢,我们会按照这个呃 backward looking self attention 的这个背景来讲之后的内容。 那么首先我们其实可以做一个类比,就是把这个注意力机制呢视为一种 渐进式的查找表 lookup table, 他就能帮助我们来理解他是怎么样工作的啊?比如说呢,我们有一个查找表,对吧?就是像你的钥匙配对这个锁一样,那么这个时候呢,我们传统当中的 lookup table 它就是一个 嗯,你要么全匹配,要么呢就是完全不匹配啊,所以我找的就是只有那一个锁, 而我叫我的钥匙呢也只能开那一个门,但是呢在这个 注意力机制呢里面他就说我是一个模糊查找,不是一个完全 zero one 的这么一个方式,而是什么呢?啊?是查询于所有键进行一个呃 渐进设匹配就是我的问题,和所有的啊这个孔啊进行一个匹配,那每一个呢都被赋予一个介于零到一之间的权重,但是这个权重呢就是看他们俩之间的匹配程度,对吧? 那么最后呢每个键对应的值 ok, 这里就出现了三个重要的 呃关键词,一个是 key, 一个是一个是 values, 一个是 query okay, 你会觉得很困惑对吧?这三个东西他们到底是怎么回事?说白了就是你这个 kiss 和这个 query 啊两两组合,然后呢计算一个相似度,嗯的结果,然后他就作为一个权重被沉到这个 values 上面啊,最后呢做一个加全平均啊。所以呢这里的这个权重啊,它反映的是每个输入元素对于输出的贡献大小啊,也就是这个 kiss 和这个 curry, 就是我查询或者是 kiss 之间他们之间的这个 啊相似度贡献度是多少?那这样的话呢就能够捕捉到这个输入序列中元素之间的复杂动态变化的一个关系。 那么举个例子,如果我们想要理解一个句子中的某个词,那么注意力机制呢,他会允许模型查看句子当中的所有其他词啊,并且呢根据他们和当前的词的一个相关性呢给予不同的权重,也 就是说他不是在像我们之前的这个传统式的啊,就是我一个查询配一个键,然后返回对应的值啊,他说我所有都要用啊,只是这个程度的大小 不同而已。那么让我们来看一下它的这个公式是怎么样写的。 首先第一步呢,重要的是要把它转换为就是我们的这个输入啊,输入都是嗯,一个句子,对吧?那么这个句子呢?嗯,当然就模型是理解不了的,因为他没有变换成数字,所以首先第一步要做的其实是把它换成 wording bedding, 那么我们这里就用这个 w i 到 n 来表示一个由词汇表 v 中的 词组组成的一个序列,比如说 the casset on the mat, 它就可以理解成是一串串这个单词或者标记,每一个呢都来自于预预定义的这个词汇表,那么预定义的词汇表呢,就是这个 e embedding, 那么它呢,是一个预先训练好的矩阵, d 是这个嗯, embedding better 的维度, v 呢,就是 vocabulary, 它的大小, 嗯,所以呢,我们首先第一步就是,嗯啊,把每一个词转换为它对应的 inbelling weather 啊,所以这个 x 呢,它就是单词 w i 的数 词画表示,它呢包含了该单词的语音信息,并且呢作为这个模型处理和学习的一个基础。 好了,那我们做完这个 pre processing, 呃,就进入到了自定义自注意力的这个部分,首先呢是要生成这个查询, 这个深深查询项链呢,他就是当前的这个单词词的一个表示,用来表达这个模型当前对于这个单词的理解,或者需要 当我们关注某个特定的词汇,并且把它和其他词汇进行比较的时候呢,这个特定的词汇呢,就处于查询的角色,所以就是,嘿,我要去问问其他的人,他们和我相关 有多大啊,所以我去问,对吧?所以我就是那个查询的角色。那么注意啊,这里和我们之前提到的 这个注意力有所区别,是因为啊,他在啊这个原始的 wording bedding 的基础上乘以了一个矩阵啊,其实你会我们稍微往下面看一下啊,他的这个 query keys values, 在本质上从一开始没有什么区别,他们都是乘以一个相应的矩阵 来表达自己啊,那么之后呢,这三个就是举证啊,会被训练才有他们独自意义,所以你会发现他现在加这个呢,是为了增加这个模型的一个表达能。 那么第二个呢,是这个访问值,也就是 kiss, 那么 kiss 是什么意思?就是我现在被查询,我是那个被查询的角色, 呃,当他呀,和这个,当其他的词汇被当前的注意力的焦点,也就是查询所比较的时候,这些词汇就处于 key 的角色,哎,也就是说,只要你是那个被比的, 对吧,你是那个被动的角色的时候,你就是 key, 那么他们呢,作为先前输入的一个部分,与查询相比较,以确定他们和当前的这个焦点词汇的相关性或者是匹配程度。所以第一步呢,他其实 是一样的,就是做一个增加表达力的一个转换,然后这一步呢,就是我们刚才说的啊,怎么样去计算他们之间的相关程度与相关的一个函数,也就是我们之前非常熟悉的这个 dual product。 那注意呢,这里我们的这个假设是 backward, 嗯, self attention, 所以,呃,所有的这个 i 呢,它都应该小于,嗯,所有的 j, 也就是 kiss, 它都,它的位置都应该是 be i, 要小的, 也就是说我看不到未来,对吧?这才是 backwards self attention 的一个设置。那么第三呢,是这个 value 啊,每一个词汇在 作为这个 value 的时候呢,它其实是根据当前注意的焦点来计算输出的,具体来说就是当我们一旦确定了他们之间的一个匹配度,这里计算出来的那每一个 k, 他所对应的 value, 呃,也就是这里就是一个原始的,就是之前我们说他做了一个转换 啊,就会被用来计算加全平均啊,从而呢产生对于当前焦点的输出啊,也就是说 最后呢,是需要计算这样一个权重的,他的计算方法呢,就是对于当前的这个 i 啊,就是我们的查询 每一个 j, 呃,它的这个相似度是多少?然后最后呢,我们把它转换成 soft max, 为什么?它是可以把所有的任何东西转换为,呃,零到一之间的一个概率的函数,对吧? 那么通过这样的计算呢,这个模型,他就决定从整个这个集合当中获取哪些信息,以及获取多少信息,所以这就是一种加权机机制。 那么和这个查询更相关的词,呃,也就是说,在这一步, 如果他们俩得出来的这个数值是一,就是最大的话,那么就会被赋予更高的一个权重。 第四步呢,就输出更新,那么最后呢,这些所有加权的值就会被整合起来,更新当前的这个单词的表示, 那么使其呢,不,不但反映了这个单词本身的信息,还包含了序列其他部分的信息啊,所以就是针对每一个位置我们都计算一个相应的权重,然后呢再乘以他当前的值啊,最后做一个加法 就可以得到最后的 output 啊,对,我需要补充一下啊,这个地方,呃 i 就是我们当前的要注意的那一个查询,对吧?然后呢,这 j 呢,就是所有被查询的,也就是我们的 key 啊,然后他们的每一个啊,这样的一个可以想他就是一个组合,对吧?他当前的这个 i 和不同的 g a 都有一个组合,然后不同的这样一个组合,每一个组合都会计算出来 这个 soft mat max 的值,然后再再把它沉到当前的,呃,这个呃 value j 也就是我们的对象上面。 呃,然后呢,最后就是说我要总结一下这个 soft max, 它通常呢对当前的元素 i 关注是最多的,也就意味着呢,说这个呃 o i 的值主要受到这个 value 可爱的影响,这个当然就是理所当然的,对吧?你就是你当前的这个查询啊,就是我当然是跟自己相似东西相比较,那么跟我一模一样的东西是不是得到最大权重?