softmax详解

article/2025/10/6 23:39:34

      softmax又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是

 下图展示了softmax的计算方法:

       指数函数的值域是(0,∞) 。与概率取值相似的地方是它们都是非负实数。这样就可以利用指数函数将多分类结果映射到零到正无穷。然后进行归一化处理,便得到近似的概率。

代码

import tensorflow as tfvalue=tf.constant([1,1,2,4,6,8], dtype=tf.float32)
softmax0=tf.nn.softmax(value)
maxvalueindex = tf.argmax(softmax0)
with tf.Session() as sess:print("softmax0 value: ", sess.run(softmax0))print("max value index: ", sess.run(maxvalueindex))softmax0 value:  [7.87494471e-04 7.87494471e-04 2.14063213e-03 1.58172492e-021.16874546e-01 8.63592565e-01]
max value index:  5
  • 分子:通过指数函数,将实数输出映射到零到正无穷。
  • 分母:将所有分子结果相加,进行归一化。

 损失函数(loss function)

        神经网络模型优化的目标都是通过损失函数来定义的。无论是分类问题还是回归问题都会遇见损失函数。 但是在分类问题中,如何评价输出结果的准确性呢?常用的方法是使用交差熵(cross entropy),它的计算值表征两个概率分布之间的距离,它是分类问题中使用比较广的损失函数。

  上式中:y是样本的正确结果,y’是经过神经网络的预测的结果。 
  注意:交差熵定义的两个概率分布的距离,由于神经网络的输出却不是概率分布。因此需要将网络的输出结果转化为概率分布,故在神经网络输出层后加上一个softmax层,将神经网络的输出变成一个概率分布。

 softmax公式 

        损失函数一般都会配合softmax回归一起使用,而什么是softmax回归呢?此时就可以使用交差熵来评估输入数据经过神经网络处理后得到的输出结果y’与正确结果y的距离,距离越小,代表我们设计的神经网络效果越好。 
  例如有一个三分类问题,某个样本的正确答案为[1,0,0],某个模型经过softmax回归的预测结果为(0.5,0.4,0.1),那么它和正确结果的交差熵为: 

       但另外一个模型的输出结果为(0.8,0.1,0.1),则预测值与真实值的交差熵为: 

      从直观的结果可以看出,第二个预测结果要好于第一个预测结果,这和通过交差熵得到的结果是一致的。 

import tensorflow as tf      
#our NN's output      
logits=tf.constant([[1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]])      
#step1:do softmax      
y=tf.nn.softmax(logits)     
#true label      
y_=tf.constant([[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0]])      
#step2:do cross_entropy      
cross_entropy = -tf.reduce_sum(y_*tf.log(y))      
#do cross_entropy just one step      
cross_entropy2=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y_))#dont forget tf.reduce_sum()!!      
with tf.Session() as sess:      softmax=sess.run(y)    c_e = sess.run(cross_entropy)      c_e2 = sess.run(cross_entropy2)      print("step1:softmax result=")      print(softmax)      print("step2:cross_entropy result=")      print(c_e)      print("Function(softmax_cross_entropy_with_logits) result=")      print(c_e2)step1:softmax result=    
[[ 0.09003057  0.24472848  0.66524094]    [ 0.09003057  0.24472848  0.66524094]    [ 0.09003057  0.24472848  0.66524094]]    
step2:cross_entropy result=    
1.22282    
Function(softmax_cross_entropy_with_logits) result=    
0.407606 

       batch的大小为3,经过softmax回归输出的结果是一个3×3的二维矩阵,根据交差熵的公式,应该将每行的结果相加得到3个输入样本的的交差熵,然后在对3行取平均得到这个batch的平均交差熵。但因为分类问题的类别是不变的,所以直接对整个矩阵做平均而不改变计算结果。这种做法可以是程序更加简洁。

MNIST手写数字识别

  为了得到一张给定图片属于某个特定数字类的证据【evidence】,对图片像素进行加权求和。如果这个像素具有很强的证据说明这张图片不属于该类,那么相应的权值为负值相反如果这个像素拥有有利的证据支持这张图片属于这个类,那么权值即为正数。

    

  如下图,红色代表负数值,蓝色代表正数值:

    

  这里的softmax可以看做一个激励【activation】函数或者链接【link】函数,把我们定义的线性函数的输出转化成我们想要的格式,也就是关于10个数字类别的概率分布。因此,给定一张图片,它对于每一个数字的吻合度可以被softmax函数转化成一个概率值。

展开等式右边的子式:

  softmax把输入值当成幂指数求值,再正则化这些结果值。这个幂运算表示,更大的证据对应更大的假设模型【hypothesis】里面的乘数权重值。反之拥有更少的证据意味着在假设模型里面拥有更小的乘数系数。假设模型里面的权值不可以是小于0的数值。Softmax会正则化这些权重值,使它们的总和等于1,以此构造一个有效的概率分布。

    

  如果把它写成一个等式:

       转化为矩阵乘和向量加:

       转化为公式:

参考: 

https://blog.csdn.net/u013230189/article/details/82835717

https://blog.csdn.net/lovelyaiq/article/details/78616736

https://www.cnblogs.com/imlvbu/p/7742930.html

https://blog.csdn.net/m0_37565948/article/details/81324115

https://blog.csdn.net/hearthougan/article/details/82706834


http://chatgpt.dhexx.cn/article/sdCX2JyK.shtml

相关文章

