吴恩达机器学习2022 -- Course1 -- Week3(分类问题)

分类问题

  • [1. 逻辑回归](#1. 逻辑回归)
  • [2. 逻辑回归的代价函数](#2. 逻辑回归的代价函数)
    • [2.1 为什么不使用线性回归的平方误差?](#2.1 为什么不使用线性回归的平方误差?)
    • [2.2 逻辑回归的损失函数(单个样本)](#2.2 逻辑回归的损失函数(单个样本))
    • [2.3 统一写法(推荐)](#2.3 统一写法(推荐))
    • [2.4 代价函数(整个训练集)](#2.4 代价函数(整个训练集))
  • [3. 实现梯度下降](#3. 实现梯度下降)
    • [3.1 为什么逻辑回归可以使用梯度下降?](#3.1 为什么逻辑回归可以使用梯度下降?)
    • [3.2 梯度下降更新规则](#3.2 梯度下降更新规则)
      • [对权重 w j w_j wj 的梯度:](#对权重 w j w_j wj 的梯度:)
      • [对偏置 b b b 的梯度:](#对偏置 b b b 的梯度:)
    • [3.3 梯度下降公式(核心)](#3.3 梯度下降公式(核心))
  • [4. 过拟合与正则化](#4. 过拟合与正则化)
    • [4.1 什么是过拟合和欠拟合?](#4.1 什么是过拟合和欠拟合?)
    • [4.2 为什么过拟合是个问题?](#4.2 为什么过拟合是个问题?)
    • [4.3 解决过拟合的三种方法](#4.3 解决过拟合的三种方法)
    • [4.4 如何解决过拟合?------ 正则化](#4.4 如何解决过拟合?—— 正则化)
      • [正则化参数 λ \lambda λ 的作用:](#正则化参数 λ \lambda λ 的作用:)
    • [4.5 正则化后的梯度更新公式](#4.5 正则化后的梯度更新公式)
  • 小结:逻辑回归相关公式

1. 逻辑回归

1.1 线性回归不适用于分类问题

在监督学习中,我们通常处理两类任务:

  • 回归(Regression):预测一个连续值,例如房价
  • 分类(Classification):预测一个离散标签,例如判断邮件是否为垃圾邮件

当输出只有两种可能结果时(如"是/否"、"良性/恶性"),这类问题称为 二元分类(Binary Classification) 。通常用 0 表示负类(如"否"),用 1 表示正类(如"是")

  • 下图为肿瘤二元分类示意图:

概念明晰:尽管名字叫 " 逻辑回归 " ,但它实际上是一个分类算法,而不是回归算法。这是历史命名造成的误解。


为什么不能直接用线性回归解决分类问题?

我们可以在上方的肿瘤二元分类示意图上用线性回归拟合一条直线:
f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b(x)=wx+b

然后设定一个阈值(例如 0.5)进行分类:

  • 若 f ( x ) < 0.5 f(x) < 0.5 f(x)<0.5,预测为 0(良性)
  • 若 f ( x ) ≥ 0.5 f(x) \geq 0.5 f(x)≥0.5,预测为 1(恶性)

这看起来似乎可行,但存在严重问题

  • 问题一:模型输出可能超出 [0, 1] 范围(输出无界)

线性回归的输出是任意实数。例如:

  • 当 x = 0 x = 0 x=0, f ( x ) = − 1.2 f(x) = -1.2 f(x)=−1.2
  • 当 x = 10 x = 10 x=10, f ( x ) = 3.8 f(x) = 3.8 f(x)=3.8

但分类问题中,我们希望输出表示"属于正类的概率",而概率必须在 0 到 1 之间

  • 说"恶性概率是" -1.2 "或" 3.8 "没有意义
  • 问题二:对异常值敏感,决策边界不稳定

如果新增一个极端样本(例如一个直径很大的良性肿瘤),线性回归会为了拟合这个点而大幅调整直线斜率,导致原本正确的分类边界被破坏

  • 这是因为线性回归的目标是最小化预测值与真实值之间的平方误差 ,而不是最大化分类准确率
  • 因此,我们需要一种专门用于分类的模型------逻辑回归(Logistic Regression)

1.2 逻辑回归模型

1)Sigmoid 函数

为了解决线性回归输出无界的问题,逻辑回归引入了一个关键函数:Sigmoid 函数(也称为 Logistic 函数)

它的数学表达式为:

g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+e−z1

Sigmoid 函数的特点
  • 输入 z z z 可以是任意实数( − ∞ < z < + ∞ -\infty < z < +\infty −∞<z<+∞);
  • 输出始终在 ( 0 , 1 ) (0, 1) (0,1) 区间内;
  • 当 z = 0 z = 0 z=0 时, g ( z ) = 0.5 g(z) = 0.5 g(z)=0.5;
  • 当 z → + ∞ z \to +\infty z→+∞, g ( z ) → 1 g(z) \to 1 g(z)→1;
  • 当 z → − ∞ z \to -\infty z→−∞, g ( z ) → 0 g(z) \to 0 g(z)→0。

这使得 Sigmoid 函数非常适合用来表示"概率"。

  • 如图为"肿瘤是否恶性"的分类问题(使用 Sigmoid 函数):
  • 如果模型输出为 0.7 → 表示该肿瘤有 70% 的可能是恶性
  • 输出为 0.3 → 则表示有 30% 可能是恶性。

2)逻辑回归模型的构建

我们结合线性模型和 Sigmoid 函数,构建完整的逻辑回归模型:

  1. 线性部分(z) :设输入特征向量为 x ⃗ \vec{x} x ,权重向量为 w ⃗ \vec{w} w ,偏置项为 b b b,则:
    z = w ⃗ ⋅ x ⃗ + b z = \vec{w} \cdot \vec{x} + b z=w ⋅x +b
  • 这就是我们熟悉的线性组合,可以是单个特征(如肿瘤大小),也可以是多个特征的加权和。
  1. 通过 Sigmoid 函数转换为概率 :将 z z z 代入 Sigmoid 函数转换为概率
    f w ⃗ , b ( x ⃗ ) = g ( z ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) f_{\vec{w},b}(\vec{x}) = g(z) = \frac{1}{1 + e^{-(\vec{w} \cdot \vec{x} + b)}} fw ,b(x )=g(z)=1+e−(w ⋅x +b)1
  • 这个输出可以解释为:

在给定特征 x ⃗ \vec{x} x 和参数 w ⃗ , b \vec{w}, b w ,b 的情况下,样本属于正类( y = 1 y=1 y=1)的概率

  • P ( y = 1 ∣ x ⃗ ; w ⃗ , b ) = f w ⃗ , b ( x ⃗ ) P(y=1 \mid \vec{x}; \vec{w}, b) = f_{\vec{w},b}(\vec{x}) P(y=1∣x ;w ,b)=fw ,b(x )

1.3 决策边界

决策边界是逻辑回归模型中非常关键的概念:它决定了"什么时候预测为 1,什么时候预测为 0"。

1)什么是决策边界?

在逻辑回归中,模型输出的是一个概率值:

f w ⃗ , b ( x ⃗ ) = g ( z ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) f_{\vec{w},b}(\vec{x}) = g(z) = \frac{1}{1 + e^{-(\vec{w} \cdot \vec{x} + b)}} fw ,b(x )=g(z)=1+e−(w ⋅x +b)1

其中 w ⃗ ⋅ x ⃗ + b \vec{w} \cdot \vec{x} + b w ⋅x +b 是线性部分, f w ⃗ , b ( x ⃗ ) = g ( z ) f_{\vec{w},b}(\vec{x}) = g(z) fw ,b(x )=g(z) 表示给定输入 x ⃗ \vec{x} x ,样本属于正类(标签为 1)的概率。

虽然模型输出的是一个概率值,但分类任务需要明确的类别(0 或 1)。因此引入决策边界(通常为 0.5):

  • 若 f w ⃗ , b ( x ⃗ ) ≥ 0.5 f_{\vec{w},b}(\vec{x}) \geq 0.5 fw ,b(x )≥0.5 → 预测为 1(正类)
  • 若 f w ⃗ , b ( x ⃗ ) < 0.5 f_{\vec{w},b}(\vec{x}) < 0.5 fw ,b(x )<0.5 → 预测为 0(负类)

注意:由于 Sigmoid 函数在 z = 0 z = 0 z=0 时输出 0.5,因此上述规则等价于:

  • 若 w ⃗ ⋅ x ⃗ + b ≥ 0 \vec{w} \cdot \vec{x} + b \geq 0 w ⋅x +b≥0 → 预测为 1
  • 若 w ⃗ ⋅ x ⃗ + b < 0 \vec{w} \cdot \vec{x} + b < 0 w ⋅x +b<0 → 预测为 0

这说明:逻辑回归的决策边界仍然是线性的,只是它的输出不再是简单的 0/1,而是带有概率意义的预测

这意味着,决策边界 由等式 w ⃗ ⋅ x ⃗ + b = 0 \vec{w} \cdot \vec{x} + b = 0 w ⋅x +b=0 确定。


示例1:决策边界为直线

对于有两个特征 x 1 x_1 x1 和 x 2 x_2 x2 的情况,逻辑回归的决策边界由以下方程定义:

w 1 x 1 + w 2 x 2 + b = 0 w_1 x_1 + w_2 x_2 + b = 0 w1x1+w2x2+b=0

这是一个二维平面上的直线,将样本空间划分为两个区域:

  • 直线右侧的点满足 w 1 x 1 + w 2 x 2 + b > 0 w_1 x_1 + w_2 x_2 + b > 0 w1x1+w2x2+b>0,模型预测为 1
  • 左侧满足 w 1 x 1 + w 2 x 2 + b < 0 w_1 x_1 + w_2 x_2 + b < 0 w1x1+w2x2+b<0,模型预测为 0

例如,若 w 1 = 2 w_1 = 2 w1=2、 w 2 = − 3 w_2 = -3 w2=−3、 b = 1 b = 1 b=1,则决策边界为:

2 x 1 − 3 x 2 + 1 = 0 2x_1 - 3x_2 + 1 = 0 2x1−3x2+1=0

  • 该直线斜率为 2 3 \frac{2}{3} 32。图中通常用不同颜色或标记(如 ○ 和 ×)表示两类样本,而决策边界正好位于它们之间,实现分类分隔。

示例2:决策边界为圆

在某些情况下,数据的自然分界不是直线,而是曲线。例如,当特征之间存在非线性关系时,我们可以构造一个非线性决策边界

本分类问题中,定义:
z = w 1 x 1 2 + w 2 x 2 2 + b z = w_1 x_1^2 + w_2 x_2^2 + b z=w1x12+w2x22+b

假设参数 w 1 = 1 w_1 = 1 w1=1、 w 2 = 1 w_2 = 1 w2=1、 b = − 1 b = -1 b=−1,则:
z = x 1 2 + x 2 2 − 1 z = x_1^2 + x_2^2 - 1 z=x12+x22−1

决策边界由 g ( z ) = 0.5 g(z) = 0.5 g(z)=0.5 决定,即:
x 1 2 + x 2 2 − 1 = 0 ⇒ x 1 2 + x 2 2 = 1 x_1^2 + x_2^2 - 1 = 0 \quad \Rightarrow \quad x_1^2 + x_2^2 = 1 x12+x22−1=0⇒x12+x22=1

这是一个以原点为中心、半径为 1 的单位圆

  • 圆内部( x 1 2 + x 2 2 < 1 x_1^2 + x_2^2 < 1 x12+x22<1)的点被预测为 0(负类);
  • 圆外部( x 1 2 + x 2 2 > 1 x_1^2 + x_2^2 > 1 x12+x22>1)的点被预测为 1(正类);

这说明:虽然模型本身是线性的 ,但通过引入特征变换(如平方项),我们可以在原始空间中实现非线性分类

2. 逻辑回归的代价函数

提示:log 表示以自然常数 e e e 为底的对数(即 ln)。

2.1 为什么不使用线性回归的平方误差?

在线性回归中,我们使用均方误差(MSE) 作为代价函数:

J ( w , b ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 J(w, b) = \frac{1}{2m} \sum_{i=1}^{m} (f_{w,b}(x^{(i)}) - y^{(i)})^2 J(w,b)=2m1i=1∑m(fw,b(x(i))−y(i))2

逻辑回归不能直接用这个公式!原因如下:

  • 逻辑回归的预测值是通过 Sigmoid 函数 输出的:
    f w , b ( x ) = 1 1 + e − ( w x + b ) f_{w,b}(x) = \frac{1}{1 + e^{-(wx + b)}} fw,b(x)=1+e−(wx+b)1

    这是一个非线性、S 形的函数,输出始终在 (0,1) 之间。

  • 如果把 Sigmoid 函数代入平方误差公式,得到的代价函数会高度非凸(non-convex),形状像"波浪山"。

  • 非凸函数有多个局部最小值,梯度下降算法很容易卡在某个"假最低点",无法找到全局最优解。

所以我们需要一个凸函数(convex) 的代价函数------只有一个"碗底",保证梯度下降一定能收敛到最优解。


2.2 逻辑回归的损失函数(单个样本)

逻辑回归要使用一种叫 对数损失 的函数

对于单个训练样本 ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)),其损失函数定义为:

L ( f w , b ( x ( i ) ) , y ( i ) ) = { − log ⁡ ( f w , b ( x ( i ) ) ) , y ( i ) = 1 − log ⁡ ( 1 − f w , b ( x ( i ) ) ) , y ( i ) = 0 L(f_{w,b}(x^{(i)}), y^{(i)}) = \begin{cases} -\log(f_{w,b}(x^{(i)})) ,& \text y^{(i)} = 1 \\ -\log(1 - f_{w,b}(x^{(i)})), & \text y^{(i)} = 0 \end{cases} L(fw,b(x(i)),y(i))={−log(fw,b(x(i))),−log(1−fw,b(x(i))),y(i)=1y(i)=0

当 y ( i ) = 1 y^{(i)} = 1 y(i)=1 时:

  • 我们希望预测值 f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i)) 越接近 1 越好;
  • 若 f → 1 f \to 1 f→1,则 − log ⁡ ( f ) → 0 -\log(f) \to 0 −log(f)→0 → 损失小;
  • 若 f → 0 f \to 0 f→0,则 − log ⁡ ( f ) → + ∞ -\log(f) \to +\infty −log(f)→+∞ → 损失极大。

当 y ( i ) = 0 y^{(i)} = 0 y(i)=0 时:

  • 我们希望预测值越接近 0 越好;
  • 若 f → 0 f \to 0 f→0,则 − log ⁡ ( 1 − f ) → 0 -\log(1 - f) \to 0 −log(1−f)→0 → 损失小;
  • 若 f → 1 f \to 1 f→1,则 − log ⁡ ( 1 − f ) → + ∞ -\log(1 - f) \to +\infty −log(1−f)→+∞ → 损失极大。

总结:预测值越接近真实标签,损失越小;越远,损失越大且增长极快。


2.3 统一写法(推荐)

我们可以将分段函数合并为一个简洁表达式:

L ( f w , b ( x ( i ) ) , y ( i ) ) = − y ( i ) log ⁡ ( f w , b ( x ( i ) ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − f w , b ( x ( i ) ) ) L(f_{w,b}(x^{(i)}), y^{(i)}) = -y^{(i)} \log(f_{w,b}(x^{(i)})) - (1 - y^{(i)}) \log(1 - f_{w,b}(x^{(i)})) L(fw,b(x(i)),y(i))=−y(i)log(fw,b(x(i)))−(1−y(i))log(1−fw,b(x(i)))

验证:

  • 若 y ( i ) = 1 y^{(i)} = 1 y(i)=1:第二项为 0,剩下 − log ⁡ ( f ) -\log(f) −log(f)
  • 若 y ( i ) = 0 y^{(i)} = 0 y(i)=0:第一项为 0,剩下 − log ⁡ ( 1 − f ) -\log(1 - f) −log(1−f)

完美匹配!


2.4 代价函数(整个训练集)

对所有 m m m 个样本取平均,得到总代价函数:

J ( w ⃗ , b ) = 1 m ∑ i = 1 m L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} L(f_{\vec{w},b}(\vec{x}^{(i)}), y^{(i)}) J(w ,b)=m1i=1∑mL(fw ,b(x (i)),y(i))

代入损失函数表达式:

J ( w ⃗ , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( f w ⃗ , b ( x ⃗ ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) ] J(\vec{w}, b) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(f_{\vec{w},b}(\vec{x}^{(i)})) + (1 - y^{(i)}) \log(1 - f_{\vec{w},b}(\vec{x}^{(i)})) \right] J(w ,b)=−m1i=1∑m[y(i)log(fw ,b(x (i)))+(1−y(i))log(1−fw ,b(x (i)))]

注意:这里没有 1 2 \frac{1}{2} 21!因为对数损失本身已具备良好的数学性质,无需额外系数简化求导。

物理意义上看,这种代价函数基于统计学中的 最大似然估计 原理,是最自然的选择之一

3. 实现梯度下降

梯度下降 是训练逻辑回归模型的核心方法:通过不断调整参数 w w w 和 b b b,让代价函数最小化。

3.1 为什么逻辑回归可以使用梯度下降?

  • 逻辑回归的代价函数为:

J ( w ⃗ , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( f w ⃗ , b ( x ⃗ ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) ] J(\vec{w}, b) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(f_{\vec{w},b}(\vec{x}^{(i)})) + (1 - y^{(i)}) \log(1 - f_{\vec{w},b}(\vec{x}^{(i)})) \right] J(w ,b)=−m1i=1∑m[y(i)log(fw ,b(x (i)))+(1−y(i))log(1−fw ,b(x (i)))]

其中:

  • f w , b ( x ) = 1 1 + e − ( w x + b ) f_{w,b}(x) = \frac{1}{1 + e^{-(wx + b)}} fw,b(x)=1+e−(wx+b)1 是Sigmoid函数;
  • y ( i ) ∈ { 0 , 1 } y^{(i)} \in \{0, 1\} y(i)∈{0,1} 是真实标签;
  • m m m 是训练样本数量。

这个代价函数是凸函数,只有一个全局最小值,因此可以使用梯度下降法稳定收敛到最优解


3.2 梯度下降更新规则

我们需要计算代价函数对参数的偏导数:

对权重 w j w_j wj 的梯度:

∂ J ∂ w j = 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J}{\partial w_j} = \frac{1}{m} \sum_{i=1}^{m} \left( f_{w,b}(x^{(i)}) - y^{(i)} \right) x_j^{(i)} ∂wj∂J=m1i=1∑m(fw,b(x(i))−y(i))xj(i)

对偏置 b b b 的梯度:

∂ J ∂ b = 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) \frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} \left( f_{w,b}(x^{(i)}) - y^{(i)} \right) ∂b∂J=m1i=1∑m(fw,b(x(i))−y(i))


3.3 梯度下降公式(核心)

使用学习率 α \alpha α,每次迭代更新参数:

{ w j = w j − α ∂ J ∂ w j = w j − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) ⋅ x ⃗ j ( i ) b = b − α ∂ J ∂ b = b − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) j = 1 , 2 , ... , n . \begin{cases} w_j = w_j - \alpha \dfrac{\partial J}{\partial w_j} = w_j - \dfrac{\alpha}{m} \displaystyle\sum_{i=1}^{m} \left( f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)} \right) \cdot \vec{x}j^{(i)} \\ \\ b = b - \alpha \dfrac{\partial J}{\partial b} = b - \dfrac{\alpha}{m} \displaystyle\sum{i=1}^{m} \left( f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)} \right) \end{cases} \quad \text j = 1,2,\dots,n. ⎩ ⎨ ⎧wj=wj−α∂wj∂J=wj−mαi=1∑m(fw ,b(x (i))−y(i))⋅x j(i)b=b−α∂b∂J=b−mαi=1∑m(fw ,b(x (i))−y(i))j=1,2,...,n.

  • 左图:Sigmoid 曲线拟合肿瘤数据,显示分类边界;
  • 右图:在参数空间中,梯度下降沿着代价函数的"下坡"方向移动,逐步逼近最优解 ( w ∗ , b ∗ ) (w^*, b^*) (w∗,b∗)。
  • 虽然模型不同,但梯度下降的数学形式与线性回归相同------这是计算上的巧合,也是其高效性的体现。

4. 过拟合与正则化

当模型在训练数据上表现很好,但在新数据上表现差时,说明它"学得太死"了------这就是过拟合

本节将带你理解什么是过拟合和欠拟合,并学习如何用 正则化 来解决这个问题。

4.1 什么是过拟合和欠拟合?

我们通过一个简单的例子来理解三种模型状态:

假设我们要根据房屋面积预测房价,有以下三种情况:

左图为欠拟合

  • 模型太简单(比如只用一条水平线拟合);
  • 无法捕捉数据的基本规律;
  • 训练误差大,测试误差也大

原因:模型复杂度太低,或特征太少。

中图为理想拟合

  • 模型能抓住数据的整体趋势;
  • 在训练集和新数据上都表现良好。

右图为过拟合

  • 模型太复杂(比如用高阶多项式穿过每一个点);
  • 完美拟合训练数据,却把噪声也当成了规律;
  • 训练误差很小,但测试误差很大

原因:模型复杂度太高,或训练数据太少。


4.2 为什么过拟合是个问题?

过拟合的模型就像一个"死记硬背的学生":

  • 考试前把练习题答案全背下来 → 训练准确率 100%;
  • 但遇到新题就懵了 → 实际应用效果差。

在机器学习中,我们的目标是泛化能力(Generalization)

能对从未见过的数据做出准确预测。

过拟合会严重损害泛化能力!


4.3 解决过拟合的三种方法

  1. 扩大训练集:此时即使有很多特征,相比于训练集很小时,其拟合曲线也会相对平滑。
    缺点是不一定能获取更多的训练数据。
  2. 减少特征数:也称为"特征选择"。"特征选择"除了靠直觉,在Course2中也会介绍一种自动选择特征的方法。缺点是有可能会丢弃有用特征。
  3. 正则化:保留所有的特征,但对于某个很大的特征 x j x_j xj,减小其参数 w j w_j wj(通常不会调整参数 b b b)

4.4 如何解决过拟合?------ 正则化

正则化是一种防止过拟合的技术,核心思想是:

在代价函数中加入一个"惩罚项",限制模型参数不要变得太大。

为什么有效?

  • 大的参数值往往意味着模型在"强行拟合噪声";
  • 限制参数大小,相当于让模型变得更"平滑"、"简单"。

正则化后的代价函数:

我们在原始代价函数后面加上一个正则项:

J ( w ⃗ , b ) = 1 m ∑ i = 1 m L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) + λ 2 m ∑ j = 1 n w j 2 , λ > 0 J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} L(f_{\vec{w},b}(\vec{x}^{(i)}), y^{(i)}) + \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2, \quad \lambda > 0 J(w ,b)=m1i=1∑mL(fw ,b(x (i)),y(i))+2mλj=1∑nwj2,λ>0

注:正则化通常不包含偏置项 b b b ,因此 λ 2 m b 2 \frac{\lambda}{2m} b^2 2mλb2 一般省略。

其中:

  • J ( w , b ) J(w, b) J(w,b) 是原始的逻辑回归代价函数;
  • λ \lambda λ(lambda)是正则化参数,控制惩罚力度;
  • m m m 是样本数量;
  • n n n 是特征数量;
  • 通常不对偏置项 b b b 进行正则化

正则化参数 λ \lambda λ 的作用:

λ \lambda λ 值 效果
太小(如 0) 几乎无正则化 → 可能过拟合
合适 平衡拟合与泛化 → 最佳性能
太大(如 10000) 参数被过度压缩 → 可能欠拟合

通常通过交叉验证(Cross-Validation)来选择最佳 λ \lambda λ


4.5 正则化后的梯度更新公式

由于代价函数变了,梯度也要相应调整

对于每个权重 w j w_j wj( j = 1 , 2 , . . . , n j = 1, 2, ..., n j=1,2,...,n):

∂ J ∂ w j = ∂ J ∂ w j + λ m w j \frac{\partial J_{\text{}}}{\partial w_j} = \frac{\partial J}{\partial w_j} + \frac{\lambda}{m} w_j ∂wj∂J=∂wj∂J+mλwj

因此,梯度下降的更新规则变为:

w j = w j − α ∂ J ∂ w j = w j − α m ( ∑ i = 1 m [ ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) ⋅ x j ( i ) ] + λ w j ) w_j = w_j - \alpha \dfrac{\partial J}{\partial w_j} = w_j - \dfrac{\alpha}{m} \left( \displaystyle\sum_{i=1}^{m} \left[ (f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)}) \cdot x_j^{(i)} \right] + \lambda w_j \right) wj=wj−α∂wj∂J=wj−mα(i=1∑m[(fw ,b(x (i))−y(i))⋅xj(i)]+λwj)
j = 1 , 2 , ... , n j = 1,2,\dots,n j=1,2,...,n

而偏置项 b b b 不变:

b = b − α ∂ J ∂ b = b − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) b = b - \alpha \dfrac{\partial J}{\partial b} = b - \dfrac{\alpha}{m} \displaystyle\sum_{i=1}^{m} \left( f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)} \right) b=b−α∂b∂J=b−mαi=1∑m(fw ,b(x (i))−y(i))

注意:这个额外的 λ m w j \frac{\lambda}{m} w_j mλwj 项会让 w j w_j wj 在每次更新时"自动缩小一点",从而防止它变得过大。

下面来进一步分析参数的更新过程(同样也适用于"逻辑回归"中的正则方法):

w j = w j − α m ( ∑ i = 1 m [ ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) ⋅ x j ( i ) ] + λ w j ) = ( 1 − α λ m ) w j ⏟ 每次更新自动缩小 w j − α m ∑ i = 1 m [ ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) ⋅ x j ( i ) ] ⏟ 常规更新 \begin{aligned} w_j &= w_j - \frac{\alpha}{m} \left( \sum_{i=1}^{m} \left[ (f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)}) \cdot x_j^{(i)} \right] + \lambda w_j \right) \\ &= \underbrace{(1 - \alpha \frac{\lambda}{m}) w_j}{\text{每次更新自动缩小} w_j} - \underbrace{\frac{\alpha}{m} \sum{i=1}^{m} \left[ (f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)}) \cdot x_j^{(i)} \right]}_{\text{常规更新}} \end{aligned} wj=wj−mα(i=1∑m[(fw ,b(x (i))−y(i))⋅xj(i)]+λwj)=每次更新自动缩小wj (1−αmλ)wj−常规更新 mαi=1∑m[(fw ,b(x (i))−y(i))⋅xj(i)]

  • 第一项:添加正则化后,会在每次迭代过程中,都使参数 w j w_j wj 乘以一个略小于 1 的常数。
  • 第二项:对于非正则化的线性回归,正常的梯度下降法更新过程。

小结:逻辑回归相关公式

  • 逻辑回归模型:
    f w ⃗ , b ( x ⃗ ) = g ( z ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) f_{\vec{w},b}(\vec{x}) = g(z) = \frac{1}{1 + e^{-(\vec{w} \cdot \vec{x} + b)}} fw ,b(x )=g(z)=1+e−(w ⋅x +b)1

  • 代价函数:
    J ( w ⃗ , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( f w ⃗ , b ( x ⃗ ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) ] + λ 2 m ∑ j = 1 n w j 2 , λ > 0 J(\vec{w}, b) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(f_{\vec{w},b}(\vec{x}^{(i)})) + (1 - y^{(i)}) \log(1 - f_{\vec{w},b}(\vec{x}^{(i)}))\right]+ \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2 , \quad \lambda > 0 J(w ,b)=−m1i=1∑m[y(i)log(fw ,b(x (i)))+(1−y(i))log(1−fw ,b(x (i)))]+2mλj=1∑nwj2,λ>0

  • 梯度下降:
    { w j = w j − α ∂ J ∂ w j = w j − α m ( ∑ i = 1 m [ ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) ⋅ x j ( i ) ] + λ w j ) b = b − α ∂ J ∂ b = b − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) j = 1 , 2 , ... , n . \begin{cases} w_j = w_j - \alpha \dfrac{\partial J}{\partial w_j} = w_j - \dfrac{\alpha}{m} \left( \displaystyle\sum_{i=1}^{m} \left[ (f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)}) \cdot x_j^{(i)} \right] + \lambda w_j \right) \\ \\ b = b - \alpha \dfrac{\partial J}{\partial b} = b - \dfrac{\alpha}{m} \displaystyle\sum_{i=1}^{m} \left( f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)} \right) \end{cases} \quad \text j = 1,2,\dots,n. ⎩ ⎨ ⎧wj=wj−α∂wj∂J=wj−mα(i=1∑m[(fw ,b(x (i))−y(i))⋅xj(i)]+λwj)b=b−α∂b∂J=b−mαi=1∑m(fw ,b(x (i))−y(i))j=1,2,...,n.

