系列文章

  1. 深度学习基本概念
  2. 算力评估基础知识
  3. 大模型相关算子
  4. 华为系算力卡产品调研
  5. Nv系算力卡产品调研

深度学习基本概念

DNN的基本概念

什么是DNN

DNN(Deep Neural Network,深度神经网络)是一种由多层神经元(也称为“节点”或“单元”)组成的人工神经网络。与浅层神经网络相比,DNN具有更多的隐藏层,因此被称为“深度”网络。深度神经网络通过多层次的特征抽象和转换,能够自动学习和提取数据中的复杂模式和高阶特征。

2. DNN的起源

深度神经网络的概念源自于人类大脑的神经元结构。早期的神经网络(如感知器和多层感知器)在20世纪中叶被提出,但由于计算能力和数据量的限制,发展相对缓慢。随着计算技术的进步、海量数据的积累以及优化算法的改进,DNN在2010年代迅速崛起,并在多个领域取得了显著成果。

DNN的结构

1. 基本组成部分

一个典型的深度神经网络包括以下几个部分:

  • 输入层(Input Layer):接收原始数据,例如图像的像素值、文本的词向量等。
  • 隐藏层(Hidden Layers):位于输入层和输出层之间的多层神经元,每一层负责提取和转换特征。DNN中的“深度”指的就是隐藏层的数量通常较多。
  • 输出层(Output Layer):输出最终的预测结果,例如分类标签、回归值等。

2. 神经元和连接

  • 神经元(Neuron):每个神经元接收来自前一层的输入,通过加权求和和激活函数进行处理,生成输出信号传递到下一层。
  • 权重(Weights):连接神经元的参数,决定了输入信号的重要性。训练过程中,权重会不断调整以最小化预测误差。
  • 偏置(Bias):每个神经元通常还有一个偏置参数(类似截距),帮助模型更好地拟合数据。

3. 激活函数(Activation Function)

激活函数决定了神经元的输出,常用的激活函数包括:

  • ReLU(Rectified Linear Unit)ReLU(x)=max(0,x)\text{ReLU}(x) = \max(0, x)
  • Sigmoidσ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}
  • Tanh(双曲正切)tanh(x)=exexex+ex\tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}

激活函数的引入使得神经网络能够处理非线性问题,增强了模型的表达能力。

总之就是这样一个公式

y=b+cTσ(b+Wx)y = b + c^T \sigma(b + Wx)

  1. yy: 输出结果,是一个标量值。

  2. bb: 偏置项,是一个标量,直接加到激活函数的输出上。在神经网络中,偏置项可以帮助模型更好地拟合数据,提供额外的自由度。

  3. cTc^T: cc 是一个权重向量,与激活函数的输出进行点积(即转置后的 cTc^T 乘以向量)。这个权重向量控制了激活函数输出的线性组合,影响最终输出 yy 的值。

  4. σ\sigma: 激活函数,这里以 Sigmoid 函数为例,其公式为 σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}。Sigmoid 函数的输出范围是 (0, 1),它可以将线性变换的结果转换成非线性,通常用于二分类问题的输出层。

  5. WW: 权重矩阵,与输入向量 xx 相乘。WW 的每一行都与输入 xx 的一个特征相对应,通过这种线性变换,WW 调整了每个输入特征对输出的影响。

  6. xx: 输入向量,包含了多个输入特征。

整体流程

  • 首先,计算权重矩阵 WW 和输入向量 xx 的线性组合,并加上偏置 bb
  • 然后,将这个线性组合的结果通过 Sigmoid 激活函数转换,得到一个介于 0 和 1 之间的输出。
  • 接着,另一个权重向量 cTc^T 与激活函数的输出进行点积,再加上一个额外的偏置 bb,得到最终的输出 yy

每一层的输入和输出都依据这一层所代表的抽象含义而定,其神经元个数会决定其输出的维数

DNN的工作原理

1. 前向传播(Forward Propagation)

数据从输入层开始,经过每一层的神经元计算,最终在输出层生成预测结果。具体步骤如下:

  1. 输入层:接收原始数据。
  2. 隐藏层:每一层的神经元接收来自前一层的输入,进行加权求和、加偏置、应用激活函数,生成输出传递到下一层。
  3. 输出层:生成最终的预测结果。

2. 损失函数(Loss Function)

损失函数用于衡量模型的预测结果与真实值之间的差异。常用的损失函数包括:

  • 均方误差(Mean Squared Error, MSE):用于回归问题。
  • 交叉熵损失(Cross-Entropy Loss):用于分类问题。

3. 反向传播(Backward Propagation)

反向传播算法通过计算损失函数相对于每个权重的梯度,逐层调整权重和偏置,以最小化预测误差。具体步骤如下:

  1. 计算梯度:利用链式法则计算损失函数对每个参数的偏导数。
  2. 更新参数:使用优化算法(如梯度下降、Adam等)根据梯度调整权重和偏置。

4. 训练过程

整个训练过程包括多个epoch(训练轮次),每个epoch遍历整个训练数据集,通过前向传播和反向传播不断优化模型参数,直到模型的性能达到预期或满足停止条件。

DNN的类型

1. 全连接神经网络(Fully Connected Neural Network, FCNN)

这是最基本的神经网络类型,每一层的每个神经元都与前一层的所有神经元相连。适用于处理结构化数据,如表格数据。

2. 卷积神经网络(Convolutional Neural Network, CNN)

专门用于处理图像和视频等具有网格结构的数据。通过卷积层、池化层等结构提取空间特征,广泛应用于计算机视觉领域。

3. 循环神经网络(Recurrent Neural Network, RNN)

适用于处理序列数据,如时间序列、文本等。通过循环结构捕捉数据中的时间依赖关系,常用于自然语言处理和语音识别。

4. 生成对抗网络(Generative Adversarial Network, GAN)

由生成器和判别器两个网络组成,通过对抗训练生成逼真的数据样本,广泛应用于图像生成、数据增强等领域。

5. 自注意力网络(如Transformer)

基于自注意力机制,能够并行处理序列数据,极大提升了模型在自然语言处理中的表现,如BERT、GPT等预训练模型。

DNN的训练技巧

1. 数据预处理

  • 标准化/归一化:将数据缩放到特定范围,提高训练稳定性。
  • 数据增强:通过旋转、翻转等方式增加训练数据的多样性,减少过拟合。

2. 正则化

  • L1/L2正则化:在损失函数中加入权重的正则项,限制模型复杂度。
  • Dropout:在训练过程中随机丢弃一部分神经元,防止过拟合。

3. 优化算法

  • 梯度下降(Gradient Descent):基础的优化方法。
  • 动量(Momentum):加速收敛,减少振荡。
  • Adam:结合了动量和自适应学习率,