本文作为自己学习softmax和softmax loss笔记而写,留作自己日后回顾,如文中有错误还请不吝指教,感谢!
图片来自:https://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/
全连接层解释
上图展示了从全连接层到softmax层的计算过程。其中,等号左边就是全连接层需要完成的任务,其中:
- W [ T × N ] W[T\times N] W[T×N]是全连接层的权重(参数),在训练网络过程中全连接层最终的目标就是寻找合适的 W W W。 W [ T × N ] W[T\times N] W[T×N]中的 T T T是分类中类别的数量, N N N是全连接层输入长度。
- x [ N × 1 ] x[N\times 1] x[N×1]是全连接层的输入(特征),其中 N N N是输入的长度。 x [ N × 1 ] x[N\times 1] x[N×1]是由全连接层之前的卷积层、池化层等layer得到的。假设,该全连接之前为一个卷积层,该卷积层输出100个特征(即feature map中的 c h a n n e l = 100 channel=100 channel=100),每个特征大小为 3 × 3 3\times 3 3×3,在输入到全连接层之前将其flat成 N × 1 N\times 1 N×1的向量,即 100 × 3 × 3 = 900 100 \times 3 \times 3 = 900 100×3×3=900,在这个例子中 N = 900 N=900 N=900。
- l o g i t s [ T × 1 ] logits[T \times 1] logits[T×1]是全连接层的输出。同样是后边softmax层的输入。
softmax层解释
S
j
=
e
x
p
(
a
j
)
∑
k
=
1
T
a
k
S_j = \frac{exp(a^j)}{\sum_{k=1}^{T}a_k}
Sj=∑k=1Takexp(aj)
可以采用softmax层来实现多分类任务。如上图所示:
- l o g i t s [ T × 1 ] logits[T\times1] logits[T×1]是softmax层的输入,输入向量中的每个数的大小是 ( − ∞ , + ∞ ) (-\infty, +\infty) (−∞,+∞)。
- p r o b [ T × 1 ] prob[T\times1] prob[T×1]是softmax层的输出,输出向量中的每个数的大小是 ( 0 , 1 ) (0,1) (0,1)表示概率大小。其中 S j S_j Sj表示该样例分类为 j j j类别的概率。
softmax loss解释
L
=
−
∑
j
=
1
T
y
j
l
o
g
(
S
j
)
L = -\sum_{j=1}^Ty_jlog(S_j)
L=−j=1∑Tyjlog(Sj)
y
y
y是一个
1
×
T
1 \times T
1×T的向量,其中只有一个值为1,其余的值都为0。假设第j个位置对应该样本的真实标签,则第j个位置的值为1,其余位置的值为0。所以,上述公式可以简化为如下所示:
L
=
−
y
j
l
o
g
(
S
j
)
L = -y_jlog(S_j)
L=−yjlog(Sj)
其中j为该样本对应的真实标签的位置(id)。
Cross entropy解释
E
=
−
∑
j
=
1
T
y
j
l
o
g
(
P
j
)
E = -\sum_{j=1}^{T}y_jlog(P_j)
E=−j=1∑Tyjlog(Pj)
上面公式中的
P
j
P_j
Pj是样本被分类为第j类的概率。如果概率向量P是有softmax function计算得到的,那么cross entropy loss和softmax loss相等。
后续如有相关内容学习,会继续补充……