My Little World

多分类问题

Softmax regression

之前的二分类问题用logic regression 可以解决,
但是对于多分类问题,可以在此基础上,遵循所有可能性加和为1的原则
进行扩展

假如现在需要判断4种可能性的概率
那我们需要四条分界线(如下图在z1-z4)
然后通过通过下面这个公式

计算得到a1 - a4
就可以得到4种可能性的概率

这种算法就是 Softmax regression

损失函数

参照逻辑回归函数的损失函数
假如y = 1, 那么损失函数就是

y = 0 的话损失函数就是

归纳一下就是,当y = an时
损失函数就是Loss = -log(an)
因为 y 只能可能是a1-an N 种可能性中的一种
下面的Loss趋势图说明,当an 值越接近1 的时候 损失函数越小
也就是说a1 - an 这些概率值越接近1 损失函数越小
相当于概率值对应的可能性越可能接近真实y值,越准

在神经网络中使用

之前的二分类问题中,在神经网络的最后一层使用sigmoid 函数作为输出函数(或者激活函数)可以识别图片中的 0 和 1
现在如果要识别图片中的数字是0-9 10种分类中的哪一种,
要做的就是将输出层激活函数换成softmax 函数,并且是10个节点就可以实现
每个节点代表一种可能,值最大的就是可能性最大的值

tensorFlow 中实现

方案1

不推荐,用方案2优化

方案2

原因是在tensorFlow 中使用中间步骤计算数值和直接将式子带入计算最终值的处理过程不同,tensorflow 会对后者重新排列表达式中的术语
并想出一种更准确的计算方式去计算,方案二在方案一基础上做的修改就是在将式子带入计算,而不是先计算中间值,再带入

区别多标签多分类问题

上面讨论的是多分类问题,一个问题多个可能性
多标签多分类问题是指同时推测多个问题的多个可能性

计算方式可以是分别看成单个神经网络计算,一个神经网络处理一个问题的多种可能
也可以同时计算,输出多个问题对应的多个可能