CE loss vs BCE loss
CE Loss和BCE Loss的区别主要有以下几点:
- CE Loss是交叉熵损失函数,BCE Loss是二元交叉熵损失函数。
- CE Loss一般用于多分类问题,BCE Loss一般用于二分类问题或者多标签分类问题。
- CE Loss在输出层使用softmax激活函数,BCE Loss在输出层使用sigmoid激活函数。
- CE Loss只考虑了正样本的损失,BCE Loss同时考虑了正样本和负样本的损失。
- CE Loss和BCE Loss在二分类问题中本质上没有太大区别,但可能优化上有细微不同。
1.1 BCE (Binary Cross Entropy) Loss 的分析与推导
BCE Loss是二元交叉熵损失函数,它用于衡量**一个样本的真实标签(0或1)和预测概率(0到1之间)**之间的差异。
-
前置条件
(1)Target是one-hot形式,如[0,1,0,0]
(2)output的值经过sigmoid操作变为0~1之间,如[0.33,0.66,0.32,0.15]
-
公式
L = − 1 N ∑ i = 1 N [ y i log p ( x i ) + ( 1 − y i ) log ( 1 − p ( x i ) ) ] L=-\frac{1}{N} \sum_{i=1}^{N}\left[y_{i} \log p\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-p\left(x_{i}\right)\right)\right] L=−N1i=1∑N[yilogp(xi)+(1−yi)log(1−p(xi))]
- 对于每个样本,如果真实标签是1,就用预测概率的对数乘以-1;如果真实标签是0,就用1减去预测概率的对数乘以-1。然后对所有样本求和或求平均,得到总的损失。
- BCE Loss的值越小,表示预测概率越接近真实标签,分类效果越好;反之,BCE Loss的值越大,表示预测概率越远离真实标签,分类效果越差。
- 反向传播推导过程
上图可见,损失对网络输出的偏导数正比于S(x)-y ,当sigmoid之后的结果和真值y差的比较多的时候,梯度大,修正的更快。BCE Loss的优点是,它可以直接优化分类准确率,而不像平方损失那样受到异常值的影响。它也可以用于多标签分类问题,即一个样本可以有多个标签。
1.2 CE (Cross Entropy) Loss 的分析与推导
CE Loss是交叉熵损失函数的简称,它是一种常用的分类问题的损失函数,它衡量的是真实类别和预测概率之间的差异。
- 前置条件
(1)Target是one-hot形式,如[0,1,0,0]
(2)output的值经过softmax操作变为0~1之间,如[0.33,0.66,0.32,0.15]
- 公式
CE Loss的公式如下:
L = − 1 N ∑ i = 1 N ∑ k = 1 K y i k log p ( x i k ) L=-\frac{1}{N} \sum_{i=1}^{N} \sum_{k=1}^{K} y_{i k} \log p\left(x_{i k}\right) L=−N1i=1∑Nk=1∑Kyiklogp(xik)
其中:
- N是样本数量, K K K是类别数量
- y_{ik}是第i个样本的第k个类别的真实值(0或1),也就是one-hot编码
- p(x_{ik})是第i个样本的第k个类别的预测概率(softmax输出)
- 对于每个样本,对于每个类别,将真实类别的值(0或1)乘以预测概率的对数,然后对所有类别求和,得到该样本的损失。然后对所有样本求和或求平均,得到总的损失。
CE Loss的值越小,表示预测概率越接近真实类别,分类效果越好;反之,CE Loss的值越大,表示预测概率越远离真实类别,分类效果越差。
-
反向传播推导过程
(1)softmax推导
Softmax的一阶导数是指对Softmax函数求偏导数,得到一个Jacobian矩阵,表示每个输出对每个输入的偏导数。
Softmax函数的定义如下:
Softmax ( z i ) = exp ( z i ) ∑ j exp ( z j ) \text{Softmax}(z_i) = \frac{\exp(z_i)}{\sum_j \exp(z_j)} Softmax(zi)=∑jexp(zj)exp(zi)
其中:
- z z z是一个向量, z i z_i zi和 z j z_j zj是其中的一个元素。
- i i i和 j j j是从1到 n n n的索引, n n n是向量的维度,也就是类别的数量。
Softmax函数的一阶导数可以用链式法则求得:
∂ Softmax ( z i ) ∂ z k = ∂ exp ( z i ) ∑ j exp ( z j ) ∂ z k \frac{\partial \text{Softmax}(z_i)}{\partial z_k} = \frac{\partial \frac{\exp(z_i)}{\sum_j \exp(z_j)}}{\partial z_k} ∂zk∂Softmax(zi)=∂zk∂∑jexp(zj)exp(zi)
根据 i i i和 k k k是否相等,可以分为两种情况:
- 当 i = k i=k i=k时,有:
∂ Softmax ( z i ) ∂ z k = ∂ exp ( z i ) ∑ j exp ( z j ) ∂ z k = exp ( z i ) ∑ j exp ( z j ) − exp ( z i ) exp ( z k ) ( ∑ j exp ( z j ) ) 2 = exp ( z i ) ∑ j exp ( z j ) ( 1 − exp ( z k ) ∑ j exp ( z j ) ) = Softmax ( z i ) ( 1 − Softmax ( z k ) ) \begin{align*} \frac{\partial \text{Softmax}(z_i)}{\partial z_k} &= \frac{\partial \frac{\exp(z_i)}{\sum_j \exp(z_j)}}{\partial z_k} \\ &= \frac{\exp(z_i) \sum_j \exp(z_j) - \exp(z_i) \exp(z_k)}{(\sum_j \exp(z_j))^2} \\ &= \frac{\exp(z_i)}{\sum_j \exp(z_j)} (1 - \frac{\exp(z_k)}{\sum_j \exp(z_j)}) \\ &= \text{Softmax}(z_i) (1 - \text{Softmax}(z_k)) \end{align*} ∂zk∂Softmax(zi)=∂zk∂∑jexp(zj)exp(zi)=(∑jexp(zj))2exp(zi)∑jexp(zj)−exp(zi)exp(zk)=∑jexp(zj)exp(zi)(1−∑jexp(zj)exp(zk))=Softmax(zi)(1−Softmax(zk))
- 当 i ≠ k i \neq k i=k时,有:
∂ Softmax ( z i ) ∂ z k = ∂ exp ( z i ) ∑ j exp ( z j ) ∂ z k = − exp ( z i ) exp ( z k ) ( ∑ j exp ( z j ) ) 2 = − exp ( z i ) ∑ j exp ( z j ) exp ( z k ) ∑ j exp ( z j ) = − Softmax ( z i ) Softmax ( z k ) \begin{align*} \frac{\partial \text{Softmax}(z_i)}{\partial z_k} &= \frac{\partial \frac{\exp(z_i)}{\sum_j \exp(z_j)}}{\partial z_k} \\ &= -\frac{\exp(z_i) \exp(z_k)}{(\sum_j \exp(z_j))^2} \\ &= -\frac{\exp(z_i)}{\sum_j \exp(z_j)} \frac{\exp(z_k)}{\sum_j \exp(z_j)} \\ &= -\text{Softmax}(z_i) \text{Softmax}(z_k) \end{align*} ∂zk∂Softmax(zi)=∂zk∂∑jexp(zj)exp(zi)=−(∑jexp(zj))2exp(zi)exp(zk)=−∑jexp(zj)exp(zi)∑jexp(zj)exp(zk)=−Softmax(zi)Softmax(zk)
综合两种情况,可以得到一个通用的公式:
∂ Softmax ( z i ) ∂ z k = { Softmax ( z i ) ( 1 − Softmax ( z k ) ) , i = k − Softmax ( z i ) Softmax ( z k ) , i ≠ k \frac{\partial \text{Softmax}(z_i)}{\partial z_k} = \begin{cases} \text{Softmax}(z_i) (1 - \text{Softmax}(z_k)), & i = k \\ -\text{Softmax}(z_i) \text{Softmax}(z_k), & i \neq k \end{cases} ∂zk∂Softmax(zi)={Softmax(zi)(1−Softmax(zk)),−Softmax(zi)Softmax(zk),i=ki=k
综上,CE Loss 反向传播为: