深度学习(吴恩达)
x向量表示原始数据如下图layer1 到 layer3输出激活值(向量)。通过权重和激活函数提取抽象特征。layer4, 生成最终预测结果(如分类概率)。:每层的圆圈代表一个神经元,负责接收输入信号并计算输出。
一、神经网络基础
输入层: x向量表示原始数据
隐藏层: 如下图 layer1 到 layer3输出激活值(向量)。通过权重和激活函数提取抽象特征。
输出层: layer4, 生成最终预测结果(如分类概率)。
神经元(节点):每层的圆圈代表一个神经元,负责接收输入信号并计算输出。
例图:

1.1 激活函数
引入非线性,使网络能够拟合复杂函数。
三类激活函数:

导函数:
1) sigmoid:

2) Tanh:

3) ReLU:

备注:
1) Sigmoid的梯度最大仅为0.25,经过10层传递后梯度衰减至< 0.000001,而ReLU在激活区梯度恒为1,彻底解决深层梯度消失。因此常用激活函数ReLU
2) 激活函数使得模型非线性。神经元都是线性回归则神经网络只是一个线性回归。
1.2 前向传播与反向传播
前向传播: 预测值的生成过程

备注: 前向传播时会缓存 的值,以便在反向传播中直接使用,避免重复计算。
反向传播: 通过链式法则,依次计算每一层的梯度, 优化参数


逻辑归回梯度下降举例: 激活函数为sigmoid

神经网络反向传播例图: X.shape= (特征数, 样本数)

例: 3层的前向传播与反向传播

例: 神经网络中的前向与反向传播

续上图中各参数计算 (向量形式) :

W与b的维度总结:

梯度检验:
数学原理:

应用:

向量计算:

1.3 损失函数
MSE(Mean Squared Error,均方误差)
核心思想: 评估预测值与真实值之间的“距离”, 计算所有样本的预测值与真实值的平方差的均值。
数学公式:

交叉熵(Cross-Entropy)
核心思想: 衡量预测概率分布与真实分布的“差异程度”, 通过对数概率评估分类结果的错误性,差异越大损失值越高。
数学公式(Sigmoid二分类):
![]()
多分类扩展(Softmax交叉熵):
![]()
1.4 梯度消失与梯度爆炸
:第 i 个样本属于类别 k 的 one-hot编码(真实值)
:模型预测第 i 个样本属于类别 k 的概率
原因:反向传播通过链式法则计算梯度

梯度消失: 假设5层网络每层梯度系数=0.5

梯度爆炸: 假设5层网络每层梯度系数=2

二、关键技术
2.1 Dropout正则化
通过随机丢弃神经网络中神经元的输出值来防止过拟合的正则化技术
训练阶段:每次第 l 层训练,以概率 p(丢弃率)将神经元的输出置零,同时将保留神经元的输出值放大倍(保持激活值的期望不变)。每层p可不同。
测试阶段: 关闭Dropout, 将所有权重 W 乘以保留概率, 仅一次。
2.2 权重初始化
随机初始化:避免W矩阵秩为一, 导致神经元重复。
He权重初始化: 针对使用ReLU激活函数, 保持前向传播中输出的方差和反向传播中梯度的方差稳定。解决梯度消失或梯度爆炸问题
ReLU的特殊性:f(x)=max(0,x) 会将负值置零,前向传播中,约 50%的神经元输出为0
He权重初始化原理:控制激活值方差
![]()
数学推导:

权重初始化约束条件:

2.3 批处理训练
基本概念:
- 批(Batch):每次迭代中用于计算梯度的一小部分数据样本。
- 批大小(Batch Size):每个批中包含的样本数量
- 周期(Epoch):整个训练数据集被完整遍历一次。
- 每个周期的迭代次数 = 总样本数 / 批大小
批处理类型:
| 训练策略 | Batch Size | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 批量梯度下降 | = 总样本数 | 梯度稳定,收敛方向精确 | 内存要求高,收敛慢 | 小型数据集(N<10k) |
| 随机梯度下降 | =1 | 收敛快,跳出局部最优 | 震荡大,噪声强 | 在线学习 |
| 小批量梯度下降 | 16∼512 | 效率与稳定性的平衡 | 需调参 | 主流深度学习 |
例图:

Mini-batch实现流程:
- 数据分块:将训练集随机划分为多个小批量。
- 前向传播:对当前小批量计算模型输出。
- 损失计算:根据预测值和真实标签计算损失(如交叉熵、均方误差)。
- 反向传播:计算损失对参数的梯度。
- 参数更新:使用优化算法(如SGD、Adam)更新模型参数。
- 重复:遍历所有小批量完成一个训练周期(Epoch)。
2.4 梯度下降优化算法
前置知识: 指数加权平均递推公式:

:当前时刻的观测值(如梯度、气温)
:当前时刻的指数加权平均值
- β:衰减因子(0≤β<1,通常取0.9或0.99)
物理意义:是最近
个数据的平均值的近似。
例图:

校正偏差: 避免 = 0, 随着t增大,
趋近于0

动量梯度下降(Momentum Gradient Descent)递推公式:


RMSProp:以b与w举例, 实际应用是在高维的W中避免震荡

Adam (结合 Momentum 与 RMSProp):
一阶矩估计(动量项):


二阶矩估计(自适应项):


参数更新:

备注: 防止分母为0, 加上一个ϵ
学习率衰减: 阶梯衰减(Step Decay)
![]()
应用原因:

2.5 Batch Normalization
前向传播时:

- γ:可学习缩放参数
- β:可学习平移参数
- 应用再激活函数之前,既对
进行归一化后再应用激活函数
应用mini-batch时:

随机梯度下降(Stochastic Gradient Descent)
通过随机抽样单个 / 小批量样本计算梯度,迭代更新模型参数以最小化损失函数,替代传统批量梯度下降
| 维度 | 随机梯度下降(SGD) | 批量梯度下降(BGD) |
|---|---|---|
| 样本使用 | 每次迭代用随机使用小批样本 | 每次迭代用全部训练样本 |
| 梯度计算效率 | 计算量小,速度快,适合大规模数据 | 计算量大,速度慢,仅适合小数据集 |
| 收敛过程 | 梯度波动大(随机采样导致),收敛路径曲折 | 梯度稳定,收敛路径平滑 |
| 局部最优规避 | 随机性可能跳出局部最优,找到全局最优 | 易陷入局部最优,缺乏随机性 |
| 内存消耗 | 低(仅需存储少量样本) | 高(需存储全部样本) |
2.6 其他
2.6.1 迁移学习
将一个领域(源领域)或任务(源任务)上训练得到的知识(模型参数),应用到另一个相关但不同的领域(目标领域)或任务(目标任务)上。
迁移学习主要有两种策略:
1)数据集小:冻结预训练模型的所有权重,只训练新添加的顶层分类器。
2)数据集大:解冻预训练模型的部分或全部权重,并以一个较低的学习率,与新分类层一起进行训练。
2.6.2 多任务学习
同时并行地学习多个相关任务,通过让模型共享表示(层),使一个任务学到的知识能够帮助其他任务学得更好。
适用场景:
1)任务之间有共用的低层次特征
2)每个任务训练数据少且数量差不多。
3)神经网络足够大
2.6.3 数据增广
核心原则: 在不改变图像原有语义信息的同时尽可 能多地增加变化。
几何变换
通过旋转、镜像、平移、裁剪、 缩放和扭曲等变换方式生成新样本。相当于在数据集上增加视角、位置方面的偏差,进而增强模型在这些方面的鲁棒性,提高测试精度。
缺点:
1)旋转和镜像的程度有限,可增加的图像数量有限
2)存在对数据重复记忆、增加的信息量有限
例图:

色域变换
图像各通道上进行亮度变换的新样本生成方式。最简单如将R、G、B 3 个通道分离出来, 分别与两个 0 值矩阵组合,以呈现红、绿、蓝单一颜色的 3 幅图像。
PCA 抖动:对原图像进行主成分分析( PCA) ,求得协方差矩阵,然后对主成分的特征值 施加一个均值为 0 的随机扰动,然后再反变换回去。
总结: 色域变换没有增加图像中物体的空间信息,空间几何信息相比色彩信息更加重要
清晰度变换
对图像进行锐化和模糊处理,实现图像的清晰度变换。模糊图像可以帮助模型更好地应对测试过程中遇到的运动模糊等问题。
总结: 与 CNN 的内部机制非常类似, 采用这种滤波方式对 数据集进行增强,不如将其作为网络的一层。
噪声注入
通过人为地为图像施加噪声干扰,可为数据集引入冗余和干扰信息, 模拟不同成像质量的图像。增强模型对噪声干扰和冗余信息的过滤能力,提高模型对不同质量图像的识别能力。
局部擦除
噪声是对图像离散的像素值的干扰, 局部擦除是图像局部区域所有像素值信息的丢失
优点: 可以提高模型在遮挡条件下的鲁棒性。迫使模型去学习图像中更宽广的具有描述性质的特征,从而防止模 型过拟合于特定的视觉特征。

