赞
踩
1 提出问题
我们解决了公元前的楚汉相争的问题,现在看一下公元220年前后的三国问题。
在数据集中一共有140个样本数据,
分类标签值的含义:
1.魏国城池:标签为1,下图中蓝色点
2.蜀国城池:标签为2,下图中红色点
3.吴国城池:标签为3,下图中绿色点
问题:
1.经纬度相对值为(5,1)时,属于哪个国?
2.经纬度相对值为(7,6)时,属于哪个国?
3.经纬度相对值为(5,6)时,属于哪个国?
4.经纬度相对值为(2,7)时,属于哪个国?
2 多分类学习策略
线性多分类和非线性多分类的区别
下图先示意了线性多分类和非线性多分类的区别:
左侧为线性多分类,右侧为非线性多分类。它们的区别在于不同类别的样本点之间是否可以用一条直线来互相分割。对神经网络来说,线性多分类可以使用单层结构来解决,而非线性多分类需要使用双层结构。
二分类与多分类的关系
我们已经学习过了使用神经网络做二分类的方法,它并不能用于多分类。在传统的机器学习中,有些二分类算法可以直接推广到多分类,但是在更多的时候,我们会基于一些基本策略,利用二分类学习器来解决多分类问题。
多分类问题一共有三种解法:
1 一对一
每次先只保留两个类别的数据,训练一个分类器。如果一共有N个类别,则需要训练C2N个分类器。以N=3时举例,需要训练(A|B),(B|C),(A|C)三个分类器。
如上图最左侧所示,这个二分类器只关心蓝色和绿色样本的分类,而不管红色样本的情况,也就是说在训练时,只把蓝色和绿色样本输入网络。
推理时,(A|B)分类器告诉你是A类时,需要到(A|C)分类器再试一下,如果也是A类,则就是A类。如果(A|C)告诉你是C类,则基本是C类了,不可能是B类,不信的话可以到(B|C)分类器再去测试一下。
如最左图,这种情况是在训练时,把红色样本当作一类,把蓝色和绿色样本混在一起当作另外一类。
推理时,同时调用三个分类器,再把三种结果组合起来,就是真实的结果。比如,第一个分类器告诉你是“红类”,那么它确实就是红类;如果告诉你是非红类,则需要看第二个分类器的结果,绿类或者非绿类;依此类推。
3 多对多
假设有4个类别ABCD,我们可以把AB算作一类,CD算作一类,训练一个分类器1;再把AC算作一类,BD算作一类,训练一个分类器2。
推理时,第1个分类器告诉你是AB类,第二个分类器告诉你是BD类,则做“与”操作,就是B类。
多分类与多标签
多分类学习中,虽然有多个类别,但是每个样本只属于一个类别。
有一种情况也很常见,比如一幅图中,既有蓝天白云,又有花草树木,那么这张图片可以有两种标注方法:
1.标注为“风景”,而不是“人物”,属于风景图片,这叫做分类
2.被同时标注为“蓝天”、“白云”、“花草”、“树木”等多个标签,这样的任务不叫作多分类学习,而是“多标签”学习,multi-label learning。我们此处不涉及这类问题。
此函数对线性多分类和非线性多分类都适用。
先回忆一下二分类问题,在线性计算后,使用了Logistic函数计算样本的概率值,从而把样本分成了正负两类。那么对于多分类问题,应该使用什么方法来计算样本属于各个类别的概率值呢?又是如何作用到反向传播过程中的呢?我们这一节主要研究这个问题。’
1 多分类函数定义 - Softmax
为什么叫做Softmax?
假设输入值是:[3,1,-3],如果取max操作会变成:[1,0,0],这符合我们的分类需要。但是有两个不足:
1.分类结果是[1,0,0],只保留的非0即1的信息,没有各元素之间相差多少的信息,可以理解是“Hard-Max”
2.max操作本身不可导,无法用在反向传播中。
所以Softmax加了个"soft"来模拟max的行为,但同时又保留了相对大小的信息。
上式中:
1.zj是对第 j 项的分类原始值,即矩阵运算的结果
2.zi是参与分类计算的每个类别的原始值
3.m 是总的分类数
4.aj是对第 j 项的计算结果
假设j=1,m=3,上式为:
用一张图来形象地说明这个过程:
当输入的数据[z1,z2,z3]是[3,1,−3]时,按照图示过程进行计算,可以得出输出的概率分布是[0.879,0.119,0.002]。
总结一下:
也就是说,在(至少)有三个类别时,通过使用Softmax公式计算它们的输出,比较相对大小后,得出该样本属于第一类,因为第一类的值为0.879,在三者中最大。注意这是对一个样本的计算得出的数值,而不是三个样本,亦即softmax给出了某个样本分别属于三个类别的概率。
它有两个特点:
1.三个类别的概率相加为1
2.每个类别的概率都大于0
Softmax的工作原理
我们仍假设网络输出的预测数据是z=[3, 1, -3],而标签值是y=[1, 0, 0]。在做反向传播时,根据前面的经验,我们会用z-y,得到:
这个信息很奇怪:
第一项是2,我们已经预测准确了此样本属于第一类,但是反向误差的值是2,即惩罚值是2
第二项是1,惩罚值是1,预测对了,仍有惩罚值
第三项是-3,惩罚值是-3,意为着奖励值是3,明明预测错误了却给了奖励
所以,如果不使用Softmax这种机制,会存在有个问题:
z值和y值之间,即预测值和标签值之间不可比,比如z[0]=3与y[0]=1是不可比的
z值中的三个元素之间虽然可比,但只能比大小,不能比差值,比如z[0]>z[1]>z[2],但3和1相差2,1和-3相差4,这些差值是无意义的
在使用Softmax之后,我们得到的值是a=[0.879, 0.119, 0.002],用a-y:
再来分析这个信息:
第一项-0.121是奖励给该类别0.121,因为它做对了,但是可以让这个概率值更大,最好是1
第二项0.119是惩罚,因为它试图给第二类0.119的概率,所以需要这个概率值更小,最好是0
第三项0.002是惩罚,因为它试图给第三类0.002的概率,所以需要这个概率值更小,最好是0
这个信息是完全正确的,可以用于反向传播。Softmax先做了归一化,把输出值归一到[0,1]之间,这样就可以与标签值的0或1去比较,并且知道惩罚或奖励的幅度。
从继承关系的角度来说,Softmax函数可以视作Logistic函数扩展,比如一个二分类问题:
是不是和Logistic函数形式非常像?其实Logistic函数也是给出了当前样本的一个概率值,只不过是依靠偏近0或偏近1来判断属于正类还是负类。
图示如下:
实例化推导
我们先用实例化的方式来做反向传播公式的推导,然后再扩展到一般性上。假设有三个类别,则:
为了方便书写,我们令:
依次求解公式12中的各项:
把公式13~18组合到12中:
不失一般性,由公式19可得:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。