概率分布中的交叉熵、KL散度、条件熵及模型参数估计
1. 交叉熵的定义与计算
交叉熵用于衡量两个随机变量分布之间的差异。设 $X_1$ 和 $X_2$ 是一对随机变量,它们从相同的输入域 $D$ 中取值 $x$(即 $x \in D$),概率分别为 $p_1(x)$ 和 $p_2(x)$。交叉熵 $H_c(X_1, X_2)$ 的定义如下:
[
H_c (X_1, X_2) =
\begin{cases}
-\sum_{x\in D} p_1 (x) \log (p_2 (x)) & \text{离散情况}\
-\int_{x\in D} p_1 (x) \log (p_2 (x)) dx & \text{连续单变量情况}\
-\int_{\vec{x}\in D} p_1 (\vec{x}) \log (p_2 (\vec{x})) d\vec{x} & \text{连续多变量情况}
\end{cases}
]
当 $Y = X$ 时,交叉熵会简化为熵。
以下是使用 PyTorch 计算交叉熵的代码:
import torch
def cross_entropy(X_gt, X_pred):
H_c = 0
for x_gt, x_pred in zip(X_gt, X_pred):
H_c += -1 * (x_gt * torch.log (x_pred))
return H_c
X_gt = torch.Tensor([1., 0., 0., 0.])
X
交叉熵、KL散度与模型参数估计
超级会员免费看
订阅专栏 解锁全文
3413

被折叠的 条评论
为什么被折叠?



