首页 > 其他分享 >Transformer的知识在哪里:从FFN出发

Transformer的知识在哪里:从FFN出发

时间:2024-06-11 14:43:28浏览次数:16  
标签:Transformer 权重 知识 矩阵 残差 FFN 出发 向量

前情提要:

前阵子,或许更早之前,笔者关于 MoE 的一些研究——如果称得上是研究,而非民科的话——让人不禁思考 Transformer 的知识到底存在哪里?这个问题的价值不言而喻,用来打发时间也是个不错的选择。

可惜的是,目前我关于它的思考仍旧十分细碎,或许也称不上有什么新意,这里只是做下暂且的梳理,一方面以作个人备忘,一方面也会考虑可读性,希望能帮助看到此篇的人度过愉快的厕所时光。

矩阵乘法

最简单的神经网络,或许就是矩阵 -> 激活函数 -> 矩阵 -> 激活函数的堆叠了吧。

假如这个网络的输入是个向量,那么在每一个矩阵层,进行的计算无非是一个向量和一个矩阵的乘法

即便以笔者匮乏的数学知识,也可以知道,向量和矩阵的乘法,可以看成是以向量为权重,对矩阵的所有行(或者列)进行加权求和。

从这个角度去理解的结果是什么呢?我们可以轻松的把一个神经网络分为头重脚轻的两部分:权重生成器,和知识存储器(其实就是个矩阵)。输入经过好多好多层复杂的运算,为的就是把最后的一层混合起来。

(你或许想到了残差连接这个反例,别急别急。)

那么然后呢?这就有了一丝丝可解释性了。假如我们可以评估知识存储器里的每个知识对于最终预测的影响,那么我们就可以通过查看权重,看看模型是否按照我们的理解在工作。

相关工作

好吧,口说无凭,还会被当成民科,这里就摆出一篇相关论文:Backpack Language Models -- 23 ACL Outstanding Papers。

这篇文章的出发点是可解释性。用我们刚才提出的视角,这篇文章的方法,完全可以看成是:权重生成器——一整个Transformer,和知识存储器——一个矩阵。

背景知识:Transformer,或者说 decoder 的结构,我们可以看成是:

  • embedding layer
  • Transformer Blocks
  • embedding layer (decoding layer)

这篇的文章呢,在这里面插了两层,变成了:

  • embedding layer
  • Transformer Blocks
  • Attention Layer
  • Backpack Layer
  • embedding layer (decoding layer)

这插入的两层被加粗了,名字是我随便取的。

大家都知道, Transformer Blocks 的输出是一个 token embedding 的序列。这里假设有 N 个 token,每个 embedding 的维度是 d,那么输出就是个矩阵,维度是 N * d。

Attention Layer 做的工作,就是把这个矩阵拿过来,计算两两 token 之间的 k 个权重,最终得到一个 N * N * k 的矩阵。(为什么是 k 个?怎么得到 k 个权重?无视也行,完全不重要。做法很简单,参考多头注意力。)

通俗点理解,每个 token 都需要给出它对其它所有 token 的喜欢程度,而且还要用 k 个标准给出 k 个不同的分数。所以每个 token 的权重矩阵是 N * k 。

Backpack Layer 里面,有一个预先准备好的矩阵。在这个矩阵里,每个词有 k 个向量。假设词表大小是 V,那么这个矩阵的大小就是 V * k * d——我们只需要用到一起出现的那些词的向量,矩阵大小是 N * k * d。

对于一个 token,它根据权重,把 Backpack Layer 里的那些向量混合,得到 token 最终的输出向量。

繁琐的细节终于解释了,总结下!

Backpack Language model 里,embedding layer + Tranformer Blocks + Attention Layer可以看成是一个活生生的权重生成器——非常重量级的权重生成器。然后,Backpack Layer 里存储的向量,就是所谓的知识啦。

梳理下模型的计算过程:给定一个输入的向量,经过 Transformer 的计算,得到它对于某些向量(知识)的喜爱程度,然后根据这个喜爱程度,把知识混合起来。

这么训练的模型呢,也就具备了一点点可解释性。具体还是看论文吧。

残差连接

笔者呢,前些时日,发了个想法。根据我们提出的权重生成器知识存储器这个角度,来理解残差连接的作用。

残差连接的直觉
如果有个神经网络,输入是向量,输出也是向量。

通常来说(或者假定),没有残差的情况下,最后一次的计算是向量 x 与一个矩阵相乘 A。比如:

y = xA。

那么直观点来看,这个操作就是将 A 的各行进行混合。

也就是说,我们可以把神经网络拆成两部分。第一部分根据输入得到一个权重,第二部分根据这个权重把 A 的各行进行混合。

如果我们假定模型里有知识,那么我们只能认为知识存储在了A矩阵里。多么悲观。

可是有了残差就不一样了。在模型里进行的每一次矩阵乘法(每一次权重矩阵的混合)的结果都会被传入到下一层。也就意味着每一层的权重或多或少都贡献了知识。

如何验证,残差是否是按照上面的假设发挥作用的呢?

一个很简单的做法,就是移除掉模型,比如Transformer,最后一层的残差。仅仅把向量与矩阵相乘的结果作为输出。

大意就是,模型的能力应该会受到最后面的知识存储器的限制。而残差连接,巧妙的把每一层都当做了知识存储器。怎么验证这一点呢?

就是移除掉模型,比如Transformer,最后一层的残差。仅仅把向量与矩阵相乘的结果作为输出。

没错,Backpack Language Models 就是个验证。当它把 k 设置为 1 时,模型的性能特别差。不无是个例证。

未完待续

什么,你问我你看完了这个收获了什么?嘛,总该不是完全没有收获吧。

写累了,祝大家吃好喝好,下次再见。

标签:Transformer,权重,知识,矩阵,残差,FFN,出发,向量
From: https://www.cnblogs.com/ysngki/p/18242021

相关文章

  • 【YOLOv8改进】HAT(Hybrid Attention Transformer,)混合注意力机制 (论文笔记+引入代
    YOLO目标检测创新改进与实战案例专栏专栏目录:YOLO有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLO基础解析+创新改进+实战案例摘要基于Transformer的方法在低级视觉任务中表现出色,例如图像超分辨率。......
  • 深度学习面试问题总结 | Transformer面试问题总结(二)
    本文给大家带来的百面算法工程师是深度学习Transformer的面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们还将介绍一些常见的深度学习算法工程师面试问题,并提供参考的回答及其理论基础,以帮助求职者更好地准备面试。通过......
  • 深入对比:Transformer 与 RNN 的详细解析
    在自然语言处理(NLP)和机器学习领域,模型的选择对任务的成败至关重要。Transformer和RNN(递归神经网络)是两种流行但截然不同的模型架构。本文将深入探讨这两种架构的特点、优势、劣势,并通过实际案例进行比较。1.RNN(递归神经网络)1.1RNN简介RNN是一种处理序列数据的神经......
  • 【transformer】安装
    pipinstalltransformers==4.28.1下载pyyaml>=5.1时候遇到网络问题下载不下来pippyyaml==5.3-ihttps://pypi.tuna.tsinghua.edu.cn/simplepipinstalltransformers==4.28.1-ihttps://pypi.tuna.tsinghua.edu.cn/simple ---hugging-face下载bert库exportHF_ENDPOINT......
  • Block Transformer:通过全局到局部的语言建模加速LLM推理
    在基于transformer的自回归语言模型(LMs)中,生成令牌的成本很高,这是因为自注意力机制需要关注所有之前的令牌,通常通过在自回归解码过程中缓存所有令牌的键值(KV)状态来解决这个问题。但是,加载所有先前令牌的KV状态以计算自注意力分数则占据了LMs的推理的大部分成本。在这篇论文中,作者......
  • Pyramid Vision Transformer, PVT(ICCV 2021)原理与代码解读
    paper:PyramidVisionTransformer:AVersatileBackboneforDensePredictionwithoutConvolutionsofficialimplementation:GitHub-whai362/PVT:OfficialimplementationofPVTseries存在的问题现有的VisionTransformer(ViT)主要设计用于图像分类任务,难以直接用......
  • Transformer动画讲解:注意力计算Q、K、V
    暑期实习基本结束了,校招即将开启。不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC在变少,岗位要求还更高了。提前准备才是完全之策。最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。总结链接如下:《大模......
  • 用 Sentence Transformers v3 训练和微调嵌入模型
    SentenceTransformers是一个Python库,用于使用和训练各种应用的嵌入模型,例如检索增强生成(RAG)、语义搜索、语义文本相似度、释义挖掘(paraphrasemining)等等。其3.0版本的更新是该工程自创建以来最大的一次,引入了一种新的训练方法。在这篇博客中,我将向你展示如何使用它......
  • Meta最新路径搜索算法 Beyond A*: Better Planning with Transformers via Search Dyn
    这篇论文前两个月刚刚放出,研究了如何让人工智能(AI)更好地解决复杂的规划问题,比如在迷宫中寻找最短路径,或者推箱子游戏(Sokoban)中把箱子全部推到指定位置。传统上,这类问题通常使用专门的规划算法来解决,比如A*搜索算法。但是,训练AI模型(如Transformer)来解决这些问题......
  • 国际版 抖音tiktok实战课程,向海外抖音出发(15节课)
    亲爱的朋友们,你们是否梦想着让自己的创意在全球舞台上闪耀?是否想要在国际版抖音TikTok上建立自己的影响力?那么,你来对地方了!我们的TikTok实战课程将带你启程,从基础到进阶,一步步解锁海外抖音的无限可能。准备好了吗?让我们携手踏上这场充满乐趣和挑战的旅程!课程概览:第1课:点......