softmax的loss和gradient推导过程
相信搞deeplearning的各位大牛都很熟悉softmax了,用来对得分矩阵做归一化得到概率的一种分类手段,我这两天在做cs231n的作业,新手上路,只作为自己的学习足迹记录,还望各位大佬多多包涵。
- 简单介绍
- Softmax的loss计算
- Softmax的grad计算
- naive loop
- vectorization
简单介绍
这个公式是大家非常熟悉的,其实就是对于神经网络最后一层的结果进行指数概率的归一化,其中Li求得的是对于每个样本而言,它在所有类别中,被分类位正确的概率,syi代表样本被正确分类的评分,sj代表样本被分类为j的评分。 其实对于loss的求解很简单,主要的难度就在于对于梯度的求解。
loss的计算
根据上面的定义其实很容易计算loss,把所有样本i的Li加起来就是最终的结果,需要注意的是L的维度,和分数矩阵相同,最后再计算的时候用numpy.sum函数求矩阵的所有元素之和即可。另外需要考虑的就是归一化和正则化,归一化除以训练样本数就行。做作业的时候说的是用L2正则化,也就是把regularization_rate*W*W加在loss后面即可。