#Snow{ position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 99999; background: rgba(255,255,240,0.1); pointer-events: none; }

深度学习基础

深度学习基础核心知识点笔记

一、感知机(深度学习的"最小计算单元")

感知机是模拟生物"单个神经元信号传递"的简化模型,是神经网络的底层基石,核心解决"如何对输入数据做初步变换"的问题。

1. 核心定义与定位

  • 范畴:属于传统机器学习模型(非深度学习),本质是"线性分类器",数学逻辑为主(与脑科学的神经元工作机制仅为"类比",无直接生物学关联)。
  • 作用:为神经网络提供"输入→加权→激活→输出"的基础计算范式,单个感知机可解决简单线性可分问题(如"判断学生是否及格":输入成绩,输出"及格/不及格")。

2. 完整工作流程

感知机的计算需包含输入、加权求和(含偏置)、激活函数、输出四步,完整流程如下:

  1. 输入层:接收多个"特征输入"(如判断是否下雨的特征:湿度\(X_1\)、云量\(X_2\)、风速\(X_3\)),每个输入对应一个权重\(W\)\(W_1, W_2, W_3\))——权重越大,代表该特征对输出的影响越强(如湿度对下雨的影响比风速大,则\(W_1 > W_3\))。

  2. 加权求和(含偏置):计算"输入×权重"的总和后,需加上偏置项\(b\)(Bias),公式为:

    \[z = X_1W_1 + X_2W_2 + X_3W_3 + b \]

    • 偏置项作用:调整输出的"基线",避免因输入全为0导致模型无法激活(例如:即使湿度、云量都为0,偏置\(b\)可代表"默认下雨概率")。
  3. 激活函数处理:将\(z\)输入激活函数\(f(\cdot)\),实现"非线性变换"——这是感知机从"简单线性计算"到"能拟合复杂关系"的关键(若无激活函数,感知机仅能做线性回归/分类)。

    视频及实际应用中常见激活函数对比:

激活函数类型 公式(简化) 适用场景 特点
阶跃函数 \(f(z)=1\)\(z≥0\));\(f(z)=0\)\(z<0\) 二分类任务(如"是/否"判断) 仅输出0/1,无中间值,无法传递梯度(不适合深度学习)
Sigmoid函数 \(f(z)=\frac{1}{1+e^{-z}}\) 二分类任务输出层(输出概率0~1) 输出平滑,可传递梯度,但易出现"梯度消失"(输入过大/过小时导数趋近0)
ReLU函数 \(f(z)=\max(0,z)\) 隐藏层(尤其是深层网络) 计算简单,缓解梯度消失,是目前最常用的隐藏层激活函数
  1. 输出层:激活函数的结果即为感知机的最终输出\(Y\),完整公式:

    \[Y = f(X_1W_1 + X_2W_2 + X_3W_3 + b) \]

3. 关键局限性

单个感知机仅能处理线性可分问题,无法解决"异或(XOR)"这类非线性问题——这是神经网络诞生的核心原因:

  • 例:异或问题需求"输入(0,0)输出0;(0,1)输出1;(1,0)输出1;(1,1)输出0",用感知机无法找到一条直线将"输出1"和"输出0"的样本完全分开,而多个感知机构成的神经网络可通过多层计算解决。

二、神经网络(感知机的"多层协同网络")

神经网络是将多个感知机(称为"神经元")按"层级"连接形成的复杂模型,核心解决"感知机无法处理非线性问题"的局限,模拟人脑"多神经元协同处理信息"的过程。

1. 定义与核心优势

  • 别称:早期称"多层感知机(MLP)",现统称"神经网络"(强调与脑科学的类比,增强AI属性)。
  • 核心优势:通过"多层隐藏层+非线性激活函数"的组合,具备拟合任意非线性函数的能力(根据"万能近似定理",足够多的隐藏层和神经元可逼近任何连续函数)。

2. 完整网络结构

神经网络的结构分为输入层、隐藏层、输出层,层与层之间为"全连接"(即上一层每个神经元都与下一层所有神经元相连),具体定义与实例如下:

层级类型 定义 节点数(神经元数量)确定规则 实例(以"房价预测"任务为例)
输入层 接收原始数据的"入口层",无激活函数,仅传递数据 等于输入数据的"特征数"(每个特征对应一个节点) 房价预测的特征:面积、房龄、楼层 → 输入层节点数=3
隐藏层 位于输入层与输出层之间,负责"提取数据特征",可多层(≥1层) 无固定规则,通常根据任务复杂度调整(如简单任务1层,复杂任务3~5层) 设1层隐藏层,节点数=5(通过经验或交叉验证确定)
输出层 输出模型预测结果的"出口层",激活函数需根据任务选型 等于任务的"输出维度"(预测目标数量) 房价预测是"回归任务"(输出具体价格)→ 输出层节点数=1

实例:房价预测神经网络的结构示意图

输入层(3节点):面积(X1) → 隐藏层(5节点):神经元1、神经元2、神经元3、神经元4、神经元5 → 输出层(1节点):预测房价(Y)
                房龄(X2) → (全连接,每个输入节点连所有隐藏节点)
                楼层(X3) →

3. 数据计算逻辑(分层拆解)

神经网络的计算是"逐层传递、每层独立计算",以"输入层→隐藏层→输出层"为例:

  1. 输入层→隐藏层

    • 输入层节点(\(X_1, X_2, X_3\))与隐藏层每个神经元的权重(如隐藏层神经元1的权重\(W_{11}, W_{21}, W_{31}\))相乘求和,加偏置\(b_1\),得到\(z_1 = X_1W_{11} + X_2W_{21} + X_3W_{31} + b_1\)
    • \(z_1\)应用激活函数(如ReLU),得到隐藏层神经元1的输出\(a_1 = \max(0, z_1)\)
    • 重复上述步骤,得到隐藏层所有神经元的输出(\(a_1, a_2, a_3, a_4, a_5\))。
  2. 隐藏层→输出层

    • 隐藏层输出(\(a_1\)~\(a_5\))与输出层神经元的权重(\(W_{1o}, W_{2o}, ..., W_{5o}\))相乘求和,加偏置\(b_o\),得到\(z_o = a_1W_{1o} + a_2W_{2o} + ... + a_5W_{5o} + b_o\)
    • \(z_o\)应用激活函数(回归任务用"恒等函数",即\(f(z)=z\)),得到最终预测输出\(Y_{\text{实际}} = z_o\)

三、反向传播算法(BP:神经网络的"学习引擎")

反向传播(Backpropagation,简称BP)是神经网络"调整权重以降低误差"的核心算法,本质是"用误差指导权重修改",类比人类"做错后反思并修正"的学习过程。

1. 核心逻辑与数学基础

  • 核心逻辑正向传播算误差,反向传播求梯度,梯度下降改权重——通过正向传播得到预测误差,再反向计算各层权重对误差的"贡献度"(即梯度),最后用梯度下降法调整权重,减少误差。
  • 数学基础链式法则(复合函数求导法则)——误差是"权重的复合函数",需从输出层反向逐层求导,才能得到每个权重对误差的影响(梯度)。

2. 完整执行步骤

以"房价预测任务(目标输出\(Y_{\text{目标}}=100\)万元)"为例,详细拆解反向传播的每一步:

步骤1:初始化参数(权重与偏置)

  • 随机初始化所有层的权重(如\(W_{11}=0.2, W_{21}=0.5, ...\))和偏置(如\(b_1=0.1, b_o=0.3\))——初始参数是随机的,因此首次预测误差会很大。

步骤2:正向传播计算实际输出

  • 按"输入层→隐藏层→输出层"的流程,计算出模型的实际预测值\(Y_{\text{实际}}\)(如首次计算得到\(Y_{\text{实际}}=85\)万元)。

步骤3:计算误差

  • 误差通过损失函数(Loss Function) 量化,不同任务用不同损失函数,视频及实际应用中常见2类:
    1. 均方误差(MSE):适用于回归任务(如房价预测),公式为:

      \[\text{Loss} = \frac{1}{2}(Y_{\text{目标}} - Y_{\text{实际}})^2 \]

      实例:\(Y_{\text{目标}}=100\)\(Y_{\text{实际}}=85\)\(\text{Loss} = \frac{1}{2}(100-85)^2 = 112.5\)
    2. 交叉熵损失(Cross-Entropy):适用于分类任务(如"判断图片是否为猫"),公式简化为:

      \[\text{Loss} = -[Y_{\text{目标}} \times \ln(Y_{\text{实际}}) + (1-Y_{\text{目标}}) \times \ln(1-Y_{\text{实际}})] \]

      特点:对分类任务的误差更敏感,训练速度更快。

步骤4:反向传播求梯度(核心步骤拆解)

梯度是"损失函数对权重的偏导数"(\(\frac{\partial \text{Loss}}{\partial W}\)),代表"权重每变化1单位,损失会变化多少"——梯度的正负决定权重修改方向,绝对值决定修改幅度。

以"输出层权重\(W_{1o}\)"和"隐藏层权重\(W_{11}\)"为例,梯度计算逻辑:

  1. 输出层权重梯度(如\(W_{1o}\)):
    损失对\(W_{1o}\)的偏导数 = 损失对\(z_o\)的偏导数 × \(z_o\)\(W_{1o}\)的偏导数
    即:\(\frac{\partial \text{Loss}}{\partial W_{1o}} = \frac{\partial \text{Loss}}{\partial z_o} \times a_1\)

    • 其中\(\frac{\partial \text{Loss}}{\partial z_o} = (Y_{\text{实际}} - Y_{\text{目标}}) \times f'(z_o)\)\(f'(z_o)\)是输出层激活函数的导数),\(a_1\)是隐藏层神经元1的输出。
  2. 隐藏层权重梯度(如\(W_{11}\)):
    损失对\(W_{11}\)的偏导数 = 损失对\(z_1\)的偏导数 × \(z_1\)\(W_{11}\)的偏导数
    即:\(\frac{\partial \text{Loss}}{\partial W_{11}} = \frac{\partial \text{Loss}}{\partial z_1} \times X_1\)

    • 其中\(\frac{\partial \text{Loss}}{\partial z_1} = \left( \sum_{i=1}^5 \frac{\partial \text{Loss}}{\partial z_o} \times W_{io} \right) \times f'(z_1)\)\(f'(z_1)\)是隐藏层激活函数的导数),需先汇总输出层对隐藏层的误差贡献,再求导。

步骤5:用梯度下降法修改权重

权重修改公式为:

\[W_{\text{新}} = W_{\text{旧}} - \varepsilon \times \frac{\partial \text{Loss}}{\partial W} \]

(注意:原笔记公式符号有误,正确应为"减梯度"——因为梯度方向是损失增大的方向,需沿梯度反方向修改权重以减小损失)

  • 各参数含义:
    • \(\varepsilon\)学习率(Learning Rate),控制权重修改幅度(通常取0.001~0.1),例:\(\varepsilon=0.01\)
    • \(\frac{\partial \text{Loss}}{\partial W}\):权重的梯度(如\(W_{1o}\)的梯度计算得-3)。
  • 实例:若\(W_{1o}\)旧值=0.8,梯度=-3,\(\varepsilon=0.01\)\(W_{1o}\)新值=0.8 - 0.01×(-3) = 0.83。

步骤6:迭代优化

  • 单次反向传播仅修改一次权重,无法让误差降至最低,需重复"正向传播→计算误差→反向传播→修改权重"的流程,直到误差稳定在较小值。
  • 实际训练中,会将数据分成"批次(Batch)",每处理完一个批次的所有样本,才修改一次权重(称为"一次迭代(Iteration)");处理完所有批次的样本,称为"一个epoch"。

四、梯度下降法(反向传播的"权重修改工具")

梯度下降法是"利用梯度调整权重,使损失函数最小化"的优化算法,是反向传播的核心支撑——没有梯度下降,反向传播计算出的梯度就无法用于权重修改。

1. 核心思想

类比"人从山上下来找最低点":

  • 山的高度 = 损失函数值(越高代表误差越大)。
  • 人的位置 = 当前权重(一组权重对应一个"位置")。
  • 梯度 = 山在当前位置的"坡度方向"(坡度最陡的方向,即损失增大最快的方向)。
  • 梯度下降 = 人沿"坡度反方向"下山(即沿损失减小最快的方向修改权重),直到走到山底(损失最小,权重最优)。

2. 常见梯度下降类型对比

实际训练中,根据"每次处理样本数量"的不同,梯度下降分为3类:

类型 核心逻辑 优点 缺点 适用场景
批量梯度下降(BGD) 每次用全部训练样本计算梯度,修改一次权重 梯度稳定,易收敛到全局最优 计算量大,训练慢(样本多时有内存问题) 小数据集(样本数<1万)
随机梯度下降(SGD) 每次用1个训练样本计算梯度,修改一次权重 计算量小,训练快 梯度震荡剧烈(单个样本误差波动大),难收敛到全局最优 大数据集(样本数>10万),需快速迭代
小批量梯度下降(Mini-batch GD) 每次用一小批样本(如32、64、128个)计算梯度,修改一次权重 兼顾速度与稳定性(梯度比SGD平滑,计算量比BGD小) 需手动调整"批次大小" 绝大多数场景(工业界默认选择)

3. 梯度下降的关键问题(补充解决方案)

  1. 学习率选择问题

    • 问题:学习率太大→权重修改幅度过大,导致损失震荡不收敛;学习率太小→训练速度极慢,甚至陷入"局部最优"(山的小洼地,不是最低谷)。
    • 解决方案:采用"学习率衰减"(初始学习率大,随着训练次数增加逐渐减小,如每10个epoch衰减为原来的0.9)。
  2. 梯度消失/梯度爆炸

    • 问题:深层网络中,梯度从输出层反向传递到输入层时,会因"激活函数导数<1"(如Sigmoid导数最大0.25)导致梯度越来越小(梯度消失),或因"权重>1"导致梯度越来越大(梯度爆炸),最终输入层权重无法更新。
    • 解决方案:
      • 用ReLU激活函数(缓解梯度消失)。
      • 权重初始化采用"He初始化""Xavier初始化"(避免权重过大/过小)。
      • 用"批量归一化(BN)"(让每层输入数据分布稳定,减少梯度波动)。

五、关键补充概念

概念 定义与作用 补充说明
特征归一化(Normalization) 将输入特征的取值范围统一到"01"或"-11"(如将"面积(100200㎡)"归一化为"01","房龄(130年)"归一化为"01") 作用:避免因特征取值范围差异导致权重更新不均衡(如面积的权重更新幅度远大于房龄),加速模型收敛
过拟合(Overfitting) 模型在"训练集"上误差极小,但在"测试集"上误差很大(模型"死记硬背"训练数据,无法泛化到新数据) 解决方法:1. 增加训练数据;2. 用"正则化(L1/L2)"(给权重加惩罚,避免权重过大);3. 用" dropout"(训练时随机"关闭"部分神经元,减少过拟合)
欠拟合(Underfitting) 模型在"训练集"和"测试集"上误差都很大(模型复杂度不够,没学会数据规律) 解决方法:1. 增加神经网络的隐藏层/神经元数量;2. 延长训练时间(增加epoch);3. 更换更复杂的模型(如CNN、Transformer)
收敛(Convergence) 随着训练迭代,模型的损失值不再明显下降,权重修改幅度趋近于0(如两次迭代的损失差<0.0001) 收敛不代表"损失为0",而是损失稳定在"可接受范围"(如房价预测误差<5万元),此时可停止训练

六、知识点逻辑链与可视化总结

1. 逻辑链(从基础到应用)

感知机(线性计算)→ 神经网络(多层感知机+激活函数,解决非线性问题)→ 反向传播(计算误差对权重的梯度)→ 梯度下降(用梯度修改权重,降低误差)→ 训练(迭代优化,直到收敛)→ 应用(预测/分类)

2. 简化流程图

graph TD A[输入数据(如面积、房龄)] --> B[神经网络(输入层→隐藏层→输出层)] B --> C[正向传播:计算实际输出Y实际] C --> D[计算损失(MSE/交叉熵)] D --> E[反向传播:计算各权重的梯度] E --> F[梯度下降:修改权重(W新=W旧-ε×梯度)] F --> G{损失是否收敛?} G -- 否 --> C G -- 是 --> H[输出最优模型,用于预测新数据]

注:若博客园不显示Mermaid流程图,需在博客园后台"选项"中开启"允许使用Mermaid语法"。

七、常见误区澄清

  1. "神经网络和人脑一样":错误。神经网络仅"类比"人脑神经元的连接方式,其计算逻辑是数学模型,与脑科学的神经元工作机制(如生物电信号、神经递质)无直接关联。
  2. "感知机是深度学习模型":错误。感知机是传统机器学习模型,深度学习的核心是"多层神经网络+反向传播",需至少包含1层隐藏层。
  3. "学习率越大,训练越快":错误。学习率过大可能导致损失"震荡不收敛"(权重在最优值附近来回波动),反而需要更多时间调整,甚至无法训练出可用模型。
posted @ 2025-10-02 21:17  繁花孤城  阅读(6)  评论(0)    收藏  举报