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

深度学习:Softmax 函数详解

Softmax 函数详解

定义与数学表达

Softmax 函数是一个广泛使用的激活函数,特别是在多类分类任务中。它将一个向量或一组数值转换为概率分布。每个输出的概率是对应输入的指数与所有输入指数之和的比例。

数学上,Softmax 函数定义如下:

[$ \text{Softmax}(z_i) = \frac{e{z_i}}{\sum_{j=1}{K} e^{z_j}} $]

其中:

  • ( z i z_i zi ) 表示输入向量 ($ \mathbf{z} KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 的第 \( i $) 个分量。
  • ( K K K ) 是类别总数,即向量 ($ \mathbf{z}$ ) 的维度。
  • ($ e $) 是自然对数的底数。

Softmax 函数的输出是一个长度为 ( K ) 的向量,其中每个分量都在 0 到 1 之间,并且所有分量的和为 1。

特性
  1. 归一化:Softmax 保证所有输出值的和为1,使其可以被解释为概率。
  2. 可微性:Softmax 函数在整个定义域内可微,这使得它可以在基于梯度的优化算法中使用,例如反向传播。
  3. 敏感性:Softmax 对输入值非常敏感,尤其是当有一个输入远大于其他输入时。
实例解释

假设一个简单的情景,我们需要对三个类别进行分类:猫、狗和鸟。神经网络的最后一层生成了以下原始分数(也称为 logits):

[ $z = [2.0, 1.0, 0.1] $]

这些分数通过 Softmax 函数转换为概率:

  1. 计算每个类别的指数:
    [ e 2.0 ≈ 7.389 , e 1.0 ≈ 2.718 , e 0.1 ≈ 1.105 e^{2.0} \approx 7.389, \quad e^{1.0} \approx 2.718, \quad e^{0.1} \approx 1.105 e2.07.389,e1.02.718,e0.11.105 ]

  2. 计算指数之和:
    [ Sum = 7.389 + 2.718 + 1.105 ≈ 11.212 \text{Sum} = 7.389 + 2.718 + 1.105 \approx 11.212 Sum=7.389+2.718+1.10511.212 ]

  3. 应用 Softmax 公式:
    [ $\text{Softmax}(猫) = \frac{7.389}{11.212} \approx 0.659 $]
    [ $\text{Softmax}(狗) = \frac{2.718}{11.212} \approx 0.242 $]
    [ $\text{Softmax}(鸟) = \frac{1.105}{11.212} \approx 0.099 $]

这表明,根据网络的输出,猫、狗和鸟的分类概率分别为 65.9%,24.2% 和 9.9%。这意味着模型认为这张图片是猫的可能性最高。

数学属性
  1. 输出解释:Softmax 输出的每一个值都代表对应类别的概率,这使得最终解释非常直观。
  2. 交叉熵损失:在训练过程中,Softmax 通常与交叉熵损失结合使用,以有效地计算模型输出和实际标签之间的差异。

总结

Softmax 函数是处理多类分类问题的理想选择,因为它能够将神经网络输出的 logits 转换为清晰的概率分布。这个函数在许多深度学习框架中都得到了广泛应用,尤其是在训练具有多个类别输出的分类器时。通过优化交叉熵损失,Softmax 函数帮助神经网络调整其参数,以更准确地预测每个类别的概率。


http://www.kler.cn/a/374444.html

相关文章:

  • 利索能及 —— 免费且高效的全球专利检索与分析平台
  • 【深度学习】实验 — 动手实现 GPT【三】:LLM架构、LayerNorm、GELU激活函数
  • RNN在训练中存在的问题
  • 2024-10-25 问AI: [AI面试题] 强化学习是如何工作
  • 解决电脑突然没有声音
  • 链接动态库
  • C++基于opencv的视频质量检测--遮挡检测
  • pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误
  • 安装Docker环境的两种方式
  • 反序列化漏洞的运行原理及防御方法
  • Halcon-模板匹配(WPF)
  • 【Linux系统编程】第四十弹---深入理解操作系统:信号捕捉、可重入函数、volatile关键字与SIGCHLD信号解析
  • 从Flux Dev蒸馏出来的模型——Flux.1 Lite
  • rom定制系列------红米note8_miui14安卓13定制修改固件 带面具root权限 刷写以及界面预览
  • 灵动AI视频 —— 创意无界,视频新生
  • Qt限制QGraphicsScene QGraphicsItem内部的移动范围
  • mac 使用命令卸载Node.js
  • Qt指定程序编译生成文件的位置
  • 使用 pkg 打包 Puppeteer 应用:跨平台自动化的轻量级选择
  • 管家婆财贸ERP BB072.销售单草稿明细生成组装拆分单
  • [实战-11] FlinkSql设置时区(table.local-time-zone)
  • MySQL 的 select * 会用到事务吗?
  • Ethernet 系列(6)-- 基础学习::OSI Model
  • 金融小白两周完成一个量化系统 (二)项目进度以及数据获取
  • 数据分析可视化:散点图矩阵与雷达图的生成
  • 时序数据分析:工业时序数据的特点