Softmax的反向传播推导

softmax是一个经典的多分类概率分布的公式,有n个类,softmax公式如下, $$ \text{softmax}(z)_j = \frac{e^{z_j}}{\sum_{i=1}^n e^{z_i}}, \quad j = 1, 2, \dots, n $$ 首先,考虑一个样本每个类的预测分数做一个softmax,转换成每类预测的概率形式。 $$ a^{[L]} = \text{softmax}(z^{[L]}) $$$$ \hat{y} = a^{[L]}\quad $$然后,利用样本标签,结合极大似然估计的损失函数如下。 $$ L(\hat{y}, y) = - \sum_{i=1}^{n} y_i \log(\hat{y}_i) $$由于需要做反向传播,我们想求 $\frac{\partial L}{\partial z^{[L]}}$,也就是做完softmax的前的偏导数。 假设 $y$ 的分类为 $1$,则 $y_1 = 1$,其余 $y_j = 0\ (j\neq 1)$,$y=[1,0,.....,0]$ 则有, $$ L(\hat{y}, y) = -\log(\hat{y}_1) $$$$ L(\hat{y}, y) = - \ln \left( \frac{e^{z_1^{[L]}}}{e^{z_1^{[L]}} + e^{z_2^{[L]}} + \cdots + e^{z_n^{[L]}}} \right), \quad S = e^{z_1^{[L]}} + e^{z_2^{[L]}} + \cdots + e^{z_n^{[L]}} $$接下来求 $Z^{[L]}$ 的偏导, ...

2025年08月21日

神经网络反向传播 数学推导

最近在重新回顾深度学习相关基础,之前大概过了一遍李沐的动手学深度学习,但很多内容还一知半解, 感觉网上课程难度曲线还是不太平滑。 无意间看到 Coursera平台,在淘宝上花了80买了个半年号,仿佛打开新世界了,第一次看到了原来真的有课程能把深度学习的学习曲线 弄的这么平滑的,爱了,有点像算法竞赛的acwing、牛客。感觉b站确实不错,但是反馈和互动肯定远远比不上Coursera的。 现在刚学完第一门课程,并手动设计并实现了多层卷积神经网络(只用到numpy),在这里记录一下forward/back propagation的数学知识(主要是线性代数)。 正向传播 非常简单易懂,就是矩阵乘法。 反向传播 引理一 搞懂这个引理反向传播就差不多弄懂了,求哪个偏导,固定某行/列值算贡献 就好求了(A固定行,B固定列),因为矩阵乘法是B的列与A的行做点积。 以上就是神经网络里的线性代数的一些知识,其实不需要太多基础弄得矩阵乘法,和求导链式法则即可手写神经网络。

2025年08月18日