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

深度学习基础 | Softmax 函数原理详解 + Python实现 + 数学公式

在多分类任务中,Softmax 函数是深度学习中常见的激活函数之一,常用于模型输出层,将原始分数转换为概率分布。本文将详细介绍 Softmax 的数学原理、Python 实现方式以及其在实际应用中的重要意义。

📘 一、什么是 Softmax 函数?

Softmax 函数是一种归一化函数,能够将一个实数向量映射为一个概率分布。它的输出是一个向量,所有元素非负,且总和为 1。

🧮 二、Softmax 的数学定义

z=[z_{1},z_{2},…,z_{k}]是长度为K的向量,Softmax 函数的输出 \hat{y}_i定义为:

\hat{y}_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \quad \text{for } i = 1, 2, ..., K 

特点:

  • 所有输出 \hat{y}_i∈(0,1)

  • \sum_{i=1}^{K}\hat{y}_i=1,可解释为概率分布

🧑‍💻 三、Python 实现 Softmax 函数

以下是Softmax函数 Python 实现代码,简洁直观:

import mathdef softmax(z):"""实现 Softmax 函数参数:z (List[float]):原始得分向量返回:List[float]:归一化后的概率分布"""exp_values = [math.exp(i) for i in z]sum_exp = sum(exp_values)return [val / sum_exp for val in exp_values]# 示例
logits = [2.0, 1.0, 0.1]
probs = softmax(logits)
print("Softmax 结果:", probs)

✅ 输出示例: 

Softmax 结果: [0.659, 0.242, 0.098]

⚠️ 四、数值稳定性优化

实际训练中,若 z_{i} 值过大,直接计算 e^{zi} 可能导致数值溢出。因此需引入数值稳定处理:

def stable_softmax(z):max_z = max(z)  # 关键步骤exp_values = [math.exp(i - max_z) for i in z]sum_exp = sum(exp_values)return [val / sum_exp for val in exp_values]

🎯 五、Softmax 的应用场景 

场景说明
多分类神经网络输出层常用于最后一层输出 K 个类别的概率
分类模型评估搭配交叉熵损失函数(Categorical Cross Entropy)
注意力机制(Transformer)用于计算注意力权重(softmax(score))

📌 六、Softmax 与 Sigmoid 的区别 

比较项SigmoidSoftmax
输出范围(0, 1)(0, 1),且总和为 1
适用场景二分类多分类(互斥类)
输出结构单个概率值概率分布向量
是否归一化否(不强制概率和为 1)是(概率和严格为 1)

🧠 七、总结

  • Softmax 是处理多分类问题的核心函数;

  • 它将模型输出转换为概率,便于分类决策;

  • 推荐搭配 交叉熵损失函数 使用,优化分类准确率;

  • 实际实现中应考虑 数值稳定性

http://www.xdnf.cn/news/15542.html

相关文章:

  • 前缀和题目:表现良好的最长时间段
  • Leetcode 03 java
  • CKS认证 | Day6 监控、审计和运行时安全 sysdig、falco、审计日志
  • vue3 自定义vant-calendar header/footer/maincontent
  • EXCEL VBA合并当前工作簿的所有工作表sheet
  • Java全栈面试实录:从电商支付到AIGC的深度技术挑战
  • 机器学习:数据清洗与预处理 | Python
  • 控制台输出的JAVA格斗小游戏-面向对象
  • CMake综合学习1: Cmake的模块化设计
  • 我爱学算法之—— 前缀和(下)
  • 【yaml文件格式说明】
  • 18001.QGroundControl操作文档(一)
  • 【测试100问】为什么要做接口测试?
  • 让K线说话!用形态匹配功能透视通达信数据黑洞
  • 【带权的并集查找】 P9235 [蓝桥杯 2023 省 A] 网络稳定性|省选-
  • 小程序性能优化全攻略:提升用户体验的关键策略
  • 每天一个前端小知识 Day 33 - 虚拟列表与长列表性能优化实践(Virtual Scroll)
  • Oracle 关于一些连接故障的总结
  • NumPy 详解
  • 职业发展:把工作“玩”成一场“自我升级”的游戏
  • Web前端性能优化原理与方法
  • 【kubernetes】--安全认证机制
  • xss-labs通关
  • 微服务架构升级:从Dubbo到SpringCloud的技术演进
  • PandaWiki与GitBook深度对比:AI时代的知识管理工具,选谁好?
  • 数据库(five day)——物物而不物于物,念念而不念于念。
  • 自适应哈希索引 和 日志缓冲区
  • 将Android Studio创建的一个apk工程放到Android15源码中构建
  • Jmeter+ant+jenkins接口自动化测试框架
  • docker run elasticsearch 报错