浅尝深度学习 - 基本概念

published: and updated:

Deep Learning Deep Learning , Machine Learning , Neural Networks

This article is hidden from post list
Language / 语言

简体中文 (current) | English

写在前面#

笔者最近机缘巧合,对深度学习从网络设计、量化,到FPGA部署的过程有了浅显但系统的学习。因此写下这篇文章,记录一下知识,整合一下想法和疑点,也希望能在一定程度上帮助初次接触这个领域的人。

由于笔者专业是Computer Systems,并非人工智能科班出身,多有疏漏之处,请读者见谅。

关键指标#

我们先从三个重要指标开始,即参数量(Parameters)、浮点运算次数(FLOPs)、存储占用(Memory Usage)。需要指出的是,在今天的深度学习中,FLOPs已经成为评估计算复杂度的标准指标。

指标含义#

  • 参数量:模型中可训练参数的总数
  • FLOPs:前向传播所需的浮点运算次数
  • 存储占用:模型在内存中的大小

经典网络对比#

下面的表格列出了几个经典网络的指标:

模型参数量(M)计算量(M FLOPs)存储占用(MB)
AlexNet61.1710233.1
VGG-1613815,470527.8
GoogleNet6.61,50049.7
Inception-v327.25,710103.9
NOTE

这些指标仅用于指示模型的复杂度,而非性能表现。评估模型性能需要关注准确率(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量化:更激进的量化方式,进一步减少存储和计算需求

下面是一个量化的简单示例:

plaintext
原始权重: 0.847 (32-bit float)
量化后:   217 (8-bit int)

量化可以显著减少模型大小和推理时间,特别适用于FPGA等硬件平台。

小结#

本文介绍了深度学习的一些基础概念,涵盖了从模型评估指标到训练过程,再到模型优化的核心要点。当然,完整的深度学习工程还包括数据预处理、模型验证、超参数调优等环节。

在后续文章中,我们将以具体的网络架构(如AlexNet)为例,深入探讨这些概念的实际应用。