softmax与多分类

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

softmax与多分类
sotfmax 函数在机器学习和深度学习中有着⼴泛的应⽤,主要⽤于多分类问题。

softmax 函数
1. 定义
假定数组V,那么第i个元素的softmax值为
也就是该元素的指数除以所有元素的指数和,取指数是为了使差别更⼤。

于是该数组的每个元素被压缩到(0,1),并且和为1,其实就变成了概率。

在多分类问题中代表了该元素被取到的概率。

例如
2. 感性理解
softmax可以拆开来看,⼀个soft,⼀个max,max顾名思义取最⼤值,数组中哪个元素最⼤,⼀定取到哪个,
然⽽当数组被softmax之后,变成了概率,被⽤来代表元素被取到的概率,那么最⼤的最容易被取到,⽽不是⼀定被取到,这就是soft。

其实就是强化学习中的探索率。

多分类的问题
1. one-hot vector
多分类的⽬标值通常⽤one-hot vector表⽰,为什么呢?
假定有100个类别,我们设定类别标号为1-100,有⼀个样本真实标签为100,⽽预测为1,你能说他们的差是99吗?还有⼀个样本真实标签50,预测40,你能说预测的更准吗?显然不合理。

2. 详解 softmax 解决多分类问题
假定有m个样本,即[x1,x2,...xm],每个样本n个属性,即xi=[a1,a2,...an],共分为k类,yi=[0,0,...1...0],第i个位置是1,其余是0。

每类的概率P k=P(y(k)=1),且ΣΡ=1。

⽤另⼀种⽅式来表⽰Pk=1{y=k}Pk
现在我们来模拟多分类过程:
⾸先需要搞清楚⼀点:分类是⼲啥的,输⼊⼀个样本x,看看他属于哪⼀类,输出是⼀个向量y’,表⽰该样本属于每⼀类的概率,假设y'= [1/2,1/4,1/4],真实类别y=[0,1,0]
然后我们怎么办呢?此处开始划重点。

咋⼀想,取最⼤的那个概率,但是然后呢?这⾥最⼤概率对应的类别是1,⽽实际类别是2,貌似没办法往下⾛了,
再仔细想想,应该取真实类别对应的那个概率1/4,⽽且我们希望这个概率就是最⼤的,
这⾥其实可以⽤最⼩⼆乘的思路,真实的类别y肯定是1(真实概率),那么真实类别y中1的位置对应的输出y’的位置的概率1/4就是我们的预测值,预测值与真实值的差就是loss,
当然我们这⾥采⽤极⼤似然的思路,就是让这个概率最⼤,即预测尽量接近真实,(其实在这⾥最⼩⼆乘和极⼤似然是⼀个意思,最⼩⼆乘是减⼩loss,1-p,⽽极⼤似然就是让p尽量⼤,最⼤是1)
接着再取⼀个样本,就是2个样本,我们希望这两个样本的预测尽量接近真实,那么就是两个样本的概率相乘,然后尽量⼤,
n个样本呢,n个概率相乘,使这个乘积最⼤,这就是代价函数。

把上述过程⽤数学公式来表⽰
设m个样本,共k个类,y i € {1,2,3...k},每个样本预测到的概率为P,P为⼀个向量,长度为k
那么每个样本从P t中取到的值是
y为真实类别,当y=i时,1{y=i}为1,否则为0,Pi为预测值的第i个元素,上式的意思是当y=i时,取此时的Pi,实际上就是⼀个数值,求和只是唬⼈的。

那么m个样本对应的代价函数是
y j是第j个样本的真实标签,p j是第j个样本的输出
然后使代价函数最⼤,先取log,在加负号,即求最⼩,除以m好求导
这样取log貌似不太好理解,可以这样想,
其实这是⼀个循环,for j=1:m
在j给定时,Σ1{y j=i}Pj其实是⼀个数,这个数就是Pj中的某个,然后我们⽤1{}把这个数取到就⾏了。

另⼀种表⽰⽅式更容易理解
然后求偏导,令导数等于0,梯度下降
那么,Pj是多少?此时就⽤到softmax了。

wx+b得到的是个数值,不是概率,这时需要⽤softmax转换成概率。

这个式⼦表⽰样本x被分为第j类的概率。

这个Pj不是我们上⾯公式⾥的Pj,这⾥的Pj是⼀个数,公式⾥的是⼀个向量。

插曲 ---- 细⼼的⼈会发现两个问题:
1. 分⼦上θ的下标是j,⽽j是类别,不是应该是样本的属性个数吗?θi X i
2. 分母上求和⽤的l,l和j都表⽰类别,这⾥要区分开。

那么第⼀个问题怎么解释?
多分类⾥的θ⽐较特殊,是⼀个矩阵,⽽逻辑回归是个向量,因为多分类相当于是多个分类器,每个分类器有⾃⼰的模板,所以该矩阵⼤⼩为类别数X属性数
(图是盗的,T表⽰属性个数,k类别个数,每⾏代表⼀个类别的模板,就是上⾯公式中的θj)
回到正题----下⾯的部分⽹上都有,所以盗图了,我会备注盗图,有些字母跟上⽂不太⼀样,我会稍加说明。

经过softmax转换,代价函数表⽰为
(盗图,这⾥i表⽰样本数,j表⽰类别数,T表⽰属性数)
然后就是求偏导了
⾸先要明确⼀点:
这点⽐较重要
我的求导
写的有些乱,看⽹上的吧
然后梯度下降。

softmax 参数冗余
有空再说
softmax 权重衰减
权重衰减可以解决参数冗余问题。

其实就是正则化,有空再说
softmax VS k个⼆分类
多分类和k个⼆分类哪个更好?如何选择?取决于事物的类别是否互斥。

⽐如篮球、⾜球、台球,⼀个球只能属于3种中的⼀种,或者你可以增设⼀个其他球,⼀个球只能属于4种中的⼀种,此时⽤softmax多分类
⽐如流⾏歌曲、摇滚歌曲、港台歌曲,⼀⾸歌可以属于流⾏,同时也可以属于摇滚,此时⽤多个⼆分类,分别判断是不是流⾏,是不是摇滚,是不是港台。

softmax 与交叉熵
交叉熵的公式为 loss=-Σtv*log(pv) true_value代表真实值,predict_value代表预测值。

让我们再回想⼀下上⾯softmax多分类的代价函数
log左边是真实标签,右边是预测标签,这不就是交叉熵吗?
所以softmax多分类⽤交叉熵作为代价函数。

在分类问题中,交叉熵函数已经⼤范围的代替了均⽅误差函数。

也就是说,在输出为概率分布的情况下,就可以使⽤交叉熵函数作为理想与现实的度量。

这也就是为什么它可以作为有 Softmax 函数激活的神经⽹络的损失函数。

softmax 与 sigmoid 的关系
有空再说。

相关文档
最新文档