一、Softmax Loss
L = − ∑ j = 1 T y j l o g ( S j ) = − 1 N ∑ i log ( e w y i T x i ∑ j e w j T x i ) L = -\sum_{j=1}^{T}y_{j} log (S_{j})= -\cfrac{1}{N} \sum_i \log \left (\cfrac{e^{\mathbf{w}_{y_i}^T \mathbf{x}_i}}{\sum_{j} e^{\mathbf{w}_{j}^T \mathbf{x}_i}} \right) L=−j=1∑Tyjlog(Sj)=−N1i∑log(∑jewjTxiewyiTxi)
- 首先 L L L 是损失。
- S j S_j Sj 是 Softmax的输出向量 S S S 的第 j j j 个值,前面已经介绍过了,表示的是这个样本属于第 j j j 个类别的概率。
- y j y_j yj 前面有个求和符号, j j j 的范围也是 1 1 1 到类别数 T T T,因此 y y y 是一个 1 × T 1×T 1×T 的向量,里面的 T T T 个值,而且只有 1 1 1 个值是 1 1 1,其他 T − 1 T-1 T−1 个值都是 0 0 0。那么哪个位置的值是 1 1 1 呢?答案是真实标签对应的位置的那个值是 1 1 1,其他都是 0 0 0。
1、单个样本 x i \textbf{x}^i xi 的 Softmax Loss公式
l o s s i = − ∑ j = 1 K y j l o g ( y ^ j i ) = 样本 i 只属于一个类别 j − l o g ( y ^ j i ) loss^i = -\sum_{j=1}^{K}y_{j} log (\hat{y}_j^i)\xlongequal[]{样本i只属于一个类别j}- log (\hat{y}_j^i) lossi=−j=1∑Kyjlog(y^ji)样本i只属于一个类别j−log(y^ji)
- 首先 l o s s i loss^i lossi 表示样本 i i i 的损失。
- y ^ j \hat{y}_j y^j 表示的是样本 i i i 属于类别 j j j 的预测概率。
- y j y_j yj 表示的是样本 i i i 属于类别 j j j 的真实概率;前面有个求和符号, j j j 的范围也是 1 1 1 到类别数 K K K,因此 y y y 是一个 1 × K 1×K 1×K 的向量,里面的 K K K 个值,
- 多分类任务:如果每个样本只属于一个类别,则只有 1 1 1 个值是 1 1 1,其他 K − 1 K-1 K−1 个值都是 0 0 0。那么哪个位置的值是 1 1 1 呢?答案是真实标签对应的位置的那个值是 1 1 1,其他都是 0 0 0。
比如:假设类别总数为5类,样本3真实类别为 c 5 c_5 c5 (多分类任务),则样本3的损失函数:
l o s s 3 = − ∑ j = 1 K y j 3 ⋅ l o g ( y ^ j 3 ) = − [ y 1 3 ⋅ l o g ( y ^ 1 3 ) + y 2 3 ⋅ l o g ( y ^ 2 3 ) + y 3 3 ⋅ l o g ( y ^ 3 3 ) + y 4 3 ⋅ l o g ( y ^ 4 3 ) + y 5 3 ⋅ l o g ( y ^ 5 3 ) ] = − [ 0 ⋅ l o g ( y ^ 1 3 ) + 0 ⋅ l o g ( y ^ 2 3 ) + 0 ⋅ l o g ( y ^ 3 3 ) + 0 ⋅ l o g ( y ^ 4 3 ) + 1 ⋅ l o g ( y ^ 5 3 ) ] = − [ 1 ⋅ l o g ( y ^ 5 3 ) ] = − l o g ( y ^ 5 3 ) \begin{aligned} loss^3=-\sum_{j=1}^Ky_j^3·log(\hat{y}_j^3) &=-[y_1^3·log(\hat{y}_1^3)+y_2^3·log(\hat{y}_2^3)+y_3^3·log(\hat{y}_3^3)+y_4^3·log(\hat{y}_4^3)+y_5^3·log(\hat{y}_5^3)]\\[1ex] &=-[0·log(\hat{y}_1^3)+0·log(\hat{y}_2^3)+0·log(\hat{y}_3^3)+0·log(\hat{y}_4^3)+1·log(\hat{y}_5^3)]\\[1ex] &=-[1·log(\hat{y}_5^3)]\\[1ex] &=-log(\hat{y}_5^3) \end{aligned} loss3=−j=1∑Kyj3⋅log(y^j3)=−[y13⋅log(y^13)+y23⋅log(y^23)+y33⋅log(y^33)+y43⋅log(y^43)+y53⋅log(y^53)]=−[0⋅log(y^13)+0⋅log(y^23)+0⋅log(y^33)+0⋅log(y^43)+1⋅log(y^53)]=−[1⋅log(y^5
- 多分类任务:如果每个样本只属于一个类别,则只有 1 1 1 个值是 1 1 1,其他 K − 1 K-1 K−1 个值都是 0 0 0。那么哪个位置的值是 1 1 1 呢?答案是真实标签对应的位置的那个值是 1 1 1,其他都是 0 0 0。