当前位置: 首页 > news >正文

模式识别与机器学习课程笔记(6):人工神经网络

模式识别与机器学习课程笔记(6):人工神经网络

  • 人工神经网络基础知识
    • 一、人工神经网络基础知识
      • 1.1 人工神经网络(ANN)历史:三起两落的发展之路
      • 1.2 深度学习发展历程
      • 1.3 生物神经系统简介(ANN 的仿生来源)
      • 1.4 人工神经网络模型(以前馈网络为例)
      • 1.5 常用激活函数(引入非线性的核心)
        • 激活函数可视化代码(Python)
    • 二、人工神经网络类型(按结构分类)
      • 2.1 前馈网络(Feedforward Network)
      • 2.2 记忆网络(反馈网络 / 递归网络)
      • 2.3 图网络(Graph Neural Network, GNN)
      • 2.4 卷积神经网络(CNN)
    • 三、前馈神经网络(多层感知器 MLP)深度解析
      • 3.1 能实现“与”运算的两层 MLP(实例)
      • 3.2 通用近似定理(MLP 的理论基础)
    • 四、网络训练(从“参数随机”到“参数最优”)
      • 4.1 前馈网络函数表达式(数学定义)
      • 4.2 网络训练的目标函数(误差度量)
      • 4.3 梯度下降法(优化核心算法)
        • 1. 参数更新公式
        • 2. 梯度下降的三种变体
      • 4.4 网络误差函数选择的经验
    • 五、误差反向传播算法(BP 算法:训练 MLP 的“引擎”)
      • 5.1 BP 算法的核心步骤(以 MLP 为例)
        • 步骤 1:前馈计算(求各层输出)
        • 步骤 2:反向计算误差(从输出层到隐藏层)
        • 步骤 3:计算梯度并更新参数
      • 5.2 BP 网络学习的基础
    • 六、主流神经网络简介(CNN/RNN/Transformer)
      • 6.1 CNN 简介(计算机视觉的“利器”)
        • 1. 核心创新:解决 MLP 处理图像的痛点
        • 2. 核心层与作用
        • 3. 典型模型与应用场景
      • 6.2 RNN(时序数据的“专家”)
        • 1. 核心结构:循环连接(捕捉历史信息)
        • 2. 痛点:长序列依赖问题
        • 3. 改进模型与应用场景
      • 6.3 Transformer(NLP 的“革命”,现扩展到 CV)
        • 1. 核心创新:自注意力机制(Self-Attention)
        • 2. 核心结构:Encoder-Decoder
        • 3. 典型模型与应用场景
    • 七、网络优化注意事项
      • 1. 数据预处理
      • 2. 权重初始化
      • 3. 学习率调整
      • 4. 过拟合解决
      • 5. 批量大小选择
      • 6. 激活函数与优化器选择
    • 八、总结
      • 关键结论

人工神经网络基础知识

一、人工神经网络基础知识

人工神经网络(ANN)是模拟生物神经系统的计算模型,核心是通过 “神经元”的互联 实现非线性映射,解决线性模型无法处理的复杂问题(如图像识别、自然语言理解)。

1.1 人工神经网络(ANN)历史:三起两落的发展之路

ANN 的发展并非一帆风顺,经历了三次关键浪潮,每次低谷都为后续突破积累了理论基础:

  • 第一阶段:1940s-1960s(起步与早期发展)

    • 1943 年:M-P 模型(神经元数学化的开端)
      McCulloch 和 Pitts 首次用数学公式描述生物神经元:
      y=f(∑i=1nwixi−θ)y = f\left(\sum_{i=1}^n w_i x_i - \theta\right)y=f(i=1nwixiθ)
      其中xix_ixi是输入信号,wiw_iwi是连接权重,θ\thetaθ是阈值,fff是激活函数(当时为阶跃函数)。
      意义:将“神经元”从生物学概念转化为可计算的数学模型,奠定 ANN 的理论基石。
    • 1949 年:Hebb 学习规则(学习机制的启蒙)
      Hebb 在《The Organization of Behavior》中提出:“同时激活的神经元之间的连接会增强”(即“fire together, wire together”)。
      数学表达:wij=wij+ηxiyjw_{ij} = w_{ij} + \eta x_i y_jwij=wij+ηxiyjη\etaη为学习率),这是最早的神经网络学习算法,为后续监督学习提供思路。
    • 1958 年:感知机(首个可训练的 ANN 模型)
      Rosenblatt 提出感知机模型,本质是单层线性分类器,能通过梯度下降最小化分类误差。
      局限:仅能处理线性可分问题(如“与”“或”运算),无法解决“异或(XOR)”这类非线性问题。
    • 1960 年:Adaline 与 Delta 规则(优化感知机)
      Widrow 和 Hoff 提出 Adaline(自适应线性神经元),将输出从“离散分类”改为“连续值”,并提出 Delta 规则(最小均方误差 MSE),为后续 BP 算法的误差反向传播埋下伏笔。
    • 1969 年:《Perceptrons》与第一次低谷
      Minsky 和 Papert 在书中严格证明:单层神经网络无法解决非线性问题,而多层网络的训练算法尚无有效方案。
      这一结论直接导致 ANN 研究资金削减,进入长达十余年的“寒冬”。
  • 第二阶段:1980s-1990s(复兴与挑战)

    • 1982 年:Hopfield 网络(递归网络的突破)
      物理学家 Hopfield 提出递归网络模型,利用能量函数实现“联想记忆”(如从模糊图像恢复清晰图像)和优化计算(如旅行商问题 TSP),证明了 ANN 在非监督学习和优化领域的价值。
    • 1974-1986 年:BP 算法的“重生”
      1974 年 Werbos 首次提出反向传播(BP)算法,但未受重视;1986 年 Rumelhart 等人在《Parallel Distributed Processing》中重新发表该算法,证明 BP 能有效训练多层神经网络,解决了 Minsky 指出的“多层训练难题”。
      意义:直接推动 ANN 复兴,多层感知器(MLP)开始广泛应用于语音识别、手写体识别等领域。
    • 1987 年:ICNN 会议(学科规范化)
      IEEE 召开第一届神经网络国际会议(ICNN),标志着 ANN 成为独立学科,学术研究和工业应用进入爆发期。
    • 1990s 初:第二次低谷(统计学习的冲击)
      随着支持向量机(SVM)、决策树等统计学习模型的兴起,ANN 的短板凸显:
      • 理论基础薄弱(如通用近似定理无法指导网络设计);
      • 训练不稳定(易陷入局部最优、梯度消失);
      • 数据需求大(小样本场景下性能不如 SVM)。
        ANN 研究再次降温,直至 2006 年深度学习的出现。
  • 第三阶段:2000s-2010s(深度学习崛起)

    • 2006 年:深度信念网络(DBN)与“预训练”
      Hinton 提出 DBN 模型,通过“逐层预训练 + 全局微调”策略,解决了深度网络(多层隐藏层)的梯度消失问题,首次证明“深度”比“宽度”更重要。
    • 2012 年:AlexNet 与 CNN 革命
      Hinton 团队的 AlexNet 在 ImageNet 竞赛中,以 15.3% 的 Top-5 误差远超第二名(26.2%),核心创新包括:
      • 使用 ReLU 激活函数替代 sigmoid,解决梯度消失;
      • 用 GPU 加速训练(当时首次将 GPU 用于深度学习);
      • 引入重叠池化、局部响应归一化(LRN)。
        意义:深度学习正式“出圈”,CNN 成为计算机视觉的主流模型。
    • 2010s:全面爆发(大数据 + 算力 + 算法)
      云计算(AWS、阿里云)提供大规模算力,大数据时代积累海量标注数据,加上 Adam 优化器、Batch Normalization 等算法改进,深度学习在 NLP(BERT)、语音(DeepSpeech)、推荐系统等领域全面突破,ANN 进入“深度学习时代”。

1.2 深度学习发展历程

下图梳理了深度学习从 ANN 到 Transformer 的核心里程碑:
在这里插入图片描述

1.3 生物神经系统简介(ANN 的仿生来源)

ANN 的设计灵感源于人脑,理解生物神经系统能更好地把握 ANN 的本质:

  1. 生物神经元结构与工作方式
    生物神经元由细胞体、树突、轴突、突触四部分组成,工作流程如下:

    • 树突接收来自其他神经元的化学信号(神经递质);
    • 细胞体将信号整合为电信号,若超过阈值则“激活”;
    • 轴突将电信号传递到突触,通过神经递质传递给下一个神经元。
  2. 规模与传导速度

    • 规模:人脑约含 860 亿个神经元,每个神经元连接 1000-10000 个其他神经元,总连接数超101410^{14}1014,形成复杂的并行网络。
    • 传导速度:生物信号传导速度约 1-100 m/s(远慢于电子信号的3×1083×10^83×108 m/s),但通过并行计算(多神经元同时工作)实现高效信息处理。
  3. 与 ANN 的差异
    ANN 是生物神经系统的“简化版”——人工神经元仅模拟“信号加权求和 + 激活”,而生物神经元的突触可塑性(学习能力)、容错性(部分神经元受损不影响整体)仍远超现有 ANN。

1.4 人工神经网络模型(以前馈网络为例)

前馈神经网络(多层感知器 MLP)是最基础的 ANN 模型,结构分为输入层、隐藏层、输出层,信号仅从输入向输出单向传播(无反馈):

  • 输入层:接收原始数据(如图像的像素值、文本的嵌入向量),神经元数量 = 特征维度(如 MNIST 图像输入层为 784 个神经元,对应 28×28 像素)。
  • 隐藏层:对输入特征进行非线性变换,层数和神经元数量需根据任务调整(如简单分类任务 1-2 层隐藏层即可,复杂任务需更多层)。
  • 输出层:输出模型结果(如分类任务输出类别概率,回归任务输出连续值),神经元数量 = 任务目标数(如二分类输出层 1 个神经元,10 分类 10 个神经元)。

1.5 常用激活函数(引入非线性的核心)

激活函数的作用是为网络引入非线性——若无激活函数,多层网络等价于单层线性网络,无法拟合非线性问题(如异或)。以下是主流激活函数的对比:

函数名称公式图像特点优缺点适用场景
符号函数f(x)={1x≥0−1x<0f(x) = \begin{cases}1 & x\geq0 \\ -1 & x<0\end{cases}f(x)={11x0x<0二值输出,阶跃形优点:简单;缺点:无梯度,无法训练早期感知机(已淘汰)
逻辑 sigmoidf(x)=11+e−xf(x) = \frac{1}{1+e^{-x}}f(x)=1+ex1输出∈(0,1),S 形优点:输出可解释为概率;缺点:梯度消失二分类输出层
双曲正切 tanhf(x)=ex−e−xex+e−xf(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}f(x)=ex+exexex输出∈(-1,1),S 形优点:零中心化;缺点:仍有梯度消失早期隐藏层(已被 ReLU 替代)
ReLUf(x)=max⁡(0,x)f(x) = \max(0, x)f(x)=max(0,x)x≥0 时线性,x<0 时为 0优点:缓解梯度消失,计算快;缺点:死亡神经元现代网络隐藏层(最常用)
Leaky ReLUf(x)={xx≥0αxx<0f(x) = \begin{cases}x & x\geq0 \\ \alpha x & x<0\end{cases}f(x)={xαxx0x<0(α≈0.01)x<0 时非零,微小斜率优点:解决死亡神经元;缺点:α 需调参隐藏层(替代 ReLU 的选择)
Mishf(x)=x⋅tanh⁡(ln⁡(1+ex))f(x) = x \cdot \tanh(\ln(1+e^x))f(x)=xtanh(ln(1+ex))平滑曲线,无尖锐拐点优点:性能优于 ReLU,鲁棒性强;缺点:计算稍慢复杂任务(如目标检测、GAN)
激活函数可视化代码(Python)
import numpy as np
import matplotlib.pyplot as plt# 定义激活函数
def sigmoid(x):return 1 / (1 + np.exp(-x))def tanh(x):return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))def relu(x):return np.maximum(0, x)def leaky_relu(x, alpha=0.01):return np.where(x >= 0, x, alpha * x)def mish(x):return x * tanh(np.log(1 + np.exp(x)))# 生成x值
x = np.linspace(-5, 5, 1000)# 绘图
plt.figure(figsize=(12, 8))
plt.subplot(2, 3, 1)
plt.plot(x, np.where(x >= 0, 1, -1))
plt.title('符号函数')
plt.grid(True)plt.subplot(2, 3, 2)
plt.plot(x, sigmoid(x))
plt.title('Sigmoid')
plt.grid(True)plt.subplot(2, 3, 3)
plt.plot(x, tanh(x))
plt.title('Tanh')
plt.grid(True)plt.subplot(2, 3, 4)
plt.plot(x, relu(x))
plt.title('ReLU')
plt.grid(True)plt.subplot(2, 3, 5)
plt.plot(x, leaky_relu(x))
plt.title('Leaky ReLU')
plt.grid(True)plt.subplot(2, 3, 6)
plt.plot(x, mish(x))
plt.title('Mish')
plt.grid(True)plt.tight_layout()
plt.show()

二、人工神经网络类型(按结构分类)

根据网络中信号的传播方向和结构特点,ANN 可分为四大类:

2.1 前馈网络(Feedforward Network)

  • 定义:信号从输入层→隐藏层→输出层单向传播,无反馈回路,结构最简单。
  • 核心特点:无记忆性(当前输出仅依赖当前输入,与历史输入无关)。
  • 典型模型:多层感知器(MLP)、卷积神经网络(CNN)。
  • 应用场景:静态数据处理(如图像分类、表格数据回归)。

2.2 记忆网络(反馈网络 / 递归网络)

  • 定义:包含反馈回路(隐藏层输出可反馈到自身或前层),能利用历史信息。
  • 核心特点:有记忆性(当前输出依赖当前输入 + 历史输入)。
  • 典型模型:循环神经网络(RNN)、长短期记忆网络(LSTM)、门控循环单元(GRU)。
  • 应用场景:时序数据处理(如文本翻译、语音识别、股票预测)。

2.3 图网络(Graph Neural Network, GNN)

  • 定义:处理图结构数据(如社交网络、分子结构、知识图谱),每个节点代表一个实体,边代表实体间的关系。
  • 核心特点:能捕捉节点间的依赖关系(如社交网络中“朋友的朋友”的影响)。
  • 典型模型:图卷积网络(GCN)、图注意力网络(GAT)。
  • 应用场景:节点分类(如判断社交网络中用户是否为 spam)、链路预测(如预测未来是否会产生新的社交关系)。

2.4 卷积神经网络(CNN)

  • 定义:专为空间数据(如图像、视频)设计的前馈网络,通过“卷积层”提取局部特征。
  • 核心特点:局部感受野、权值共享(减少参数数量,防过拟合)。
  • 应用场景:图像识别(如人脸识别)、目标检测(如自动驾驶中的障碍物检测)、图像生成(如 GAN)。

三、前馈神经网络(多层感知器 MLP)深度解析

MLP 是最基础的前馈网络,理解 MLP 是掌握复杂网络(如 CNN、Transformer)的关键。

3.1 能实现“与”运算的两层 MLP(实例)

  • “与”运算的逻辑规则:输入(x1,x2)(x_1, x_2)(x1,x2)为 (0,0)→0,(0,1)→0,(1,0)→0,(1,1)→1。
    用两层 MLP 实现(输入层 2 个神经元,输出层 1 个神经元,无隐藏层):

  • 网络参数设置
    权重w1=1,w2=1w_1=1, w_2=1w1=1,w2=1(输入对输出的贡献);
    偏置b=−1.5b=-1.5b=1.5(调整激活阈值);
    激活函数:sigmoid(输出概率,取 0.5 为阈值)。

  • 计算过程
    输出y=sigmoid(w1x1+w2x2+b)y = \text{sigmoid}(w_1 x_1 + w_2 x_2 + b)y=sigmoid(w1x1+w2x2+b)

    • 输入 (0,0):y=sigmoid(0+0−1.5)≈0.18<0.5y = \text{sigmoid}(0 + 0 -1.5) ≈ 0.18 < 0.5y=sigmoid(0+01.5)0.18<0.5 → 输出 0;
    • 输入 (1,1):y=sigmoid(1+1−1.5)≈0.82>0.5y = \text{sigmoid}(1 + 1 -1.5) ≈ 0.82 > 0.5y=sigmoid(1+11.5)0.82>0.5 → 输出 1;
      其余输入计算结果均 <0.5,完美实现“与”运算。

    同理,通过调整权重和偏置,MLP 可实现“或”“非”运算;若增加隐藏层,可实现“异或”运算(解决单层网络的局限)。

3.2 通用近似定理(MLP 的理论基础)

  • 定理内容:若激活函数是连续、有界、非多项式的(如 ReLU、sigmoid),则仅需 1 个隐藏层、足够多的神经元,MLP 能以任意精度近似定义在紧致集上的连续函数。
  • 通俗理解:只要隐藏层神经元数量足够,MLP 可以拟合任何复杂的非线性关系(如图像中的物体特征、文本中的语义关联)。
  • 注意事项
    1. “足够多”无明确公式,需根据任务通过实验调整(如从 128、256 个神经元开始尝试);
    2. 隐藏层过多(如深度超过 10 层)可能导致过拟合或训练困难,需结合正则化技巧。

四、网络训练(从“参数随机”到“参数最优”)

网络训练的核心是寻找最优权重和偏置,使模型输出与真实标签的误差最小化。

4.1 前馈网络函数表达式(数学定义)

设 MLP 有LLL层(输入层为第 0 层,输出层为第LLL层),则第lll层的输出为:
a(l)=f(l)(W(l)a(l−1)+b(l))a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)a(l)=f(l)(W(l)a(l1)+b(l))

其中:

  • a(l)a^{(l)}a(l):第lll层的输出(激活值),a(0)a^{(0)}a(0)为输入特征;
  • W(l)W^{(l)}W(l):第lll层的权重矩阵,维度为(第lll层神经元数 × 第l−1l-1l1层神经元数);
  • b(l)b^{(l)}b(l):第lll层的偏置向量,维度为(第lll层神经元数 × 1);
  • f(l)f^{(l)}f(l):第lll层的激活函数(如隐藏层用 ReLU,输出层用 sigmoid)。

4.2 网络训练的目标函数(误差度量)

目标函数(损失函数)用于衡量模型输出与真实标签的差异,常见类型如下:

任务类型目标函数公式(单样本)适用场景
回归均方误差(MSE)L=12∣y−y^∣2\mathcal{L} = \frac{1}{2} | y - \hat{y} |^2L=21yy^2预测连续值(如房价、温度)
二分类二元交叉熵(BCE)L=−yln⁡y^−(1−y)ln⁡(1−y^)\mathcal{L} = -y \ln \hat{y} - (1-y) \ln (1-\hat{y})L=ylny^(1y)ln(1y^)输出 0/1 类别概率
多分类类别交叉熵(CCE)L=−∑c=1Cycln⁡y^c\mathcal{L} = -\sum_{c=1}^C y_c \ln \hat{y}_cL=c=1Cyclny^c输出多类别概率(如 10 分类)

批量损失:对所有样本的损失取平均,即J(W,b)=1N∑i=1NL(yi,y^i)\mathcal{J}(W,b) = \frac{1}{N} \sum_{i=1}^N \mathcal{L}(y_i, \hat{y}_i)J(W,b)=N1i=1NL(yi,y^i)NNN为样本数)。

