Softmax函数个人解读

news2024/9/25 9:36:12
1 什么是Softmax?

     S o f t m a x = s o f t + m a x Softmax=soft + max Softmax=soft+max,其中 m a x max max就是求最大值的意思,其核心是soft,在英文中soft有软的意思。与之相对应的hardmax,也就是说的在实际中经常求得最大值,如:numpy.max()。

    通过上述这个例子,我们不难发现hardmax最大特点就是其求出的最大值是唯一的。因此,在一些特定的应用场景中,这个方法是很不合理的,比如:文本分类,一篇文章可能包含多种主题的信息(即多个类别),我们更期望得到文章属于各个类别的概率值(置信度)。
    以下是 Softmax 函数的定义:
S o f t m a x ( z i ) = e z i ∑ c = 1 C e z c Softmax\left(z_i\right)=\frac{e^{z_i}}{\sum_{c=1}^C e^{z_c}} Softmax(zi)=c=1Cezcezi
    其中== z i z_i zi为第 i i i个节点的输出值, C C C为输出节点的个数,即类别个数==。通过Softmax函数就可以将多分类问题的输出值转换到区间 [0,1] 和为1的概率分布

2 Softmax 优点

    Softmax函数从基本上来看就是一个指数函数最大特点:随着x的不断增大,斜率不断增大。即:x轴上的一个很小的变化,会导致y轴的很大变化。总的来说:Softmax函数可以拉开输出值之间的距离

在这里插入图片描述

    假设某篇文章可能存在的种类有3类(例如:冒险、科幻等),我们将离散的类别转化为连续的数字 z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3为 [4,5,6] 。我们尝试使用softmax和不使用softmax两种方法

import numpy as np

z=np.array([4,5,6])
ans1=z/np.sum(z)		# 不使用softmax
print(ans1)  # array([0.26666667, 0.33333333, 0.4       ])

ans2=np.exp(z)/np.sum(np.exp(z))	# 使用softmax
print(ans2)  # array([0.09003057, 0.24472847, 0.66524096])

    从两种计算方法的结果中,我们不难发现,使用指数形式的softmax能够将数值之间的距离拉的更大。

    使用Softmax函数的另一个优点就是,在深度学习中通常使用反向传播求解梯度来进行参数的更新。指数函数在进行梯度下降时更容易求导。如: ( e x ) ′ = e x (e^x)'=e^x (ex)=ex

3 Softmax 缺点

    当x非常大时,指数函数的y值会变得非常大,数值可能会溢出

import numpy as np

print(np.exp(300))  # 1.9424263952412558e+130

z=np.array([123,456,789])
softmax=np.exp(z)/np.sum(np.exp(z))
print(softmax)  # array([ 0.,  0., nan])

    因此,==当 z i z_i zi的值过大时,softmax函数就存在着数值溢出的风险。==争对数值溢出可以使用方法对其进行优化,如:将每一个输出值 - 输出值中的最大值。

z=np.array([123,456,789])
z-=np.max(z)
softmax=np.exp(z)/np.sum(np.exp(z))
print(softmax) # [5.75274406e-290 2.39848787e-145 1.00000000e+000]
参考资料

[1] https://zhuanlan.zhihu.com/p/105722023

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/822533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【并发专题】手写LinkedBlockingQueue

分析 LinkedBlockingQueue有如下特点: 近乎无界队列,但可以是有界队列实现了BlockingQueue接口需要实现take方法和put方法,实现阻塞效果数据结构是单链表,有head跟last指针来进行入队出队操作有两把锁,读写分离所以也…

linux-MySQL的数据目录

总结: window中的my.ini linux 中 /etc/my.cnfwindow中的D:\soft\mysql-5.7.35-winx64\data linux 中 /var/lib/mysql 1.查找与mysql有关的目录 find / -name mysql [rootVM-4-6-centos etc]# find / -name mysql /opt/mysql /etc/selinux/targeted/tmp/modul…

【Linux命令200例】patch 用于将补丁文件应用到源码中

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜…

glide加载content://com.android.contacts图片源码粗略梳理

获取链路是这样的; UriLoader类里定义了协议头: 里面有个内部类StreamFactory: 通过StreamLocalUriFetcher类的loadResource方法获取InputStream然后把流转换成为图片; 在这里作个草稿笔记给自己看

分布式事务之CAP理论和BASE理论详解

🚀 分布式事务 🚀 🌲 AI工具、AI绘图、AI专栏 🍀 🌲 如果你想学到最前沿、最火爆的技术,赶快加入吧✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆&…

PHP8的变量-PHP8知识详解

昨天我们讲解了PHP8的常量,今天讲解PHP8的变量。常量有定义常量和预定义常量,变量呢?那就没有定义变量了,那叫给变量赋值,但是还是有预定义变量的。下面就给大家讲解什么是变量、变量赋值及使用及预定义变量。 一、什么…

