经过我长时间的观察,发现很多人对人工智能/机器学习的理解只停留在“这是个经典/最新棒槌,我拿这个棒槌敲钉子贼6……”这个level。当然,如果真的敲得很6,那也是一个很厉害的大佬了(我觉得我敲的一点都不6……)

但是,随着人工智能行业的“爆火”和“过热”,会抡棒槌的人只会越来越多。因为这个越来越多的人会撰写文章,告诉你怎么抡棒槌。

但他们很少告诉你这个棒槌是怎么来的

至少现在,知其然不知其所以然不是硬伤,但随着时间推移,越来越多的人被营销号/七大姑八大姨连哄带骗,踌躇满志地进入这个领域,所谓“算法工程师”这个行业的内卷和竞争只会愈发严重。

等到那时,即使企业只想要一个“棒槌敲钉子贼6”的人,他也会通过“棒槌怎么来”这种问题筛除一大批人。

何况棒槌怎么来这个问题本来就应该是基础……

而且,只会“拿棒槌敲钉子的人”,必然不会满足大部分工业界的要求。因为终有一天,“人工只能”产业会不能只靠PPT,而要靠“产品”才能活下去。

此时,你必须要是那个可以“造棒槌”的人

——2019.8.18 一个连怎么抡棒槌的不精通的AI小白。

一、什么是Softmax分类器?

Softmax分类器可以理解为逻辑回归分类器面对多分类问题的一般化归纳。

现在我们假设存在一个多分类器 

ps:如果想简化一点,那可以直接认为  是个线性分类器 

输出多分类问题的评分时,除了Softmax外还有SVM,不过SVM不存在直观解释,我们只能认为它是个越高越好的分数。

而Softmax的输出则可以更加直观地解释为归一化概率,并可由此引出一系列解释,这一点后文会讨论。

在Softmax分类器中,函数映射  代表着某种“评分”这个概念保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并且将折叶损失(hinge loss)替换为交叉熵损失(cross-entropy loss)。公式如下:

或等价的

在上式中,使用  来表示分类评分向量  中的第 j 个元素。

数据集的损失值是数据集中所有样本数据的损失值  的均值与正则化损失  之和。

函数  被称作softmax 函数,它的:

  • 输入一个向量,向量中元素为任意实数的评分值(  中的),函数对其进行缩放.

  • 输出一个向量,其中每个元素值在0到1之间,且所有元素之和为1。

所以,包含softmax函数的完整交叉熵损失看起唬人,实际上还是比较容易理解的。

二、多视角下的softmax函数

1. 信息论视角:

在机器学习中,有一个经常和softmax捆绑在一起的名词“交叉熵”损失

在“真实”分布  和估计分布之间的 交叉熵 定义如下:

因此,Softmax就是最小化在估计分类概率  和“真实”分布之间的交叉熵。

证明/解释

“假设真实”分布就是所有概率密度都分布在正确的类别上(比如:假设输入属于第  类,则 在  的位置就有一个单独的1)。

还有,既然交叉熵可以写成熵和相对熵(Kullback-Leibler divergence,另一个名字叫KL散度)

且delta函数  的信息熵是0(若不了解请学习信息论/通信原理等课程的内容,了解信息熵的定义) ;

那么,就能训练一个sotfmax分类器,就等价于对两个分布之间的相对熵做最小化操作。

换句话说,交叉熵损失函数“想要”预测分布的所有概率密度都在正确分类上。

注:Kullback-Leibler散度(Kullback-Leibler Divergence)也叫做相对熵(Relative Entropy),它衡量的是相同事件空间里的两个概率分布的差异情况。

2. 概率论解释

可解释为给定输入特征  ,以  为参数,分配给正确分类标签  的归一化概率。

Softmax分类器将输出向量  的评分解释为没归一化的对数概率。那么,做指数函数的幂就得到了没有归一化的概率,而除法操作则对数据进行了归一化处理,使得这些概率的和为1。

从概率论的角度来理解,是在最小化正确分类的负对数概率,这可以看做是最大似然估计(MLE)。

