softmax是向量函数,输入向量并输出另一个向量,
“对softmax求导”,到底是在对什么求导?
对向量函数求导 得到的是一个矩阵: (不要在意字母的含义)
因为有多个输出,要明确的是:计算哪个输出元素的导数?
以及,由于softmax具有多个输入,所以也要明确:计算它(这个输出元素)关于哪个输入元素的偏导数?
求导在这里更具体的表述是: 求第 i 个输出关于第 j 个输入的偏导数,
这样:,
求导是为了配合cross entropy来进行backpropagation,
假设最后cross entropy中进行计算的one-hot向量的第 i 位为1,其余的为0,
我们只要求出 第 i 个输出关于 每一个输入元素的偏导数就可以了,
因为其他的输出都乘以0了,对loss没有贡献,
对于所有的输入元素,用 j 来表示输入元素的序号,这里又分两种情况,
(1) j 等于 i 时,即第 i 个输入变量 ;
(2) j 不等于 i 时;
这两种情况下,偏导数的公式是不同的
j 等于 i 时,softmax分子分母都含有第 j 个输入元素,
j 不等于 i 时,softmax只有分母含有第 j 个输入元素,
转载并自己发挥:https://blog.csdn.net/cassiePython/article/details/80089760