我正在阅读这篇文章:https://stackabuse.com/creating-a-neural-network-from-scratch-in-python-multi-class-classification/。
如果您在文章末尾阅读了完整的代码,您会注意到作者并没有像应该那样从损失函数(交叉熵)开始反向传播。而是从softmax输出开始向后处理。
我的问题:
暂定答案:如果标签是一键编码的,那么我们在交叉熵求和表达式中只得到一个项,即正确类别的softmax输出的负对数。因此,优化softmax等同于优化交叉熵。 我是对的吗?
鉴于一个人想要优化softmax,请看一下他如何根据上次完全连接的对数(dcost_dzo = ao - one_hot_labels
)计算softmax的(中间)导数。对于正确的类,这只是从softmax输出中减去“ 1”。他甚至没有使用softmax的解析导数。为什么一个人可以这样做?
假设我对问题1的回答是正确的。但是,为了清楚起见,如果我们希望以交叉熵损失开始向后过程,请明确地使用两个方程的导数损失函数和softmax函数。我们将如何编码呢?
谢谢。