浅尝深度学习 - 基本概念
简体中文 (current) | English
写在前面
笔者最近机缘巧合,对深度学习从网络设计、量化,到FPGA部署的过程有了浅显但系统的学习。因此写下这篇文章,记录一下知识,整合一下想法和疑点,也希望能在一定程度上帮助初次接触这个领域的人。
由于笔者专业是Computer Systems,并非人工智能科班出身,多有疏漏之处,请读者见谅。
关键指标
我们先从三个重要指标开始,即参数量(Parameters)、浮点运算次数(FLOPs)、存储占用(Memory Usage)。需要指出的是,在今天的深度学习中,FLOPs已经成为评估计算复杂度的标准指标。
指标含义
- 参数量:模型中可训练参数的总数
- FLOPs:前向传播所需的浮点运算次数
- 存储占用:模型在内存中的大小
经典网络对比
下面的表格列出了几个经典网络的指标:
| 模型 | 参数量(M) | 计算量(M FLOPs) | 存储占用(MB) |
|---|---|---|---|
| AlexNet | 61.1 | 710 | 233.1 |
| VGG-16 | 138 | 15,470 | 527.8 |
| GoogleNet | 6.6 | 1,500 | 49.7 |
| Inception-v3 | 27.2 | 5,710 | 103.9 |
这些指标仅用于指示模型的复杂度,而非性能表现。评估模型性能需要关注准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分数(F1 Score)等指标。
如果读者查阅了这些模型的具体用途,会发现它们大多为图像相关的模型,即特征识别。笔者在接下来也将主要讨论用于图像识别的深度学习。
训练过程
训练(Training)是指使网络针对特定任务进行参数(Parameters)优化的过程,例如图像分类、自然语言处理等任务。
在神经网络中,每个圆圈代表一个神经元(Neuron),神经元之间的连接包含权重(Weight)和偏置(Bias)等参数。
训练过程包括两个关键步骤:
正向传播 (Forward Propagation)
对于输入的图像,多层神经元按顺序提取不同层次的特征:
- 浅层:边缘、纹理等基础特征
- 深层:形状、语义等高级特征
- 通常针对RGB三个颜色通道分别处理
提取的特征以张量(Tensor)的形式存储在多维数组中。
反向传播 (Backward Propagation)
通过损失函数评估预测结果与真实标签的差异,并使用梯度下降等优化算法更新网络参数。
一次完整的正向和反向传播称为一个批次(Batch),多个批次组成一个轮次(Epoch)。模型需要经过多轮训练以达到预期性能。
模型优化技术
现代深度学习模型的参数量可达数百万甚至数十亿级别。如何在资源受限的硬件(如嵌入式设备、FPGA)上部署这些模型,是亟需解决的问题。
剪枝 (Pruning)
移除对模型性能影响较小的参数,从而减少整体参数量。
结构化剪枝
移除整个神经元或通道,保持网络结构规整,易于在各种硬件上加速。
非结构化剪枝
移除任意参数,压缩率更高,但需要特殊的硬件支持。
量化 (Quantization)
将浮点参数映射为低精度的整数表示。

量化类型
常见的量化方式包括:
- INT8量化:从32位浮点数量化为8位整数
- INT4量化:更激进的量化方式,进一步减少存储和计算需求
下面是一个量化的简单示例:
原始权重: 0.847 (32-bit float)
量化后: 217 (8-bit int)量化可以显著减少模型大小和推理时间,特别适用于FPGA等硬件平台。
小结
本文介绍了深度学习的一些基础概念,涵盖了从模型评估指标到训练过程,再到模型优化的核心要点。当然,完整的深度学习工程还包括数据预处理、模型验证、超参数调优等环节。
在后续文章中,我们将以具体的网络架构(如AlexNet)为例,深入探讨这些概念的实际应用。