首页 > 其他分享 >深度神经网络

深度神经网络

时间:2024-11-14 16:19:49浏览次数:1  
标签:mathbb right times 神经网络 参数 深度 omega 神经元

深度神经网络

  1. 这是一个深度神经网络

    https://cdn.acwing.com/media/article/image/2024/11/13/181746_df42f583a1-deepneuralnetwork.png

    用 \(L=4\) 表示神经网络层数,用 \(n^{[l]}\) 表示第 \(l\) 层神经元数量,有 \(n^{[1]}=n^{[2]}=5\), \(n^{[3]}=3\), \(n^{[4]}=n^{[L]}=1\), \(n^{[0]}=n_x=3\)。

    对于前向传播有:

    \[z^{[l]}=\omega^{[l]}a^{[l-1]}+b^{[l]} \\ a^{[l]}=g^{[l]}(z^{[l]}) \]

    向量化实现:

    \[Z^{[l]}=\omega^{[l]}A^{[l-1]}+b^{[l]} \\ A^{[l]}=g^{[l]}(Z^{[l]}) \]

    前向传播需要输入 \(A^{[l-1]}\) ,输出 \(A^{[l]}\),缓存 \(Z^{[l]}\), \(\omega^{[l]}\), \(b^{[l]}\)。

    对于反向传播有:

    \[d{{z}^{[l]}}=d{{a}^{[l]}}*{{g}^{[l]}}'( {{z}^{[l]}}) \\ d{{w}^{[l]}}=d{{z}^{[l]}}\cdot{{a}^{[l-1]}} \\ d{{b}^{[l]}}=d{{z}^{[l]}} \\ d{{a}^{[l-1]}}={{w}^{\left[ l \right]T}}\cdot {{dz}^{[l]}} \\ d{{z}^{[l]}}={{w}^{[l+1]T}}d{{z}^{[l+1]}}\cdot \text{ }{{g}^{[l]}}'( {{z}^{[l]}}) \]

    向量化实现:

    \[d{{Z}^{[l]}}=d{{A}^{[l]}}*{{g}^{\left[ l \right]}}'\left({{Z}^{[l]}} \right) \\ d{{\omega}^{[l]}}=\frac{1}{m}\text{}d{{Z}^{[l]}}{{A}^{\left[ l-1 \right]T}} \\ d{{b}^{[l]}}=\frac{1}{m}\sum d{Z}^{[l]} \\ d{{A}^{[l-1]}}={{\omega}^{\left[ l \right]T}}d{{Z}^{[l]}} \]

    dbl = 1. / m * np.sum(dZl, axis=1, keepdims=True)

    反向传播需要输入 \(dA^{[l]}\)和缓存的数据,输出 \(d\omega^{[l]}\), \(db^{[l]}\)和 \(dA^{[l-1]}\)。

  2. 当实现深度神经网络的时候,一个常用的检查代码是否有错的方法就是过一遍算法中矩阵的维数。

    \[\omega^{[l]} \in \mathbb{R}^{n^{[l]}\times n^{[l-1]}} \quad A^{[l-1]}\in \mathbb{R}^{n^{[l-1]}\times m} \quad b^{[l]}\in \mathbb{R}^{n^{[l]\times m}}\\ Z^{[l]}=\omega^{[l]}A^{[l-1]}+b^{[l]} \\ Z^{[l]} \in \mathbb{R}^{n^{[l]\times m}}\quad A^{[l]}\in \mathbb{R}^{n^{[l]\times m}}\\ A^{[l]}=g^{[l]}(Z^{[l]}) \]

    \[dA^{[l]} \in \mathbb{R}^{n^{[l]}\times m} \quad Z^{[l]} \in \mathbb{R}^{n^{[l]}\times m}\\ d{{Z}^{[l]}}=d{{A}^{[l]}}*{{g}^{\left[ l \right]}}'\left({{Z}^{[l]}} \right) \\dZ^{[l]}\in \mathbb{R}^{n^{[l]}\times m}\quad A^{[l-1]}\in \mathbb{R}^{n^{[l-1]}\times m} \quad d\omega^{[l]} \in \mathbb{R}^{n^{[l]}\times n^{[l-1]}}\\ d{{\omega}^{[l]}}=\frac{1}{m}\text{}d{{Z}^{[l]}}{{A}^{\left[ l-1 \right]T}} \\ db^{[l]}\in \mathbb{R}^{n^{[l]}\times1}\\ d{{b}^{[l]}}=\frac{1}{m}\sum d{Z}^{[l]} \\ \omega^{[l]} \in \mathbb{R}^{n^{[l]}\times n^{[l-1]}}\quad dZ^{[l]}\in \mathbb{R}^{n^{[l]}\times m} \quad dA^{[l-1]}\in \mathbb{R}^{n^{[l-1]}\times m}\\d{{A}^{[l-1]}}={{\omega}^{\left[ l \right]T}}d{{Z}^{[l]}} \]

  3. 深度神经网络通过多层的隐藏单元逐步从输入数据中提取特征。每一层的神经元负责学习不同级别的特征,随着层数的增加,网络可以逐步从简单的局部特征(如图像中的边缘)学习到更复杂的全局特征(如面部各个部位或对象的整体结构)。

    在人脸检测中,网络的逐层学习过程:

    1. 第一层(低级特征探测)
      在输入层之后,第一层的神经元主要负责捕捉输入数据中的低级特征。例如,在图像处理中,第一层的神经元可以学习到图像中的边缘(如垂直或水平的边缘)。这类似于你提到的“边缘探测器”或“特征探测器”。
    2. 中间层(组合低级特征):
      后续的层开始将这些低级特征组合成更复杂的局部特征。例如,第二层或第三层的神经元可能将边缘结合起来,识别图像中的某些面部特征,如眼睛、鼻子等。这些层捕捉的是数据的“中级特征”。
    3. 高层(高级特征和全局理解)
      在深层的网络中,神经元将前面学到的局部特征组合起来,形成对整个对象的理解。在人脸识别任务中,这些层可能将眼睛、鼻子、嘴巴等组合起来,最终识别出整张面部图像。

    在网络中,深度指的是神经网络的层数。更深的网络可以捕捉到更多的层级特征,逐步构建出复杂的表示。宽度指的是每一层的神经元数量。在深层网络中,层数相对较多,但每一层的神经元数量相对较少;如果要用浅层网络来模拟深层网络,通常需要大幅增加每一层的神经元数量,甚至达到指数级增长。

    深度神经网络的强大之处在于它可以从简单的特征(如边缘)开始,逐层学习到更复杂的模式。通过这种逐步的特征提取,网络能够有效地解决复杂的任务,如人脸识别、语音识别等。

  4. 在机器学习中,超参数是指那些在训练过程中不能通过模型自我学习得到的参数,而是由开发者手动设置的参数。这些参数的选择对模型的性能有重要影响。常见的超参数包括:

    • 学习率 (Learning Rate):决定每次参数更新的幅度。如果学习率过高,模型可能会错过最优解;如果学习率过低,模型可能会收敛过慢。
    • 梯度下降法的循环轮数 (Epochs):指模型训练时完整遍历数据集的次数。更多的训练轮数通常有助于提高模型的准确度,但也可能导致过拟合。
    • 隐藏层数目 (Number of Hidden Layers):决定了神经网络的深度。更深的网络可以学习更复杂的特征,但也可能增加计算复杂度和过拟合的风险。
    • 每层神经元的数量 (Number of Neurons in Each Layer):影响每层的表示能力。更多的神经元可以增强模型的表达能力,但也增加了计算量和可能的过拟合问题。
    • 激活函数 (Activation Function):决定了每一层神经元输出的非线性特征。常见的激活函数包括ReLU、Sigmoid、Tanh等,选择合适的激活函数有助于网络的有效学习。

    这些超参数通常是通过手动设置的,并且会影响到模型的训练效果和最终的性能,因此它们被称作超参数。

  5. 寻找超参数的最优值通常不是通过简单的公式计算得到,而是依赖于大量的实验和调试。一般来说,超参数优化的过程可以概括为一个 Idea — Code — Experiment — Idea 的迭代循环。

    • Idea:根据问题的需求和经验,提出一组超参数的初步选择。比如选择合适的学习率、隐藏层数、激活函数等。
    • Code:根据初步的超参数选择,编写和实现模型。
    • Experiment:运行模型并观察它的表现,通常通过验证集上的性能来衡量模型是否有效。根据实验结果,你可能会发现模型没有达到预期的效果,或者存在过拟合、欠拟合等问题。
    • Idea:根据实验结果调整超参数。可能是尝试不同的学习率、增加或减少隐藏层数量、选择不同的激活函数等,以改善模型的性能。

    然后再进入下一轮循环。每一轮的实验和反馈都帮助你更精确地选择最优的超参数组合。

    在实践中,为了高效寻找最优的超参数组合,可以使用一些自动化的方法,比如:

    • 网格搜索 (Grid Search):通过穷举不同超参数的所有可能组合,找到最优的超参数。
    • 随机搜索 (Random Search):在超参数的空间内随机选择组合,进行多次实验,虽然可能不如网格搜索精确,但计算成本较低。
    • 贝叶斯优化 (Bayesian Optimization):使用概率模型来选择超参数,逐步调整以优化目标函数,通常能在较少的实验次数内找到好的超参数。
  6. 在计算前向传播时,我们需要使用for循环计算1到L层,要记住range是左开右闭区间。

    for i in range(1, L+1)

标签:mathbb,right,times,神经网络,参数,深度,omega,神经元
From: https://www.cnblogs.com/xushengxiang/p/18546261

相关文章

  • 【Pytorch】神经网络介绍|激活函数|使用pytorch搭建方法
    神经网络神经网络介绍概念神经网络人工神经网络ANN也称神经网络NN是一种模仿生物神经网络结构和功能的计算模型人脑可以看作是一个生物神经网络,由众多神经元连接而成,神经网络可以看作是模拟生物神经元的过程输入层inputLayer:输入x的那一层输出层output......
  • 深度学习中batch_size和epoch的区别
    batch_size和epoch是机器学习,尤其是在深度学习中,常见的两个超参数。它们的作用和意义有所不同,理解它们的区别有助于你更好地控制模型的训练过程。以下是它们的详细解释:1.BatchSize(批大小)batch_size是指在一次迭代中输入到神经网络中的样本数量。换句话说,它决定了每......
  • 人工智能AI→计算机视觉→机器视觉→深度学习→在ImageNet有限小样本数据集中学习深度
    前言:通过前篇《人工智能AI→计算机视觉→机器视觉→深度学习→在ImageNet有限小样本数据集中学习深度模型的识别任务实践》我们可以学到如何对实际生活、工作场景中的字符识别、人脸识别、图像类别进行识别的基于深度学习方法的技术路径实现具体包括:准备数据集制作、创建深......
  • 神经网络架构参考:2-2 卷积篇
    densenet结构层名称类型输入大小(HxWxC)输出大小(HxWxC)核尺寸步长参数数量InitialConvConv2D224x224x3112x112x647x729,408MaxPoolingMaxPool2D112x112x6456x56x643x320DenseBlock1Composite56x56x64......
  • 神经网络架构参考:2-1 卷积篇
    提示词:给出{xxx}的网络结构表格,包含层名称、类型、输入大小(HWC),输出大小(HWC)、核尺寸、步长、参数数量AlexNet层名称类型输入大小(HWC)输出大小(HWC)核尺寸步长参数数量输入层输入227x227x3---0Conv1卷积层227x227x355x55x9611x114961111*3+96=34......
  • 深度学习模型的原理、应用与未来发展
    深度学习(DeepLearning)是机器学习的一个分支,已在近十年里取得了巨大进展,推动了人工智能(AI)的跨越式发展。从自动驾驶、语音识别到医疗诊断,深度学习正在深刻影响各行各业。本文将对深度学习模型的基本原理、常见模型类型、实际应用以及未来趋势进行详细介绍,以帮助读者更深入地理......
  • 鸿蒙开发实战:深度解析网络管理技巧与实战应用
    在鸿蒙项目开发中,网络管理扮演着举足轻重的角色。本文将深入剖析鸿蒙网络管理的核心技术,帮助开发者精准把握网络状态,打造流畅且用户友好的应用体验。在鸿蒙应用中,实时监测网络状态是确保应用稳定性和用户体验的关键。网络状态的变化,如从Wi-Fi切换到移动数据,或从有网络状态变为......
  • 【打破传统授信模型:基于深度神经网络 DNN模型的精确授信额度计算方法】-附完整python
    打破传统授信模型:基于深度神经网络DNN模型的精确额度计算方法模型结构概览数据预处理1.导入必要的库2.加载数据3.数据预处理4.构建深度神经网络模型5.模型训练与调参6.模型评估7.可视化训练过程9.完整代码深度神经网络(DeepNeuralNetwork,DNN),该模型通过K......
  • 深度学习 PyTorch 中的 logits 和交叉熵损失函数
    在深度学习中,理解损失函数是训练模型的关键一步。在分类任务中,交叉熵损失函数是最常用的损失函数之一。本文将详细解释PyTorch中的logits、交叉熵损失函数的工作原理,并展示如何调整张量的形状以确保计算正确的损失。什么是logits?logits是模型输出的未归一化预测值,通常......
  • 【深度学习|课程笔记1】何恺明大神在MIT的秋季最新课程!附课程地址
    【深度学习|课程笔记1】何恺明大神在MIT的秋季最新课程!附课程地址【深度学习|课程笔记1】何恺明大神在MIT的秋季最新课程!附课程地址文章目录【深度学习|课程笔记1】何恺明大神在MIT的秋季最新课程!附课程地址课程概览欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指......