面试题合集(2)

1. Self Attention的时候 Q K T QK^T QKT之后要除以 d ? \sqrt{d}? d ?

参考苏剑林大神:

  1. 浅谈Transformer的初始化、参数化与标准化

    • 模型初始化:介绍了常用的采样分布,包括正态分布、均匀分布和截尾正态分布。并从代数角度理解初始化方法,提出用二阶矩来衡量指标是否“消失”或者“爆炸”,推导出Xavier初始化和He初始化的方法。
    • 激活函数:分析了激活函数对模型初始化的影响,介绍了“微调激活函数的定义”的方法,以sigmoid函数为例,说明了如何通过微调激活函数来保持二阶矩不变。还介绍了selu激活函数,它是基于同样思路进行“微调”后的elu函数。
    • 直接标准化:介绍了Batch Normalization、Instance Normalization、Layer Normalization等标准化方法,说明了它们的作用原理和区别。并指出近来的一些工作逐渐尝试去掉center这一步,甚至有些工作的结果显示去掉center这一步后性能还略有提升。类比Stylegan2 中使用去掉 center之后的 weight demodulation 来替代 Instance Nomalization;RMS Norm为什么比 Layer Normalize 更快,效果也基本一致
    • NTK参数化:介绍了NTK参数化的方法,它可以将所有参数都用标准方差初始化,但依然保持二阶矩不变。并讨论了NTK参数化跟直接用Xavier初始化相比的好处,以及Attention中除以 d \sqrt{d} d 的重要性。在结果上预先使用准方差标准化,使的参数初始化可以直接从符合0~1 分布的高斯分布中随机采样。也解释到了 T5 为什么可以不除以 d \sqrt{d} d
    • 残差连接:讨论了残差 x + F ( x ) x+F(x) x+F(x)的相关设计,指出残差会进一步放大方差,需要想相应的策略缩小其方差。介绍了Post Norm、Pre Norm、SkipInit、ReZero、Fixup等方法,并分析了它们的优缺点。提出 x + α t ∗ F ( x ) x+\alpha_t*F(x) x+αtF(x),可以在训练过程中逐步增加 α t \alpha_t αt的大小,直到为 1。
  2. 从熵不变性看Attention的Scale操作

    • 全文总结:本文从熵不变性的角度重新推导了Transformer架构中Scaled Dot-Product Attention的缩放因子,得到了一个新的缩放因子κlog⁡nd。初步的实验结果显示,新的缩放因子不改变已有的训练性能,并且对长度外推具有更好的结果。
      重要亮点:
    • Transformer注意力机制:当前Transformer架构中使用最多的注意力机制是Scaled Dot-Product Attention,其中“Scaled”是因为在Q,K转置相乘之后还要除以一个 d \sqrt{d} d 再做Softmax。
    • 熵不变性:为了使得模型结果能够更好地泛化到未知长度,Attention机制的设计应该使得ai,j尽量具备熵不变性。
    • 新的缩放因子:根据熵不变性以及一些合理的假设,我们可以得到一个新的缩放因子 κ log ⁡ ⁡ n d \frac{κ\log⁡n}{d} dκlogn,从而得到一种Scaled Dot-Product Attention。
    • 实验结果:在与训练长度一致的情况下,新的缩放因子Attention-E和常规的Scaled Dot-Product Attention Attention-O的效果是很接近的,但是外推到更大的测试长度时,则明显拉开了差距。
    • 相关结果:在阅读ACL2022的投稿论文时,发现上面有一篇《Overcoming a Theoretical Limitation of Self-Attention》,给出了相近的结果。
  3. 从梯度最大化看Attention的Scale操作

    • Attention Scale因子的一般解释:如果不除以d,初始的Attention就会很接近one hot分布,造成梯度消失,导致模型训练不起来。
    • 计算梯度:作者定义了Softmax梯度的优化目标,从最大化该目标的角度探讨了Scale因子的最优值。
    • 正态分布:作者通过遍历一些n,然后数值求解出取最大值时的α∗,发现一定范围内最优点α∗与n大致满足 α ∗ ≈ 0.84 log ⁡ ⁡ n α^*≈0.84\sqrt{\log⁡n} α0.84logn 的关系。
    • 余弦分布:作者通过数值求解最大值,然后再拟合,发现 α ∗ ≈ 3.5 log ⁡ ⁡ n α^*≈3.5\sqrt{\log⁡n} α3.5logn 拟合得也不错。
    • 相关思考:对于双向Attention(Encoder)来说,假设训练样本长度相同,那么n就是一个常数,我们可以根据n算得相应的最优α,然后固定在模型中即可;但是对于单向Attention(Decoder)来说,每个token的n实际上都不一样(位置id加1),所以理论上无法做到对所有token都最大化式(3),不过由于α∗关于n的变化较慢,所以取一个差不多的值就行了。
    • 本文从梯度的角度探讨了Attention Scale因子的选择问题,相关结果既可以用来改进Attention的Scale因子,也可以用来解释cos相似度的对比学习的温度参数。