4.3 梯度下降法(优化核心算法)

梯度下降法是最小化目标函数J(W,b)\mathcal{J}(W,b)J(W,b)的核心算法,基本思想是沿梯度负方向更新参数(梯度是函数上升最快的方向,负梯度即下降最快的方向)。

1. 参数更新公式

W(l)=W(l)−η⋅∂J∂W(l)W^{(l)} = W^{(l)} - \eta \cdot \frac{\partial \mathcal{J}}{\partial W^{(l)}}W(l)=W(l)ηW(l)J
b(l)=b(l)−η⋅∂J∂b(l)b^{(l)} = b^{(l)} - \eta \cdot \frac{\partial \mathcal{J}}{\partial b^{(l)}}b(l)=b(l)ηb(l)J

其中:

  • η\etaη:学习率(步长),控制每次参数更新的幅度(常用值:0.001、0.01、0.1);
  • ∂J∂W(l)\frac{\partial \mathcal{J}}{\partial W^{(l)}}W(l)J:目标函数对W(l)W^{(l)}W(l)的梯度(需通过反向传播计算)。
2. 梯度下降的三种变体
变体类型计算方式优点缺点
批量梯度下降(BGD)用全部样本计算梯度梯度稳定,收敛到全局最优计算量大,不适合大数据集
随机梯度下降(SGD)用单个样本计算梯度计算快,适合大数据集梯度震荡,易陷入局部最优
小批量梯度下降(MBGD)kkk个样本(批量大小)计算梯度平衡稳定性和计算效率需调整批量大小kkk(常用值:32、64、128)

实际训练中几乎都用 MBGD,如 PyTorch 的DataLoader默认按批次加载数据。

