softmax
对于分类网络,最后一层往往是全连接层,如果是N分类,那么最终的全连接层有N个结点。很显然,每个节点对应一个类,该节点的权重越大,说明网络越倾向于认为输入样本属于该类。这其实就是Softmax的思想:古典概率模型。Softmax的不同之处在于将基本事件用e的幂表示,这样的好处是便于反向传播中的求导。我们来看softmax的概率计算:
有了概率就可以求交叉熵:,这里的是独热编码,所以Loss中的求和符合可以去掉,得到
惊喜地发现,只要得到前向传播的结果,结果减1就得到反向传播的梯度。缘,妙不可言。
更严格的证明,其实要区分i与j是否相等,因为在全连接中是交叉连接的,反向传播也会交叉传播。那么,如果输出是[0.1,0.3,0.6],对第二类求偏导,得到[0.1,0.7,0.6]。可以看到,当节点与标签不同时,输出直接作为loss的导数,当节点与标签相同时,会将1-输出作为梯度。通过这样的反向传播,就会造成输出越来越集中在正确的节点上,且越来越逼近1.https://www.cnblogs.com/alexanderkun/p/8098781.html
Sigmoid
Softmax其实是一个激活函数,而提到激活函数,就不得不提Sigmoid,他们两个有什么关系呢?直接说结论:二分类时,二者可以看作是等价的。
可以看到,二者的输出形式都是一样的,求导的特点也是一样的。sigmoid其实可以看作是softmax在类别N等于2时的一个特例,因为模拟神经元的受刺激与受抑制,这时二分类问题,所以sigmoid不仅用于分类网络的最后一层,也常用于隐藏层中的神经元连接处。如果说有什么不同点的话那就是网络结构在实现上有所不同:同样是二分类,sigmoid只要对一个featuremap进行计算则可直接得到它属于正样本的概率;而softmax需要两个节点,在两个channel上分别求e的幂再套用softmax的概率公式,分别得到正负样本的概率。
具体使用时要看情况:如果是多分类任务,且类别间是互斥的,使用softmax。softmax的好处就是可以任意调整分类类别。如果一个样本可能同时属于多个类别,则使用sigmoid,此时sigmoid对各个类别输出的概率之和不为1。https://www.cnblogs.com/jiashun/p/doubles.html
说一下sigmoid。它的作用首先是将之前的线性输出转换为“分类”,最简单的分类是设定阈值的分类,对应的激活函数表现为分段函数,这样不利于求导。所以sigmoid首先可以看作是对阶梯函数的近似,同时获得了连续可微,可得到概率的特性。更进一步地,sigmoid还使得分类器获得了非线性的特性。那么sigmoid这个函数的表达式到底是怎样确立的呢?这就要引入“对数几率”的概念。对于线性模型,不再用线性模型直接表示类别输出,而是表示类别概率的比值的对数(只能尽量去理解,比值是为了体现概率,对数是为了引入非线性),那么可以得到,从而解得
LR(Logistic Regression)
前面提到Sigmoid对一个单通道输出就可以得到属于正样本的概率,这个概率实际上就是样本1的后验概率。而使用sigmoid做分类其实就是逻辑回归。这里就从后验概率的角度讨论一下逻辑回归的代价函数和反向传播。会发现和交叉熵的角度反向传播softmax也是等价的。https://blog.csdn.net/zjuPeco/article/details/77165974
假设数据服从伯努利分布,那么。写成一部形式:,是所求参数,现在我们认为它是一个确定的但未知的(区别于贝叶斯学派认为它是一个分布)。现在我们有n个训练样本,认为他们服从独立同分布,那么就可以使用最大似然估计:对于正确的,联合分布概率取最大值(因为独立同分布,所以是后验概率的乘积)
由此得到代价函数,再进行求导即可以进行梯度更新https://zhuanlan.zhihu.com/p/103459570
指数分布族
https://www.zhihu.com/question/29435973