根据文章 广义线性模型(4)逻辑回归(Logistic regression) 和 多分类实战:一文掌握 One-vs-All 策略 我们已经知道,逻辑回归是一种处理二分类问题的常用方法,当需要处理多分类问题是,除了使用 One vs All 策略之外,我们还可以选择使用Softmax回归多分类器。
softmax函数又称归一化指数函数,是基于 sigmoid 二分类函数在多分类任务上的推广;在多分类网络中,常用 Softmax 作为最后一层进行分类。
一 原理
1.1 从逻辑回归到 Softmax
softmax 回归(softmax regression)其实是 logistic 回归模型在多分类问题上的推广,logistic 回归用于二分类,而 softmax 回归用于多分类,从 广义线性模型(4)逻辑回归(Logistic regression) 中我们知道,逻辑回归模型的输出是样本点标记为正样本的概率 p p p,其函数形式为:
因为是二分类,所以输出标记为正样本的概率也就可以得到标记为负样本的概率 1 − p 1-p 1−p 了,如果是多分类呢,只知道一个类别的概率肯定不能推出其他的,所以需要把样本点被标记为各个类别的概率都输出才行,因此,Softmax回归模型的形式为:
式中, θ 0 , θ 1 , θ 2 , . . . + θ k ∈ R θ_0,θ_1,θ_2,...+θ_k\in R θ0,θ1,θ2,...+θk∈R 为模型参数, 1 ∑ j = 1 k e θ j T x i \frac{1}{\sum_{j=1}^k e^{θ_j^T x_i}} ∑j=1keθjTxi1 为归一化因子,其作用是使各个类别对应的输出结果值域为 [ 0 , 1 ] [0,1] [0,1],并且和为 1,即使结果表现为概率的形式。
我们之前说逻辑回归可以理解为有两部分:一个线性回归和一个 sigmod 函数做值域映射,Softmax 回归是将 logistic 回归中的 sigmod 函数换成了 Softmax 函数,当然,可以认为 Softmax 函数是 logistic 函数的一种一般化推广,对多个类别中的一个类别 i i i 来说:
p ( y = i ∣ x , θ ) = e θ i T x ∑ j = 1 k e θ j T x p(y=i|x,θ)=\frac{e^{θ_i^T x}}{\sum_{j=1}^k e^{θ_j^T x}} p(y=i∣x,θ)=∑j=1keθjTxeθiTx
1.2 图解 Softmax
Softmax函数的计算过程可以用下图来理解,与线性回归一样,softmax回归也是一个单层神经网络。 由于计算每个输出 o 1 o1 o1、 o 2 o2 o2和 o 3 o3 o3取决于 所有输入 x 1 x1 x1、 x 2 x2 x2、 x 3 x3 x3和 x 4 x4 x4, 所以softmax回归的输出层也是全连接层。这里 Softmax 在神经网络中作为激活函数:
未添加Softmax作为激活函数时的神经网络结构:
添加 Softmax 作为激活函数时的神经网络结构:
在softmax回归中,包括了两个步骤。
-
线性输出:输入一个样本的特征向量,输出多个线性预测结果。
-
Softmax运算:将这些结果输入到softmax函数,softmax函数会将多个线性输出,转换为每个类别的概率。
先看步骤1线性输出:
o 1 = x 1 w 11 + x 2 w 12 + x 3 w 13 + x 4 w 14 + b 1 , o 2 = x 1 w 21 + x 2 w 22 + x 3 w 23 + x 4 w 24 + b 2 , o 3 = x 1 w 31 + x 2 w 32 + x 3 w 33 + x 4 w 34 + b 3 . \begin{split}\begin{aligned} o_1 &= x_1 w_{11} + x_2 w_{12} + x_3 w_{13} + x_4 w_{14} + b_1,\\ o_2 &= x_1 w_{21} + x_2 w_{22} + x_3 w_{23} + x_4 w_{24} + b_2,\\ o_3 &= x_1 w_{31} + x_2 w_{32} + x_3 w_{33} + x_4 w_{34} + b_3. \end{aligned}\end{split} o1o2o3=x1w11+x2w12+x3w13+x4w14+b1,=x1w21+x2w22+x3w23+x4w24+b2,=x1w31+x2w32+x3w33+x4w34+b3.
在某多分类问题中,有三个目标类别o1、o2、o3,四个输入特征,x1到x4。
softmax回归会基于输入x,计算o1、o2、o3三个线性输出。
我们可以将softmax回归,看做是一个具有多个输出的单层神经网络。
我们可以基于矩阵,计算线性输出o。
例如,在计算 o=Wx+b 时,W 是一个3 * 4的权重矩阵,b代表了一个3 * 1的偏置列向量,x是 4 * 1的特征向量。经过计算,会得到 3 * 1 的输出结果 o。
计算出线性输出o后,进行步骤2(Softmax运算):
将 o 输入到 softmax 函数,从而将线性输出 o 转换为每个类别的预测概率 y。
只看从最后一层输出到激活函数计算的过程,跟我们上面的公式是完全一样的:
通过下图可以帮助理解Softmax是怎么在分类中起作用的,就是选概率大的那个类别:
二 模型参数求解
三 softmax VS OVA策略
如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢?
在实际使用中:
- 如果模型输出为非互斥类别,且可以同时选择多个类别,则采用OVA策略。
- 如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax回归。
例如,如果你有四个类别的音乐,分别为:古典音乐、乡村音乐、摇滚乐和爵士乐,那么你可以假设每个训练样本只会被打上一个标签(即:一首歌只能属于这四种音乐类型的其中一种),此时你应该使用类别数 k = 4 的softmax回归。(如果在你的数据集中,有的歌曲不属于以上四类的其中任何一类,那么你可以添加一个“其他类”,并将类别数 k 设为5。)
如果你的四个类别如下:人声音乐、舞曲、影视原声、流行歌曲,那么这些类别之间并不是互斥的。例如:一首歌曲可以来源于影视原声,同时也包含人声 。这种情况下,使用4个二分类的 logistic 回归分类器更为合适。这样,对于每个新的音乐作品 ,我们的算法可以分别判断它是否属于各个类别。
现在我们来看一个计算视觉领域的例子,你的任务是将图像分到三个不同类别中。
-
假设这三个类别分别是:室内场景、户外城区场景、户外荒野场景。你会使用sofmax回归还是 3个logistic 回归分类器呢?
-
现在假设这三个类别分别是室内场景、黑白图片、包含人物的图片,你又会选择 softmax 回归还是多个 logistic 回归分类器呢?
在第一个例子中,三个类别是互斥的,因此更适于选择softmax回归分类器 。而在第二个例子中,建立三个独立的 logistic回归分类器更加合适。