逻辑回归的损失函数与梯度下降优化
描述
逻辑回归是一种广泛应用于分类任务的机器学习算法,尤其适用于二分类问题。其核心思想是通过一个线性组合加激活函数(如Sigmoid)将输入特征映射到0~1之间的概率值。为了训练逻辑回归模型,需要定义一个损失函数来衡量预测值与真实值的差距,并使用优化算法(如梯度下降)最小化该损失函数,从而学习模型参数。理解损失函数的推导及其优化过程是掌握逻辑回归的关键。
解题过程
-
逻辑回归模型与Sigmoid函数
逻辑回归模型的假设函数为:
\(h_{\theta}(x) = \sigma(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}}\)
其中,\(\theta\) 是参数向量,\(x\) 是输入特征向量,\(\sigma(z)\) 是Sigmoid函数。Sigmoid函数将线性输出 \(z = \theta^T x\) 压缩到(0,1)区间,表示样本属于正类的概率:
\(P(y=1|x; \theta) = h_{\theta}(x)\),\(P(y=0|x; \theta) = 1 - h_{\theta}(x)\)。 -
损失函数的推导:交叉熵损失
对于二分类问题(标签 \(y \in \{0,1\}\)),我们希望损失函数能惩罚预测概率与真实标签的差异。使用最大似然估计(MLE)推导:- 似然函数:\(L(\theta) = \prod_{i=1}^{m} [h_{\theta}(x^{(i)})]^{y^{(i)}} [1 - h_{\theta}(x^{(i)})]^{1 - y^{(i)}}\)
- 取负对数似然(方便最小化)得到交叉熵损失:
\(J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(h_{\theta}(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_{\theta}(x^{(i)})) \right]\)
该函数凸性好,利于优化,且对错误预测的惩罚随误差增大而加剧。
-
梯度计算
梯度下降需要计算损失函数对参数 \(\theta_j\) 的偏导数。关键步骤:- 先计算Sigmoid函数的导数:\(\sigma'(z) = \sigma(z)(1 - \sigma(z))\)
- 对单个样本的损失求导:
\(\frac{\partial}{\partial \theta_j} \left[ -y \log(h_{\theta}(x)) - (1-y) \log(1 - h_{\theta}(x)) \right] = (h_{\theta}(x) - y) x_j\) - 整体梯度(m个样本):
\(\frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)}) x_j^{(i)}\)
梯度形式简洁,与线性回归的梯度相似(但 \(h_{\theta}(x)\) 不同)。
-
梯度下降优化
使用梯度下降迭代更新参数(学习率 \(\alpha\)):
\(\theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}\)
重复直到收敛。实际中常采用随机梯度下降(SGD)或小批量梯度下降加速训练。 -
正则化防止过拟合
为避免过拟合,可在损失函数中加入L2正则化项:
\(J(\theta) = \text{原损失} + \frac{\lambda}{2m} \sum_{j=1}^{n} \theta_j^2\)
梯度更新时需额外减去 \(\frac{\lambda}{m} \theta_j\),使参数趋向于较小值,提升泛化能力。