缺点: 随机擦除有可能篡改图像原有的语义信息, 如数字7,8,可能变1,6。
多数据混合
将多幅图像的信息进行混合以产生新的训练数据, 可以从图像空间或特征空间进行信息混合。
SamplePairing 数据增广方法:

线性混合示例:

mixup数据增广: SamplePairing的拓展

非线性图像混合:

随机裁剪拼接:

结论: 多图随机裁剪拼接混合与非线性图像混合取得的精度提高程度要大于线性叠加的图像混合方式
学习数据分布
1)生成对抗网络
缺点: 需要较为大量的数据来训练 GAN 模型, 不适合训练数量少的数据集。
2)图像风格迁移
学习增广策略
基于元学习的策略: 用神经网络去替代确定的数据增广方法。训练模型学习更好的增广策略。
基于强化学习的策略:从给定的图像变换和混合方法中,搜索最优的组 合策略。
总结:


参考论文:《Review of data augmentation for image in deep learning. Journal of Image and Graphics》
2.6.4 端到端学习
用一个单一的、统一的神经网络模型,直接将原始输入映射到最终期望的输出
优势:让数据说话,由模型自动从海量数据中学习最佳的特征。
劣势: 需要大量数据, 可解释性差。
2.7 模型评估
正交化:优化模型时,控制或调整只影响训练集、开发集、测试集中的一个。
评估指标:根据实际情况, 将查准率和查全率或其他指标进行加权计算。
评估参考标准:基于人类表现
可避免偏差:训练集错误率与人相比之间的差值
训练集开发集测试集的大小:根据数据总量,按比例(如百分数据划分98%/1%/1%,如万条以下划分70%15%15%)
训练集开发集测试集的划分:保证同分布
正交化改进模型:
| 问题类型 | 正交化措施 | 说明与示例 |
|---|---|---|
| 高偏差 (欠拟合) |
使用更大的模型 | 增加网络层数、神经元数量,提升模型容量。 |
| 延长训练时间 | 训练更多轮次(Epochs),让优化算法充分收敛。 | |
| 选择/更换模型架构 | 换用更先进的架构(如图像任务用CNN,序列任务用RNN/Transformer)。 | |
| 调整优化超参数 | 调整学习率、更换优化器(如使用Adam),使训练更有效。 | |
| 特征工程 | 添加新特征或组合特征,为模型提供更多有效信息。 | |
| 高方差 (过拟合) |
获取更多训练数据 | 最有效的方法。更多数据迫使模型学习通用规律而非记忆细节。 |
| 应用正则化 | L2正则化:惩罚权重幅度。 Dropout:随机禁用神经元,增强鲁棒性。 |
|
| 数据增强 | 人工扩展训练数据(如对图像进行旋转、裁剪、变色)。 | |
| 尝试泛化更好的架构 | 有些架构(如CNN)天生比 others(如MLP)泛化能力更强。 | |
| 非正交 化措施 | 早期停止 | 在验证误差上升时停止训练。虽常用,但会同时增加偏差并减少方差,破坏正交性。 |
模型优化:
1)分析预测错误数据的类型百分比,选择最大百分比进行优化,
2)潜在的训练数据标签错误(如果占比大)
不同划分情况:如:网络下载的高质量图片(20万张)来自真实用户上传的低质量图片(1万张)
- 开发集 = 5000张图片(2500用户图 + 2500随机网络图)
- 测试集 = 5000张图片(2500用户图 + 2500随机网络图)
- 训练集 = 剩下的所有网络图片(19.5万张) + 剩下的用户图片(5000张)
训练开发集:从训练集中划分,保持与训练集相同的分布,用于不同分布时判断训练集方差大小,相当于同分布时开发集的功能。
数据不匹配:模型在一个陌生环境中被测试出现的问题。
示例:
| Traing error | 1% | 1% |
| Traing-dev error | 9% | 1.5% |
| Dev error | 10% | 10% |
| result | variance | data mismatch |
总结:
| 数据集 | 描述 | 错误率表现所指示的问题 |
|---|---|---|
| 人类表现 |
贝叶斯最优错误率参考 |
训练错误率与人类错误率的差值->可避免偏差 |
| 训练集 | 用于训练模型的数据。 | 训练错误高 -> 高偏差(欠拟合) |
| 训练-开发集 | 从训练集划分而来,与训练集同分布,但未参与训练。 | 训练错误低但训练-开发错误高 -> 高方差(过拟合) |
| 开发集 | 代表你最终关心的真实应用场景的数据。 | 训练-开发错误低但开发错误高 -> 数据不匹配 |
| 测试集 | 用于最终评估,与开发集同分布。 | 开发错误低但测试错误高 -> 可能对开发集过拟合了 |
解决数据不匹配问题:
1)获取目标数据:收集更多与开发集分布一致的真实数据。
2)数据合成与增强:人工修改现有训练数据,模拟目标分布特征。
3)数据清洗:从训练集中移除与目标分布不符的异常数据。
三、计算机视觉
语义分割 vs 实例分割
| 特性 | 语义分割 (Semantic Segmentation) | 实例分割 (Instance Segmentation) |
|---|---|---|
| 核心任务 | 对每个像素进行分类,赋予类别标签。 |
每个像素分类,且区分同一类别的不同个体。 |
| 输出特点 | 同类的不同对象被标注为同一种颜色。 | 每个独立的个体都被赋予不同的标签(颜色) |
| 举例 | 这是细胞核、这是背景 | 这是细胞核A、那是细胞核B、总共有100个细胞核 |
例图:

