深层神经网络

文章详细阐述了深层网络中前向传播的过程,包括计算每个层的激活值和输出,以及核对矩阵的维数检查。同时,介绍了如何利用前向和后向传播构建神经网络,强调了缓存激活值在反向传播中的重要性。此外,讨论了参数和超参数在神经网络训练中的作用,如权重、偏置、学习率和隐藏层结构等,指出超参数选择对模型性能的影响。
摘要由CSDN通过智能技术生成

目录

1、深层网络中的前向传播

2、核对矩阵中的维数

3、使用前向、后向传播函数搭建深层神经网络

4、参数和超参数


1、深层网络中的前向传播

  • 一个训练样本 x  前向传播
  • 第一层需要计算 𝑧 [1] = 𝑤[1]𝑥 + 𝑏 [1],𝑎 [1] = 𝑔 [1] (𝑧 [1] )(𝑥可以看做 𝑎 [0]
    第二层需要计算𝑧 [2] = 𝑤[2]𝑎 [1] + 𝑏 [2],𝑎 [2] = 𝑔 [2] (𝑧 [2] )
    以此类推,
    第四层为 𝑧 [4] = 𝑤 [4] 𝑎 [3] + 𝑏 [4] ,𝑎 [4] = 𝑔 [4] (𝑧 [4] ) 前向传播可以归纳为多次迭代𝑧 [𝑙] = 𝑤[𝑙]𝑎 [𝑙−1] + 𝑏 [𝑙] 𝑎 [𝑙] = 𝑔 [𝑙] (𝑧 [𝑙] )

    • 向量化实现过程可以写成:𝑍 [𝑙] = 𝑊[𝑙]𝑎 [𝑙−1] + 𝑏 [𝑙],𝐴 [𝑙] = 𝑔[𝑙] (𝑍[𝑙] ) (𝐴 [0] = 𝑋)这里只能用一个显式 for 循环,𝑙从1到𝐿,然后一层接着一层去计算核对矩阵中的维数

    2、核对矩阵中的维数

    • 检查矩阵的维度方法:
      𝑤的维度是(下一层的维数,前一层的维数),即𝑤[𝑙] : ( 𝑛 [𝑙] , 𝑛 [𝑙−1] ) ; 𝑏的维度是(下一层的维数,1),即 : 𝑏 [𝑙] : (𝑛 [𝑙] , 1); 𝑧 [𝑙] ,𝑎 [𝑙] : (𝑛 [𝑙] , 1); 𝑑𝑤[𝑙]和𝑤[𝑙]维度相同,𝑑𝑏[𝑙] 𝑏 [𝑙] 维度相同,且 𝑤 𝑏 向量化维度不变,但 𝑧 , 𝑎 以及𝑥的维 度会向量化后发生变化。

    向量化后:
    𝑍 [𝑙] 可以看成由每一个单独的𝑍 [𝑙]叠加而得到,𝑍 [𝑙] = (𝑧 [𝑙][1] 𝑧 [𝑙][2] 𝑧 [𝑙][3] 𝑧 [𝑙][𝑚] ) , 𝑚为训练集大小,所以𝑍 [𝑙]的维度不再是(𝑛 [𝑙] , 1),而是(𝑛 [𝑙] , 𝑚)。 𝐴 [𝑙]: (𝑛 [𝑙] , 𝑚) 𝐴 [0] = 𝑋 = (𝑛 [𝑙] , 𝑚)

    3、使用前向、后向传播函数搭建深层神经网络

    •  建一个深度神经网络
    • 在第 𝑙 层你有参数𝑊[𝑙]和𝑏 [𝑙],正向传播里有输入的激活函数,输入是前一层𝑎 [𝑙−1],输是𝑎 [𝑙], 我们之前讲过𝑧 [𝑙] = 𝑊[𝑙]𝑎 [𝑙−1] + 𝑏 [𝑙] , 𝑎 [𝑙] = 𝑔 [𝑙] (𝑧 [𝑙] ) ,那么这就是你如何从入𝑎
      [𝑙−1]走到输出的𝑎 [𝑙] 。之后你就可以把𝑧 [𝑙]的值缓存起来,我在这里也会把这包括在缓存中,因为缓存的 𝑧 [𝑖] 对以后的正向反向传播的步骤非常有用
    • 然后是反向步骤或者说反向传播步骤,同样也是第𝑙层的计算,你会需要实现一个函数输入为𝑑𝑎 [𝑙] ,输出 𝑑𝑎 [𝑙−1]的函数。一个小细节需要注意,输入在这里其实是𝑑𝑎 [𝑙]以及所缓存的𝑧 [𝑙]值,之前计算好的𝑧 [𝑙]值,除了输出 𝑑𝑎 [𝑙−1] 的值以外,也需要输出你需要的梯度
      𝑑𝑊[𝑙]和 𝑑𝑏 [𝑙],这是为了实现梯度下降学习

    • 把输入特征𝑎 [0],放入第一层并计算第一层的激活函数,用𝑎 [1]表示,你需要𝑊[1]和𝑏 [1]
      来计算,之后也缓存 𝑧 [𝑙]值。之后喂到第二层,第二层里,需要用到𝑊[2]和𝑏 [2],你会需要计算第二层的激活函数𝑎 [2]。后面几层以此类推,直到最后你算出了𝑎 [𝐿],第𝐿层的最终输出值 𝑦^。在这些过程里我们缓存了所有的𝑧值,这就是正向传播的步骤

    • 𝑑𝑎 [𝐿]的值放在这里,然后这个方块会给我们𝑑𝑎[𝐿−1]的值,以此类推,直到我们得 𝑑𝑎 [2] 和𝑑𝑎[1],你还可以计算多一个输出值,就是𝑑𝑎[0] ,但这其实是你的输入特征的导数,并不重要,起码对于训练监督学习的权重不算重要,你可以止步于此。反向传播步骤中也会输出𝑑𝑊[𝑙] 𝑑𝑏 [𝑙] ,这会输出 𝑑𝑊 [3] 𝑑𝑏 [3] 等等
    • 神经网络的一步训练包含了,从 𝑎 [0]开始,也就是 𝑥 然后经过一系列正向传播计算得到 𝑦^,之后再用输出值计算这个(第二行最后方块),再实现反向传播。现在你就有所有的导数项了,𝑊也会在每一层被更新为 𝑊 = 𝑊 − 𝛼𝑑𝑊, 𝑏也一样,𝑏 = 𝑏 − 𝛼𝑑𝑏,反向传播就都计算完毕,我们有所有的导数值,那么这是神经网络一个梯度下降循环
    • 其中 反向传播中总是在循环进行da = dL/da,然后使用dz = dl/da*da/dz 求 dz(在 da/dz的求导中会使用到激活函数求导),最后使用 z 对 参数 w 和 b 求导进行梯度下降

    4、参数和超参数

    • 深度神经网络起很好的效果,还需要规划好参数以及超参数
    • 参数:神经网络中的参数是指权重和偏置,它们是神经网络中可训练的部分,需要通过训练来学习得到。在神经网络的每一层中,都有一组权重和一个偏置。权重用于将输入信号进行线性变换,偏置用于调整变换后的数据分布,使其更符合任务要求。通过不断调整这些参数的值,神经网络可以逐渐逼近最优解。
    • 超参数:超参数是指神经网络中的一些非训练参数,需要手动指定并根据经验或者调参等方法进行优化。比如神经网络中的学习率、正则化系数、网络层数、隐藏层神经元数量等都是超参数。超参数的选择可以直接影响神经网络的性能和泛化能力。
    • 比如算法中的 learning rate 𝑎(学习率)、 iterations(梯度下降法循环的数量)、 𝐿(隐藏
      层数目)、 𝑛 [𝑙] (隐藏层单元数目)、 choice of activation function(激活函数的选择)都需要你来设置,这些数字实际上控制了最后的参数𝑊和𝑏 的值,所以它们被称作超参数
    • 参数的作用:神经网络中的参数是模型的核心部分,它们的优化可以让神经网络更好地拟合数据,从而提高模型的准确率。
    • 超参数的作用:超参数的选择可以影响模型的训练效率、泛化能力、网络的容量和复杂度等方面,使得模型更加适合特定的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q渡劫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值