softmax函数及其求导过程详解
softmax函数及其求导过程详解
softmax函数是机器学习和深度学习中常用的激活函数之一,主要用于多分类问题中将网络输出转换为概率分布。本文将详细介绍softmax函数的定义、求导过程以及其与交叉熵的结合使用,帮助读者深入理解这一重要概念。
1. softmax函数
softmax函数主要用于多分类问题,它可以将网络的输出转换为概率分布。其公式如下:
softmax函数通常会与交叉熵损失函数结合使用,因为交叉熵的输入需要是概率值,而softmax函数恰好可以将网络的输出转换为对应的比例概率。
2. softmax函数的求导过程
假设网络的输出为s,其中第一个输出节点为,第二个为,以此类推第i个输出节点为。同时,x表示网络的输入节点,第j个输入节点为。
在求导过程中,需要考虑两种情况:i=j和i≠j。
举例说明
- 当i=j时,例如求对的导数:
由于softmax函数的分母包含了所有输出节点的指数和,因此任何一个输出节点都要对所有输入节点进行求导。
- 当i≠j时,例如求s1对x2的导数:
根据上述分析,可以得到两种情况下的softmax函数导数:
3. softmax与交叉熵的结合使用
交叉熵损失函数常用于衡量预测概率分布与真实概率分布之间的差异。在神经网络中,最后一个输出层的节点个数通常与分类任务的目标数相等。假设最后的节点数为N,那么对于每一个样例,神经网络可以得到一个N维的数组作为输出结果,数组中每一个维度对应一个类别。
在理想情况下,如果一个样本属于k类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即[0,0,1,0,….0,0],这个数组也就是样本的Label,是神经网络最期望的输出结果。交叉熵就是用来判定实际的输出与期望的输出的接近程度。
交叉熵的公式如下:
解释上述公式,由softmax函数的公式可知,输出节点Si是由所有Z组成的,所以若Loss对某个Z,如Zi求导的话,则需要对每个输出节点S进行求导。从求导的结果可以看出:用交叉熵对网络softmax前的输出求导,其结果等于softmax后的结果减去真实标签label。