汇总一下:如果假设均值为 0,方差为 1 的 Attention Score 会带来更好的效果,除以 d \sqrt{d} d 会使的 q k T qk^T qkT之后的Attention Score方差为1。从熵不变性来考虑,给有助于提高模型在长度外推方面的表现,增强泛化能力。从Softmax梯度的优化目标梯度最大化来看的话,这个 scale 应该为 α d \frac{\alpha}{\sqrt{d}} d α相当于在讨论给 softmax 激活函数怎么加上一个合适的温度系数!

Todo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

module_param的用法

在Linux内核模块编程中,`module_param`宏允许你声明一个模块参数。模块参数是指可以在加载模块时从命令行设置的参数,也可以通过/sys文件系统(如果内核配置了CONFIG_SYSFS)在模块加载后进行修改。这些参数对于调整模块的行为而不需要重新编译模块代码非常有用。 使用方法 …

KT6368A双模蓝牙芯片上电到正常发送AT指令或指令复位需要多久

一、简介 KT6368A芯片上电到正常发送AT指令,或者开启蓝牙广播被搜索到,或者指令复位需要多久等等系列问题总结 详细描述 其实这些问题归结到一起,就还是一个问题,芯片上电需要多久的时间 在另外一份文档里面,是有描…

跟我学C++中级篇——if constexpr的应用

一、场景应用 在一个开发场景下,需要动态处理不同类型的数据写入。本来这个非常简单,只要定义一个模板即可搞定,但这里偏偏有一个细节,是调用别人的库来实现写入。而这个库对不同的数据类型的写入,提供了N种不同的函数…

Python实战开发及案例分析(28)—— 预编码算法

预编码算法(Precoding Algorithm)通常用于无线通信系统中,尤其是多输入多输出(MIMO)系统中,以提高数据传输的可靠性和效率。预编码是为了在发送端对信号进行处理,以优化传输性能。 在MIMO系统中…

Java设计模式 _行为型模式_访问者模式

一、访问者模式 1、访问者模式 访问者模式(Visitor Pattern)是一种行为型模式。它允许在不修改已有类结构的情况下,向类中添加新的操作。访问者模式通过将操作封装在一个访问者对象中,使得可以在不改变各个元素类的前提下&#x…

RedisTemplate实战应用--队列等

一、RedisTemplate队列插入 1、从集合左边插入值 https://blog.csdn.net/weixin_43658899/article/details/121040307 leftPush(K key, V value) redisTemplate.opsForList().leftPush("leftdatakey","bbbb");2、从集合左边开始在v1值后边插入新值v2 le…

使用 Django 连接 MySQL 数据库

文章目录 步骤一:安装必要的库和驱动步骤二:配置数据库连接步骤三:执行数据库迁移步骤四:开始使用 MySQL 数据库创建一个模型迁移模型到数据库使用模型进行数据操作创建新记录:查询记录:更新记录&#xff1…

Mac安装第三方软件的命令安装方式

场景: 打开终端命令行,sudo xattr -rd com.apple.quarantine,注意最后quarantine 后面加一个空格!然后打开Finder(访达),点击左侧的 应用程序,找到相关应用,拖进终端qua…

