刚开始上DL的课就很好奇,为什么大家都选softmax是交叉熵是搭配使用的,老师也不讲....
1. softmax + cross entropy
首先是理解softmax究竟做了什么事,它就是把模型的输出向量都规整到用概率的形式去表达了,这里softmax的公式就不放了。
譬如这个predict总共有5个类别,某一个样本进网络后的softmax输出是一个vector,[0.1, 0.2, 0.5, 0.1, 0.1],这里表示的是这个样本一个概率分布:P(X,Y) 的概率,Y是对应12345的label。用人话说就是这个样本被分到12345类对应的类别的概率是0.1, 0.2, 0.5, 0.1, 0.1。
然后对应的label我们用one-hot encode去表示,[0, 0, 1, 0, 0]
这里给出概率分布的定义:概率分布,是指用于表述随机变量取值的概率规律。事件的概率表示了一次试验中某一个结果发生的可能性大小。
现在我们手里就用两个向量了,那我们怎么衡量他们之间的损失呢?其实还是用到了信息论的KL散度去解释
这里先给出信息熵的定义:信息熵表示一个信息的混乱程度,信息熵越大,混乱程度越大。在C4.5中就信息增益的最大值,其目的就是使一个信息的混乱程度最大化降低(趁这机会还可以复习一下决策树了)
然后再引出KL散度的定义:对于同一个随机变量X有两个单独的概率分布P(x)和Q(x),我们可以使用KL散来衡量这两个分布的差异。KL散度的value越小,代表两个概率分布越相似,这个在EM和EM到VAE的文章里面也提到。
将这个式子摊开:
这个摊开后的式子的第一项就是信息熵,第二项就是交叉熵(Cross entropy)了。
所以KL散度里的信息熵肯定是不变的,就是没什么用,只有后面的交叉熵就好了,这就是为啥softmax搭配交叉熵使用的原因了