很多同学在做深度学习时,都会遇到难以理解的算法,SoftMax肯定是其中一个。初学者大都对它一知半解,只知道SoftMax可以用来做分类,输出属于某个类别的概率。

但是,为什么要用SoftMax呢?这个算法又是如何将神经网络推理的数值,转换为一个类别的分类的呢?

应用场景

假设要使用神经网络做图片分类。

现在有3个类别:猫,狗,人。给你下面一张图片,神经网络需要在这3个类别中选出一个。

▲猫咪

上图人眼一看就知道是猫咪,但是神经网络需要通过计算才知道。

好,我们使用Resnet50这一分类网络进行推理运算。算到最后面的全连接层时,全连接输出了3个数值,分别为2,1,0.1。

看过前面文章的同学可能知道,全连接输出的数值,代表了这一分类的得分。关于全连接可以翻看图像识别(八)| 还对全连接层迷迷糊糊?背会一首诗就行了。

现在我们假设这三个分类的得分分别为:

分类 得分
2
1
0.1

猫得了2分,狗得了1分,人得了0.1分。单看这个结果,我们大概知道,因为猫的得分最高,那最终神经网络会认为这张图片是一只猫

错了!

错在哪?至少两点。

第一,神经网络最终选择某一分类,依据的不是得分,而是概率

也就是说,最终神经网络会选择一个概率最高的分类作为它识别的结果。为什么要把得分转为概率呢?因为多分类模型中,输出值为概率更利于反向推导和模型的迭代,概率之间更好的计算距离,而数值之间的计算的距离是无含义的。

所以,我们需要一种方法,将上面的得分转换为概率。

| 第二,得分是神经网络经过了几十层卷积运算计算出来的

例子中猫的得分是2,狗的得分是1,人的得分是0.1,我们可以比较肯定的说,因为猫的得分最高,而且比狗和人都高很多,肯定就是猫。

但实际中,有很大的可能算出的猫的得分是2.1,狗的得分是1.9,人的得分是0.1。这个时候,我们可能就没有像刚才那么肯定了。

因为猫的得分和狗的得分相差很少,而且两者都很高!

这也是为什么,很多神经网络最终都会以TOP1 和 TOP5的识别准确度来衡量神经网络的精度。

由于上述两个原因的存在,人们想到了SoftMax算法。而这个算法,也几乎完美地解决了这两个问题。

为什么叫SoftMax以及它的实现原理

不知你有没有想过,为什么这个算法叫SoftMax呢?

Soft 是软的意思,与之对应肯定有 HardMax。

而 HardMax,可以理解为我们平时认知的Max。比如给你两个数(3, 4), 那么这两个数的 HardMax(3,4) 结果就是4。

这个逻辑,小学生学会了10以内的加减法都知道。

但正如上面所说,SoftMax不一样,它是要处理多个类别分类的问题。

并且,需要把每个分类的得分值换算成概率,同时解决两个分类得分值接近的问题。先从公式上看,SoftMmax是怎么做到的。

公式中,每个 z 就对应了多个分类的得分值。SoftMax对得分值进行了如下处理:

  • 以e为底数进行了指数运算,算出每个分类的 eZi,作为公式的分子

  • 分母为各分类得分指数运算的加和。

  • 根据公式很自然可以想到,各个分类的SoftMax值加在一起是1,也就是100%。所以,每个分类的SoftMax的值,就是将得分转化为了概率,所有分类的概率加在一起是100%。

这个公式很自然的就解决了从得分映射到概率的问题。

那,它又是怎么解决两个得分相近的问题的呢?

其实也很简单,重点在选择的指数操作上。我们知道指数的曲线是下面的样子。

▲指数曲线,恒大于零,并且在正半轴,离零越远,增长越快(指数增长)

指数增长的特性就是,横轴变化很小的量,纵轴就会有很大的变化。