4.4 网络误差函数选择的经验

  1. 回归任务优先用 MSE:若数据含异常值,可改用 MAE(平均绝对误差),因为 MSE 对异常值更敏感(平方放大误差)。
  2. 分类任务必须用交叉熵:若用 MSE,输出层激活函数(如 sigmoid)的梯度会非常小(梯度消失),导致训练缓慢;交叉熵能与 sigmoid/tanh 配合,缓解梯度消失。
  3. 类别不平衡用加权交叉熵:若正样本占比仅 10%,可设置权重w正=9,w负=1w_{\text{正}}=9, w_{\text{负}}=1w=9,w=1,避免模型偏向多数类(负样本)。

五、误差反向传播算法(BP 算法:训练 MLP 的“引擎”)

BP 算法是计算目标函数对各层参数梯度的高效方法,核心是链式法则(从输出层反向计算各层误差,再求梯度)。

5.1 BP 算法的核心步骤(以 MLP 为例)

假设网络有输入层、1 个隐藏层、输出层,激活函数分别为 ReLU(隐藏层)和 sigmoid(输出层),目标函数为 MSE。

步骤 1:前馈计算(求各层输出)
  • 隐藏层输出:a(1)=ReLU(W(1)a(0)+b(1))a^{(1)} = \text{ReLU}(W^{(1)} a^{(0)} + b^{(1)})a(1)=ReLU(W(1)a(0)+b(1))
  • 输出层输出:y^=sigmoid(W(2)a(1)+b(2))\hat{y} = \text{sigmoid}(W^{(2)} a^{(1)} + b^{(2)})y^=sigmoid(W(2)a(1)+b(2))
步骤 2:反向计算误差(从输出层到隐藏层)
  • 输出层误差(衡量输出与真实标签的差异):
    δ(2)=(y^−y)⋅y^⋅(1−y^)\delta^{(2)} = (\hat{y} - y) \cdot \hat{y} \cdot (1 - \hat{y})δ(2)=(y^y)y^(1y^)
    y^⋅(1−y^)\hat{y} \cdot (1 - \hat{y})y^(1y^)是 sigmoid 的导数,即∂f(2)∂z(2)\frac{\partial f^{(2)}}{\partial z^{(2)}}z(2)f(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)

  • 隐藏层误差(将输出层误差反向传播到隐藏层):
    δ(1)=(W(2)Tδ(2))⋅I(a(1)>0)\delta^{(1)} = (W^{(2)T} \delta^{(2)}) \cdot \mathbb{I}(a^{(1)} > 0)δ(1)=(W(2)Tδ(2))I(a(1)>0)
    I(a(1)>0)\mathbb{I}(a^{(1)} > 0)I(a(1)>0)是 ReLU 的导数,即a(1)>0a^{(1)}>0a(1)>0时为 1,否则为 0;W(2)TW^{(2)T}W(2)TW(2)W^{(2)}W(2)的转置)

步骤 3:计算梯度并更新参数
  • 权重梯度:
    ∂J∂W(2)=δ(2)⋅a(1)T\frac{\partial \mathcal{J}}{\partial W^{(2)}} = \delta^{(2)} \cdot a^{(1)T}W(2)J=δ(2)a(1)T
    ∂J∂W(1)=δ(1)⋅a(0)T\frac{\partial \mathcal{J}}{\partial W^{(1)}} = \delta^{(1)} \cdot a^{(0)T}W(1)J=δ(1)a(0)T

  • 偏置梯度:
    ∂J∂b(2)=δ(2)\frac{\partial \mathcal{J}}{\partial b^{(2)}} = \delta^{(2)}b(2)J=δ(2)
    ∂J∂b(1)=δ(1)\frac{\partial \mathcal{J}}{\partial b^{(1)}} = \delta^{(1)}b(1)J=δ(1)

  • 参数更新(用小批量梯度下降):
    对批量内所有样本的梯度取平均,再按梯度下降公式更新W(1),b(1),W(2),b(2)W^{(1)}, b^{(1)}, W^{(2)}, b^{(2)}W(1),b(1),W(2),b(2)

5.2 BP 网络学习的基础

  • 误差反向传播的本质:通过链式法则,将输出层的误差“分摊”到各层参数,指导参数更新。
  • 梯度消失问题:若网络层数过多(如 > 5 层),隐藏层误差δ(l)\delta^{(l)}δ(l)会随层数增加而趋近于 0(因为 sigmoid 导数最大仅 0.25,多层相乘后梯度衰减),导致浅层参数无法更新。
  • 解决方法:用 ReLU 激活函数(导数为 1,无衰减)、Batch Normalization(标准化激活值,稳定梯度)。

