二分类问题sigmoid+二元交叉熵损失
二元交叉熵损失函数(Binary Cross-Entropy Loss)是二分类问题中常用的损失函数,用于衡量模型预测概率与真实标签之间的差异。
- 二分类:通常与 Sigmoid 激活函数结合使用,标签应为 0 或 1。
- 多分类:通常与 Softmax 激活函数结合使用,将输出转换为概率分布,标签应为one hot编码形式。
二分类问题中,输出层只需要一个神经元,使用sigmoid函数,以确保预测概率在 [ 0 , 1 ] [0, 1] [0,1] 之间,表示样本属于正类别的概率。而使用softmax函数时,输出层需要两个神经元,分别表示样本属于两个类别的概率。这两个概率值是冗余的(一个是1减去另一个),且会增加模型的复杂度和参数数量。
对于二分类问题,使用二元交叉熵损失函数(Binary Cross-Entropy Loss),该损失函数与sigmoid函数的输出形式相匹配,直接计算预测概率与真实标签之间的差异。
对于单个样本,二元交叉熵损失函数的公式为:
L ( y , y ^ ) = − [ y log ( y ^ ) + ( 1 − y ) log ( 1 − y ^ ) ] L(y, \hat{y}) = -\left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] L(y,y^)=−[ylog(y^)+(1−y)log(1−y^)]
其中:
- y y y:真实标签,取值为 0 或 1。
- y ^ \hat{y} y^:模型预测为正类的概率,取值范围为 [ 0 , 1 ] [0, 1] [0,1]。
对于包含 N N N 个样本的数据集,总体损失为:
L = − 1 N ∑ i = 1 N [ y i log ( y ^ i ) + ( 1 − y i ) log ( 1 − y ^ i ) ] L = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] L=−N1i=1∑N[yilog(y^i)+(1−yi)log(1−y^i)]
解释
-
当 y = 1 y = 1 y=1 时:
L = − log ( y ^ ) L = -\log(\hat{y}) L=−log(y^)
- 若模型预测 y ^ → 1 \hat{y} \rightarrow 1 y^→1,则损失 L → 0 L \rightarrow 0 L→0,表示预测正确。
- 若模型预测 y ^ → 0 \hat{y} \rightarrow 0 y^→0,则损失 L → + ∞ L \rightarrow +\infty L→+∞,表示预测错误。
-
当 y = 0 y = 0 y=0 时:
L = − log ( 1 − y ^ ) L = -\log(1 - \hat{y}) L=−log(1−y^)
- 若模型预测 y ^ → 0 \hat{y} \rightarrow 0 y^→0,则损失 L → 0 L \rightarrow 0 L→0,表示预测正确。
- 若模型预测 y ^ → 1 \hat{y} \rightarrow 1 y^→1,则损失 L → + ∞ L \rightarrow +\infty L→+∞,表示预测错误。
在二分类问题中,通常将 Sigmoid 函数作为输出层的激活函数,其输出值在 [ 0 , 1 ] [0, 1] [0,1] 之间,与二元交叉熵损失函数的输入要求一致。
损失函数对错误的预测给予较大的惩罚,鼓励模型提高预测准确性。
相比均方误差等损失函数,交叉熵在处理接近 0 或 1 的概率时,梯度不会消失,保证了优化过程的稳定性。
对于类别不平衡的数据集,可通过引入类别权重或使用加权交叉熵损失函数,调整损失函数对不同类别的重视程度,缓解类别不平衡问题。