您的位置:首页 > 其它

深度学习小白——线性分类(Softmax)

2017-03-22 15:48 246 查看
一、Softmax分类器(区别于SVM)

在Softmax分类器中,评分函数

保持不变,但是这些评分被视为每个分类的未归一化的对数概率,

损失函数变为cross-entropy loss:   

 


 被称作softmax函数,输入为一个评分值的向量f,输出为0~1的压缩值,含义是

给定图像数据xi,以W为参数,分配给正确分类标签yi的归一化概率,所有元素和为1

(个人理解)由信息论的熵的定义知:熵为平均获取的信息量,若是输入输出“差异”越大,则信息量越大,则熵越大,反之,“差异”越小,熵越小


 交叉熵的定义式,(q与p之间的熵)

因此:Softmax分类器所做的就是最小化估计分类概率和真实分布之间的交叉熵(真实分布为p=[0,0,....1,0,0..0]在yi的位置为1,其余为0)



【实际操作】

因为式子中有



,所以数值可能会非常大,所以需要分子分母同乘常数C,并把它变换到去和之中,就能得到一个从数学上等价的公式:



通常,将C设为

该技巧简单地说,就是应该将向量

中的数值进行平移,使得最大值为0

f = np.array([123, 456, 789]) # 例子中有3个分类,每个评分的数值都很大
p = np.exp(f) / np.sum(np.exp(f)) # 不妙:数值问题,可能导致数值爆炸

# 那么将f中的值平移到最大值为0:
f -= np.max(f) # f becomes [-666, -333, 0]
p = np.exp(f) / np.sum(np.exp(f)) # 现在OK了,将给出正确结果


【求解L关于W的偏导数】——反向传播会用到






二、SVM 和Softmax的比较



Softmax 分类器输出的是p(yi | xi ; W), 即正确分类的概率

当λ变大时,权重W就会被惩罚的更多,然后W就会变得更小,算出来的分数也会更小,则,概率分布就越来越平均化

相对于Softmax分类器,SVM更加“局部目标化”,因为对于[10,-2,3]的数据,其中第一分类是正确的,那么当△=1时,就会得到损失值为0,对于[10,-100,-100]和[10,9,9]都是一样的,所以对SVM来说没什么不同,只要满足超过边界值等于1,那么损失值就等于0

但对于Softmax分类器,就不一样。 对于[10,9,9]来说,计算出的损失值就远远高于[10,-100,-100]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: