1. Sigmoid函数












函数也叫











函数,将输入值压缩到








区间之中,其函数表达式为:






























函数图像如图所示:

其求导之后的表达式为:

其梯度的导数图像如:

对于










函数,其优点为:












  • 函数的输出在








    之间,我们通常把它拿来作为一个二分类的方案。其输出范围有限,可以用作输出层,优化稳定。












  • 函数是一个连续函数,方便后续求导。

其缺点为:

  • 从函数的导函数可以得到,其值范围为(0, 0.25),存在梯度消失的问题。












  • 函数不是一个零均值的函数,导致后一层的神经元将得到上一层非




    均值的信号作为输入,从而会对梯度产生影响。












  • 函数是一个指数函数的激活函数,我们把每次基本运算当作一次








    (Floating Point Operations Per Second),则









    函数包括求负号,指数运算,加法与除法等4








    的运算量,预算量较大。而如



















    ,为









对于非互斥的多标签分类任务,且我们需要输出多个类别。如一张图我们需要输出是否是男人,是否戴了眼镜,我们可以采用Sigmoid函数来输出最后的结果。 如最后










的输出为[0.01, 0.02, 0.41, 0.62, 0.3, 0.18, 0.5, 0.42, 0.06, 0.81],我们通过设置一个概率阈值,比如




,如果概率值大于




,则判定类别符合,那么该输入样本则会被判定为类别




、类别




、类别




、类别




及类别




,即一个样本具有多个标签。

2. Softmax函数












函数又称归一化指数函数,函数表达式为:

其中,




























。如网络输出为











,则经过










层之后,输出为

对于










,往往我们会在面试的时候,需要手写










函数,这里给出一个参考版本。

import numpy as np
def softmax(f):# 为了防止数值溢出,我们将数值进行下处理# f: 输入值f -= np.max(f) # f becomes [-666, -333, 0]return np.exp(f) / np.sum(np.exp(f))

针对










函数的反向传播,这里给出手撕反传的推导过程,主要是分两种情况:

(1)当






(2)当






综上所述:

因此,不失一般性,扩展成矩阵形式则为:

当Y的shape为










时)。后面在下一题中,我们会将






































进行结合,再来推导前向与反向。

因此,当我们的任务是一个互斥的多类别分类任务(如imagenet分类),网络只能输出一个正确答案,我们可以用










函数处理各个原始的输出值。从公式中,我们可以看到










函数的分母是综合到了所有类别的信息。通常我们也会把










函数的输出,这主要是由于










函数先拉大了输入向量元素之间的差异(通过指数函数),然后才归一化为一个概率分布,在应用到分类问题时,它使得各个类别的概率差异比较显著,最大值产生的概率更接近




,这样输出分布的形式更接近真实分布,从而当作网络的置信度

对于










函数而言,我们可以从不同的角度来理解它:











  • 是一个暴力的找最大值的过程,最后的输出是以一个










    形式,将最大值的位置设置为




    ,其余为




    。这样的话,则在网络训练中,是不可导的,我们采用










    看作是









    的平滑近似,从而可以使得网络可导。












  • 将输入向量归一化映射到一个类别概率分布,即




    个类别上的概率分布,因此我们常将










    放到






    的最后一层。

  • 从概率图角度,










    可以理解为一个概率无向图上的联合概率。

3. 联系

对于二分类任务而言,二者都可以达到目标,在理论上,没有什么区别。

举个栗子,如现在是二分类(
















), 经过










函数之后:




































对于










函数,则为:

对于
















,我们可以使用一个









来进行替换,则替换成了:




































该表达式与


















相同,理论上是相同的。

4. 区别

在我们进行二分类任务时,当我们使用










函数,最后一层全连接层的神经元个数是




,神经网络的输出经过它的转换,可以将数值压缩到








之间,得到的结果可以理解成分类成目标类别的概率




,而不分类到该类别的概率是








,这也是典型的两点分布的形式。

而使用










函数则需要是两个神经元,一个是表示前景类的分类概率,另一个是背景类。此时,










函数也就退化成了二项分布。

更简单一点理解,










函数是对两个类别进行建模,其两个类别的概率之和是




。而










函数是对于一个类别的建模,另一个类别可以通过1来相减得到。












得到的结果是“分到正确类别的概率和未分到正确类别的概率”,










得到的是“分到正确类别的概率和分到错误类别的概率”。

5. 引用

  1. https://blog.csdn.net/uncle_ll/article/details/82778750

  2. https://zhuanlan.zhihu.com/p/356976844

  3. https://zhuanlan.zhihu.com/p/37740860

  4. https://blog.csdn.net/wujunlei1595848/article/details/90741963

  5. https://blog.csdn.net/wujunlei1595848/article/details/90741963