所以,从1.9变化到2.1,经过指数的运算,两者的差距立马被的拉大了。从而,我们可以更加明确的知道,图片的分类应该属于最大的那个。

下面是将猫、狗、人三个分类经过SoftMax计算之后得到的概率。

分类 得分 softmax
2 70%
1 20%
0.1 10%

可以看到,分类是猫的概率遥遥领先。所以,神经网络在经过softmax层之后,会以70%的概率,认为这张图片是一张猫

这就是SoftMax的底层原理。

指数让得分大的分类最终的概率更大,得分小的分类最终的概率更小,而得分为负数的分类,几乎可以忽略。

One More Thing

SoftMax 其实也是一种激活函数,它广泛的应用于多分类任务中。在二分类任务重,其实有个函数也被广泛的使用,它就是 Sigmoid,可以查看图像识别(六)|  激活函数 这一章了解Sigmoid函数。

比如,有个朋友告诉我,在一些互联网的广告或者商品推荐(比如某宝的猜你喜欢)中,曾经广泛的使用Sigmod函数来预测点击的可能性,如果Sigmoid函数的输出值越大,那么说明这个内容被用户点击的可能性就越大。

想想吧,我们逛淘宝的每次点击,背后都有一个函数在分析你的行为,你还会点击么?


往期文章推荐:

图像识别(一)| 从像素说起_董董灿是个攻城狮的博客-CSDN博客

图像识别(二)| 图像的色彩空间_董董灿是个攻城狮的博客-CSDN博客

图像识别(三)| 初识卷积_董董灿是个攻城狮的博客-CSDN博客

图像识别(四)| 卷积的核心,特征提取_董董灿是个攻城狮的博客-CSDN博客_卷积图像特征提取

图像识别(五)| 春天花开却不识?打开百度识图,残差和卷积带你识遍路边野花_董董灿是个攻城狮的博客-CSDN博客

图像识别(六)| 激活函数_董董灿是个攻城狮的博客-CSDN博客

图像识别(七)| 池化层是什么?有什么作用?_董董灿是个攻城狮的博客-CSDN博客

图像识别(八)| 还对全连接层迷迷糊糊?背会一首诗就行了_董董灿是个攻城狮的博客-CSDN博客

更多信息,请查看专栏

图像识别(六)|  激活函数

码字不易,如果你喜欢,请关注 董董灿是个攻城狮的博客_CSDN博客 或点赞。
近期开通个人微信公众号:图像识别(九)| 彻底搞懂SoftMax分类的底层逻辑分享人工智能科技文章,欢迎关注。