什么是事务的一致性?

事务的ACID特性 事务主要有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability) 下面我们分别来介绍着几种性质。 原子性 原子…

什么是事务,事务的用途,分布式事务

先看个例子: 客户A和客户B的银行账户金额都是10000元人民币,客户A需要把自己帐户中的5000元人民币转到客户B的账户上。 这个过程看似简单,实际上涉及了一系列的数据库操作,可以简单地视为两步基本操作,即从客户…

什么是事务和事务隔离级别

目录 1. 什么是事务2. 事务的作用3. 事务隔离所导致的一些问题4. 事务隔离级别 Isolation5. 事务传播行为 Propagation6. 事物隔离级别查看及修改 1. 什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得…

什么是事务的一致性?一致性和原子性的区别是什么?

(PS:黄色字体为二次修改的内容) 关于事务的一致性,《数据库系统概念》中是这样描述的 第二段说的三个特性是指原子性、隔离性、持久性。 就算这样,相信大家也是懵懵的,我也是,所以才会写下这篇博客。 看到别的博客说&#xff0…

数据库得事务控制详解,什么是事务回滚详解,通俗易懂

常用的存储引擎有InnoDB(MySQL5.5以后默认的存储引擎)和MyISAM(MySQL5.5之前默认的存储引擎),其中InnoDB支持事务处理机制,而MyISAM不支持 事务是一个整体, 由一条或者多条SQL语句组成, 这些SQL语句要么都执行成功, 要么就失败, 只要有一条SQL出现异常, 整个操作就会回滚…

什么是事务?如何执行一个事务?

什么是事务,为什么要使用事务? 事务是指将一系列数据操作捆绑成为一个整体进行统一管理,如果某一事务执行成功,则在该事物中进行的所有数据更改均会提交,成为数据库中的永久组成部分, 如果事务执行时遇到错…

什么是事务,事务的ACID特性

一.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种…

SQL中什么是事务

SQL中什么是事务 事务的概念: 事务是在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序自动执行。事务就是一些SQL语句组(每条单独的SQL语句也算一个事务),其中事…

什么是事务?事务的特性?

在mysql中,事务是一种机制、一个操作序列,是访问和更新数据库的程序执行单元。事务中包含一个或多个数据库操作命令,会把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执…

粒子群优化算法求解函数最值

一、实验题目 计算如下二元函数的最小值: (其中自变量x、y的范围均为[-50, 50]) 用matlab代码实现。代码必须能一键运行。最后输出x,y和z的最优值及收敛到最优值所需的迭代步数。算法关键参数需要注释清楚(如权重因子、学习因子…

粒子群优化算法python

粒子群优化算法PSO 粒子群优化算法基本原理算法步骤代码实现 粒子群优化算法 一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是它们知道当前的位置离食物还有多远。那么,找到食物的最简单有效的方法就是搜寻离食物最近…

基于粒子群优化算法的函数寻优算法

文章目录 一、理论基础二、案例背景1、问题描述2、解题思路及步骤 三、MATLAB程序实现1、PSO算法参数设置2、种群初始化3、寻找初始极值4、迭代寻优5、结果分析 四、惯性权重1、惯性权重的选择2、 ω \omega ω变化的算法性能分析 五、参考文献 一、理论基础 粒子群算法(parti…

自适应粒子群优化算法的MATLAB性能仿真

UP目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 粒子群优化(PSO)是一种基于群体的随机优化技术。与其它基于群体的进化算法相比,它们均初始化为一组随机解,通过迭代搜寻最优解。不同的是:进化计算遵循…

PSO粒子群优化算法

1算法简介 粒子群优化算法,在1995年由Eberhart博士和kennedy博士提出,源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。算法流程图如下所示。 核心公式( 更新速度和位…

PSO 粒子群优化算法

粒子群优化算法(PSO) Particle Swarm Optimization 1、 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 。该算法最初是受到…

粒子群优化算法及MATLAB实现

上一篇博客是关于蚁群优化算法的,有兴趣的可以看下 https://blog.csdn.net/HuangChen666/article/details/115913181 1. 粒子群优化算法概述 2. 粒子群优化算法求解 2.1 连续解空间问题 2.2 构成要素 2.3 算法过程描述 2.4 粒子速度更新公式 …

粒子群优化算法(PSO)python实践

1 算法介绍和原理 1.1 算法原理 强烈推荐知乎大佬的这篇文章:粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读 - 知乎 (zhihu.com)。该文章详细介绍了算法的原理、算法流程、参数解释和一些Tips,这里就不过多赘述了。 粒子群优化算法&am…

粒子群优化算法python实现

文章目录 前言一、粒子群优化算法是什么?二、算法流程三、算法的python实现实验结果 前言 首先简单介绍粒子群优化算法,粒子群优化算法的python实现(含代码) 一、粒子群优化算法是什么? 粒子群优化算法(Particle Swa…

【优化算法】粒子群优化算法简介

这里是引用 文章目录 1. 简介2. 涌现复杂性3. 鸟群智能建模4. 代码实现5. Conclusion参考资料 1. 简介 人工智能是计算机科学的一个大领域,它模拟计算机中的智能行为。在此基础上,提出了一种基于元启发式( metaheuristic)的粒子群…

粒子群优化算法(Particle Swarm Optimization)

转自:https://www.cnblogs.com/21207-iHome/p/6062535.html 粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的,是一种基于Swarm Intelligence的优化方法。它没有遗…