Softmax函数

  • 相关概念:

    max函数定义就是在选取最大的值.这个最大值函数只能选择最大值

    如果我想要一个能够大概率选择最大值,还能够小概率选择小值的函数.这就要用到softmax函数

    softmax函数的定义:或称为归一化指数函数,是逻辑函数的推广.能够将一个含有任意实数的k维向量z压缩到另一个k维实向量\(\sigma (z)\)中,使得每个元素都在(0,1)之间,并且和为1.$$\sigma (z){j}=\frac{e{z_{j}}}{\sum_{k=1} e^{z{k}}}, j=1,2,...K$$

  • 实际应用:

    在神经网络中利用softmax函数来进行反向传播:神经网络的正向传播计算的分数S1,和按照正确标注计算的分数S2之间的差距,计算Loss,才能应用反向传播 $$L_{i}=-log(\frac{e^{f_{y_{i}}}}{\sum_{j} e^{j}})$$

    在优化loss过程中,我们要通过梯度下降,每次优化一个step大小的梯度,这个时候我们就要求Loss对每个权重矩阵的偏导,然后应用链式法则。那么这个过程的第一步,就是求Loss对score的偏导.score \(y_{i}\),先定义\(P(y_{i})\):$$P(y_{i})=\frac{e^{f_{y_{i}}}}{\sum_{j} e^{j}}$$ loss 对score的偏导:

\[\frac{\partial L_{i}}{\partial f_{yi}}=- ln (\frac{e^{f_{y_{i}}}}{\sum _{j} e^{j}})^{'} \]

\[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}* (\frac{e^{f_{y_{i}}}}{\sum_{j}e^{j}})^{'} \]

\[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}*(1-\frac{\sum_{j \neq f_{yi}} e^{j}}{\sum_{j}e^{j}})^{'} \]

\[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}*-1*\sum_{j \neq f_{yi}} e^{j}*-1*\frac{1}{(\sum_{j} e^{j})^{2}}*(\sum_{j}e^{j})^{'} \]

\[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}*-1*\sum_{j \neq f_{yi}} e^{j}*-1*\frac{1}{(\sum_{j} e^{j})^{2}}*e^{f_{y_{i}}} \]

\[=-(1-P_{f_{y_{i}}})=P_{f_{y_{i}}}-1 \]


可以看得出求导结果的形式非常清晰明了.求解损失函数的梯度,只需要计算概率向量在真正结果的那一个维度减一即可.

posted @ 2018-09-18 11:35  dengshuo7412  阅读(494)  评论(0编辑  收藏  举报