逻辑回归梯度推导
逻辑回归是一种广泛使用的分类算法,用于估计一个事件发生的概率。它是线性回归的扩展,通过sigmoid函数将线性回归的输出映射到[0, 1]区间,从而用于分类任务。
在逻辑回归中,我们使用对数似然损失函数(log-likelihood loss function)来衡量模型预测值与真实值之间的差异。我们的目标是最小化这个损失函数,以找到最优的模型参数。
假设我们有以下符号:
- \(h_{\theta}(x)\) 是模型预测的概率,\(h_{\theta}(x) = \frac{1}{1 + e^{-\theta^T x}}\)。
- \(m\) 是训练样本的数量。
- \(y\) 是实际输出标签,取值为0或1。
- \(\theta\) 是模型参数。
- \(x\) 是单个训练样本的特征向量。
对数似然损失函数为(也可以说是交叉熵损失,来源于KL散度的后一项):
\[L(\theta) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h_{\theta}(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_{\theta}(x^{(i)}))]
\]
为了找到最小化损失函数的参数 \(\theta\),我们需要计算损失函数关 $\theta $ 的梯度。以下是梯度计算的过程:
对 $ L(\theta) $ 求关于$ \theta_j $ 的偏导数:
\[\begin{align*}
\frac{\partial}{\partial \theta_j} L(\theta) &= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \frac{\partial}{\partial \theta_j} \log(h_{\theta}(x^{(i)})) + (1 - y^{(i)}) \frac{\partial}{\partial \theta_j} \log(1 - h_{\theta}(x^{(i)})) \right] \\
&= -\frac{1}{m} \sum_{i=1}^{m} \left[ \frac{y^{(i)}}{h_{\theta}(x^{(i)})} \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)}) - \frac{1 - y^{(i)}}{1 - h_{\theta}(x^{(i)})} \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)}) \right] \\
&= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \frac{1}{h_{\theta}(x^{(i)})} - (1 - y^{(i)}) \frac{1}{1 - h_{\theta}(x^{(i)})} \right] \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)})
\end{align*}
\]
计算 \(h_{\theta}(x)\) 关于 \(\theta _{j}\)的偏导数:
\[\begin{align*}
\frac{\partial}{\partial \theta_j} h_{\theta}(x) &= \frac{\partial}{\partial \theta_j} \left( \frac{1}{1 + e^{-\theta^T x}} \right) \\
&= \frac{e^{-\theta^T x}}{(1 + e^{-\theta^T x})^2} \frac{\partial}{\partial \theta_j} (-\theta^T x) \\
&= \frac{e^{-\theta^T x}}{(1 + e^{-\theta^T x})^2} (-x_j) \\
&= h_{\theta}(x) (1 - h_{\theta}(x)) (-x_j) \\
\end{align*}
\]
将 ( \(\frac{\partial}{\partial \theta_j} h_{\theta}(x)\) ) 的结果代入梯度公式中:
\[\begin{align*}
\frac{\partial}{\partial \theta_j} L(\theta) &= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \frac{1}{h_{\theta}(x^{(i)})} - (1 - y^{(i)}) \frac{1}{1 - h_{\theta}(x^{(i)})} \right]h_{\theta}(x) (1 - h_{\theta}(x)) (-x_j) \\
&= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} (1 - h_{\theta}(x^{(i)})) - (1 - y^{(i)}) h_{\theta}(x^{(i)}) \right] (-x_j^{(i)}) \\
&= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} - h_{\theta}(x^{(i)}) \right] (-x_j^{(i)})
\end{align*}
\]
因此,逻辑回归损失函数 \(L(\theta)\) 关于参数 \(\theta_j\)的梯度是:
\[\frac{\partial}{\partial \theta_j} L(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ h_{\theta}(x^{(i)}) - y^{(i)} \right] x_j^{(i)}
\]
这个梯度表达式告诉我们,对于每个参数 \(\theta_j\),我们需要计算模型预测 \(h_{\theta}(x^{(i)})\) 和实际标签 \(y^{(i)}\) 之间的差异,然后将这个差异乘以特征 \(x_j^{(i)}\),最后对所有训练样本求和并除以样本数量 \(m\)。这个梯度用于在优化过程中更新参数 \(\theta_j\),以最小化损失函数。
本文来自博客园,作者:CH-Yu,转载请注明原文链接:https://www.cnblogs.com/chuanhua-blogs/p/18852127

浙公网安备 33010602011771号