Softmax
自己的一点理解,感觉还是要记下来…
Softmax 是将LR用于多分类, 就按照类比的思路写下来。
先简单说一下LR
首先,还是要基于这个框架(如下)做一个假设函数 (hypothesis function)
假设自变量 x 是多维向量,也可以理解为多维特征吧:
我们就可以把假设函数设为:
为了简化,
此时 θ 是一个1 * n+1的向量
然后我们在将这个假设函数代入Sigmoid函数:
然后定义loss function, 做梯度下降。
那类比到Softmax;因为解决的问题是多分类,Sigmoid函数就解决不了问题了。
但有的时候我不想这样,因为这样会造成分值小的那个饥饿。所以我希望分值大的那一项经常取到,分值小的那一项也偶尔可以取到,那么我用softmax就可以了
现在还是a和b,a>b,如果我们取按照softmax来计算取a和b的概率,那a的softmax值大于b的,所以a会经常取到,而b也会偶尔取到,概率跟它们本来的大小有关。所以说不是max,而是 Soft max
所以这里引入Softmax函数:
假设
那么第i个元素的Softmax值:
那如果现在将softmax应用到多分类:
依然用同样的自变量x, 同样的假设函数,如上:
但是这里的 θ 不再是一个1 * n+1的向量,我们假设目标类别 y 有 k 个类别, 这里的 θ 是一个k * n+1的矩阵。
和上面一样,
这里可以列出LR 和 softmax的loss function 做对比:
LR:
Softmax:
可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在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