当前位置: 首页 > news >正文

softmax

为什么要用softmax?

  1. 避免过大的注意力分数导致优化不稳定

  1. 在计算自注意力时,点积或者其它某些score function(例如加法或其他类型的相似性计算)可能会产生非常大的数值。例如,如果计算得到的 attention scores 是 [10000, 200, 1],那么 10000 这个数值就几乎主导了整个计算,这意味着相应的 value 对应的权重会非常大,而其他部分的贡献会变得微不足道。接下来,当这些值被用来计算加权和时,最终的结果会极端依赖于极大的分数,其他分数对输出的影响会被压缩得非常小。

更重要的是,如果在训练过程中这些大分数参与反向传播计算,它们的梯度可能会变得非常大,导致梯度爆炸,优化过程变得不稳定。反过来,如果某些分数特别小(如1或0),在梯度反向传播时可能导致梯度消失,从而无法有效更新参数。通过使用 Softmax,我们可以将这些分数归一化到一个概率分布,确保它们的数值范围适中,从而避免了过大或过小的数值导致梯度爆炸或消失的问题。

  1. 保证注意力分数非负

  1. Softmax的另一个重要功能是将所有的注意力分数转换为非负数。没有Softmax时,计算出的分数可能会包含负数,进而引发一些潜在问题。例如,如果某些特征的注意力分数为负,进行加权求和时可能会导致整体加权结果的方向出现不必要的偏差。自注意力的设计初衷是将每个位置的注意力加权求和,而负的注意力分数可能会导致某些位置的表示“被抑制”,这种设计与“加权求和”的直观理解不一致。

使用Softmax可以确保所有的注意力分数都是正数,并且它们加起来总和为1,这保证了每个元素对最终输出的贡献是可控的。Softmax还可以将较小的注意力分数压缩接近零,而较大的注意力分数则会被放大,确保最终加权求和时,较重要的特征能够得到更多的关注,而较不重要的特征则不会产生过大的影响。

可以不用softmax吗?

transformer中,query得到的q向量,key得到的k向量,相似度计算结果为一个$$n\times n $$的矩阵,softmax要遍历这个矩阵的每一行,对每一行分别进行softmax,而每一行的softmax计算又要对n个元素进行迭代,整体时间复杂度为$$O(n^2) $$,因此有一些方法和变种研究提出了如何减少计算复杂度或者用不同的方法替代 Softmax。

理论上是可以去掉 Softmax 的,但会带来以下问题:

  • 不归一化:去掉 Softmax 后,Attention scores 就不再是一个标准化的概率分布,可能会导致某些位置对输出的影响过大或过小,最终导致注意力不稳定。Softmax 的作用是平衡不同位置的贡献,使得每个位置对输出的影响在一个合理范围内。

  • 梯度问题:Softmax 除了进行归一化外,还通过对数映射进行梯度调整。如果没有 Softmax,直接使用大的注意力分数可能会引起 梯度爆炸梯度消失,影响模型训练。

  • 解释性:Softmax 将计算的分数转化为概率,这使得模型的解释性较好。如果去掉了 Softmax,虽然在理论上可以加快计算,但可能牺牲了模型的解释性。

 

http://www.lryc.cn/news/583565.html

相关文章:

  • PyTorch数据准备:从基础Dataset到高效DataLoader
  • C#字符串相关库函数运用梳理总结 + 正则表达式详解
  • 基于物联网的智能家居控制系统设计与实现
  • 17-C#封装,继承,多态与重载
  • 【AIGC】讯飞长录音ASR转写,使用JAVA实现科大讯飞语音服务ASR转录功能:完整指南
  • JavaScript基础篇——第五章 对象(最终篇)
  • NLP革命二十年:从规则驱动到深度学习的跃迁
  • LLaMA-Omni 深度解析:打开通往无缝人机语音交互的大门
  • pip install av安装av库失败解决方法
  • Celery Django配置
  • 存储服务一NFS文件存储概述
  • Mysql基于belog恢复数据
  • 精准医疗,AR 锚定球囊扩张导管为健康护航​
  • 基于 Spark MLlib 的推荐系统实现
  • 打破传统,开启 AR 智慧课堂​
  • langchain从入门到精通(四十一)——基于ReACT架构的Agent智能体设计与实现
  • 基于BRPC构建高性能HTTP/2服务实战指南
  • 前端业务监控系统,异常上报业务,异常队列收集,异常捕获
  • 【实习篇】之Http头部字段之Disposition介绍
  • HTML + CSS + JavaScript
  • http get和http post的区别
  • C++ 中最短路算法的详细介绍
  • JAVA策略模式demo【设计模式系列】
  • LaCo: Large Language Model Pruning via Layer Collapse
  • Java 大视界 -- 基于 Java 的大数据分布式计算在生物信息学蛋白质 - 蛋白质相互作用预测中的应用(340)
  • windows指定某node及npm版本下载
  • Using Spring for Apache Pulsar:Message Production
  • Softmax函数的学习
  • 矩阵之方阵与行列式的关系
  • Flink-1.19.0源码详解6-JobGraph生成-后篇