03 Softmax分类器
Softmax分类器
我们处理多分类问题时,使用 SVM 输出的是一个得分值,但是得分值最后比来比去不是很直观。那么我们能不能将得分值进行转换,转换成一个概率值,如果一个新数据样本到达,如果属于某一个类别的概率为 80%,那么我们就可以很直观的看出该数据样本可能属于该类别,我就不用来回去比较得分值。
那么怎么样可以得到一个概率值呢?我们有一个叫 Softmax 的分类器。
首先我们先介绍 Sigmoid 函数,表达式如下:
该函数在坐标轴上的图形如下:
我们观察一下,
x
x
x 轴的取值范围是从负无穷到正无穷,
y
y
y 轴的范围是 0-1。该函数的作用相当于是把任意一个值通过某种变换映射到 0-1 区间内,那么就可以用来表示某一个样本属于某一个类别的概率值。
其实 Softmax 分类器还做了一步归一化的操作,然后输出一个向量,其中每个元素的值在 0-1 之间,且所有元素之和为 1。
下面举一个小例子,我们使用 SVM 算法得出的下面图片分别属于 cat,car,frog 的得分值如下:
现在我们需要算出这三个得分值对应的概率是多少?首先我们得算出
e
x
e^x
ex ,将下面三个值代入这个函数中:
通过结果可以观察到,
e
(
3.2
)
=
24.5
e^(3.2) = 24.5
e(3.2)=24.5,
e
(
5.1
)
=
164
e^(5.1) = 164
e(5.1)=164,可见
e
x
e^x
ex 会帮我们将稍微大的值映射为非常大的值,将一个比较小的值映射成比较小的值。
映射完成之后,我们需要做一个归一化的操作(比如说,现在有3个样本 1,2,3,我们需要将其转换成概率值,将这三个值同除以6(三者之和),那么就得到了 1/6,2/6,3/6,而且三者相加和为 1),将这三个值映射到 0-1 之间。
所以我们就可以根据判断得出结论:这张图片属于 cat 的概率为 0.13,属于 car 的概率为 0.87,那么我们就会将图片归于 car 这一类。但是显然我们这里的图片是属于猫这一类,所以预测错误,那么相应的就会有一个损失值,那么我们怎么计算这个损失值呢?
那么对于 Softmax 分类器,我们用怎样的损失函数来衡量概率值呢?我们可以使用一个
y
=
−
l
o
g
x
y = -logx
y=−logx 函数来衡量。
因为我们的概率在 0-1 之间,所以值域在 0 到正无穷 之间, x x x 取值越大,相应的值越接近 0,那么损失值越小;反之, x x x 的取值越小,相应的值越接近于正无穷,那么损失值越大。那么我们是对什么样的值去求解它的损失呢?我们需要需要对它等于正确类别的概率值进行计算,比如在这个例子中,该图片是猫,所以预测正确的概率值为 0.13,所以我们需要将 0.13 代入 y = − l o g x y = -logx y=−logx 函数中,得到损失值为 − l o g ( 0.13 ) = 0.89 -log(0.13) = 0.89 −log(0.13)=0.89。
以上就是对 Softmax 分类器的介绍。