keras解决多标签分类问题
multi-class classification problem: 多分类问题是相对于二分类问题(典型的0-1分类)来说的,意思是类别总数超过两个的分类问题,比如手写数字识别mnist的label总数有10个,每一个样本的标签在这10个中取一个。
multi-label classification problem:多标签分类(或者叫多标记分类),是指一个样本的标签数量不止一个,即一个样本对应多个标签。
##一般问题定义
一般情况下,假设我们的分类问题有5个标签,样本数量为n,数学表示为: $X = {(x_1,x_2,...,x_n)} $ $Y = {(y_1,y_2,y_3,y_4,y_5)}$
其中$ y_i \in {(1,2,3,4,5)}$ 我们用神经网络模型对样本建模,计算$P(c_j|x_i)$:样本$x_i$ 的标签为$c_j$的概率。模型的输出为: $$ \hat y_i = {\arg\max}_{j \in {1,2,3,4,5}} P(c_j|x_i) $$ 现在我们用keras的Sequential 模型建立一个简单的模型:
from keras.layers import Input,Dense
from keras.models import Sequential
model = Sequential()
model.add(Dense(10, activation="relu", input_shape=(10,)))
model.add(Dense(5))
multi-class classification
对于多分类问题,接下来要做的是输出层的设计。在多分类中,最常用的就是softmax层。
softmax层中的softmax 函数是logistic函数在多分类问题上的推广,它将一个N维的实数向量压缩成一个满足特定条件的N维实数向。压缩后的向量满足两个条件:
- 像两种的每个元素的大小都在[0,1]