图像识别(九)| 彻底搞懂SoftMax分类的底层逻辑相关推荐

  1. 一文搞懂Java的多线程底层逻辑,再也不怕多线程了

    目录 1.线程是什么 2.启动线程 3.线程池 4.线程池的创建 通过Executors工厂方法创建 通过构造函数创建 5.调试线程 6.synchronized关键字 没什么想说的,就是想写两次Ja ...

  2. 传统企业如何做数字化转型?弄懂这3大底层逻辑你就懂了

    2022年传统企业发展的关键词,不是资本,不是股市,不是楼市,不是品牌,而是五个字,数字化转型. 但是碰到这五个字,传统企业又不敢转.不会转.不想转.究其根本,主要的原因是传统企业不了解数字化转型的底 ...

  3. softmax分类(多项逻辑回归)的Pyhon实现及其与SVM的比较

    GREAT THANKS TO:http://cs231n.github.io/linear-classify/#softmax 1..softmax分类 SVM和softmax是两大常用的分类方法, ...

  4. 除非p否则q 除非P否则非Q 只有p才q 彻底搞懂离散数学命题符号化的逻辑 附公务员真题讲解

    语句大全 你要结婚了,女朋友分别对你说了这几句话,你好好捋一捋 1 如果你给我买钻戒,那么我嫁给你 补一下语文: 只有 2 只有你给我买钻戒,我才嫁给你 补一下语文: 除非.才 补一下语文: 否则 3 ...

  5. 3.2 搞懂小红书算法运营逻辑,只需要5分钟【玩赚小红书】

    在讲这个之前,我们先来看一下「小红书」平台都有哪个几个流量入口,对应的不同流量入口,平台所应用的推荐机制分别是什么样的? 如图,从目前小红书APP的设定来看, 流量主要集中在打开APP中的「发现页」和 ...

  6. 一文搞懂显示技术的底层框架

    1. DPU与GPU的耦合是历史产物,完全可以独立出来 2. DPU的原型设计 2.1[DPU的四大组成部分] 2.2[KSM与DPU] 3. DPU的最新设计 3.1[Source Suface P ...

  7. 一文搞懂基础数据单位换算逻辑

    ▲ 点击上方"架构精进之路"关注公众号 回复"01"领取「程序员进阶大礼包」 这是「架构精进之路」公众号的第75篇原创文章 计算机网络单位如何换算? 100Mb ...

  8. 6000字思考!一篇看懂促销系统的底层逻辑

    本文由作者 晓东同学 发布于社区促销是电商产品的核心功能模块,但也是最难做好的功能模块.促销的类型丰富且复杂,随意搭配组合就能给用户打造多样化的促销场景,引导用户进行购买. 因此,很多产品经理擅长在产 ...

  9. 95后不喝领导敬酒被打脸,看透6个底层逻辑,你就懂酒文化结局

    根据正在热议事件改写成"虚拟"故事:95后小杨金融硕士毕业,入职一家银行.前几天,小杨兴冲冲参加单位聚餐.行长要求小杨喝酒,小杨再三解释自己身体过敏滴酒不沾,并再三道歉.小杨的顶头 ...

最新文章

  1. 【全记录】2017云栖大会·北京峰会——企业云上业务优化专场
  2. [vue] 删除数组用delete和Vue.delete有什么区别?
  3. robotframework安装_python3.9.0 + robotframework + selenium3 实例体验
  4. Java jar 修改(springfox-swagger-ui-2.9.2.jar 修改去掉顶部的绿色topbar,汉化)
  5. Ta Muid(Dreams 梦幻)
  6. 面向 Android* Jelly Bean 4.3 的英特尔® 凌动™ x86 映像安装指南 - 推荐
  7. Javascript第五章改变CSS样式节点两种方法,制作导航背景切换效果第十课
  8. Fiddler(Web/HTTP调试利器)
  9. 人生七大纲要——道、德、仁、义礼、智、信
  10. html判断文本框和按钮,css样式之区分input是按钮还是文本框的方法
  11. win禁用shift切换输入法
  12. 全国31个省份农产品进口出口额省级数据2001-2021
  13. 5G网速比4G快那么多,是否意味着4G即将淘汰?
  14. 全向移动机器人运动参数校准
  15. 品牌对比 | 特步 VS 李宁
  16. ACM/ICPC是什么
  17. 新能源汽车生产过程中的智能制造技术
  18. C++多线程helloWord
  19. 现货黄金软件屏幕大小怎么调?
  20. linux下python版本升级,Linux下升级python版本(示例代码)

热门文章

  1. go pprof性能分析
  2. Python 的Tkinter包系列之一:窗口初步
  3. sql 统计查询某一字段的某一个值的总条数
  4. 青春无敌 吴莫愁《诛仙3》花絮曝光
  5. 用html撸一个游戏大厅
  6. 初识三层(3-tier application)——惊鸿一瞥
  7. 【华为OD机试真题 Java】火星文计算(100%通过+全网最详细注释)
  8. html购物车总价,最完美的购物车页面js,可全选,计算总价,传列表套字典。
  9. 心系冬奥 翰墨传情 |当代书画名家为奥运加油书画推介展【翟鑫篇】
  10. 3种最好用的JavaScript单元测试工具知多少