深入理解交叉熵损失 CrossEntropyLoss - 归一化

#深入理解交叉熵损失 CrossEntropyLoss - 归一化

归一化的解释

假设我们有一个未归一化的概率分布,其值可能是任意非负数,并不满足总和为1的条件。归一化过程如下:

  1. 计算总和:首先,计算所有未归一化概率值的总和。
  2. 调整每个概率值:然后,将每个未归一化的概率值除以这个总和,使得调整后的概率值之和为1。

数学表示

假设有一个未归一化的概率分布 { v 1 , v 2 , ... , v n } \{v_1, v_2, \ldots, v_n\} {v1,v2,...,vn},其总和 S S S 是:

S = ∑ i = 1 n v i S = \sum_{i=1}^{n} v_i S=i=1∑nvi

归一化后的概率分布 { p 1 , p 2 , ... , p n } \{p_1, p_2, \ldots, p_n\} {p1,p2,...,pn} 是:

p i = v i S p_i = \frac{v_i}{S} pi=Svi

这样就保证了:

∑ i = 1 n p i = 1 \sum_{i=1}^{n} p_i = 1 ∑i=1npi=1

举例说明

假设我们有一个分类模型的输出为未归一化的概率(logits):

logits = [ 2.0 , 1.0 , 0.1 ] \text{logits} = [2.0, 1.0, 0.1] logits=[2.0,1.0,0.1]

这些 logits 并不是有效的概率分布。我们需要将它们归一化为概率分布。

1. 计算指数

首先,计算 logits 的指数,这样可以确保所有值都是正的(即便 logits 有负值):

exp(logits) = [ e 2.0 , e 1.0 , e 0.1 ] ≈ [ 7.389 , 2.718 , 1.105 ] \text{exp(logits)} = [e^{2.0}, e^{1.0}, e^{0.1}] \approx [7.389, 2.718, 1.105] exp(logits)=[e2.0,e1.0,e0.1]≈[7.389,2.718,1.105]

2. 计算总和

计算这些指数值的总和:

S = 7.389 + 2.718 + 1.105 ≈ 11.212 S = 7.389 + 2.718 + 1.105 \approx 11.212 S=7.389+2.718+1.105≈11.212

3. 归一化

将每个指数值除以总和,得到归一化的概率分布:

p 1 = 7.389 11.212 ≈ 0.659 p_1 = \frac{7.389}{11.212} \approx 0.659 p1=11.2127.389≈0.659
p 2 = 2.718 11.212 ≈ 0.242 p_2 = \frac{2.718}{11.212} \approx 0.242 p2=11.2122.718≈0.242
p 3 = 1.105 11.212 ≈ 0.099 p_3 = \frac{1.105}{11.212} \approx 0.099 p3=11.2121.105≈0.099

最终得到的概率分布是:

[ 0.659 , 0.242 , 0.099 ] [0.659, 0.242, 0.099] [0.659,0.242,0.099]

这些概率值之和是1:

0.659 + 0.242 + 0.099 = 1 0.659 + 0.242 + 0.099 = 1 0.659+0.242+0.099=1

Softmax函数

在机器学习中,Softmax 函数常用于多分类模型的输出层,将 logits 转换为归一化的概率分布。Softmax 函数的定义是:

Softmax ( z i ) = e z i ∑ j = 1 n e z j \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} Softmax(zi)=∑j=1nezjezi

对于上面的例子:

Softmax ( 2.0 ) = e 2.0 e 2.0 + e 1.0 + e 0.1 ≈ 0.659 \text{Softmax}(2.0) = \frac{e^{2.0}}{e^{2.0} + e^{1.0} + e^{0.1}} \approx 0.659 Softmax(2.0)=e2.0+e1.0+e0.1e2.0≈0.659
Softmax ( 1.0 ) = e 1.0 e 2.0 + e 1.0 + e 0.1 ≈ 0.242 \text{Softmax}(1.0) = \frac{e^{1.0}}{e^{2.0} + e^{1.0} + e^{0.1}} \approx 0.242 Softmax(1.0)=e2.0+e1.0+e0.1e1.0≈0.242
Softmax ( 0.1 ) = e 0.1 e 2.0 + e 1.0 + e 0.1 ≈ 0.099 \text{Softmax}(0.1) = \frac{e^{0.1}}{e^{2.0} + e^{1.0} + e^{0.1}} \approx 0.099 Softmax(0.1)=e2.0+e1.0+e0.1e0.1≈0.099

归一化的意义

归一化确保了模型的输出可以被解释为有效的概率分布,这在许多应用中至关重要,例如:

  • 分类问题:概率分布表示每个类别的预测概率。
  • 信息检索:归一化分数用于比较不同文档的相关性。
  • 信号处理:归一化确保信号强度的一致性。
相关推荐
西西弗Sisyphus6 个月前
深入理解交叉熵损失 CrossEntropyLoss - CrossEntropyLoss
chatgpt·crossentropy