深度学习(四)-前馈神经网络

本文介绍了前馈神经网络的结构与信息传播过程,重点讲解了反向传播算法的链式法则,并探讨了自动梯度计算的重要性。接着,文章详细阐述了几种常见的梯度优化方法,包括SGD、Momentum、Adagrad、RMSprop和Adam,解释了它们的工作原理和PyTorch中的实现。这些内容对于理解深度学习模型的训练过程至关重要。

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

  在前馈神经网络中,各神经元分别属于不同的层。每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层。第 0 层叫输入层,最后一层叫输出层,其它中间层叫做隐藏层,相邻两层的神经元之间为全连接关系,也称为全连接神经网络( F N N FNN FNN),表现形式如下图所示。

  我们用下面的记号来描述一个前馈神经网络:
     L L L:表示神经网络的层数
     m ( l ) m^{(l)} m(l):表示第 l l l 层神经元的个数
     f l ( ⋅ ) f_l(·) fl():表示 l l l 层神经元的激活函数
     W ( l ) W^{(l)} W(l):表示 l − 1 l−1 l1 层到第 l l l 层的权重矩阵
     b ( l ) b^{(l)} b(l):表示 l − 1 l−1 l1 层到第 l l l 层的偏置
     z ( l ) z^{(l)} z(l):表示 l l l 层神经元的净输入
     a ( l ) a^{(l)} a(l):表示 l l l 层神经元的输出

  前馈神经网络通过下面公式进行信息传播:
z ( l ) = W ( l ) ∗ a ( l − 1 ) + b ( l ) z^{(l)} = W ^{(l)} * a^{(l−1)} + b^{(l)} z(l)=W(l)a(l1)+b(l)
a ( l ) = f l ( z ( l ) ) a^{(l)} = f_l(z^{(l)}) a(l)=fl(z(l))
  上面两式也可以得到:
z ( l ) = W ( l ) ∗ f l − 1 ( z ( l − 1 ) ) + b ( l ) z^{(l)} = W^{(l)}* f_{l−1}(z^{(l−1)}) + b^{(l)} z(l)=W(l)fl1(z(l1))+b(l)
  或者
a ( l ) = f l ( W ( l ) ∗ a ( l − 1 ) + b ( l ) ) a^{(l)} = f_l(W^{(l)}*a^{(l−1)} + b^{(l)}) a(l)=fl(W(l)a(l1)+b(l))
  这样,前馈神经网络可以通过逐层的信息传递,得到网络最后的输出 a ( l ) a^{(l)} a(l)。整个网络可以看作一个复合函数 ϕ ( x ; W , b ) ϕ(x; W, b) ϕ(x;W,b),将向量 x x x 作为第1层的输入 a ( 0 ) a(0) a(0),将第 L L L 层的输出 a ( L ) a(L) a(L) 作为整个函数的输出。
x = a ( 0 ) → z ( 1 ) → a ( 1 ) → z ( 2 ) → ⋅ ⋅ ⋅ → a ( L − 1 ) → z ( L ) → a ( L ) = φ ( x ; W , b ) ) x = a(0) → z(1) → a(1) → z(2) → · · · → a(L−1) → z(L) → a(L) = φ(x; W, b)) x=a(0)z(1)a(1)z(2)a(L1)z(L)a(L)=φ(x;W,b))
  其中 W , b W, b W,b 表示网络中所有层的连接权重和偏置。

1. 反向传播算法

  上面简单的介绍了前馈神经网络,我们发现一个神经网络的输出好坏是由参数 W , b W,b W,b 决定的,那么训练神经网络的过程其实就是不断的更新参数来得到最好的结果,在前面的pytorch学习(一)-线性回归中使用了损失函数 f f f 来控制模型训练的结果,其本质就是需要计算出 f f f 的梯度 ∇ f \nabla f f,反向传播算法就是一个有效地求解梯度的算法。

1.1 链式法则

  假设有一个函数 f ( x , y , z ) = ( x + y ) z f(x,y,z)=(x+y)z f(x,y,z)=(x+y)z,我们需要对其求微分,当然很多人一眼就可以看出 f ( x , y , z ) f(x,y,z) f(x,y,z) x x x y y y z z z 的微分,但是如果函数复杂呢,所以我们换一种方式,假设 q = x + y q=x+y q=x+y, 那么可以求得微分:
∂ f ∂ q = z ; ∂ f ∂ z = q ; ∂ q ∂ x = 1 ; ∂ q ∂ y = 1 \frac{ {\partial f}}{ {\partial q}} = z;\frac{ {\partial f}}{ {\partial z}} = q;\frac{ {\partial q}}{ {\partial x}} = 1;\frac{ {\partial q}}{ {\partial y}} = 1 qf=z;zf=q;xq=1;yq=1
  但是我们关心的是 ∂ f ∂ x , ∂ f ∂ y , ∂ q ∂ z \frac{ {\partial f}}{ {\partial x}},\frac{ {\partial f}}{ {\partial y}},\frac{ {\partial q}}{ {\partial z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值