逻辑回归中交叉熵损失函数的梯度推导

我们首先定义损失函数和模型预测的形式。对于二分类逻辑回归,模型预测使用sigmoid函数,即:

\[\hat{y}_i = \sigma(z_i) = \frac{1}{1 + e^{-z_i}} \]

其中,\(z_i = X_i \cdot \theta\)是模型对第\(i\)个样本的线性预测,\(X_i\)是样本的特征向量,\(\theta\)是模型参数。

对于单个样本的交叉熵损失,我们有:

\[L(y_i, \hat{y}_i) = -\left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] \]

整个数据集上的平均损失为:

\[J(\theta) = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] \]

为了找到最小化损失函数\(J(\theta)\)的参数\(\theta\),我们需要计算\(J(\theta)\)关于\(\theta\)的梯度。首先计算\(\hat{y}_i\)关于\(z_i\)的导数:

\[\frac{d\hat{y}_i}{dz_i} = \frac{d}{dz_i} \left( \frac{1}{1 + e^{-z_i}} \right) = \hat{y}_i (1 - \hat{y}_i) \]

然后,我们将损失函数对\(z_i\)求导:

\[\frac{\partial L(y_i, \hat{y}_i)}{\partial z_i} = \frac{\partial L(y_i, \hat{y}_i)}{\partial \hat{y}_i} \cdot \frac{d\hat{y}_i}{dz_i} = -\left( \frac{y_i}{\hat{y}_i} - \frac{1 - y_i}{1 - \hat{y}_i} \right) \cdot \hat{y}_i(1 - \hat{y}_i) = -y_i (1 - \hat{y}_i) + (1 - y_i) \hat{y}_i = \hat{y}_i - y_i \]

接下来,我们利用链式法则计算\(J(\theta)\)关于\(\theta_j\)的导数:

\[\frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{N} \sum_{i=1}^{N} \left( \hat{y}_i - y_i \right) x_{ij} \]

因此,整个参数\(\theta\)的梯度向量为:

\[\nabla_{\theta} J(\theta) = \frac{1}{N} X^T \cdot (\hat{y} - y) \]

其中,\(X\)是包含所有样本特征的矩阵,\(\hat{y}\)是模型预测值的向量,\(y\)是真实标签的向量。

这就是梯度下降更新参数\(\theta\)时使用的梯度表达式,用于指导如何调整\(\theta\)以减少损失函数\(J(\theta)\)的值。

posted @ 2024-03-29 14:11  C-Alen  阅读(283)  评论(0编辑  收藏  举报