文章转载自Softmax 函数的特点和作用和Logistic 分类器与 softmax分类器,顺便加了一点自己的理解。
Logistic 分类器
分类问题,是机器学习里最基础的问题。
我们从最简单的二分类任务开始考虑,假设我们要分类西瓜是否成熟的话,则对于每一个西瓜来说,就有两种结果:
{熟,不熟}
{
熟
,
不
熟
}
。首先我们必须自己知道如何判断一个西瓜“熟”或者“不熟”,或者是根据颜色,或者是敲打的声音,这是下一步我们将其转成数学的映射关系的基础。
为了建立数学模型,我们必须将这个判断西瓜是否成熟的任务转换成数学关系。假设“熟”对应于数轴上的“1”,不熟对应于数轴上的“0”。下一步我们需要找到两个映射关系
ϕ1
ϕ
1
,
ϕ2
ϕ
2
。
- ϕ1 ϕ 1 将需要分类的西瓜样本(假设为 s s )映射到一个数轴上,;
- 再使用 ϕ2(z) ϕ 2 ( z ) 将第一个映射的结果映射到标签分类上。
假设分类标记为
{0,1}
{
0
,
1
}
,通常我们会选择这样一个阶跃函数从而建立起第二个映射
ϕ2
ϕ
2
:
但是这样的阶跃函数,由于是不连续的,在计算过程中不可导,因此,一般用一个对数几率函数(logistic function)来替代。需要注意的是, 这种替代并不是唯一的。对数几率函数(logistic function)有这样的形式:
它的函数图像是这样的:
![logistic function](https://i-blog.csdnimg.cn/blog_migrate/ec28fc35cc7702cf2387850557ca9cf2.png)
可以看出,在 z z 大于0时,函数值能够迅速偏向1,而小于0时,则是迅速偏向了0。
softmax函数
对于二分类任务,由于结果只有两种,将样本
x
x
映射到数轴上。而拓展到多分类任务时,假设有种结果,那么
ϕ1(x)
ϕ
1
(
x
)
会映射到一个
n
n
维向量()当中。向量中的每一维,都对应着一个可能的分类结果(
ci=0
c
i
=
0
或1)。由于结果是互斥的,所以
y
y
存在以下种形式:
先看下softmax函数的公式:
Softmax 的输出表征了不同类别之间的相对概率。
假设最后输出的向量是:
根据softmax,计算得到:
我们可以清晰地看出, s2=0.8390 s 2 = 0.8390 ,对应的概率最大,则更清晰地可以判断预测为第2类的可能性更大。根据向量 v v <script type="math/tex" id="MathJax-Element-4182">v</script>,其实也可以判断出那个类别更可能,之所以写成softmax的形式, 可能是为了后面的计算能够求导,计算梯度。