3.1 CNN
卷积层
关键参数:
卷积核(Kernel / Filter): 特征提取的权重矩阵
步长(Stride): 卷积核在输入数据上滑动的步进距离
填充(Padding): 控制输出特征图的空间尺寸, 防止边缘信息丢失。
例: Filter为 3×3

例: padding=1时

例: Stride=2时

same卷积: 输出的宽度与高度与输入相同

same卷积计算公式:当n×n image,f × f filter, padding=p, stride=s

三维卷积例子:


多Filter叠加:

CNN正向传播剖析:

池化层: 保留显著特征

示例MaxPool:当 filter = 2×2 时:

备注: 多维时,池化层深度要与输入数据保持一致,因此池化层不改变输入数据的深度
全连接层举例:

经典网络架构
U-Net框架图:

上采样(最近邻插值法):增加特征图空间尺寸(高度和宽度)

准备训练集:
1) image:

2) label:

备注:训练集共30张, 训练unet时, 由于数据量不足, 因此使用数据增强:
代码如下:

创建一个unet模型, 模型关键代码解释:
1) 图中对应unet模型的收缩路径

备注: 每一层都使用两次3×3的卷积层进行same卷积, 每次都通道数都翻倍, 向下层传递时都经过max池化层。
2) 图中代码对应unet模型的扩张路径:

备注: 每一层都使用两次3×3的卷积层进行same卷积, 每次都通道数都减半, 向上层传递时都经过上采样处理以及一次2×2的same卷积,使得数据长度和宽度都翻倍;同时加上来着对应层的数据, 再通道数维度上进行叠加,既特征融合。
模型训练:

备注: 训练过程分2个周期,每个周期有300批数据,每批由数据增强生成的两张随机image和对应的label
测试集:

最后预测结果如下:

注U-Net项目来源:https://gitee.com/mirrors_zhixuhao/unet.git
3.2 目标检测
目标检测预测值含义:


滑动窗口实现:


Yolo算法
网格划分:将输入图像划分为 S×S 个网格,每个网格负责检测中心落在该网格内的目标。
边界框预测:每个网格预测 B 个边界框(包含坐标、宽高、置信度)和 C 个类别概率(C 为类别数),最终通过后处理筛选出最优结果。
置信度:预测框与真实框的 IoU 乘以存在目标的概率
损失函数:
1)坐标误差:对边界框中心(x,y)和宽高(w,h)的误差加权(宽高用平方根,避免大框小误差被忽视)。
2)置信度误差:目标框的置信度误差权重高于背景框
3)类别误差:仅当网格内有目标时,计算类别概率误差。
后处理(非极大值抑制 NMS): 同一目标可能被多个网格或边界框预测
后处理步骤:
1)按置信度筛选出高于阈值的候选框
2)选取置信度最高的框,剔除与它 IoU 大于阈值(如 0.5)的重叠框
IOU:
![]()

非极大值抑制NMS 举例:


YOLOv3:通过网络金字塔(如 13×13、26×26、52×52 三个尺度),分别检测大、中、小目标(每个尺度对应 3 种 Anchor)。
Anchor Boxes

两个Anchor Box时的预测值y:

3.3 人脸识别
认证: 1:1问题。识别: 1:K问题
通过两两比较, 输出图片之间的差异值:


可通过: 欧氏距离 或 余弦相似度计算
欧氏距离:

余弦相似度:

(识别)对比损失函数: y取0(不同人) 或 1(同个人)。

(认证)损失函数: Triplet Loss
![]()
备注: 为同一个人照片,
为不同人照片, m使得两者尽可能大。
更多推荐


所有评论(0)