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

Online Softmax

Online Softmax

Softmax

  • 给定输入向量 \(\boldsymbol{x} = [x_1, x_2, ..., x_N]\), Softmax 函数将其映射为概率分布向量 \(\boldsymbol{y}\), 第 \(i\) 个输出 \(y_i\) 的计算公式为:

    \[y_i = Softmax(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{N} e^{x_j}} \]

    • 其满足: \(0 \lt y_i \lt 1, \sum_{i=1}^{N} y_i = 1\).

Safe Softmax

  • 平移不变性:

    • Softmax 函数对输入向量 \(\boldsymbol{x}\) 同时加上或减去一个常数 \(C\), 输出结果不变, 即:

      \[Softmax(\boldsymbol{x}) = Softmax(\boldsymbol{x} - C) \]

    • 证明:

      \[\frac{e^{x_i - C}}{\sum_{j=1}^{N} e^{x_j - C}} = \frac{e^{x_i}\cdot e^{-C}}{\sum_{j=1}^{N} (e^{x_j} \cdot e^{-C})} = \frac{e^{x_i}\cdot e^{-C}}{ e^{-C} \cdot \sum_{j=1}^{N} e^{x_j}} = \frac{e^{x_i}}{\sum_{j=1}^{N} e^{x_j}} \]

  • 直接计算 \(e^{x_i}\) 易导致上溢 (当 \(x_i\) 很大时), 基于平移不变性, 工程上通常取常数 \(C = max(\boldsymbol{x})\), 此时计算公式变形为

    \[y_i = \frac{e^{x_i - max(\boldsymbol{x})}}{\sum_{j=1}^{N} e^{x_j - max(\boldsymbol{x})}} \]

Online Softmax

  • 标准的 Safe Softmax 计算步骤需要三次读取输入数据 \(\boldsymbol{x}\): 找最大值 \(m\), 计算 \(d = \sum {e^{x_i - m}}\), 计算 \(y_i = \frac{e^{x_i - m}}{d}\).
  • Online Softmax 的目标是尽可能少次读取输入数据 \(\boldsymbol{x}\), 同时计算出最大值、指数和、以及最终结果.
  • 串行递推公式:
    • 定义在 \(k\) 时刻(即处理完输入序列的前 \(k\) 个元素 \(x_1, ..., x_k\))的状态为 \((m_k, d_k)\):
      • 局部最大值: \(m_k = max(x_1, ..., x_k)\)
      • 局部指数和: \(d_k = \sum_{j=1}^{k} e^{x_j - m_k}\)
    • 公式推导:
      • 已有 \(k\) 时刻的状态 \((m_k, d_k)\), 现在输入新元素 \(x_{k+1}\), 需计算 \(k+1\) 时的状态 \((m_{k+1}, d_{k+1})\).
      • 第一步: 更新最大值 \(m_{k+1}\)
        • 显然 \(m_{k+1} = max(m_k, x_{k+1})\).
      • 第二步: 计算 \(d_{k+1}\)
        • 根据定义展开 \(d_{k+1}\):

          \[ \begin{aligned} d_{k+1} &= \sum_{j=1}^{k+1} e^{x_j - m_{k+1}} \\&= (\sum_{j=1}^{k} e^{x_j - m_{k+1}}) + e^{x_{k+1} - m_{k+1}} \\&= [\sum_{j=1}^{k} (e^{x_j - m_{k}} \cdot e^{m_{k} - m_{k+1}})] + e^{x_{k+1} - m_{k+1}} \\&= e^{m_{k} - m_{k+1}} \cdot \sum_{j=1}^{k} e^{x_j - m_{k}} + e^{x_{k+1} - m_{k+1}} \\&= e^{m_{k} - m_{k+1}} \cdot d_{k} + e^{x_{k+1} - m_{k+1}} \end{aligned} \]

          即: \(d_{k+1} = e^{m_{k} - m_{k+1}} \cdot d_{k} + e^{x_{k+1} - m_{k+1}}\)
  • 并行规约计算:
    • 将输入数据 \(\boldsymbol{x}\) 切分成两个不相交的子集 \(A\)\(B\).
    • 对任意集合 \(S\), 维护一个二元组状态 \((m_S, d_S)\):
      • 局部最大值: \(m_S = max_{x \in S}x\)
      • 局部指数和: \(d_S = \sum_{x \in S} e^{x - m_S}\)
    • 已知 \((m_A, d_A)\)\((m_B, d_B)\), 求集合 \(C = A \cup B\) 的状态 \((m_C, d_C)\).
    • 全局最大值 \(m_{C}\):
      • \(m_C = max(m_A, m_B)\)
    • 全局指数和 \(d_{C}\):

      \[ \begin{aligned} d_C &= \sum_{x \in A \cup B} e^{x - m_C} \\&= \sum_{x \in A} e^{x - m_C} + \sum_{x \in B} e^{x - m_C} \\&= \sum_{x \in A} e^{x - m_A + m_A - m_C} + \sum_{x \in B} e^{x - m_B + m_B - m_C} \\&= e^{m_A - m_C} \cdot \sum_{x \in A} e^{x - m_A} + e^{m_B - m_C} \cdot \sum_{x \in B} e^{x - m_B} \\&= e^{m_A - m_C} \cdot d_A + e^{m_B - m_C} \cdot d_B \end{aligned} \]

      • \(d_C = e^{m_A - m_C} \cdot d_A + e^{m_B - m_C} \cdot d_B\)
      • \(m_A > m_B\), 此时 \(m_C = m_A\), \(d_C = d_A + d_B \cdot e^{m_B-m_A}\);
      • \(m_A < m_B\), 此时 \(m_C = m_B\), \(d_C = d_A \cdot e^{m_A-m_B} + d_B\);
      • \(m_A = m_B\), 此时 \(m_C = m_B = m_A\), \(d_C = d_A + d_B\);
  • 串行递推与并行规约的关系
    • 当前 \(k\) 时刻的状态 \((m_k, d_k)\) 对应集合 A 的状态 \((m_A, d_A)\)
    • 将要读取的下一元素 \(x_{k+1}\), 可将其视为集合只有一个元素的集合 B, 即 \(B = \{x_{k+1}\}\); 由于集合 B 只有一个元素 \(x_{k+1}\), 其最大值仍是 \(x_{k+1}\), 则指数和 \(d_B = e^{x_{k+1}-m_B} = e^0 = 1\), 故集合 B 的状态为 \((m_B, d_B) = (x_{k+1}, 1)\).
    • 将其代入并行规约的全局指数和公式, 可得 \(d_{k+1} = e^{m_{k} - m_{k+1}} \cdot d_{k} + e^{x_{k+1} - m_{k+1}}\). \((m_{k+1}, d_{k+1})\) 对应集合 C 的状态.
