JS散度全称Jensen-Shannon散度,简称JS散度。在概率统计中,JS散度也与KL散度一样具备了测量两个概率分布相似程度的能力,它的计算方法基于KL散度,继承了KL散度的非负性等,但有一点重要的不同,JS散度具备了对称性。
JS散度的公式如下所示,我们设定两个概率分布为 P P P和 Q Q Q,另外我们还设定 M = 0.5 × ( P + Q ) M = 0.5 \times (P + Q) M=0.5×(P+Q),KL为KL散度公式。
J S D ( P ∣ ∣ Q ) = 1 2 K L ( P ∣ ∣ M ) + 1 2 K L ( Q ∣ ∣ M ) JSD(P||Q) = \frac{1}{2}KL(P||M) + \frac{1}{2}KL(Q||M) JSD(P∣∣Q)=21KL(P∣∣M)+21KL(Q∣∣M)
如果我们把KL散度公式写入展开的话,结果如下所示:
J S D ( P ∣ ∣ Q ) = ∫ p ( x ) log p ( x ) p ( x ) + q ( x ) 2 d x + ∫ q ( x ) log q ( x ) p ( x ) + q ( x ) 2 d x JSD(P||Q) = \int p(x)\log \frac{p(x)}{\frac{p(x) +q(x)}{2}} dx+ \int q(x)\log \frac{q(x)}{\frac{p(x) +q(x)}{2}}dx JSD(P∣∣Q)=∫p(x)log2p(x)+q(x)p(x)dx+∫q(x)log2p(x)+q(x)q(x)dx
深度学习中使用KL散度和JS散度进行度量的时候存在一个问题:
如果两个分布 P P P, Q Q Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数 log 2 \log2 log2。这对以梯度下降为基础的深度学习算法有很大影响,这意味梯度为0,即梯度消失。