深度神经网络DNN(理论版)

目录

1.什么是深度神经网络

2.深度神经网络的基本结构

3.划分数据集

4.训练网络

1.前向传播

2.反向传播

3.batch_size

4.epochs

5.测试网络


1.什么是深度神经网络

深度神经网络(Deep Neural Network,DNN)是一种人工神经网络,它通过多层神经元进行数据处理和学习。DNN 是深度学习的核心模型之一,其主要特点是具有多个隐藏层,使其能够对复杂的数据进行特征提取和模式识别。

2.深度神经网络的基本结构

最主要的结构为

  1. 输入层(Input Layer):接收原始数据输入。
  2. 隐藏层(Hidden Layers):包含多个神经元层,每层之间通过权重连接。隐藏层的数量和每层神经元的数量决定了网络的深度和复杂度。
  3. 输出层(Output Layer):输出预测结果,具体形式取决于任务类型(如分类、回归等)。

神经网络可以分为这么几步:划分数据集、训练网络、测试网络、使用网络。

3.划分数据集

数据集按照一定的比例分为训练集和测试集,训练集用来训练网络,测试集用来测试网络,一般训练集的数据要比测试集的数据多。且数据集必须还有输入特征和输出特征,如上图三个输入特征,三个输出特征。

例如对Data数据集,10000*6进行划分,按照0.7的比例划分。

# 划分训练集与测试集 
train_size = int(len(Data) * 0.7)  # 训练集的样本数量 
test_size = len(Data) - train_size # 测试集的样本数量 
Data = Data[torch.randperm( Data.size(0)) , : ]   # 打乱样本的顺序 
train_Data = Data[ : train_size , : ]     # 训练集样本 
test_Data = Data[ train_size : , : ] # 测试集样本 

可以得到训练集的大小为7000*6,测试集的大小为3000*6。

4.训练网络

1.前向传播

前向传播(Forward Propagation)是深度神经网络预测过程中的核心步骤,它将输入数据逐层传递,通过每一层的神经元进行加权求和和激活函数的非线性变换,最终在输出层生成预测结果。每个神经元通过权重和偏置参数进行计算,激活函数引入非线性,使网络能够拟合复杂的数据分布,从而有效地提取和学习数据特征。

例如对下图进行分析

该神经元的计算为y=w1*x1+w2*x2+w3*x3+b,其中w为权重,每一根线都有,b为偏置,每一个神经节点有一个。

最后通过激活函数(Activation Function, σ)将该线性过程转为非线性过程,使神经网络能够拟合复杂的数据分布。常见的激活函数包括 ReLU, Sigmoid, Tanh 等。

2.反向传播

反向传播(Backpropagation)是深度神经网络训练中的关键算法,通过计算损失函数相对于每个权重和偏置的梯度,从输出层逐层向后传播这些梯度,并使用梯度下降法更新参数,从而最小化误差。这个过程包括前向传播计算输出、计算损失、反向传播计算梯度以及参数更新,最终使网络逐步学习并提高预测能力。大致意思就是,看每一个内部参数是变大还是变小,才会使得损失函数变小。

其中前向传播计算输出就是前向传播得到的网络,计算损失就是使用损失函数(如均方误差、交叉熵损失等)计算预测结果与真实标签之间的误差,反向传播计算梯度就是从输出层开始,逐层向后计算每个参数(权重和偏置)相对于损失函数的梯度,更新参数就是使用梯度下降算法或其变种(如随机梯度下降、Adam等)更新每个参数。总之,通过反向传播算法,神经网络能够调整其参数以最小化误差,从而提高预测精度和泛化能力。

3.batch_size

batch_size指一批中的样本数,即一轮放入多少个样本,一般设置为2的幂次方且不能为1。

主要分为三个类型

  1. 小批量梯度下降(Mini-batch Gradient Descent)

    • 批量大小:通常在几十到几百之间(如32、64、128等)。
    • 特点:平衡了随机梯度下降和批量梯度下降的优点。每次更新参数时使用一小部分数据,可以在保证一定训练速度的同时,利用数据的随机性来帮助逃离局部最优解。
  2. 随机梯度下降(Stochastic Gradient Descent, SGD)

    • 批量大小:1,即每次更新参数时仅使用一个样本。
    • 特点:参数更新频繁,具有很高的噪声,可能导致训练过程不稳定,但在某些情况下有助于逃离局部最优解。
  3. 批量梯度下降(Batch Gradient Descent)

    • 批量大小:等于整个训练集的大小。
    • 特点:每次更新参数时使用整个训练集。计算成本高,内存需求大,但参数更新方向稳定。

4.epochs

一个epoch意味着整个训练数据集被送入模型进行一次前向传播和反向传播,并且模型参数被更新一次。每个样本在一个Epoch中都被使用了一次。在实际训练中,模型通常需要经过多个Epoch才能达到较好的性能。这是因为单个Epoch可能不足以让模型充分学习数据中的模式和特征。随着Epoch的增加,模型的损失函数(误差)通常会逐渐减小,模型性能(如准确率)会逐渐提高,直到模型收敛,即误差变化趋于平稳,性能达到一个较好的水平。

5.测试网络

将测试集放入已经训练后的模型中,通过准确率即可知道所训练的网络是否合适。

过拟合:过拟合(Overfitting)是指机器学习模型在训练数据上表现得很好,但在未见过的测试数据上表现不佳的现象。

可以通过扩充训练数据集,通过旋转、翻转、裁剪等方式增加数据的多样性,有助于模型学习更泛化的模式等方法。

欠拟合:欠拟合(Underfitting)是指机器学习模型在训练数据上表现不佳,无法很好地捕捉数据中的模式和特征的现象。这种情况通常发生在模型过于简单或者训练不足的情况下,导致模型无法对数据进行有效的拟合和学习。

通过合适地调整模型的复杂度、特征选择和正则化程度,以及增加更多的训练数据,可以有效地防止欠拟合问题,提高模型的泛化能力和预测准确性。

 

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值