这道题要求实现一个多层前馈神经网络的反向传播算法,计算损失函数对每层权重矩阵和偏置向量的梯度。
核心算法是反向传播(Backpropagation),其基本思想是利用链式法则从输出层向输入层逐层计算梯度。具体实现包括以下步骤:
第一步是前向传播。从输入层开始,逐层计算每一层的线性组合结果Z和激活值A。前K-1层使用ReLU激活函数,最后一层使用Softmax激活函数得到类别概率分布。在前向传播过程中,需要保存所有的Z和A值,供反向传播使用。
第二步是计算输出层的梯度。对于交叉熵损失函数配合Softmax激活函数的组合,其对Z[K]的梯度有简化形式:dZ[K] = (output_probabilities - Y_true) / N,其中Y_true是真实标签的one-hot编码。
给定K层前馈网络模型的权重矩阵M[i]、偏移向量b[i],以及一批输入数据X和对应的真实分类标签Y_true_labels,请计算出总损失L对每一个权重矩阵M[i]和每一个偏移向量b[i]的梯度。
模型有K个权重矩阵,第i个矩阵是M[i]。还有K个偏移向量,第i个向量是b[i]。
网络的计算过程(前向传播)如下: