博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
概率论在实际生活的例子_薰风AI知识点:Softmax与交叉熵的数学意义(信息论与概率论视角)...
阅读量:5322 次
发布时间:2019-06-14

本文共 3190 字,大约阅读时间需要 10 分钟。

关注"Smarter",加" 星标 "置顶

及时获取最优质的CV内容

c7b80c2daffd1f9a1057da1329f0f260.png

薰风说

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

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

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

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

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

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

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

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

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

一、什么是Softmax分类器?

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

现在我们假设存在一个多分类器 5216212a-0751-eb11-8da9-e4434bdf6706.svg

ps:如果想简化一点,那可以直接认为 5316212a-0751-eb11-8da9-e4434bdf6706.svg 是个线性分类器 5416212a-0751-eb11-8da9-e4434bdf6706.svg

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

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

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

5716212a-0751-eb11-8da9-e4434bdf6706.svg

或等价的

5916212a-0751-eb11-8da9-e4434bdf6706.svg

在上式中,使用 5a16212a-0751-eb11-8da9-e4434bdf6706.svg 来表示分类评分向量 5316212a-0751-eb11-8da9-e4434bdf6706.svg 中的第 j 个元素。

数据集的损失值是数据集中所有样本数据的损失值 5c16212a-0751-eb11-8da9-e4434bdf6706.svg 的均值与正则化损失 5d16212a-0751-eb11-8da9-e4434bdf6706.svg 之和。

函数 5e16212a-0751-eb11-8da9-e4434bdf6706.svg 被称作softmax 函数,它的:

  • 输入一个向量,向量中元素为任意实数的评分值( 6016212a-0751-eb11-8da9-e4434bdf6706.svg 中的),函数对其进行缩放.

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

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

二、多视角下的softmax函数

1. 信息论视角:

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

在“真实”分布 6116212a-0751-eb11-8da9-e4434bdf6706.svg 和估计分布6316212a-0751-eb11-8da9-e4434bdf6706.svg之间的 交叉熵 定义如下:

6416212a-0751-eb11-8da9-e4434bdf6706.svg

因此,Softmax就是最小化在估计分类概率 6616212a-0751-eb11-8da9-e4434bdf6706.svg 和“真实”分布之间的交叉熵。

证明/解释

“假设真实”分布就是所有概率密度都分布在正确的类别上(比如:假设输入属于第 6716212a-0751-eb11-8da9-e4434bdf6706.svg 类,则6816212a-0751-eb11-8da9-e4434bdf6706.svg 在 6916212a-0751-eb11-8da9-e4434bdf6706.svg 的位置就有一个单独的1)。

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

6a16212a-0751-eb11-8da9-e4434bdf6706.svg

且delta函数 6116212a-0751-eb11-8da9-e4434bdf6706.svg 的信息熵是0(若不了解请学习信息论/通信原理等课程的内容,了解信息熵的定义) ;

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

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

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

2. 概率论解释

6c16212a-0751-eb11-8da9-e4434bdf6706.svg

可解释为给定输入特征 6e16212a-0751-eb11-8da9-e4434bdf6706.svg ,以 7016212a-0751-eb11-8da9-e4434bdf6706.svg 为参数,分配给正确分类标签 6916212a-0751-eb11-8da9-e4434bdf6706.svg 的归一化概率。

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

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

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

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

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

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

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

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

四、SVM和Softmax的比较

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

b67317135f51eab416212c06be1539cb.png

两个分类器都计算了同样的分值向量 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( 7b16212a-0751-eb11-8da9-e4434bdf6706.svg )会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是0。

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

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

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

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

c7b80c2daffd1f9a1057da1329f0f260.png

ab49895af2b1093e8cdff63c56dee88d.png

△开白/投稿/合作/内推: 昵称-目的

△交流群: 昵称-学校/公司-方向

fe3502adf5e76e42f3aa599b15ab132a.png

觉得有用给个在看吧    34270ad5df70aa49a108d6bccf7e7f06.gif

转载地址:http://fihhv.baihongyu.com/

你可能感兴趣的文章
观察者模式(Observer)
查看>>
python中numpy.r_和numpy.c_
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
freebsd 实现 tab 命令 补全 命令 提示
查看>>
struts1和struts2的区别
查看>>
函数之匿名函数
查看>>
shell习题第16题:查用户
查看>>
实验4 [bx]和loop的使用
查看>>
Redis常用命令
查看>>
2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)
查看>>
2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
查看>>
redis cluster 集群资料
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
微软职位内部推荐-SOFTWARE ENGINEER II
查看>>
centos系统python2.7更新到3.5
查看>>
C#类与结构体究竟谁快——各种函数调用模式速度评测
查看>>
我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(下)...
查看>>
poj 题目分类
查看>>
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>