深度学习基本概念
系列文章
深度学习基本概念
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):
- Sigmoid:
- Tanh(双曲正切):
激活函数的引入使得神经网络能够处理非线性问题,增强了模型的表达能力。
总之就是这样一个公式
-
: 输出结果,是一个标量值。
-
: 偏置项,是一个标量,直接加到激活函数的输出上。在神经网络中,偏置项可以帮助模型更好地拟合数据,提供额外的自由度。
-
: 是一个权重向量,与激活函数的输出进行点积(即转置后的 乘以向量)。这个权重向量控制了激活函数输出的线性组合,影响最终输出 的值。
-
: 激活函数,这里以 Sigmoid 函数为例,其公式为 。Sigmoid 函数的输出范围是 (0, 1),它可以将线性变换的结果转换成非线性,通常用于二分类问题的输出层。
-
: 权重矩阵,与输入向量 相乘。 的每一行都与输入 的一个特征相对应,通过这种线性变换, 调整了每个输入特征对输出的影响。
-
: 输入向量,包含了多个输入特征。
整体流程
- 首先,计算权重矩阵 和输入向量 的线性组合,并加上偏置 。
- 然后,将这个线性组合的结果通过 Sigmoid 激活函数转换,得到一个介于 0 和 1 之间的输出。
- 接着,另一个权重向量 与激活函数的输出进行点积,再加上一个额外的偏置 ,得到最终的输出 。
每一层的输入和输出都依据这一层所代表的抽象含义而定,其神经元个数会决定其输出的维数
DNN的工作原理
1. 前向传播(Forward Propagation)
数据从输入层开始,经过每一层的神经元计算,最终在输出层生成预测结果。具体步骤如下:
- 输入层:接收原始数据。
- 隐藏层:每一层的神经元接收来自前一层的输入,进行加权求和、加偏置、应用激活函数,生成输出传递到下一层。
- 输出层:生成最终的预测结果。
2. 损失函数(Loss Function)
损失函数用于衡量模型的预测结果与真实值之间的差异。常用的损失函数包括:
- 均方误差(Mean Squared Error, MSE):用于回归问题。
- 交叉熵损失(Cross-Entropy Loss):用于分类问题。
3. 反向传播(Backward Propagation)
反向传播算法通过计算损失函数相对于每个权重的梯度,逐层调整权重和偏置,以最小化预测误差。具体步骤如下:
- 计算梯度:利用链式法则计算损失函数对每个参数的偏导数。
- 更新参数:使用优化算法(如梯度下降、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:结合了动量和自适应学习率,