SE-Net注意力机制

📌本次任务:了解SE-Net原理 SE-Net 是 ImageNet 2017(ImageNet 收官赛)的冠军模型,是由WMW团队发布。具有复杂度低,参数少和计算量小的优点。且SENet 思路很简单,很容易扩展到已有网络结构如 Inception 和 ResNet 中。(这篇论文是2019年的,应该是后续做了更新) 一…

CodeGeeX2 模型全新上线,编程助手能力全面升级!

第二代CodeGeeX代码生成模型CodeGeeX2-6B已于近日发布,并在CodeGeeX编程助手插件上全面上线。新模型基于 ChatGLM2-6B 架构加入代码预训练实现,精度更高、速度更快、能力更强。 下面我们一起来看一下新版模型给CodeGeeX编程助手带来的变化吧:…

C# Blazor 学习笔记(4):blazor代码分离

文章目录 前言代码分离 前言 Blazor可以支持在razor文件里面添加cs代码,但是代码一旦复杂了之后就会变得特别的麻烦。但是VS提供了代码分组的功能。 分离前 分离后 代码分离 我们直接右键razor组件是不能直接添加cs代码部分的 注意新建类的类名是xxx.razor…

安全加固服务器

根据以下的内容来加固一台Linux服务器的安全。 首先是限制连续密码错误的登录次数,由于RHEL8之后都不再使用pam_tally.so和pam_tally2.so,而是pam_faillock.so 首先进入/usr/lib64/security/中查看有什么模块,确认有pam_faillock.so 因为只…

【虚拟数字人】SadTalker简易部署教程

视频教程在这里: sadtalker数字人创建简易教程 项目基于SadTalkers实现视频唇形合成的Wav2lip。通过以视频文件方式进行语音驱动生成唇形,设置面部区域可配置的增强方式进行合成唇形(人脸)区域画面增强,提高生成唇形的…

【MySQL】数据库基础和SQL分类

文章目录 MySQL数据库基础 数据库的概念主流数据库基本使用连接服务器服务器管理数据库服务器,数据库,表关系 MySQL架构 SQL分类存储引擎查看存储引擎 MySQL数据库基础 数据库的概念 数据库是按照数据结构来组织、存储和管理数据的仓库,…

mysql--InnoDB存储引擎--架构和事务

MySQL进阶篇 文章目录 架构1、逻辑结构InnoDB 逻辑存储单元主层级关系图:1、表空间2、段3、区4、页5、行总结: 2、架构2、1 内存架构2、2 磁盘架构 3、事务3、1事务基础(1)事务(2)特性 架构 1、逻辑结构 I…

青少年软件编程(Python) 等级考试试卷(六级)2023年5月

青少年软件编程(Python) 等级考试试卷(六级) 分数: 100 题数: 38 一、 单选题(共 25 题, 共 50 分) 1.明明每天坚持背英语单词, 他建立了英语单词错题本文件“mistakes. txt” &…

PPT文件常见的几种格式有哪些?

PPT文件大家都不陌生,那么PPT文件的几种格式,大家也可以学习一下: .ppt & .pptx 这两种PPT格式是最基本的ppt文件后缀,就是我们普通可以编辑的PPT文件格式,2003版的PowerPoint的文件格式是.ppt,而在0…

【C++】文件操作(囊括特殊情况:读文件遇到的空格被跳过、“文件只读一次“)

author:&Carlton tag:C topic:【C】文件操作(囊括特殊情况:读文件遇到的空格被跳过、“文件只读一次”) website:黑马程序员C date:2023年7月31日 目录 文本文件 写文件 源…

二叉搜索树的模拟实现

基础的二叉树用的其实不多,二叉树的重点在二叉树的延伸:二叉搜索树。二叉搜索树又延伸出了平衡二叉搜索树。搜索数的特点是:查找效率极高。 二叉搜索树的作用: 1. map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一…

3节点linux服务器集群搭建

一,目的 由于当前集群部署已经成为主流,适当研究一些集群部署的基本操作,有助于后续像k8s集群、doris集群的部署。 大部分集群都是一主两从这种三节点配置。故本文也是采用三节点完成相关学习和记录。 二,说明 因为会关闭防火…

webScoket

webScoket是什么&#xff1f; 支持端对端通讯可以由客户端发起&#xff0c;也可以有服务端发起用于消息通知、直播间讨论区、聊天室、协同编辑等 做一个简单的webScoket 客户端配置&#xff1a; 1、新建一个页面叫web-scoket.html <!DOCTYPE html> <html lang"…

P7243 最大公约数

题目 思路 利用曼哈顿原理求离&#xff08;x&#xff0c;y&#xff09;最远的点 代码 #include<bits/stdc.h> using namespace std; #define int long long #define INF 0x3f3f3f3f const int maxn2005; int gcd(int a,int b) { return b?gcd(b,a%b):a; } int n,m; i…