首页 > 问答 > 什么是深度神经网络及其基础工作原理?

什么是深度神经网络及其基础工作原理?

发布时间:2025-04-14 15:00:32 | 责任编辑:字母汇 | 浏览量:5 次

一、深度神经网络的定义

深度神经网络(Deep Neural Network,DNN)是一种具有多个隐藏层的神经网络结构。它模仿人脑神经元之间的连接和信息传递方式来处理数据。与传统的浅层神经网络(如单层感知机)相比,深度神经网络通过增加网络的层数来增强模型的表达能力,能够自动学习数据中的复杂特征和模式。

二、基础工作原理

(一)神经元(节点)的结构

  1. 输入信号

    • 每个神经元接收来自前一层神经元的输入信号。这些输入信号可以是原始数据(如图像的像素值、语音信号的振幅等)或者是经过前一层神经元处理后的特征值。假设一个神经元有



      n



      个输入,输入信号分别为




      x






      1












      ,

      x






      2












      ,

      ,

      x






      n















  2. 权重(Weight)

    • 每个输入信号都与一个权重值相关联,权重表示输入信号在神经元中的重要性。权重是神经网络需要学习的参数之一。对于输入信号




      x






      i















      ,对应的权重为




      w






      i















  3. 偏置(Bias)

    • 偏置是一个常数项,它允许神经元的输出在没有输入信号时也能有一个非零的值。偏置可以看作是一个神经元的“阈值”,有助于神经元的激活。

  4. 加权求和

    • 神经元将输入信号与其对应的权重相乘后求和,再加上偏置。这个过程可以用公式表示为



      z
      =



      w






      1













      x






      1












      +



      w






      2













      x






      2












      +



      +



      w






      n













      x






      n












      +


      b



      ,其中



      b



      是偏置。

  5. 激活函数(Activation Function)

    • 激活函数的作用是对加权求和的结果进行非线性变换,使神经网络能够学习和处理复杂的非线性关系。常见的激活函数有:

      • Sigmoid 函数:其表达式为



        f
        (
        z
        )
        =










        1
        +

        e








        z
















        1
















        。它的输出范围在(0,1)之间,可以将输入值映射到一个概率值,常用于二分类问题的输出层。

      • ReLU(Rectified Linear Unit)函数:表达式为



        f
        (
        z
        )
        =


        max
        (
        0
        ,
        z
        )



        。它在输入为正时输出输入值本身,在输入为负时输出为0。ReLU 函数在训练深度神经网络时具有计算速度快、能够缓解梯度消失问题等优点,是目前最常用的激活函数之一。

      • Tanh(双曲正切)函数:表达式为



        f
        (
        z
        )
        =


        tanh
        (
        z
        )



        ,其输出范围在( - 1,1)之间。它和 Sigmoid 函数类似,但输出值为0时对应的输入值为0,这使得它在某些情况下比 Sigmoid 函数表现更好。

(二)网络的层次结构

  1. 输入层

    • 输入层是神经网络的第一层,其神经元数量通常与输入数据的特征数量相对应。例如,在图像识别任务中,如果输入图像的大小是 28×28 像素(灰度图像),那么输入层就有 784 个神经元,每个神经元对应一个像素值。

  2. 隐藏层

    • 隐藏层是位于输入层和输出层之间的层。深度神经网络有多个隐藏层,每个隐藏层包含多个神经元。隐藏层的作用是提取输入数据的特征。从输入层到第一个隐藏层,神经元会学习输入数据的低级特征,如图像中的边缘、纹理等;随着网络层数的增加,后面的隐藏层会学习更高级的特征,如物体的形状、部分等。隐藏层的神经元数量和层数是神经网络结构的重要参数,需要根据具体任务进行调整。

  3. 输出层

    • 输出层是神经网络的最后一层,其神经元数量取决于任务的类型。对于分类任务,输出层的神经元数量通常与类别数量相同,每个神经元的输出表示输入数据属于某个类别的概率(使用 Softmax 激活函数时)。例如,在手写数字识别任务中,输出层有 10 个神经元,分别对应数字 0 - 9。对于回归任务,输出层通常只有一个神经元,输出一个连续的值。

(三)前向传播

  1. 过程描述

    • 前向传播是从输入层开始,数据依次通过每一层的神经元进行计算,最终到达输出层的过程。在每一层,每个神经元都会接收来自前一层的输入信号,进行加权求和、加上偏置,然后通过激活函数得到输出,这个输出再作为下一层神经元的输入。

    • 例如,假设一个简单的两层神经网络,输入层有 3 个神经元,隐藏层有 2 个神经元,输出层有 1 个神经元。输入数据为向量



      [

      x






      1












      ,

      x






      2












      ,

      x






      3












      ]



      ,隐藏层的权重矩阵为






























      w







      11


















      w







      21


















      w







      31































      w







      12


















      w







      22


















      w







      32















































      ,偏置向量为



      [

      b






      1












      ,

      b






      2












      ]



      ,隐藏层的激活函数为 ReLU。那么隐藏层的输出计算过程为:

      • 首先计算加权求和:



        [

        z






        1












        ,

        z






        2












        ]
        =


        [

        w







        11














        x






        1












        +



        w







        21














        x






        2












        +



        w







        31














        x






        3












        +



        b






        1












        ,

        w







        12














        x






        1












        +



        w







        22














        x






        2












        +



        w







        32














        x






        3












        +



        b






        2












        ]



      • 然后通过 ReLU 激活函数:



        [

        h






        1












        ,

        h






        2












        ]
        =


        [
        max
        (
        0
        ,

        z






        1












        )
        ,
        max
        (
        0
        ,

        z






        2












        )]



      • 接下来,假设输出层的权重为



        [

        w







        o
        1













        ,

        w







        o
        2













        ]



        ,偏置为




        b






        o















        ,激活函数为线性函数。输出层的输出计算为:



        y
        =



        w







        o
        1














        h






        1












        +



        w







        o
        2














        h






        2












        +



        b






        o















(四)损失函数和反向传播

  1. 损失函数(Loss Function)

    • 损失函数用于衡量神经网络的预测值与真实值之间的差异。对于不同的任务,损失函数的形式不同。在回归任务中,常用的损失函数是均方误差(Mean Squared Error,MSE),其表达式为




      MSE

      =










      N








      1






















      i
      =
      1






      N













      (

      y






      i





















      y



      ^

















      i













      )






      2










      ,其中



      N



      是样本数量,




      y






      i















      是真实值,









      y



      ^

















      i















      是预测值。在分类任务中,常用的损失函数是交叉熵损失(Cross - Entropy Loss),其表达式为




      CE

      =












      i
      =
      1






      C














      y






      i












      log

      (






      y



      ^

















      i












      )



      ,其中



      C



      是类别数量,




      y






      i















      是真实标签的独热编码,









      y



      ^

















      i















      是预测的类别概率。

  2. 反向传播(Backpropagation)

    • 反向传播是神经网络训练过程中用来更新网络参数(权重和偏置)的关键算法。它的基本思想是利用链式法则计算损失函数对每个参数的梯度,然后根据梯度来更新参数,使损失函数的值逐渐减小。

    • 以一个简单的两层神经网络为例,假设我们已经计算出了损失函数



      L



      关于输出层权重




      w







      o
      1
















      的梯度













      w







      o
      1






















      L
















      。根据链式法则,这个梯度可以分解为













      w







      o
      1






















      L













      =











      y









      L


























      w







      o
      1






















      y
















      。其中,












      y









      L
















      是损失函数对输出的导数,













      w







      o
      1






















      y
















      是输出对权重




      w







      o
      1
















      的导数。通过这种方式,我们可以计算出所有参数的梯度。

    • 然后,使用梯度下降算法更新参数。例如,权重的更新公式为




      w







      o
      1













      =



      w







      o
      1
















      η













      w







      o
      1






















      L
















      ,其中



      η



      是学习率,它是一个超参数,控制着参数更新的步长。通过不断地进行前向传播计算损失,然后反向传播更新参数,神经网络的性能会逐渐提高。

©️版权声明:
本网站(https://aigc.izzi.cn)刊载的所有内容,包括文字、图片、音频、视频等均在网上搜集。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务用于其他用途时,须征得本网站及相关权利人的书面许可,并支付报酬。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,予以删除。

最新Ai信息

最新Ai工具

发表回复