该解释的另一个好处是,损失函数中的正则化部分  可以被看做是权重矩阵  的高斯先验,进行最大后验估计(MAP),而不是最大似然估计。

三、彩蛋:令人迷惑的命名规则

SVM分类器使用的是折叶损失(hinge loss),又被称为最大边界损失(max-margin loss)

Softmax分类器使用的是交叉熵损失(corss-entropy loss)

Softmax分类器的命名是从 softmax函数 那里得来的,softmax函数将原始分类评分变成正的归一化数值,所有数值和为1,这样处理后交叉熵损失才能应用。

注意,“softmax损失(softmax loss)”是没有意义的,因为softmax只是一个压缩数值的函数。(这个说法常用来做简称)

四、SVM和Softmax的比较

下图有助于区分这 Softmax和SVM这两种分类器:

两个分类器都计算了同样的分值向量 f(本节中是通过矩阵乘来实现)

不同之处在于对 f 中分值的解释:

  • SVM分类器将它们看做是分类评分,它的损失函数鼓励正确的分类(本例中是蓝色的类别2)的分值比其他分类的分值高出至少一个边界值。

  • Softmax分类器将这些数值看做是每个分类没有归一化的对数概率,鼓励正确分类的归一化的对数概率变高,其余的变低。

上图的两个分类器损失函数值没有可比性。只在给定同样数据,在同样的分类器的损失值计算中,它们才有意义。

Softmax分类器为每个分类提供了“可能性”

SVM的计算是无标定的,而且难以对评分值给出直观解释。

Softmax分类器则计算出对于所有分类标签的可能性。

举个例子,SVM分类器是[12.5, 0.6, -23.0]对应分类“猫”,“狗”,“船”。

而softmax分类器可以计算出三个标签的”可能性“是[0.9, 0.09, 0.01],这就让你能看出对于不同分类准确性的把握。

为什么我们要在”可能性“上面打引号呢?

因为可能性分布的集中或离散程度是由正则化参数λ直接决定的,λ是你能直接控制的一个输入参数。如果正则化参数 λ 更大,那么权重 W 就会被惩罚的更多,然后他的权重数值就会更小,算出来的分数也会更小,概率的分布就更加分散了。随着正则化参数 λ 不断增强,输出的概率会趋于均匀分布。

softmax分类器算出来的概率最好是看成一种对于分类正确性的自信(贝叶斯学派的观点)。

看起来很不一样对吧,但实际上……

在实际使用中,SVM和Softmax经常是相似的:

两种分类器的表现差别很小。

相对于Softmax分类器,SVM更加“局部目标化(local objective)”,这既可以看做是一个特性,也可以看做是一个劣势。

考虑一个评分是[10, -2, 3]的数据,其中第一个分类是正确的。那么一个SVM(  )会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是0。

SVM对于数字个体的细节是不关心的:如果分数是[10, -100, -100]或者[10, 9, 9],对于SVM来说没设么不同,只要满足超过边界值等于1,那么损失值就等于0。

softmax分类器则不同。对于[10, 9, 9]来说,计算出的损失值就远远高于[10, -100, -100]的。

换句话来说,softmax分类器对于分数是永远不会满意的:正确分类总能得到更高的可能性,错误分类总能得到更低的可能性,损失值总是能够更小。

但SVM只要边界值被满足了就满意了,不会超过限制去细微地操作具体分数。

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
获取本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。加入微信群请扫码:

【机器学习基础】Softmax与交叉熵的数学意义(信息论与概率论视角)相关推荐

  1. 【机器学习】 - 激活函数与交叉熵Sigmoid, Softmax, binary_crossentropy, categorican_crossentropy区别

    Content: 为什么需要激活函数: 一个神经元在做什么: 激活函数 Sigmoid Softmax 4. 交叉熵损失函数 Binary cross-entropy Categorican cros ...

  2. CNN基础知识 || softmax与交叉熵

    一.函数 1 sigmoid 将一个数值通过函数映射到0-1之间. sigmoid函数表达式如下                                                     ...

  3. pytoch人工神经网络基础:最简单的分类(softmax回归+交叉熵分类)

    softmax回归分类原理 对于回归问题,可以用模型预测值与真实值比较,用均方误差这样的损失函数表示误差,迭代使误差最小训练模型. 那么分类问题是否可以用线性回归模型预测呢.最简单的方法就是用soft ...

  4. 神经网络学习中的SoftMax与交叉熵

    简 介: 对于在深度学习中的两个常见的函数SoftMax,交叉熵进行的探讨.在利用paddle平台中的反向求微分进行验证的过程中,发现结果 与数学定义有差别.具体原因还需要之后进行查找. 关键词: 交 ...

  5. 人脸识别-Loss-2010:Softmax Loss(Softmax激活函数 + “交叉熵损失函数”)【样本3真实标签为c_5,则样本3的损失:loss_3=-log(\hat{y}_5^3)】

    一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等. 全连接层:等号左边部分就是全连接层做的事, W W W 是全连接层的参数,我们也称为权值, X X X 是全连接层的输 ...

  6. 度量学习(Metric learning)—— 基于分类损失函数(softmax、交叉熵、cosface、arcface)

    概述 首先,我们把loss归为两类:一类是本篇讲述的基于softmax的,一类是基于pair对的(如对比损失.三元损失等). 基于pair对的,参考我的另一篇博客: https://blog.csdn ...

  7. tensoflow随笔——softmax和交叉熵

    softmax函数 softmax函数接收一个N维向量作为输入,然后把每一维的值转换到(0, 1)之间的一个实数.假设模型全连接网络输出为a,有C个类别,则输出为a1,a2,...,aC,对于每个样本 ...

  8. 机器学习优化中的交叉熵及改进形式

    机器学习优化中的交叉熵及改进形式   [摘要]目前分类问题广泛的应用到我们的实际生活中[1],因而我们应该研究如何分类,研究它的算法.交叉熵通常在机器学习的分类问题中用作损失函数来判断分类模型的优劣, ...

  9. 动手学深度学习——softmax回归之OneHot、softmax与交叉熵

    目录 一.从回归到多类分类 1. 回归估计一个连续值 2. 分类预测一个离散类别 二.独热编码OneHot 三.校验比例--激活函数softmax 四.损失函数--交叉熵 五.总结 回归可以用于预测多 ...

最新文章

  1. mysql分组和where条件查询_【MySQL】:分组查询where和having
  2. 简单明了!OLTP场景下的数据分布式设计原则
  3. 协方差、相关系数---通俗解释
  4. 【Time系列三】简单的计时器(秒表)
  5. 过程记录 yolov3目标检测输出目标坐标和原图物体像素坐标比较
  6. servlet.jar--jar not loaded错误
  7. asp.net 开发注意的几点
  8. JVM—类加载过程学习
  9. 操作系统知识点大总结【进程同步与互斥】
  10. WebAPI——自动生成帮助文档
  11. 用于文本去重(相似度计算)的Simhash算法学习及python实现(持续学习中)
  12. 【升级到Java 17】switch 表达式
  13. 服务器托管费用一般是多少
  14. 数据的准确性对模型效果的重要性
  15. 达梦数据库DM8 DCA认证学习笔记
  16. Windows 优质软件
  17. 【IoT】 产品设计之α、β、λ测试
  18. 怎么能跳过苹果服务器降级系统,iPhone手机可以降级任意系统版本?大神有话说...
  19. C#作业(一) 【学完第九部分可做】
  20. 微信小程序 之radio应用实例(选择收货地址)

热门文章

  1. 关于利用VS2008创建项目遇到的小困惑备忘
  2. js函数中的参数的个数
  3. Android-----Activity生命周期
  4. 责任链设计模式(过滤器、拦截器)
  5. 关于hbase的read操作的深入研究 region到storefile过程
  6. NSIS设置桌面快捷方式的图标
  7. Graphpad Prism作相关性分析图
  8. JavaSE(二十二)——TCP协议的三次握手
  9. git 如何清理操作日志_git如何清空所有的commit记录
  10. 问题 | Android Studio:Missing contentDescription attribute on image(ImageView)