(超实用)京东订单数据分析案例-维度下钻

1,数据介绍,字段了解 尽可能熟悉业务,多知道字段的含义,字段字段间的逻辑关系,后期数据分析思路才能更清晰,结果才能更准确 2,订单数据分析基本思路 维度下钻 3,代码实现全流程思路…

华为telnet的两种认证方式

华为telnet的两种认证方式 实验拓扑: 实验要求: 1.采用普通密码认证实现telnet 远程登录机房设备R3 2.采用AAA认证服务方式实现telnet 远程登录机房设备R3 实验步骤: 1.完成基本配置(设备接口配置IP,此步骤略过&#…

Facebook的隐私保护挑战:用户数据安全的新时代

在全球范围内,Facebook已经成为了不可忽视的社交媒体巨头,它连接着超过20亿的活跃用户。然而,随着其影响力的不断扩大,关于用户隐私和数据安全的问题也愈加引人关注。本文将深入探讨Facebook面临的隐私保护挑战,以及它…

一个程序员的牢狱生涯(47)学法

星期一 学法 二铺不知道什么时候走到了我的身边,向我说道,这是二铺在我进来号子后主动过来和我说话。 我听到二铺这声突兀的说话后,抬起头。这时我才看到,除了二铺,还有六子、棍子都围在我的身边,看着我。虽然六子和棍子依旧一副‘吊儿郎当’的样子,但我从他们几个的眼神…

解析前端开发中同源策略与配置代理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 在前端开发中,跨域请求是一个常见的问题。同源策略限制了浏览器中一个页面…

C++高手进阶:Windows 模块加载的艺术与策略

前文我们讲到了怎么不依赖第三库,搭建自己的测试框架 没有看的读者可以通过这个链接自行阅读: 👉👉👉 自力更生:0依赖三方库,手把手教你打造专属C测试框架 作为项目开发来说,我们通常…

Leetcode:最长回文子串

题目链接:5. 最长回文子串 - 力扣(LeetCode) 普通版本(暴力枚举) 解题关键: 1、记录最长回文字串的长度和起始字符的下标 2、判断回文字串的逻辑与整体逻辑分离 3、先确定寻找回文字串的边界范围后从两边向…

解析Java中1000个常用类:CharSequence类,你学会了吗?

在 Java 编程中,字符串操作是最常见的任务之一。为了提供一种灵活且统一的方式来处理不同类型的字符序列,Java 引入了 CharSequence 接口。 通过实现 CharSequence 接口,各种字符序列类可以提供一致的 API,增强了代码的灵活性和可扩展性。 本文将深入探讨 CharSequence 接…

NBM 算法【python,算法,机器学习】

朴素贝叶斯法(Naive Bayes model)是基于贝叶斯定理与特征条件独立假设的分类方法。 贝叶斯定理 P ( A ∣ B ) P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B)\frac{P(B|A) * P(A)}{P(B)} P(A∣B)P(B)P(B∣A)∗P(A)​ 其中A表示分类,B表示属性&…

Unity中的MVC框架

基本概念 MVC全名是Model View Controller 是模型(model)-视图(view)-控制器(controller)的缩写 是一种软件设计规范,用一种业务逻辑、数据、界面显示 分离的方法组织代码 将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时&#x…

【嵌入式硬件】DRV8874电机驱动

目录 1 芯片介绍 1.1 特性简介 1.2 引脚配置 1.3 最佳运行条件 2 详细说明 2.1 PMODE配置控制模式 2.1.1 PH/EN 控制模式 2.1.2 PWM 控制模式 2.1.3 独立半桥控制模式 2.2 电流感测和调节 2.2.1 IPROPI电流感测 2.2.2 IMODE电流调节 3.应用 3.1设计要求 3.2 设计…

AI换脸FaceFusion一键云部署指南

大家好,从我开始分享到现在,收到很多朋友的反馈说配置很低玩不了AI。本篇是一个云端部署AI项目的指南,帮助大家在云端进行AI项目的部署。我会从云平台的选择、代码部署、保存镜像几个方面进行详细的介绍。没有代码基础的小白也不用担心&#…