http://www.jsqmd.com/news/1253296/

相关文章:

  • 8款AI工具提升学术写作效率全攻略
  • 南充市黄金回收,璟安黄金回收门店正规,金价紧跟大盘 - 新芸鼎珠宝首饰
  • C++实现位图与布隆过滤器:海量数据存在性查询的高效解决方案
  • Altair与AI结合:高效数据可视化与智能叙事实践
  • 数学推理AI模型部署指南:从IMO满分表现到本地实践
  • 嵌入式处理器电源设计:PMIC与分立方案选型及实战指南
  • 预算7000元隐形车衣怎么选?5款主流TPU车衣横评推荐+参数对比 - 资讯报道
  • Coze智能体开发:从对话到业务集成的进阶指南
  • 基于DWVD与深度学习的轴承故障智能诊断方法
  • CC1101射频模块输出功率编程实战:PATABLE配置与功率斜坡详解
  • MSP430BT5190超低功耗设计:电气特性、电源管理与实战避坑指南
  • 2026 年 7 月新发布:晋州评价高的钢结构廊架制造企业格局重塑与选型新思路,别再用传统架子!这套钢结构廊架如何省下50%的装修费? - 实业推荐官【官方】
  • 亲身到店探访长沙萧邦售后服务中心|全新服务热线及完整地址(2026年7月最新) - 萧邦中国官方服务中心
  • Naocs本地部署安装3.2.3+Spring boot 3.2.0
  • 联邦法官驳回谷歌对 SerpApi 诉讼,指控“不足以”证侵权,谷歌获 21 天修改期
  • Sora国内怎么用?资深AIGC架构师亲授:避开3大法律雷区、2类账号封禁风险与1套本地化推理链路
  • MSP430电气特性深度解析:电源监控、DCO时钟与ADC/DAC设计避坑指南
  • 现代C++图像处理库:轻量高效的JPEG编解码与多算法缩放实现
  • UE4动画陷阱:Stop All Montages参数详解与安全替代方案
  • 深入解析USB Type-C PD协议:从CC检测到状态机与TPS65982工程实践
  • JD-3002 五合一多功能空气质量检测仪
  • 清风7月送爽:2026年格力空调全国售后服务24小时热线全新升级上线 - AAA家电服务指南
  • AI论文写作工具评测:4款学术合规工具深度解析
  • Claude Design哪个公司技术好
  • 智能查重工具如何革新学术诚信教育
  • 科颜氏高保湿小样包材定制,老板别被便宜包材坑了客诉钱
  • 基于肤色检测与CNN的静态手势识别技术实践
  • 万国南宁网点地址与热线电话2026年7月最新服务公告,售后信息全公开 - 万国中国官方服务中心
  • Linux系统Load Average的三大误区与正确解读
  • 2026最新广州黄金回收实体店地址合集,各区正规门店位置一文看全 - 奢侈品回收评测