Softmax回归模型是logistic回归模型在多分类问题上的推广,适用于多分类问题中,且类别之间互斥的场合。
Softmax将多个神经元的输出,映射到(0,1)区间内,可以看成是当前输出是属于各个分类的概率,从而来进行多分类。
假设有一个数组V,Vi表示V中的第i个元素,那么Vi元素的softmax值就是:
例如 V = [9,6,3,1] , 经过Softmax函数输出 V_Softmax = [0.950027342724 0.0472990762635 0.00235488234367 0.000318698668969],以下是转化程序:
# -*- coding: utf-8 -*-
import math
V = [9,6,3,1]
v1 = math.exp(9)
v2 = math.exp(6)
v3 = math.exp(3)
v4 = math.exp(1)
v_sum = v1+v2+v3+v4
print v1/v_sum,v2/v_sum,v3/v_sum,v4/v_sum
可以看到,Softmax函数把输出映射成区间在(0,1)的值,并且做了归一化,所有元素的和累加起来等于1。可以直接当作概率对待,选取概率最大的分类作为预测的目标。
为什么是Softmax
其他很多函数也可以完成选取最大值,并归一化的功能,但是为什么现在神经网络中普遍采用Softmax作为回归分类函数呢。比如最简单的,把上例中的向量 V = [9,6,3,1]直接归一化,结果 v_norm = [0.5294, 0.3157, 0.1578, 0.0526], 单就分类来说,9对应的归一化值 0.5294也是最大的,分类也没错。
之所以选择Softmax,很大程度是因为Softmax中使用了指数,这样可以让大的值更大,让小的更小,增加了区分对比度,学习效率更高。第二个是因为softmax是连续可导的,消除了拐点,这个特性在机器学习的梯度下降法等地方非常必要。