SVM只选自己喜欢的男神,Softmax把所有备胎全部拉出来评分,最后还归一化一下
从名字上理解
上面一句话可谓是精辟,Softmax回归是logistics回归在多分类问题上的推广。max就是比较大小取大呗,但是有时不能直接取,不然会造成分值小的饥饿,怎么解决,也要雨露均沾,经常取大的,偶尔取小的就好了,概率和大小有关这也就是为啥是soft max。
Softmax回归具体的典型实例就是MNIST手写数字分类(关于Softmax部分)。
这个函数在斯坦福最优化课程28分钟左右有详细讲解,在吴恩达的课程中也有,不懂得可以再详细看看。
原理
Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的k个可能值进行了累加。注意在Softmax回归中将x分类为类别j的概率为:
J(θ)最下化问题,通过求导得到梯度公式:
Softmax是有监督的,当然也可以和无监督结合用。这个后面文章再说,
简单的可以这样看:假设有一个数组V,Vi表示第i个指数,那么这个元素的Softmax值为:
在神经网络计算中,我们经常计算正向传播计算分数S1和按照正确标注的分数S2之间的差距,计算Loss,才能应用反向传播。Loss定义为交叉熵
取log里面的值就是这组数据正确分类的Softmax值,它占的比重越大,这个样本的Loss也就越小,这种定义符合我们的要求
当我们对分类的Loss进行改进的时候,我们要通过梯度下降,每次优化一个step大小的梯度,这个时候我们就要求Loss对每个权重矩阵的偏导,然后应用链式法则。那么这个过程的第一步,就是求Loss对score的偏导 (下面公式推导部分对于求偏导符号就用求导符号代替)
最后结果的形式非常的简单,只要将算出来的概率的向量对应的真正结果的那一维减1,就可以了,举个例子,通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 1, 5, 3 ], 那么概率分别就是[0.015,0.866,0.117],如果这个样本正确的分类是第二个的话,那么计算出来的偏导就是[0.015,0.866−1,0.117]=[0.015,−0.134,0.117],是不是很简单!!然后再根据这个进行back propagation就可以了。
看完上面还懂吗,不懂看这幅图
不行就推推公式看看视频反过来再看看