逻辑回归的损失函数与梯度下降优化
字数 1707 2025-11-02 08:11:07

逻辑回归的损失函数与梯度下降优化

描述
逻辑回归是一种广泛应用于分类任务的机器学习算法,尤其适用于二分类问题。其核心思想是通过一个线性组合加激活函数(如Sigmoid)将输入特征映射到0~1之间的概率值。为了训练逻辑回归模型,需要定义一个损失函数来衡量预测值与真实值的差距,并使用优化算法(如梯度下降)最小化该损失函数,从而学习模型参数。理解损失函数的推导及其优化过程是掌握逻辑回归的关键。

解题过程

  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)\)

  2. 损失函数的推导:交叉熵损失
    对于二分类问题(标签 \(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]\)
      该函数凸性好,利于优化,且对错误预测的惩罚随误差增大而加剧。
  3. 梯度计算
    梯度下降需要计算损失函数对参数 \(\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)\) 不同)。
  4. 梯度下降优化
    使用梯度下降迭代更新参数(学习率 \(\alpha\)):
    \(\theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}\)
    重复直到收敛。实际中常采用随机梯度下降(SGD)或小批量梯度下降加速训练。

  5. 正则化防止过拟合
    为避免过拟合,可在损失函数中加入L2正则化项:
    \(J(\theta) = \text{原损失} + \frac{\lambda}{2m} \sum_{j=1}^{n} \theta_j^2\)
    梯度更新时需额外减去 \(\frac{\lambda}{m} \theta_j\),使参数趋向于较小值,提升泛化能力。

逻辑回归的损失函数与梯度下降优化 描述 逻辑回归是一种广泛应用于分类任务的机器学习算法,尤其适用于二分类问题。其核心思想是通过一个线性组合加激活函数(如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 \),使参数趋向于较小值,提升泛化能力。