MSE交叉熵是在Tensorflow中常见的目标函数(损失函数)的计算模型

MSE

MSE 叫做均方误差

$$L\left (y,\bar{y} \right ) = \frac{1}{n} \sum _{i=1}^{n}\left ( y_{i} - \bar{y_{i}} \right )^{2}$$

在 Tensorflow 中实现

tensorflow 实现该函数比较简单,通过内置API方便实现。

tf.reduce_mean(tf.square(y_true - y_pred))

均方误差大部分人都可以很明白它是做什么,为什么这样做。

交叉熵(Cross-Entropy)

第一次接触这个词应该是高中化学,表示体系混乱程度的度量。现在熵这个词已经延伸到很多领域,比如说信息熵

信息熵

信息熵是克劳德·艾尔伍德·香农提出的,用于描述信源的不确定度,代表着随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大。

真实分布与非正式分布

例如一个质地均匀的六面骰子🎲,其中有三面全是一点,另外三面是二点,三点和四点。如果丢一次骰子,出现一点的概论为多少。

我们已知了当前骰子六个面的点数情况,那么按照真实分布来说 出现一点的概率为 1/2,所以信息熵为1/2,但是假设我们并不知道骰子六面的分布情况,仍旧一位和普通的骰子一样,那么出现一点的概率为1/6,这就是非真实分布

并不是任何情况下我们都能了解或者知道事物的真实分布,如何用非真实分布来做出最优解。这就是交叉熵。

交叉熵

交叉熵是度量两个概论分布间的差异性。其中的两个概论分布就是上文所提及的真实分布(p)和非真实分布(q)。

公式

$$H(p,q) = \sum _{k=1}^{N}p_{k}log_{2}\frac{1}{q_{k}} = - \sum _{k=1}^{N}p_{k}log_{2}q_{k}$$

对于丢骰子来说 真实分布是 12 非真实分布为 16 所以 H(p,q) = 1/2 × log2 (6) = 0.5 × 2.584963 = 1.2924815。该值远远大于真实分布 12 。因此交叉熵越低代表策略越好。

最低的交叉熵就是通过真实分布来进行计算的,因此此时的交叉熵==信息熵。

在 Tensorflow 中实现

loss = tf.nn.sigmoid_cross_entropy_with_logits_v2(labels=y_true,logits=y_pred)
loss = tf.reduce_mean(loss)

参考资料

如何通俗的解释交叉熵与相对熵?