softmax Regression 是解决多分类任务的模型。设有数据集 ,对于每一个样本 ,。令 ,,其中 。
设每个样本的条件概率估计为
其 python 代码实现很简单:
def softmax(X):
exp = np.exp(X)
# 假设 exp 是矩阵,这里对行进行求和,并要求保留 axis 1,
# 就是返回 (nrows, 1) 形状的矩阵
partition = exp.sum(axis=1, keepdims=True)
return exp / partition
softmax Regression 模型的损失函数不适合使用 损失函数,此时使用交叉熵损失函数。将 转换为 one-hot 编码形式:
其中,。这样, 便可表示 的概率形式。这样,我们便可定义两个概率分布的“距离”:
由于向量 中元素的特性,当一个样本中仅仅包含一个对象时上面的交叉熵我们可以化简为
其中, 表示 中 位置元素为 ,下面我们使用 代替 。
对于所有样本,交叉熵损失函数定义为
其中代表模型参数。同样地,如果每个样本只有一个标签,那么交叉熵损失可以简写成。从另一个角度来看,我们知道最小化等价于最大化,即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。