单层神经网络通常指的是只有一层神经元的感知器模型。在多类分类问题中,我们需要将输入样本映射到输出类别,因此输出层的神经元数量应该等于类别数。
设输入样本为x\in\mathbb{R}^n,输出类别为y\in{1,2,\ldots,K},其中K表示总共的类别数。我们将每个类别表示为一个one-hot向量\mathbf{y}\in{0,1}^K,其中第j个元素为1表示该样本属于第j个类别。我们使用softmax函数将输出层的原始输出转换为概率分布,即
\hat{\mathbf{y}}=\operatorname{softmax}(\mathbf{z})
其中\mathbf{z}=\mathbf{w}^\top\mathbf{x}+\mathbf{b}是输出层的输入,\mathbf{w}\in\mathbb{R}^{n\times K}是权重矩阵,\mathbf{b}\in\mathbb{R}^K是偏置向量,\operatorname{softmax}函数定义为\operatorname{softmax}(\mathbf{z})_j=\frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}}
为了最小化交叉熵损失函数,我们需要计算损失函数对权重矩阵和偏置向量的梯度。假设训练集中共有m个样本,第i个样本的输入为\mathbf{x}^{(i)},输出为\mathbf{y}^{(i)},则交叉熵损失函数定义为
J(\mathbf{w},\mathbf{b})=-\frac{1}{m}\sum_{i=1}^{m}\sum_{j=1}^K y_j^{(i)}\log\hat{y}_j^{(i)}
其中y_j^{(i)}表示第i个样本属于第j个类别的真实标签,\hat{y}_j^{(i)}表示第i个样本属于第j个类别的预测概率。
我们可以使用梯度下降法来最小化损失函数,其更新规则为
\begin{aligned}\mathbf{w}&\leftarrow\mathbf{w}-\alpha\frac{\partial J}{\partial\mathbf{w}}\\mathbf{b}&\leftarrow\mathbf{b}-\alpha\frac{\partial J}{\partial\mathbf{b}}\end{aligned}
其中\alpha是学习率。
下面我们来推导损失函数对权重矩阵和偏置向量的梯度。
首先,我们计算损失函数对输出层输入\mathbf{z}的梯度:
\frac{\partial J}{\partial\mathbf{z}}=\frac{1}{m}(\hat{\mathbf{y}}-\mathbf{y})
其中\mathbf{y}是一个one-hot向量,\hat{\mathbf{y}}是softmax函数的输出。
接下来,我们计算损失函数对权重矩阵和偏置向量的梯度。
对于权重矩阵\mathbf{w},有
\begin{aligned}\frac{\partial J}{\partial\mathbf{w}}&=\frac{\partial J}{\partial\mathbf{z}}\frac{\partial\mathbf{z}}{\partial\mathbf{w}}\&=\frac{1}{m}(\hat{\mathbf{y}}-\mathbf{y})\mathbf{x}^\top\end{aligned}
对于偏置向量\mathbf{b},有
\begin{aligned}\frac{\partial J}{\partial\mathbf{b}}&=\frac{\partial J}{\partial\mathbf{z}}\frac{\partial\mathbf{z}}{\partial\mathbf{b}}\&=\frac{1}{m}(\hat{\mathbf{y}}-\mathbf{y})\end{aligned}
现在我们推导出了损失函数对权重矩阵和偏置向量的梯度,可以使用梯度下降法来更新参数。假设我们已经更新了\mathbf{w}和\mathbf{b},则下一步可以用更新后的参数计算新的预测结果\hat{\mathbf{y}},再计算新的损失函数J(\mathbf{w},\mathbf{b}),然后再使用梯度下降法来更新参数。这个过程可以重复多次,直到损失函数收敛或达到最大迭代次数。
总结一下,多类分类问题中单层神经网络的梯度推导包括以下几个步骤:
1.使用softmax函数将输出层的原始输出转换为概率分布;
2.计算交叉熵损失函数;
3.计算损失函数对输出层输入\mathbf{z}的梯度;
4.计算损失函数对权重矩阵和偏置向量的梯度;
5.使用梯度下降法来更新参数,重复多次直到收敛。