大致印象是:每一个token会对其他(包括自己),用自己的query去问其他token的key,来计算内积(两个向量的相似度),得到该token对其他token的相似度,然后作为权重乘以对应token的value,然后加和,就是该token经过self attention的输出;类推接下来每个token。但对于具体过程,一直没有算一下。 然后这周上四休三,周末居然一点...
其实 self-attention 就是帮我们实现这个提取信息的工具。那么,具体如何提取和修正呢? 4. query, key, value 的含义 query: 接上文,一个单词如何从上下文中提取信息呢?一个简单的想法,就是对上下文单词一个个去询问(query): '你有没有我想要的信息?'. 比如一个名词,它可能在上文很需要一个形容词修饰;又...
self-attention是什么? 一个self-attention 模块接收 n 个输入,然后返回 n 个输出。自注意力机制让每个输入都会彼此交互(自),然后找到它们应该更加关注的输入(注意力)。自注意力模块的输出是这些交互的聚合和注意力分数。 self-attention模块包括以下步骤: ...
Self-Attention特指在序列内部进行的注意力计算,即序列中的每一个位置都要和其他所有位置进行注意力权重的计算。 Multi-Head Attention(多头注意力机制):为了让模型能够同时关注来自不同位置的信息,Transformer引入了Multi-Head Attention。它的基本思想是将输入序列的表示拆分成多个子空间(头),然后在每个子空间内独立地...
Self-attention可以接收一整个序列的输入,序列中有多少个输入,它就可以得到多少个输出。 比如上面输入4个向量到Self-attention中,我们就得到了4个输出向量。这4个输出向量特别之处在于,它们都是考虑了整个序列得到的结果。 在把这些特别的向量丢给FC之后,再来决定要输出什么样的东西。
transformer_self_attention_vectors 如上图所示,和做点乘后,得到单词“Thinkg”的查询向量。其它向量的计算也同理。 第二步,用查询向量和健向量做点乘得出一个Score。继续用上图的单词“Thinking”举例子,在这一步我们需要计算出基于当前单词“Thinking”的其它所有的单词的Score(也包括当前单词“Thinking”的Score)。
一个Self-Attention模块拥有n个输入,返回n个输出。这么模块里面发生了什么?从非专业角度看,Self-Attention(自注意力机制)允许输入之间互相作用(“self”部分),寻找出谁更应该值得注意(“attention”部分)。输出的结果是这些互相作用和注意力分数的聚合。
self-attention是一种通过自身和自身进行关联的attention机制, 从而得到更好的representation来表达自身. self-attention是attention机制的一种特殊情况,在self-attention中, Q=K=V, 序列中的每个单词(token)都和该序列中的其他所有单词(token)进行attention规则的计算. ...
最后再补充一点,对self-attention来说,它跟每一个input vector都做attention,所以没有考虑到input sequence的顺序。更通俗来讲,大家可以发现我们前文的计算每一个词向量都与其他词向量计算内积,得到的结果丢失了我们原来文本的顺序信息。对比来说,LSTM是对于文本顺序信息...
首先回顾一下self-attention做的是什么: 所谓自注意力,也就是说我们有一个序列X,然后我们想要算出X对X自己的注意力,也即X中的每个时间点与其余时间点的相关性(在注意力机制中表现为相似性),从而得到一个注意力矩阵。 算出注意力矩阵后再将之用在序列X上来得到各个时间点的加权和,也即将其余各个时间点的信息...