初探softmax
冒泡~又是新的一周鸭!经历了昨天的多次地震,要更珍惜生命,努力鸭! 首先,我们要先了解一下,什么是Softmax? Softmax是用于分类过程,用来实现多分类的,简单来说, 它把一些输出的神经元映射到(0-1)之间的实数,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1 。 这是一种较为通俗的解释,当然我们也可以直接从这个名字入手去解释, Softmax可以分为soft和max,max也就是最大值,假设有两个变量a,b。如果a>b,则max为a,反之为b。那么在分类问题里面,如果只有max,输出的分类结果只有a或者b,是个非黑即白的结果。但是在现实情况下,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率 。 函数定义如下: 在多分类问题中,我们经常使用交叉熵作为损失函数。 接下来进入对这个损失函数的求导: 通过上面的求导结果,可以发现结果恰好为 通过softmax函数求出了概率减1 ,那么我们就可以得到反向更新的梯度了。 举个例子 : 通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 2, 3, 4 ], 那么经过softmax函数作用后概率分别就是 [0.0903,0.2447,0.665], 如果这个样本正确的分类是第二个的话, 那么计算出来的偏导就是 [0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665](划重点) , 然后再根据这个进行back propagation就可以了。 参考:( https://www.cnblogs.com/alexanderkun/p/8098781.html ) ( https://blog.csdn.net/bitcarmanlee/article/details/82320853 ) Ending~还是那句话理解更重要!
softmax原理及推导
本次记录内容主要为softmax的推导,部分内容有参考各网友文章 多分类问题符合多项式分布,softmax是一种用于解决多分类问题的有效方法。 softmax的推导思路为: 首先证明 多项分布属于指数分布族 ,这样就可以使用广义线性模型来拟合这个多项分布,由广义线性模型推导出的目标函数 h(x) 即为Softmax回归的分类模型。 (什么是指数分布族可参考我的另一篇 指数分布族函数与广义线性模型 ) 多分类模型的输出是该样本属于k个类别的概率,从这k个概率中我们选择最优的概率对应的类别,作为该样本的预测类别。 这k个概率用k个变量 Θ1…Θk 来表示,这k个变量的和为1,即满足: 在这里,统计分量T(y)并没有像之前那样定义为T(y)=y,因为T(y)不是一个数值,而是一个k-1维的向量。下面使用 表示向量T(y)的第 i 个元素。 下面引入一个新的符号: 也就是说,向量T(y)的第 i 个元素是否为1是由当前y是否与 i 相等决定的。 T(y)是一个类似于onehot向量的东西,表示属于k类中的哪一个,则相应位置 i 会置为1。 那么可以得到: 多项式分布转化为指数分布族表达式过程如下: 上面转换过程中每一步的转换依据如下: 以上推导证明了:多项分布表达式可以表示为指数分布族表达式的格式,所以它属于指数分布族,那么就可以用广义线性模型来拟合这个多项式分布模型。 由η表达式可得: