• 线性回归:预测连续值的起点:介绍线性回归的基本原理、假设函数、代价函数和优化方法,使用公式和表格对比。
  • 逻辑回归:从回归到分类的桥梁:讲解逻辑回归如何通过Sigmoid函数和交叉熵损失解决分类问题,使用表格对比与线性回归的区别。
  • 激活函数与非线性拟合:引入非线性能力:介绍常见激活函数及其作用,说明如何通过基函数扩展线性模型的表达能力。
  • 从神经元到神经网络:架构的演进:解释生物神经元启发下的M-P模型,以及神经网络的结构和信号传递过程,使用表格对比不同激活函数。
  • 前向传播与反向传播:神经网络的训练引擎:详细说明前向传播的计算步骤和反向传播的链式法则原理。
  • 总结:从简单到复杂的统一视角:通过表格总结从线性回归到神经网络的核心概念演进,强调其内在一致性。

从线性回归到神经网络:机器学习模型的演进之路

1 线性回归:预测连续值的起点

线性回归是机器学习中最直观易懂的模型之一,它解决了预测连续数值的基本问题。线性回归的核心思想是建立输入特征与输出目标之间的线性关系模型,从而根据已知数据预测未知结果。

1.1 假设函数

线性回归的假设函数表达了输入特征与输出目标之间的线性关系。对于具有n个特征的情况,其数学表达式为:

h(x)=β0+β1x1+β2x2+⋯+βnxn+ϵh(x) = \beta_0 + \beta_1x_1 + \beta_2x_2 + \dots + \beta_nx_n + \epsilonh(x)=β0+β1x1+β2x2++βnxn+ϵ

其中,h(x)h(x)h(x)是我们的预测值,β0\beta_0β0是截距项(偏置),β1,β2,...,βn\beta_1, \beta_2, ..., \beta_nβ1,β2,...,βn是每个特征对应的权重参数,x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn是输入特征,ϵ\epsilonϵ是误差项。这个公式表明,每个特征都对最终预测结果有线性贡献,其贡献大小由对应的权重参数决定。

为简化表达,我们通常会将上式写成向量化形式:h(x)=XW+bh(x) = XW + bh(x)=XW+b,其中X是特征矩阵,W是权重向量,b是偏置项。这种形式不仅简洁,而且在计算效率上具有优势。

1.2 代价函数与目标

为了找到最优的参数,我们需要一个衡量模型预测好坏的指标,这就是代价函数的作用。在线性回归中,最常用的代价函数是均方误差(Mean Squared Error, MSE),它计算了预测值与真实值之间差异的平方和:

J(β0,β1,...,βn)=12m∑i=1m(yi−h(xi))2J(\beta_0, \beta_1, ..., \beta_n) = \frac{1}{2m} \sum_{i=1}^{m} (y_i - h(x_i))^2J(β0,β1,...,βn)=2m1i=1m(yih(xi))2

其中m是训练样本的数量,y_i是第i个样本的真实值。使用平方项的目的是放大较大误差的影响,同时确保损失函数是凸函数,便于优化。

线性回归的目标很明确:找到一组参数β\betaβ,使得代价函数J(β)J(\beta)J(β)的值最小。这个最优化过程通常采用梯度下降法实现。

1.3 梯度下降优化

梯度下降是一种迭代优化算法,其核心思想是沿着函数梯度的反方向更新参数,逐步逼近函数最小值点。对于线性回归,参数更新过程如下:

  1. 随机初始化参数β\betaβ
  2. 计算当前参数下的梯度:∂J(β)∂βj\frac{\partial J(\beta)}{\partial \beta_j}βjJ(β)
  3. 更新参数:βj:=βj−α⋅∂J(β)∂βj\beta_j := \beta_j - \alpha \cdot \frac{\partial J(\beta)}{\partial \beta_j}βj:=βjαβjJ(β)
  4. 重复步骤2-3,直到损失函数收敛

其中,α\alphaα学习率,它控制着每次参数更新的步长。学习率过小会导致收敛过慢,而过大会导致无法收敛或产生震荡。

表:线性回归的核心组成部分

组件 数学表达 作用与意义
假设函数 h(x)=XW+bh(x) = XW + bh(x)=XW+b 建立输入特征与输出目标的线性关系
代价函数 J(β)=12m∑(yi−h(xi))2J(\beta) = \frac{1}{2m} \sum (y_i - h(x_i))^2J(β)=2m1(yih(xi))2 衡量模型预测与真实值的差异
优化方法 βj:=βj−α⋅∂J∂βj\beta_j := \beta_j - \alpha \cdot \frac{\partial J}{\partial \beta_j}βj:=βjαβjJ 迭代更新参数以最小化代价函数

线性回归简单有效,但局限性也很明显:它只能处理输入与输出间的线性关系。当面对非线性关系分类问题时,我们需要更强大的模型,这就引出了逻辑回归的概念。

2 逻辑回归:从回归到分类的桥梁

逻辑回归虽然名称中含有"回归",但它实际上是一种广泛应用于二分类问题的线性分类器。逻辑回归的核心创新在于引入了一种机制,将线性回归的连续值输出映射为概率表示,从而可以处理分类任务。

2.1 从线性到概率的转换

线性回归的直接输出值域是(−∞,+∞)(-\infty, +\infty)(,+),不适合表示概率(需要在[0,1]范围内)。逻辑回归通过引入Sigmoid函数(也称为逻辑函数)解决了这一限制:

g(z)=11+e−zg(z) = \frac{1}{1 + e^{-z}}g(z)=1+ez1

其中z=WTXz = W^TXz=WTX是线性回归部分的输出。Sigmoid函数将任何实数映射到(0,1)区间,完美契合概率表示的需求。当z趋近正无穷时,g(z)趋近于1;当z趋近负无穷时,g(z)趋近于0;当z=0时,g(z)=0.5。

逻辑回归的假设函数变为:

h(x)=g(z)=11+e−WTXh(x) = g(z) = \frac{1}{1 + e^{-W^TX}}h(x)=g(z)=1+eWTX1

这个函数表示样本属于正类的概率,即P(y=1∣x;W)=h(x)P(y=1|x;W) = h(x)P(y=1∣x;W)=h(x),相应地,P(y=0∣x;W)=1−h(x)P(y=0|x;W) = 1 - h(x)P(y=0∣x;W)=1h(x)

2.2 交叉熵代价函数

由于逻辑回归的输出具有概率特性,均方误差不再适合作为代价函数。逻辑回归采用交叉熵损失函数,定义如下:

J(W)=−1m∑i=1m[yilog⁡(h(xi))+(1−yi)log⁡(1−h(xi))]J(W) = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log(h(x_i)) + (1-y_i) \log(1-h(x_i))]J(W)=m1i=1m[yilog(h(xi))+(1yi)log(1h(xi))]

这个看似复杂的函数实际上有直观的解释:当真实标签y_i=1时,损失为−log⁡(h(xi))-\log(h(x_i))log(h(xi)),即预测概率h(x_i)越接近1,损失越小;当y_i=0时,损失为−log⁡(1−h(xi))-\log(1-h(x_i))log(1h(xi)),预测概率h(x_i)越接近0,损失越小。

交叉熵损失函数又被称为对数似然损失,最大化对数似然函数等价于最小化交叉熵损失。这个函数是凸函数,保证了梯度下降能找到全局最优解。

2.3 决策边界与模型解释

逻辑回归虽然输出概率,但最终需要做出分类决策。通常设置一个阈值(默认为0.5):当h(x) ≥ 0.5时预测为正类,否则预测为负类。这对应着决策边界WTX=0W^TX = 0WTX=0

逻辑回归的决策边界是线性的,但通过引入多项式特征,可以捕获更复杂的非线性边界。例如,通过特征转换z=θ0+θ1x1+θ2x2+θ3x12+θ4x22z = \theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1^2 + \theta_4x_2^2z=θ0+θ1x1+θ2x2+θ3x12+θ4x22,可以获得圆形或椭圆形的决策边界。

表:线性回归与逻辑回归对比

特性 线性回归 逻辑回归
任务类型 回归(预测连续值) 分类(预测离散类别)
输出范围 (−∞,+∞)(-\infty, +\infty)(,+) (0,1)概率值
假设函数 h(x)=WTXh(x) = W^TXh(x)=WTX h(x)=11+e−WTXh(x) = \frac{1}{1+e^{-W^TX}}h(x)=1+eWTX1
代价函数 均方误差(MSE) 交叉熵损失
优化目标 预测值接近真实值 正确类别概率最大化

逻辑回归通过Sigmoid函数成功将线性模型应用于分类问题,但其本质仍是线性分类器。当数据存在复杂非线性关系时,逻辑回归的表现受限,这就需要我们引入更强大的非线性模型。

3 激活函数与非线性拟合:引入非线性能力

前述的线性回归和逻辑回归本质上都是线性模型,无法处理复杂的非线性关系。激活函数的引入是突破这一限制的关键,它为模型赋予了非线性变换能力,极大增强了模型的表达能力和适用性。

3.1 常见激活函数及其特性

激活函数决定了神经元是否应该被激活,并将输入信号转换为输出信号。以下是最常见的几种激活函数:

  • Sigmoid函数σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+ez1,将输入压缩到(0,1)区间。优点是适合表示概率,缺点是两端饱和区梯度接近零,导致梯度消失问题。

  • 双曲正切函数(Tanh)tanh(z)=ez−e−zez+e−ztanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}tanh(z)=ez+ezezez,将输入压缩到(-1,1)区间。相比Sigmoid,输出以零为中心,但依然存在梯度消失问题。

  • ReLU(线性整流单元)ReLU(z)=max(0,z)ReLU(z) = max(0,z)ReLU(z)=max(0,z)。当z>0时梯度为1,缓解了梯度消失;计算简单,收敛快。缺点是负半区梯度为零,可能导致神经元"死亡"。

每种激活函数都有其适用场景,选择取决于具体问题和模型架构。这些激活函数是模型非线性能力的来源,使模型能够拟合复杂的数据模式。

3.2 从基函数到非线性变换

另一种引入非线性的思路是通过基函数扩展特征空间。例如,多项式回归通过添加特征的高次项(如x2,x3x^2, x^3x2,x3等)将线性模型扩展为非线性模型。

更一般地,我们可以将原始特征映射到高维空间:ϕ(x)=[1,x,x2,x3,...]T\phi(x) = [1, x, x^2, x^3, ...]^Tϕ(x)=[1,x,x2,x3,...]T,然后在该空间中使用线性模型:h(x)=WTϕ(x)h(x) = W^T\phi(x)h(x)=WTϕ(x)。尽管模型在参数W上是线性的,但在原始特征x上却是非线性的。

这种方法与神经网络有深刻联系:神经网络通过多层非线性激活函数实现复杂的特征变换,而基函数方法可以看作单层非线性变换的特殊情况。

3.3 为何需要非线性?

非线性变换的引入至关重要,原因如下:

  1. 现实世界的复杂性:现实世界中的数据关系极少是简单的线性关系,非线性模型能更好地捕获这些复杂模式
  2. 特征交互:非线性模型能自动学习特征间的交互作用,而不需要手动设计交互项
  3. 层次化特征学习:通过多层非线性变换,深度学习模型可以学习从低级特征到高级特征的层次化表示

然而,非线性也带来了挑战:模型可能变得过于复杂,导致过拟合;优化过程变得更加困难,可能存在多个局部极小值。这些挑战引出了对更强大学习架构的需求。

4 从神经元到神经网络:架构的演进

单一的线性模型或简单的非线性变换仍有限制,无法解决复杂问题。神经网络通过模拟人脑神经系统的结构和功能,将多个基本单元(神经元)连接成网络,实现了更强大的表达能力。

4.1 生物启发的M-P模型

神经网络的基本单位是神经元,其设计受到生物神经元的启发。1943年,McCulloch和Pitts提出了第一个神经元数学模型(M-P模型),奠定了神经网络的基础。

一个人工神经元接收多个输入信号x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn,每个输入对应一个权重w1,w2,...,wnw_1, w_2, ..., w_nw1,w2,...,wn。神经元计算加权和z=∑i=1nwixi+bz = \sum_{i=1}^{n} w_ix_i + bz=i=1nwixi+b,然后通过激活函数f产生输出a=f(z)a = f(z)a=f(z)

这一过程与逻辑回归惊人地相似,实际上,单个神经元可以看作一个逻辑回归单元。神经网络的创新在于将许多这样的神经元以特定方式连接起来。

4.2 神经网络架构

神经网络通过将神经元排列成层来构建:输入层接收原始特征,隐藏层进行特征变换和学习,输出层产生最终预测。

一个典型的多层神经网络前向传播过程如下:

  1. 输入层:a[0]=xa^{[0]} = xa[0]=x
  2. 隐藏层1:z[1]=W[1]a[0]+b[1]z^{[1]} = W^{[1]}a^{[0]} + b^{[1]}z[1]=W[1]a[0]+b[1]a[1]=f(z[1])a^{[1]} = f(z^{[1]})a[1]=f(z[1])
  3. 隐藏层2:z[2]=W[2]a[1]+b[2]z^{[2]} = W^{[2]}a^{[1]} + b^{[2]}z[2]=W[2]a[1]+b[2]a[2]=f(z[2])a^{[2]} = f(z^{[2]})a[2]=f(z[2])
  4. 输出层:z[3]=W[3]a[2]+b[3]z^{[3]} = W^{[3]}a^{[2]} + b^{[3]}z[3]=W[3]a[2]+b[3]y^=g(z[3])\hat{y} = g(z^{[3]})y^=g(z[3])

其中上标[l][l][l]表示第l层,f和g是激活函数(可能不同)。

深度神经网络通过多个隐藏层学习特征的层次化表示:底层学习简单特征(如边缘),中层学习组合特征(如局部形状),高层学习抽象特征(如物体部件)。

表:常见激活函数比较

激活函数 数学表达式 优点 缺点
Sigmoid 11+e−z\frac{1}{1+e^{-z}}1+ez1 输出范围(0,1),适合概率 梯度消失,输出非零中心
Tanh ez−e−zez+e−z\frac{e^z-e^{-z}}{e^z+e^{-z}}ez+ezezez 输出范围(-1,1),零中心 梯度消失问题
ReLU max(0,z)max(0,z)max(0,z) 计算简单,缓解梯度消失 负区梯度为零

神经网络的结构设计(层数、每层神经元数、连接方式等)构成了模型的归纳偏好,决定了模型能够学习什么样的函数。更深的网络通常具有更强的表达能力,但也更需要大量的数据和计算资源。

5 前向传播与反向传播:神经网络的训练引擎

神经网络的强大能力不仅来自其架构,更来自有效的训练算法。前向传播和反向传播共同构成了神经网络训练的引擎,使网络能够从数据中学习复杂的模式和关系。

5.1 前向传播:信息流动与预测计算

前向传播是指输入数据通过神经网络层层传递,最终得到预测输出的过程。具体来说,对于第l层,前向传播的计算为:

z[l]=W[l]a[l−1]+b[l]z^{[l]} = W^{[l]}a^{[l-1]} + b^{[l]}z[l]=W[l]a[l1]+b[l]
a[l]=f[l](z[l])a^{[l]} = f^{[l]}(z^{[l]})a[l]=f[l](z[l])

其中a[l−1]a^{[l-1]}a[l1]是上一层的输出(即本层的输入),W[l]W^{[l]}W[l]b[l]b^{[l]}b[l]是第l层的权重和偏置参数,f[l]f^{[l]}f[l]是第l层的激活函数。

前向传播的最终目标是计算网络的预测输出,并与真实标签比较得到损失函数值。对于不同的任务,我们使用不同的损失函数:

  • 回归任务:均方误差 J=12m∑(y−y^)2J = \frac{1}{2m}\sum (y-\hat{y})^2J=2m1(yy^)2
  • 二分类:交叉熵损失 J=−1m∑[ylog⁡y^+(1−y)log⁡(1−y^)]J = -\frac{1}{m}\sum [y\log\hat{y} + (1-y)\log(1-\hat{y})]J=m1[ylogy^+(1y)log(1y^)]
  • 多分类:多类交叉熵损失 J=−1m∑∑yclog⁡yc^J = -\frac{1}{m}\sum\sum y_c\log\hat{y_c}J=m1∑∑yclogyc^

前向传播计算了模型的预测结果和损失,但为了优化网络参数,我们需要知道每个参数对损失的贡献程度,这就是反向传播的任务。

5.2 反向传播:误差反向传播与链式法则

反向传播是神经网络训练的核心算法,它通过链式法则计算损失函数对每个参数的梯度。这些梯度指示了参数应如何调整以减少损失。

反向传播的过程从输出层开始,逐层向后计算梯度。对于第l层,关键梯度计算如下:

  1. 计算输出层的误差:δ[L]=∂J∂a[L]⊙f′[L](z[L])\delta^{[L]} = \frac{\partial J}{\partial a^{[L]}} \odot f'^{[L]}(z^{[L]})δ[L]=a[L]Jf[L](z[L])
  2. 反向传播误差到前一层:δ[l]=(W[l+1]Tδ[l+1])⊙f′[l](z[l])\delta^{[l]} = (W^{[l+1]T}\delta^{[l+1]}) \odot f'^{[l]}(z^{[l]})δ[l]=(W[l+1]Tδ[l+1])f[l](z[l])
  3. 计算参数梯度:∂J∂W[l]=δ[l]a[l−1]T\frac{\partial J}{\partial W^{[l]}} = \delta^{[l]}a^{[l-1]T}W[l]J=δ[l]a[l1]T∂J∂b[l]=δ[l]\frac{\partial J}{\partial b^{[l]}} = \delta^{[l]}b[l]J=δ[l]

其中⊙\odot表示逐元素乘法(Hadamard积),f′f'f是激活函数的导数。

反向传播的魅力在于它能高效地计算所有参数的梯度,其计算复杂度与前向传播相当,远低于分别计算每个参数的梯度。

5.3 参数更新与优化策略

得到梯度后,我们使用梯度下降法更新参数:

W[l]=W[l]−α∂J∂W[l]W^{[l]} = W^{[l]} - \alpha \frac{\partial J}{\partial W^{[l]}}W[l]=W[l]αW[l]J
b[l]=b[l]−α∂J∂b[l]b^{[l]} = b^{[l]} - \alpha \frac{\partial J}{\partial b^{[l]}}b[l]=b[l]αb[l]J

其中α\alphaα是学习率,控制参数更新的步长。

在实际训练中,我们通常使用小批量梯度下降,将训练数据分成多个小批次,依次处理。这种方法既提高了计算效率,又增加了参数更新的随机性,有助于逃离局部极小值。

前向传播和反向传播交替进行,形成神经网络的训练循环:前向传播计算预测和损失,反向传播计算梯度,优化算法更新参数。这个过程重复进行,直到模型损失收敛。

6 总结:从简单到复杂的统一视角

我们从简单的线性回归出发,一步步深入到复杂的神经网络,这一演进过程展现了机器学习模型的内在逻辑和发展脉络。通过这条路径,我们可以理解每个环节的必要性连续性

表:从线性回归到神经网络的核心概念演进

模型 关键创新 解决的问题 遗留的挑战
线性回归 建立特征与目标的线性关系 连续值预测 无法处理非线性与分类问题
逻辑回归 使用Sigmoid函数输出概率 二分类问题 本质仍是线性模型
激活函数 引入非线性变换 拟合非线性关系 单层模型表达能力不足
神经网络 多层非线性变换组合 复杂函数逼近 训练困难,需要大量数据

回顾这条路径,我们发现所有模型都共享相同的基本框架:假设函数定义模型结构,损失函数衡量模型性能,优化算法调整模型参数。这种统一视角有助于我们理解机器学习的本质。

深度学习的成功不仅源于复杂的网络架构,更源于大规模数据强大计算能力高效算法的协同发展。当前,神经网络已在图像识别、自然语言处理、游戏AI等领域取得突破性成果,但机器学习的发展远未停止。图神经网络、Transformer、元学习等新方向继续推动着这一领域向前发展。

理解从线性回归到神经网络的演进路径,不仅帮助我们掌握这些模型本身,更为我们理解和探索新一代机器学习技术奠定了坚实基础。这一演进过程体现了科学研究中从简单到复杂、从特殊到一般的普遍规律,是知识积累和技术进步的典范案例。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