逻辑回归、交叉熵、softmax

来源:互联网 发布:plc编程软件下载 编辑:程序博客网 时间:2024/04/30 13:25

什么时候用softmax?


softmax是一种归一化函数,用于将向量中元素的值都归一化0~1之间,并保持其加和为1。
公示表达为:


这里写图片描述


这里写图片描述


根据公式和图片可看出,前一层的激活值越大,经过softmax函数后的值也就越大,又因为softmax的所有输出加和为1,因此,常利用softmax层将激活值与概率实现映射。

举例:


多元分类(multi-class classification)中,每个样本只属于一个类别。将最后一个全连接层输入softmax层,即可得到样本属于每个类别的概率P(yi|X),注意,这些概率加和等于1

什么时候用逻辑回归?


sigmoid函数定义如下:


这里写图片描述


它表示样本x属于分类Y的概率。


这里写图片描述


由图可以看出,当激活值z很大很大时,P(Y=1|x)接近1,当激活值z很小很小时,P(Y=1|x)接近0.

举例:


多标签分类(multi-label classification ),每个样本可以属于多个类别。将最后一个全连接层输入sigmoid激活函数,最终的每个输出都代表样本属于这个类别的概率即P(Y=1|X),这些概率加和不等于1.

那么交叉熵是什么时候使用呢?


用于代价函数。交叉熵H(p,q)用于衡量预测分布q与真实分布p之间的相似度,交叉熵越大,相似度越小。因此,要想让预测的标签的分布与真实的标签分布最接近,就最小化交叉熵啦。


这里写图片描述

举例:


对于二分类问题:(y可取值0或1)
y_train与y_output的分布的交叉熵表示为:


这里写图片描述


当y_train为1/0时,y_output也为1/0时交叉熵最小
Tensorflow中将最后一层全连接层的输出结果 通过使用tf.nn.softmax_cross_entropy_with_logits计算代价函数


对于多标签分类问题(multi-label)和多元分类问题(multi-class)
交叉熵均可表示为:


这里写图片描述


当train_prob的分布与out_prob的分布相同时,交叉熵最小。
不同点在于:

对于多标签分类问题:
Tensorflow中将最后一层全连接层的输出结果 通过使用tf.nn.sigmoid_cross_entropy_with_logits计算代价函数
对于多元分类问题:
Tensorflow中将最后一层全连接层的输出结果 通过使用tf.nn.softmax_cross_entropy_with_logits计算代价函数

原创粉丝点击