瞎搞系列-重读softmax
softmax 在机器学习与深度学习中有着比较广泛的作用,尤其它在处理多分类任务的时候,分类器单元需要通过softmax函数进行数值处理。对于softmax的函数定义如下所示:

其中,vi是分类器前级输出单元的输出,i表示类别索引,总得类别个数为C。Si表示当前元素的指数与所有元素指数和的比值。softmax将多分类的输出数值转化为相对概率,比较容易了解和比较。
一个多分类的问题,C=4.线性分类模型最后输出层包含了四个值,分别是:

经过softmax处理后的相对概率为:

比较明显的是,softmax的输出表征了不同类别之间的相对概率,可以清晰的看到有些概率比较大。softmax将连续值转化为相对概率,更加有利于我们理解。在实际应用中,softmax需要注意数值溢出,所以对V进行数值处理:V中的每个元素减去V中的最大值。

softmax代码:
scores = np.array([123, 456, 789]) # example with 3 classes and each having large scores
scores -= np.max(scores) # scores becomes [-666, -333, 0]
p = np.exp(scores) / np.sum(np.exp(scores))
2,softmax损失函数
线性分类器的输出是输入x与权重系统的矩阵相乘:s=wx.其中,下标i表示i样本。求导过程的程序设计分为两种:for循环,另一种直接矩阵计算。
实际上,矩阵运算比嵌套循环要快很多,特别是在训练样本数目很多的情况下。
所以在用机器学习算法模型的时候,尽量使用矩阵运算,少用嵌套循环,以提高运算速度。
3,softmax与SVM
softmax线性回归损失函数计算相对概率,叫做交叉熵。SVM的损失函数为hinge loss, 比较关注分类样本和错误样本之间的距离,只要距离大于deta,不需要在乎距离相差多少。而softmax中每个类别的得分函数都会影响到损失函数的大小。
对于正则化来说,正则化参数越大,对权重限制也就越大,正则化参数越大,softmax各类输出越接近。
4,softmax实际应用
转自:点击打开链接
本文介绍了softmax函数在机器学习中的作用及其应用,详细解释了softmax如何将多分类输出转化为相对概率,并探讨了其与SVM的区别及损失函数计算方式。
607

被折叠的 条评论
为什么被折叠?