六、主流神经网络简介(CNN/RNN/Transformer)

除了 MLP,以下三种网络是当前深度学习的核心,需重点掌握:

6.1 CNN 简介(计算机视觉的“利器”)

1. 核心创新:解决 MLP 处理图像的痛点

MLP 处理图像时存在两个问题:

  • 参数爆炸:如 28×28 图像输入 MLP,隐藏层 1000 个神经元,权重数 = 784×1000=78.4 万,而 CNN 通过“权值共享”大幅减少参数;
  • 忽略空间信息:MLP 将图像展平为向量,丢失像素间的位置关系(如“猫的眼睛在鼻子上方”),而 CNN 通过“局部感受野”捕捉空间特征。
2. 核心层与作用
层类型作用关键参数
卷积层(Conv)提取局部特征(如边缘、纹理、形状)卷积核大小(3×3 常用)、步长、填充
池化层(Pool)降维(减少参数)、防过拟合池化大小(2×2 常用)、最大 / 平均池化
全连接层(FC)将卷积层提取的特征映射到类别空间神经元数量
3. 典型模型与应用场景
  • 典型模型:LeNet-5(首个 CNN)、AlexNet(深度学习革命)、ResNet(解决深度梯度消失);
  • 应用场景:图像分类(ResNet)、目标检测(YOLO)、图像分割(U-Net)。

6.2 RNN(时序数据的“专家”)

1. 核心结构:循环连接(捕捉历史信息)

RNN 的隐藏层有反馈回路,隐藏状态hth_tht不仅依赖当前输入xtx_txt,还依赖上一时刻的隐藏状态ht−1h_{t-1}ht1
ht=f(Whht−1+Wxxt+b)h_t = f(W_h h_{t-1} + W_x x_t + b)ht=f(Whht1+Wxxt+b)
yt=Wyht+byy_t = W_y h_t + b_yyt=Wyht+by

其中:

  • hth_thtttt时刻的隐藏状态(记忆历史信息);
  • yty_tytttt时刻的输出。
2. 痛点:长序列依赖问题

当序列过长(如文本长度 > 50),RNN 的梯度会随时间步衰减(梯度消失)或爆炸,无法捕捉长距离依赖(如“我今天去了 [北京],[那里] 的秋天很美”中“那里”指代“北京”)。

3. 改进模型与应用场景
  • 改进模型:
    • LSTM:通过“输入门、遗忘门、输出门”控制信息的存入、遗忘和输出,解决长序列依赖(如 BERT 的编码器用 LSTM);
    • GRU:简化 LSTM 的门控结构(仅更新门和重置门),计算更快,性能接近 LSTM(如语音识别常用 GRU);
  • 应用场景:文本生成(LSTM)、语音识别(GRU)、时序预测(RNN)。

6.3 Transformer(NLP 的“革命”,现扩展到 CV)

1. 核心创新:自注意力机制(Self-Attention)

Transformer 完全抛弃 RNN 的循环结构,用自注意力机制捕捉序列中任意两个元素的依赖关系(如文本中“猫”和“它”的指代关系),且支持并行计算(RNN 需按时间步串行计算,Transformer 可同时处理所有元素)。

2. 核心结构:Encoder-Decoder
  • Encoder:将输入序列(如英文句子)编码为向量表示(含语义信息),由“多头注意力层 + 前馈网络”组成;
  • Decoder:将 Encoder 的向量解码为输出序列(如中文句子),额外增加“掩码多头注意力层”(防止预测时看到未来的词)。
3. 典型模型与应用场景
  • 典型模型:BERT(Encoder-only,用于文本理解)、GPT(Decoder-only,用于文本生成)、ViT(Vision Transformer,用于图像分类);
  • 应用场景:机器翻译(Transformer)、文本摘要(BERT)、图像分类(ViT)、大语言模型(GPT-4)。

七、网络优化注意事项

在实际训练网络时,常遇到过拟合、训练缓慢等问题,以下是关键优化技巧:

1. 数据预处理

  • 归一化 / 标准化:将输入特征缩放到 [0,1] 或均值为 0、方差为 1(如 MNIST 像素归一化到 0-1),避免梯度爆炸;
  • 数据增强:对图像(翻转、裁剪、旋转)、文本(同义词替换、随机插入)增加样本多样性,缓解过拟合。

