YOLO入门教程(番外):深度学习概识
第一部分:神经网络 - 万物之源
神经网络是深度学习的基础,理解它的核心概念至关重要。
一、核心思想:模仿大脑
神经网络的基本思想是模仿人脑中神经元的工作方式。单个神经元是简单的,但大量神经元相互连接形成的网络就能处理极其复杂的信息。
二、核心概念(重点掌握)
-
神经元
- 通俗理解:一个微型决策器。它接收多个输入信号,进行加权求和,再通过一个“开关”(激活函数)决定是否输出信号以及输出多强的信号。
- 数学表示:
输出 = 激活函数(权重1 * 输入1 + 权重2 * 输入2 + ... + 偏置)
-
层
- 输入层:接收原始数据。比如图像的像素值。
- 隐藏层:位于输入和输出层之间,是神经网络进行特征抽象和转换的核心部分。层数越多、神经元越多,网络能学习到的模式就越复杂(但也越容易过拟合)。
- 输出层:给出最终的预测结果。例如,分类任务输出每个类别的概率,回归任务输出一个具体数值。
-
权重和偏置
- 权重:连接两个神经元之间的强度。权重越大,说明前一个神经元的输入对后一个神经元的影响越大。模型训练的本质就是找到所有连接的最佳权重。
- 偏置:让激活函数的输出有一个基础偏移,使模型更灵活。
-
激活函数
- 为什么需要? 如果没有激活函数,无论神经网络有多少层,最终都等价于一个线性模型,无法学习复杂的非线性模式。
- 作用:引入非线性,让神经网络可以拟合极其复杂的函数。
- 常见类型:
- Sigmoid:将输出压缩到(0,1)之间,常用于二分类的输出层。容易导致梯度消失。
- ReLU:最常用!公式为
f(x) = max(0, x)
。计算简单,能有效缓解梯度消失问题。 - Softmax:将多个神经元的输出转换为概率分布(所有输出值之和为1),用于多分类问题的输出层。
-
前向传播
- 过程:数据从输入层开始,逐层经过加权求和、激活函数处理,最终得到输出层结果的过程。
- 好比:原料(输入数据)经过一道道工序(每一层),最终加工成成品(预测结果)。
-
损失函数
- 作用:衡量模型预测值 (
y_pred
) 与真实值 (y_true
) 之间的差距。差距越大,损失值越高。 - 常见类型:
- 均方误差:用于回归问题(预测数值)。
- 交叉熵损失:用于分类问题(预测类别),更关注于预测概率分布的差异。
- 作用:衡量模型预测值 (
-
反向传播与梯度下降
- 梯度下降:优化策略。想象你站在山上,要找到山谷的最低点(损失最小)。你会环顾四周,选择最陡峭的下坡方向迈出一步。这个“方向”就是梯度(损失函数关于每个权重的导数),“迈出一步”就是更新权重。
- 学习率:控制“步长”有多大的超参数。步长太大会错过最低点,步长太小下山太慢。
- 反向传播:高效计算梯度的方法。它利用链式法则,从输出层开始,逐层反向计算损失函数对每个权重的梯度。这是神经网络能够训练的关键算法。
第二部分:卷积神经网络 - 视觉之王
CNN是专门为处理图像等网格化数据而设计的神经网络,是计算机视觉的基石,也是YOLO的核心。
一、核心思想:局部连接与参数共享
全连接神经网络处理图像时参数爆炸且效率低下。CNN通过两种机制解决:
- 局部感知:一个神经元不再与上一层的所有神经元连接,只连接一小块局部区域(如3x3的像素块)。这符合图像的特征:像素点与其邻近像素的关系最密切。
- 参数共享:使用卷积核(或滤波器)在图像上滑动,同一个卷积核的参数在不同位置是共享的。这极大地减少了参数数量。
二、核心组件
-
卷积层
- 卷积核:一个小的权重矩阵(如3x3, 5x5)。它可以被看作是一个特征检测器。
- 工作原理:卷积核在输入图像上滑动,每到一处就进行点乘求和的操作,生成特征图。
- 举例:一个检测“边缘”的卷积核,在划过图像中有边缘的地方时,会输出一个高数值,从而在特征图中形成一条亮线。
-
池化层
- 作用:降维,减少数据量和计算量,同时保留最重要特征,提升模型的平移不变性(物体在图像中稍微移动,依然能被识别)。
- 最大池化:在一个小区域(如2x2)内取最大值作为输出。它告诉我们“这个区域里最重要的特征是否存在”。
- 平均池化:取区域内的平均值。
-
全连接层
- 通常在CNN的末尾。它将卷积和池化层提取到的分布式特征映射到样本标记空间(例如,输出每个类别的概率)。
三、经典架构(了解演进)
- LeNet-5:鼻祖,用于手写数字识别,证明了CNN的有效性。
- AlexNet:2012年ImageNet冠军,点燃了深度学习热潮。
- VGGNet:证明了网络的深度是影响性能的关键因素。
- GoogLeNet:引入Inception模块,在增加深度的同时控制计算量。
- ResNet:革命性的残差连接解决了极深网络的梯度消失和退化问题,使得构建上百层的网络成为可能。
第三部分:递归神经网络 - 序列专家
RNN是专门为处理序列数据(如时间序列、文本、语音)而设计的网络。
一、核心思想:具有“记忆”能力
传统神经网络的输入之间是独立的。但序列数据的前后元素是强相关的(一句话的前后单词)。RNN通过循环连接,让网络能够记住之前的信息,并用它来影响后续的输出。
二、核心结构与挑战
-
循环单元
- 它不仅接收当前时刻的输入
x_t
,还接收上一时刻的隐藏状态h_{t-1}
(可以理解为对过去信息的摘要)。 - 计算当前时刻的输出
y_t
和传递给下一时刻的隐藏状态h_t
。
- 它不仅接收当前时刻的输入
-
挑战:长程依赖问题
- 普通RNN难以学习相隔很远的序列元素之间的关系(比如一段话开头的信息很难影响到结尾的预测)。
- 原因:梯度在反向传播时会随时间指数级地消失或爆炸。
三、解决方案:LSTM与GRU
为了解决长程依赖问题,提出了更复杂的“门控”循环单元。
-
LSTM
- 门控机制:通过三个“门”来精细控制信息的流动。
- 遗忘门:决定从细胞状态中丢弃哪些信息。
- 输入门:决定将哪些新信息存入细胞状态。
- 输出门:决定输出什么信息。
- 细胞状态:一条“信息高速公路”,可以在序列处理过程中保持信息不变地传递,从而缓解梯度消失。
- 门控机制:通过三个“门”来精细控制信息的流动。
-
GRU
- 是LSTM的变体,将遗忘门和输入门合并为一个更新门,结构更简单,计算效率更高,效果通常与LSTM相当。
总结与关系
网络类型 | 核心特点 | 擅长领域 | 好比 |
---|---|---|---|
神经网络 | 基础,全连接 | 结构化数据,入门学习 | 全能选手,但效率不高 |
CNN | 局部连接,参数共享,空间特征提取 | 图像、视频 | 视觉专家,看图片一流 |
RNN/LSTM/GRU | 循环连接,时序记忆,序列建模 | 文本、语音、时间序列 | 序列专家,读文章和预测趋势很拿手 |
它们的关系:CNN和RNN都是基于基础神经网络的思想,针对特定类型的数据结构(空间、时序)进行了架构上的革新。现代复杂的模型(如用于图像描述的模型)往往是CNN和RNN的结合体。