Softmax

自己的一点理解,感觉还是要记下来…

Softmax 是将LR用于多分类, 就按照类比的思路写下来。

先简单说一下LR

首先,还是要基于这个框架(如下)做一个假设函数 (hypothesis function)
Softmax

假设自变量 x 是多维向量,也可以理解为多维特征吧:

x=[x1,x2,...,xn]

我们就可以把假设函数设为:
Softmax
为了简化,x0=1, 即 x=[1,x1,x2,...,xn], 就有:
Softmax

此时 θ 是一个1 * n+1的向量

然后我们在将这个假设函数代入Sigmoid函数:
Softmax

然后定义loss function, 做梯度下降。

那类比到Softmax;因为解决的问题是多分类,Sigmoid函数就解决不了问题了。
但有的时候我不想这样,因为这样会造成分值小的那个饥饿。所以我希望分值大的那一项经常取到,分值小的那一项也偶尔可以取到,那么我用softmax就可以了
现在还是a和b,a>b,如果我们取按照softmax来计算取a和b的概率,那a的softmax值大于b的,所以a会经常取到,而b也会偶尔取到,概率跟它们本来的大小有关。所以说不是max,而是 Soft max
所以这里引入Softmax函数:
假设 V=[v1,v2,...vm]
那么第i个元素的Softmax值:

Si=evimj=1evj

那如果现在将softmax应用到多分类:
依然用同样的自变量x, 同样的假设函数,如上:
Softmax
Softmax

但是这里的 θ 不再是一个1 * n+1的向量,我们假设目标类别 y 有 k 个类别, 这里的 θ 是一个k * n+1的矩阵。

和上面一样,θ就是我们要训练的参数;
这里可以列出LR 和 softmax的loss function 做对比:
LR:
Softmax
Softmax:
Softmax

可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的 k 个可能值进行了累加。注意在Softmax回归中将 x分类为类别j 的概率为:
Softmax

总结:

softmax对于LR来说

  • 目标函数不同(sigmoid 和 softmax)
  • 优化参数 θ 的形式不同

至于loss function的推导,暂时还没有深究;

ref:

http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
http://blog.****.net/supercally/article/details/54234115