- END -


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:

【机器学习基础】Softmax与Sigmoid你还不知道存在这些联系?相关推荐

  1. 【机器学习】Softmax和Sigmoid

    如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢? 这一选择取决于你的类别之间 ...

  2. 【Python 机器学习 基础】绘制 sigmoid 函数曲线 || exp:以e为底的指数函数(科普向)

    一.sigmoid 函数简介 以下内容来自百度百科:Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线.在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网 ...

  3. [Python人工智能] 三.theano实现分类神经网络及机器学习基础

    从本篇文章开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前两篇文章讲解了神经网络基础概念.Theano库的安装过程及基础用法.theano实现回归神经网络,这篇文章主要讲解机 ...

  4. 神经网络——机器学习基础

    机器学习基础 本章会将你对这些问题的直觉固化为解决深度学习问题的可靠的概念框架.我们将把所有这些概念--模型评估.数据预处理.特征工程.解决过拟合--整合为详细的七步工作流程,用来解决任何机器学习任务 ...

  5. 《机器学习系列教程》:第二章 机器学习基础

    第二章 机器学习基础 机器学习and 数据分析 2.2 监督学习.非监督学习.半监督学习.弱监督学习? 根据数据类型的不同,对一个问题的建模有不同的方式.依据不同的学习方式和输入数据,机器学习主要分为 ...

  6. 机器学习基础-经典算法总结

    机器学习基础-经典算法 逻辑回归 逻辑回归的原理,问题的假设 为什么逻辑回归也可称为对数几率回归 推导逻辑回归损失函数 逻辑回归损失函数求导 逻辑回归为什么使用交叉熵作为损失函数 LR是不是凸优化问题 ...

  7. review2:机器学习基础

    review2:机器学习基础 第二章 机器学习基础 2.1 大话理解机器学习本质 2.2 各种常见算法图示 2.3 监督学习.非监督学习.半监督学习.弱监督学习? 2.4 监督学习有哪些步骤 2.5 ...

  8. 深度学习 - 第二章 - 机器学习基础

    深度学习 - 第二章 - 机器学习基础 第二章 机器学习基础 2.1 各种常见算法图示 2.2 监督学习.非监督学习.半监督学习.弱监督学习? 2.3 监督学习有哪些步骤 2.4 多实例学习? 2.5 ...

  9. 2.机器学习基础(一)

    文章目录 第二章 机器学习基础 2.1 基本概念 2.1.1 什么是神经网络 2.1.2 各种常见算法图示 2.1.3 计算图的导数计算 2.1.4 理解局部最优与全局最优 2.1.5 大数据与深度学 ...

最新文章

  1. SiteMesh介绍
  2. 一分钟详解Git使用技巧(一)
  3. hdu 1043 Eight 搜索,哈希
  4. 如何使用Arthas定位线上 Dubbo 线程池满异常
  5. squid中实现https的透明代理
  6. c语言两个变量相乘出现乱码,C语言,矩阵的乘法运算程序,输出一堆乱码,求大神看看哪里错了。。...
  7. [JavaWeb-CSS]CSS基础选择器
  8. oracle 10g 报错:ORA-00257: archiver error. Connect internal only, until freed
  9. h5前端有php,【前端】为什么有些网站的页面地址,没有加上html或者php或者jsp的后辍名?...
  10. Android studio教程:[6]创建多个Activity
  11. AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?
  12. HashMap中,比较key是否相等为什么要重写equal() 和hashCode()这两个方法?
  13. 京东商城搜索框特效实现
  14. Learning optical flow from still images
  15. java性能调优指南,就是这么简单
  16. 女生学软件测试难不难 培训出来能找到工作吗?
  17. asp.net校园二手物品交易网站
  18. SuperMap 点云的使用
  19. Numbers Mac表格的功能与介绍
  20. mysql group by 性能_记一次Mysql group by的优化

热门文章

  1. RFS的web自动化验收测试——第12讲 List Variables-List变量及其用法
  2. 在浏览器的背后(二) —— HTML语言的语法解析
  3. asp.net学习历程。
  4. suoi46 最大和和 (线段树)
  5. unity_小功能实现(敌人巡逻功能)
  6. (转)利用CAS算法实现通用线程安全状态机
  7. JSONP的诞生、原理及应用实例
  8. Android中处理崩溃异常 (转)
  9. Realtek 8192cu 支持 Android Hotspot
  10. php html5 css样式,怎么在html页面写css样式表