深度神经网络(DNN)Deep Neural Networks 介绍

本文介绍了深度神经网络(DNN)的基础概念,包括神经元的作用、激活函数如Sigmoid和ReLU,以及前馈神经网络的工作原理。讨论了欠拟合和过拟合问题,提出了通用近似定理和结构风险最小化策略。此外,还阐述了反向传播、随机梯度下降和mini-batch的概念,以及如何通过无监督预训练和dropout技术来防止过拟合。最后,提到了批量归一化(BN)在加速训练和缓解梯度消失方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里将自己做的一个PPT纪录一下,根据斯坦福大学CS234 lecture 5 整理而来

Some of the content for this lecture is borrowed from Hugo Larochelle 




神经网络相对于训练集:太小(欠拟合),找到的规律模型未能够很好的捕捉数据特征,不能很好的拟合数据;太大(过拟合),记住的规律太多,太具体死板地记住训练集,不够抽象。




单个神经元的作用:把一个n纬的向量空间用一个超平面分成两部分(称之为判断边界),给定一个输入向量,神经元能判断出这个向量位于超平面的哪一边。b+wTx=0 就是超平面方程。

x1,x2,x3.....是输入特征向量的各个分量

w1,w2,w3....是各神经元各突触的权值

b:神经元偏置



二维可视化激活函数表示图,W向量决定两类情况范围区别的基本方向,b变大,超平面会向相反的方向移动。

图中红色虚线就是超平面,w方向和超平面垂直




Sigmoid 激活函数,特点:可以将输出压缩到0-1的范围;总是正数;有界;严格递增

缺点:会出现梯度消失,这个函数的导数是g(a)(1-g(a)),最大值是1/4,所以每一层向前传递都会至少3/4的梯度损失。

激活函数的意义:

如果不加激活函数,无论多少的层隐层,最终的结果还是原始输入的线性变化,这样一层隐层就能达到效果,就没有多层感知器的意义了,所以每个隐层都配有激活函数,提供非线性的变化。





ReLU激活函数,修正线性激活函数

特点:非负;将神经元变得稀疏;没上界;严格递增

优点:可以防止梯度消失,其导数是1



前馈神经网络,是指链接图无闭环或者回路。单隐层神经网络,只有一个隐藏层。

偏置单元无输入,w(1) 3*3 , w(2) 1*3 , S(l) 表示第l层节点个数,不包括偏置单元。

w(1)i,j  表示第一层的 j 单元和第二层的 i 单元链接权重





这个例子可以解释XOR抑或门


前向传播的例子





扩展到多个隐藏层




通用近似定理:单隐层神经网络如果有线性输出层,可以以任何精度逼近任何连续函数,只要隐层神经元的个数足够多。




神经网络调参的形象比喻,磨合就是不断找到更好的参数值



theta 是所有参数的集合

关于训练样本集的平均损失。 

### 关于深度神经网络 (DNN) 的实验报告与实现分析 #### 实验背景 深度神经网络Deep Neural Networks, DNNs)是一种基于人工神经网络的机器学习方法,能够通过多层次的特征提取和映射解决复杂的模式识别问题[^1]。DNN的核心在于其多层结构设计,每一层都可以看作是从原始数据到抽象表示的一种转换。 #### 数据准备 在构建DNN之前,通常需要准备好高质量的数据集。这些数据集可能包括但不限于图像、语音信号或文本数据。为了提高模型性能,在实际应用中往往会对数据进行预处理,比如标准化、归一化或者增强等操作[^3]。 #### 模型架构定义 假设我们的输入维度为`n_in`, 输出类别数为`n_out`. 我们可以通过增加多个隐含层来加深网络结构,每层由一定数量的神经元组成。每个连接都有相应的权重矩阵W以及偏置向量b待定[^4]. ```python import tensorflow as tf from tensorflow.keras import layers, models model = models.Sequential() model.add(layers.Dense(128, activation='relu', input_shape=(n_in,))) model.add(layers.Dropout(0.5)) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dropout(0.5)) model.add(layers.Dense(n_out, activation='softmax')) model.summary() ``` #### 训练过程描述 训练阶段的目标是最小化预测值y_hat与真实标签y之间的差异,这通常是借助某种形式的损失函数L(w,b;X,Y)完成的。常见的做法是对整个批次采用随机梯度下降(SGD),并调整超参数α控制更新步长大小[^4]. ```python optimizer = tf.keras.optimizers.Adam(learning_rate=0.001) loss_fn = tf.keras.losses.CategoricalCrossentropy() model.compile(optimizer=optimizer, loss=loss_fn, metrics=['accuracy']) history = model.fit(train_data, train_labels, epochs=50, batch_size=32, validation_split=0.2) ``` #### 结果评估 经过充分迭代之后,我们可以利用测试集合上的表现衡量最终效果如何。除了准确率之外还可以关注其他指标如精确度(Precision), 召回率(Recall) 和 F1分数等等[^1]. ```python test_loss, test_acc = model.evaluate(test_data, test_labels) print(f'Test accuracy: {test_acc}') ``` #### 总结讨论 尽管本案例展示了基本流程,但在实践中还需要考虑更多因素才能获得最佳成果。例如正则化技术防止过拟合现象发生;探索不同激活函数组合寻找更优解空间;甚至尝试迁移学习策略缩短收敛周期提升泛化能力等问题均值得进一步研究探讨[^2]. ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值