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