相关推荐
爱笑的源码基地35 分钟前
智慧工地云平台源码,采用Java+SpringCloud+UniApp+MySql技术,支持多端展示,具备集团级多级权限管理。
人工智能·后端·spring·spring cloud·源码·智慧工地·工地智能管理
Aevget35 分钟前
DevExtreme JS & ASP.NET Core v25.2新功能预览 - 提升AI扩展功能
javascript·人工智能·ui·asp.net·界面控件·devextreme
乱世军军36 分钟前
AI 三大学习类型(监督/无监督/强化)的分类图
人工智能·学习
双翌视觉36 分钟前
机器视觉之眼:彩色相机的成像效果与预处理技术解析
人工智能·数码相机·机器学习
天地之于壹炁兮37 分钟前
微调模型:AI定制化的核心秘诀
人工智能
却道天凉_好个秋41 分钟前
OpenCV(三十六):多边形逼近与凸包
人工智能·opencv·计算机视觉
_Twink1e43 分钟前
【HCIA-AIV4.0】2025题库+解析(三)
人工智能·笔记·华为·开源
会员果汁43 分钟前
优先级队列-C语言
c语言·数据结构·算法
北堂飘霜1 小时前
AI 求职工具评测:简小派 vs Jobscan、Teal 与国内同类
人工智能