2. 权重初始化

  • 避免全零初始化:会导致所有神经元输出相同,无法学习;
  • 推荐方法:Xavier 初始化(适合 sigmoid/tanh)、He 初始化(适合 ReLU),PyTorch 的nn.Linear默认用 He 初始化。

3. 学习率调整

  • 初始学习率:从 0.001 开始尝试,太大导致震荡,太小收敛慢;
  • 动态调整:用学习率调度器(如 StepLR、CosineAnnealingLR),训练后期减小学习率以稳定收敛。

4. 过拟合解决

  • Dropout:训练时随机失活部分神经元(如隐藏层失活率 0.5),测试时恢复;
  • 正则化:L1 正则化(权重稀疏)、L2 正则化(权重平滑),PyTorch 中通过weight_decay参数设置;
  • 早停(Early Stopping):监控验证集误差,若连续 5 个 epoch 无下降则停止训练,避免过拟合。

5. 批量大小选择

  • 推荐值:32、64、128(需适配 GPU 内存,如 GPU 内存不足选 32);
  • 注意:批量大小太小会导致梯度震荡,太大可能陷入局部最优。

6. 激活函数与优化器选择

  • 隐藏层:优先用 ReLU 或 Leaky ReLU;
  • 输出层:二分类用 sigmoid,多分类用 softmax,回归用线性激活;
  • 优化器:优先用 Adam(自适应学习率,收敛快),其次用 SGD + 动量(适合大规模数据)。

八、总结

本文从 ANN 的历史、基础模型、训练算法到主流网络,全面梳理了人工神经网络的核心知识。

关键结论

  1. ANN 的发展是“理论突破 + 算力提升 + 数据积累”共同推动的结果;
  2. MLP 是基础,CNN/RNN/Transformer 是针对特定任务的优化模型;
  3. 实战中需结合数据预处理、正则化、学习率调整等技巧,才能训练出高性能模型;
  4. 建议读者结合代码实战(如用 PyTorch 实现 MLP 和 CNN),加深对知识点的理解。后续可深入学习具体模型的源码(如 BERT、GPT),或探索多模态模型(如 CLIP)等前沿方向。
http://www.dtcms.com/a/482276.html

相关文章:

  • 岳阳网站开发绍兴seo
  • STM32开发实例_基于STM32单片机的红外测温系统(电路图+程序+流程图)24-32-59
  • NLTK库用法示例:Python自然语言处理入门到实践
  • 待补充 五大关系数据库(sqlserver、mysql、oracle、pgsql、sqlite)的列类型:目录
  • 往kafka创建生产者和消费者,并且打数据和消费数据
  • linux iptables介绍
  • sqlite: 动态列类型
  • 做商品网站数据库有哪些阜阳做网站多少钱
  • 房地产开发公司网站网站推广方案200字
  • Android MVVM架构解析:现代开发的首选模式
  • 车机系统的「共享镜头」:如何实现多用户同时拍照
  • 开源链动2+1模式AI智能名片S2B2C商城小程序在竞争激烈的中低端面膜服装行业中的应用与策略
  • Java学习路线推荐!
  • 网站伪静态是什么意思个人网站设计模板素材
  • 萧山工程建设有限公司网站济南网站建设公司哪家专业
  • KingbaseES JDBC 深度实战指南(上):从驱动选型到连接管理,夯实国产数据库交互基础
  • Datawhale25年10月组队学习:math for AI+Task1简介和动机
  • Blender从入门到精通:建模、材质与动画完整实战教程
  • QT QML交互原理:信号与槽机制
  • 怎么做网站投放广告的代理商临沂市罗庄区住房和建设局网站
  • 新浪云sae免费wordpress网站wordpress文章图片本地化
  • 蜱媒病原体的宏基因组发现与机器学习预测模型构建
  • MySQL----锁
  • 《探秘 Linux 进程控制:驾驭系统运行的核心之力》
  • 客户价值体系构建咨询——南方略咨询集团
  • 做户外旅游网站微信网页版官网登录
  • 从QT软件开发到UI设计落地:兰亭妙微的全流程体验方法论
  • 开源 C++ QT QML 开发(二十)多媒体--摄像头拍照
  • Redis速通
  • 误删mysql某表数据,通过binlog2sql工具数据恢复