转载请注明:http://blog.csdn.net/ben_ben_niao/article/details/51540409
简介
最近研究类二分类,和多分类,发现对Logistic&softmax的原理理解不深,难以达到灵活运用修改,所以今天总结一下,使自己加深印象。为了节约时间,只写关键步骤。
首先Logistic regression是针对0/1分类,而softmax是在Logistic基础上的多目标分类,输出是对应类的概率,概率最大的作为我们分类器判断出来的类别。首先讲解Logistic regression:
1.线性回归(拟合):
,
其中,X为特征向量,h(x)为回归值, θ在这儿称为参数,可以用向量表示为,,线性回归的目的就是求解θ。那么求解首先就要定义loss function,求解误差最小时的参数解。loss function如下:
2.loss function的概率解释L2距离:
一般来讲,误差满足平均值为0的高斯分布,也就是正态分布。那么x和y的条件概率也就是,
这样就估计了一条样本的结果概率,然而我们期待的是模型能够在全部样本上预测最准,也就是概率积最大。注意这里的概率积是概率密度函数积,连续函数的概率密度函数与离散值的概率函数不同。这个概率积成为最大似然估计。我们希望在最大似然估计得到最大值时确定θ。那么需要对最大似然估计公式求导,求导结果既是,
这就解释了为何误差函数要使用平方和。
3.线性回归值映射到[0,1]之间的概率,用Logistic regression:
logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)将最为假设函数来预测。g(z)可以将连续值映射到0和1上。一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。如果非要应用进入,可以使用logistic回归.logistic回归的假设函数如下,线性回归假设函数只是。
4. 概率解释logistic回归。用来分类0/1问题,也就是预测结果属于0或者1的二值分类问题。这里假设了二值满足伯努利分布,也就是
根据努伯利分布,则联合概率分布为:
对联合概率分布取log似然,就得到我们的目标函数,,那么,在CNN的forward时,得到二分类中为0和1的两个概率值,概率大的被认为是CNN的分类结果。在Backward中,就是优化目标函数,也就是直接对上述目标函数求导。其实,令,
,则
,这就是选择Logistic 函数的原因。
5.softmax,主要在Logistic的基础上进行多类别分类。
假设有k类,应用于一般线性模型,必然是属于
个类中的一种。用
表示
为真,同样当
为假时,有
,那么进一步得到联合分布的概率密度函数为,设
,联合概率为
最终的概率为:
…………(1)…………
其中n_i为判断为递i类的response,响应经过softmax后变成概率:。
6.softmaxloss
softmaxloss是softmax和Log-loss的组合,首先softmax的输出是概率,log-loss的代价函数为
。
将式子(1)带入,得到:
注意:softmax只是将线性回归的结果映射到[0,1],从而表示概率,而不包含1中线性回归的参数θ,只是用了线性回归的值来映射。所以在caffe中,softmax和softmaxloss是没有参数的。而参数θ可以在fc层求解。故经常看见softmaxloss前面是有一层fc layers,输出K个channel,其中k是类别数目,相应的第i个channel对应判别为第i个类别的response,response最大的判定为分类的结果,response经过Logistic函数映射到[0,1]后才表示概率,Logistic函数是单调递增,所以和response一一对应。(所以forward时并有response就可以了)。caffe之所这样,是为了各个layers能更方便高效的组合。