一.多层线性神经网络

但是,串联的神经元若只有传递的作用,那么一根和多根则没有区别;同理,人工神经元若都是线性网络,那么一层和多层便没有区别。

二.多层非线性神经网络

因此,通过模仿生物神经元当接受的刺激达到一定阈值时才会传递神经冲动的现象,我们引入了激活函数。

1、生物原型:神经元的「阈值开关」

  • 位置:图中蓝色箭头指向突触 / 胞体区域,这是神经元整合输入信号、决定是否发放冲动的关键位置。
  • 机制:模拟「刺激阈值」—— 只有当输入信号的总和超过阈值时,神经元才会被激活,产生并传递神经冲动;否则保持抑制状态。
  • 本质:这是一种非线性的决策机制,是大脑处理复杂信息的基础。

2、人工实现:激活函数的位置与计算

1. 激活函数的位置

在上侧的简单神经网络中:

  • 输入层:x1, x2(原始数据特征feature)
  • 隐藏层:黄色神经元 r1, r2 —— 激活函数就作用于此(右侧,及线性函数作用之后)
  • 输出层:红色神经元 z1(最终结果)

2. 激活函数的数学计算流程

以 r1 为例,其计算过程分为两步:

  1. 线性加权求和:z_{1} = w_{11}x_{1}+w_{12}x_{2}+b_{1}

    • b_{1}:偏置(bias),相当于神经元的基础阈值
    • w_{11},w_{12}:权重(weight),代表不同输入的重要程度
    • 这一步是线性变换,将输入信息整合为一个数值。
  2. 非线性激活:r1​=sigmoid(z1​)

    • sigmoid:是一种典型的激活函数,将线性输出 z1 压缩到 (0, 1) 区间
    • 这一步模拟了生物神经元的阈值决策:输入信号越强,输出值越接近 1(激活);越弱则越接近 0(抑制)。

激活函数的作用:

  • 如果没有激活函数,无论网络多么复杂,最后的输出都是输入的线性组合,而纯粹的线性组合并不能解决更为复杂的问题。
  • 引入激活函数之后,由于激活函数都是非线性的,这样就给神经元引入了非线性元素,使得神经网络可以逼近任何非线性函数,这样使得神经网络应用到更多的非线性模型中。

模型最终结构:

三.神经网络的参数

Ⅰ、公式结构拆解(单隐藏层前馈网络)

公式:\hat{y} = b_{2}+c^{T} \sigma (b_{1}+Wx)各部分含义:

  • \hat{y}​:模型预测输出(模型的最终结果)
  • x:输入特征(feature,已知数据,非可训练参数)
  • W:隐藏层权重矩阵(连接输入层与隐藏层)
  • b_{1}:隐藏层偏置向量(隐藏层神经元的阈值偏移)
  • σ(⋅):激活函数(如 Sigmoid/ReLU,固定函数,非可训练参数)
  • c^{T}:输出层权重向量(连接隐藏层与输出层)
  • b_{2}:输出层偏置(输出层的阈值偏移)

Ⅱ、可训练参数集合 θ

所有未知参数(Unknown parameters)被打包为一个参数向量 θ,包含四类(总结来看就两类:权重和偏置)

参数类别符号作用说明
隐藏层权重W控制输入特征对隐藏层神经元的影响强度,是模型学习的核心模式载体
隐藏层偏置b_{1}调整隐藏层神经元的激活阈值,避免输入为 0 时输出恒为 0,增强模型表达灵活性
输出层权重cT控制隐藏层特征对最终输出的贡献度,完成从隐藏特征到任务结果的映射
输出层偏置b_{2}调整最终输出的基准偏移,提升模型拟合数据分布的能力

💡 本质:将矩阵 / 向量形式的权重与偏置全部「展平」为一维向量,便于后续梯度计算与参数更新(反向传播算法的基础)。


Ⅲ、核心逻辑:参数即模型

  1. 输入与参数分离:x 是数据(已知),W,b_{1},c^{T},b_{2} 是模型待学习的知识(未知)。
  2. 训练的本质:通过梯度下降等优化算法,不断调整 θ 中所有参数,使预测 \hat{y} 尽可能逼近真实标签 y,即最小化损失函数 L(​\hat{y},y)。
  3. 参数规模:参数数量由网络结构决定 —— 输入维度、隐藏层神经元数、输出维度共同决定 θ 的长度,这也是大模型「参数量万亿级」的来源。

Ⅳ、总结

  1. 可训练参数 = 权重 + 偏置:W,b_{1},c^{T},b_{2} 是模型唯一需要学习的部分,激活函数与输入特征固定。
  2. 参数打包 θ:将所有参数展平为一维向量,是优化算法的标准操作,便于统一计算梯度和更新。
  3. 训练即寻优:神经网络训练的过程,就是在参数空间 θ 中寻找一组最优值,让模型对数据的预测误差最小。

四.深度学习的训练过程

1、基础场景:单步链式求导

1. 模型结构

以最简单的单参数神经元为例:\hat{y}=σ(r),r=wx+b

  • y^​:模型预测输出
  • σ(⋅):激活函数(如 Sigmoid)
  • r:线性加权和(中间变量)
  • w:待优化的权重参数
  • x:输入特征,b:偏置

2. 梯度计算(链式法则)

目标是计算损失 L 对权重 w 的梯度 ∂L/∂w​,根据链式求导法则:∂L/∂w​=∂L/∂r​ ⋅ ∂r/∂w​拆解:

  1. ∂L/∂r​:损失对中间变量 r 的梯度,由激活函数导数 σ′(r) 传递而来。
  2. ∂r/∂w​:中间变量 r 对权重 w 的梯度,直接等于输入 x(因 r=wx+b)。

💡 本质:梯度通过「函数复合关系」逐层传递,是反向传播的数学基础。

      照应前文要求激活函数可以求导。


2、复杂场景:深度网络的链式求导(核心难点)

1. 深度模型结构

深度网络是多层函数嵌套,形式为:

每一层都对应一个中间变量r_{1},r_{2},...,r_{n},预测值是这些函数的嵌套复合结果。

2. 梯度计算:长链乘积

此时,损失对底层权重 w 的梯度变为长链乘积形式:

  • 链长 = 网络层数,层数越深,乘积项越多。
  • 每一项是激活函数的导数(如)与权重的乘积,通常是小于 1 的小数(如 Sigmoid 导数最大值为 0.25)。

3. 核心问题:梯度消失 / 爆炸

在反向传播过程中:

  • 梯度消失:若每一项导数都小于 1,长链乘积后梯度会趋近于 0,底层参数几乎无法更新(模型「学不动」)。
  • 梯度爆炸:若某层导数大于 1,长链乘积后梯度会指数级增长,导致参数更新过大、模型不稳定(训练崩溃)。
  • 因此深度网络的梯度传播极易失效。

三、关键概念与技术呼应

1. 链式求导 = 反向传播的数学内核

反向传播算法本质就是高效计算链式求导的工程实现:

  • 从输出层(损失 L)开始,反向逐层计算梯度,复用中间结果,避免重复计算。
  • 是所有深度学习框架(PyTorch/TensorFlow)自动微分的核心原理。

2. 损失函数曲面的直观理解

图中左侧的波浪形曲线代表损失函数曲面:

  • 横轴:参数空间(如权重 w)
  • 纵轴:损失值 L
  • 梯度下降的目标是沿曲面「下坡」找到最小值,但深度网络的曲面往往崎岖不平(局部最优、鞍点多),且梯度消失 / 爆炸会让「下坡」变得异常困难。

3. 解决方案

为应对梯度消失 / 爆炸,工业界发展出关键技术:

  • ReLU 激活函数:导数在正区间恒为 1,缓解梯度消失。
  • 残差连接(ResNet):通过跳跃连接让梯度「直连」底层,缩短梯度传播路径。
  • 层归一化(Layer Norm):稳定梯度分布,避免梯度剧烈波动。

层归一化(Layer Norm)

1.简单理解:把每一层的输出,强行变成 “均值接近 0,方差接近 1” 的分布。

解释:神经网络每一层输出,有时候太大、有时候太小、有时候乱跳。Layer Norm 就是把它们拉回一个稳定、标准的范围

2.为什么要层归一化

如果某一层输出:

  • 太大 → 激活函数(如 sigmoid)进入饱和区 → 梯度接近 0 → 梯度消失
  • 太小 → 数据没区分度 → 模型学不动
  • 每批次变化剧烈 → 梯度乱抖 → 训练不稳定、不收敛

Layer Norm 就是为了解决:每层输出分布不稳定 → 梯度不稳定。

3.做了什么

给定一层的输出向量(比如 BERT 里某层的 hidden state):

  1. 求均值
  2. 减均值 → 让均值 = 0
  3. 除以标准差 → 让方差 = 1

4.好处

  • 稳定每层分布不让数据忽大忽小。

  • 稳定梯度,防止梯度消失

  • 让训练更快、更稳定、更容易收敛

  • 不依赖 batch 大小(和 Batch Norm 最大区别)

5.Layer Norm和 Batch Norm 的区别

  • Batch Norm:按 “特征维度” 归一,同一特征不同样本
  • Layer Norm:按 “样本维度” 归一,同一样本所有特征

一句话记忆:BN 看一批样本的同一列,LN 看一个样本的所有列

BERT、Transformer 全部用 Layer Norm,因为 NLP 句子长度不固定,BN 不适用。


四、总结

  1. 数学核心:链式求导是梯度计算的唯一工具,决定了梯度如何在网络中传递。
  2. 深度困境:网络层数越深,梯度乘积链越长,梯度消失 / 爆炸是必然的数学结果。
  3. 技术本质:深度学习的优化算法(如 Adam、残差网络),本质都是在缓解长链乘积带来的梯度不稳定问题,让模型能够有效训练。

五.名词解析

1.全连接网络

全连接网络是最基础的神经网络结构,也叫「多层感知机(MLP)」,是理解深度学习的起点。

全连接 = 层与层之间「两两相连」:

  • 任意一层的每个神经元,都和下一层的所有神经元两两相连。
  • 没有局部连接、没有权重共享,信息在层间是「完全流通」的。

直观结构(以 2 层全连接为例):输入层 → 隐藏层1 → 隐藏层2 → 输出层

  • 输入层每个节点 → 隐藏层 1 所有节点
  • 隐藏层 1 每个节点 → 隐藏层 2 所有节点
  • 隐藏层 2 每个节点 → 输出层所有节点


2.欠拟合与过拟合

1. 欠拟合(Underfitting)

  • 定义:模型过于简单,无法捕捉数据中的基本规律,在训练集和测试集上都表现很差。
  • 直观比喻:学生上课没听懂,连课本例题都做不对,考试自然也考不好。
  • 表现:训练集损失高,测试集损失也高,二者差距小但整体水平低。

2. 过拟合(Overfitting)

  • 定义:模型过于复杂,把训练数据中的噪声、细节甚至错误都当成了规律,在训练集上表现极好,但在测试集 / 新数据上表现极差。
  • 直观比喻:学生死记硬背课本例题,连标点符号都背下来了,换一道同类型新题就完全不会做。
  • 表现:训练集损失极低,测试集损失显著升高,二者差距大。

3.解决方案:针对性优化策略

①. 解决欠拟合(让模型变强)

目标:提升模型容量,让它能学到数据规律

  1. 增加模型复杂度:
    • 增加网络层数(加深)
    • 增加每层神经元数量(加宽)
    • 换用更强大的激活函数(如 ReLU 替代 Sigmoid)
  2. 延长训练时间:
    • 增加训练轮数(Epochs)
    • 调整优化器(如换用 Adam 替代 SGD)
  3. 特征工程:
    • 加入更多有意义的特征
    • 对特征做非线性变换(如平方、交叉项)
②. 解决过拟合(让模型「笨」一点,更泛化)

目标:限制模型容量,防止它学习噪声

  1. 数据增强(Data Augmentation):
    • 图像:翻转、裁剪、旋转、加噪声
    • 文本:同义词替换、随机掩码
    • 本质:人为增加数据多样性,让模型学习更通用的规律
  2. 正则化(Regularization):
    • L1/L2 正则化:在损失函数中加入参数惩罚项,防止参数过大
    • Dropout:训练时随机让部分神经元失活,打破神经元间的共适应
  3. 简化模型:
    • 减少网络层数 / 神经元数量
    • 提前停止训练(Early Stopping):当验证损失不再下降时停止训练
  4. 增加训练数据:收集更多真实数据,从根源上减少噪声的影响

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