当前位置: 首页 > news >正文

神经网络二分类任务详解:前向传播与反向传播的数学计算

神经网络二分类任务详解:前向传播与反向传播的数学计算

1. 引言

神经网络是深度学习的基础模型,在二分类任务中表现出色。本文将详细分析一个具体神经网络实例的前向传播、反向传播和参数更新过程,通过完整的数学计算展示神经网络的工作原理。二分类任务是神经网络最基础的应用之一,目标是让模型能够将输入数据划分为两个类别(如0和1)。我们将使用包含一个隐藏层的简单网络结构,其中隐藏层使用ReLU激活函数,输出层使用Sigmoid激活函数,损失函数采用均方误差。

本文将逐步演示如何计算神经网络的输出,然后通过反向传播算法计算梯度并更新权重参数。通过比较参数更新前后的损失值,我们可以直观地看到神经网络的学习过程。这种从理论到实践的分析方法,有助于读者深入理解神经网络的核心机制。

2. 神经网络结构与前向传播

2.1 网络架构与参数初始化

我们使用的神经网络结构如下:

  • 输入层:2个神经元(对应特征值[0.8, 0.5])
  • 隐藏层:3个神经元(神经元3、4、5)
  • 输出层:1个神经元(神经元6)

权重和偏置参数初始值为:

  • 神经元3:权重[0.5, 0.2],偏置0.2
  • 神经元4:权重[0.8, 0.4],偏置0.1
  • 神经元5:权重[0.5, 0.6],偏置0.2
  • 神经元6:权重[0.3, 0.6, 0.5],偏置0.2

下面是初始神经网络的结构图:

w13=0.5
w14=0.8
w15=0.5
w23=0.2
w24=0.4
w25=0.6
w36=0.3
w46=0.6
w56=0.5
输入1: 0.8
神经元3偏置=0.2
神经元4偏置=0.1
神经元5偏置=0.2
输入2: 0.5
神经元6偏置=0.2

2.2 前向传播计算过程

前向传播是数据从输入层流向输出层的过程,每一层都会进行加权求和和激活函数变换。

隐藏层计算(使用ReLU激活函数)

神经元3的计算:
[
\begin{aligned}
z_3 &= w_{13}x_1 + w_{23}x_2 + b_3 = 0.5 \times 0.8 + 0.2 \times 0.5 + 0.2 = 0.4 + 0.1 + 0.2 = 0.7 \
a_3 &= \text{ReLU}(z_3) = \max(0, 0.7) = 0.7
\end{aligned}
]

神经元4的计算:
[
\begin{aligned}
z_4 &= w_{14}x_1 + w_{24}x_2 + b_4 = 0.8 \times 0.8 + 0.4 \times 0.5 + 0.1 = 0.64 + 0.2 + 0.1 = 0.94 \
a_4 &= \text{ReLU}(z_4) = 0.94
\end{aligned}
]

神经元5的计算:
[
\begin{aligned}
z_5 &= w_{15}x_1 + w_{25}x_2 + b_5 = 0.5 \times 0.8 + 0.6 \times 0.5 + 0.2 = 0.4 + 0.3 + 0.2 = 0.9 \
a_5 &= \text{ReLU}(z_5) = 0.9
\end{aligned}
]

输出层计算(使用Sigmoid激活函数)
[
\begin{aligned}
z_6 &= w_{36}a_3 + w_{46}a_4 + w_{56}a_5 + b_6 = 0.3 \times 0.7 + 0.6 \times 0.94 + 0.5 \times 0.9 + 0.2 \
&= 0.21 + 0.564 + 0.45 + 0.2 = 1.424 \
a_6 &= \sigma(z_6) = \frac{1}{1 + e^{-1.424}} \approx \frac{1}{1 + 0.2407} \approx 0.806
\end{aligned}
]

损失函数计算(均方误差)
真实标签y=1,预测值a₆≈0.806
[
L = \frac{1}{2} (y - a_6)^2 = \frac{1}{2} (1 - 0.806)^2 = \frac{1}{2} \times (0.194)^2 \approx 0.018818
]

3. 反向传播与参数更新

3.1 反向传播原理

反向传播算法是神经网络训练的核心,通过链式法则计算损失函数对每个参数的梯度。基本思想是先将误差从输出层向隐藏层传播,然后根据梯度下降算法更新权重和偏置参数。学习率η控制参数更新的步长,这里设为0.1。

3.2 梯度计算过程

输出层误差计算
[
\begin{aligned}
\frac{\partial L}{\partial a_6} &= a_6 - y = 0.806 - 1 = -0.194 \
\frac{\partial a_6}{\partial z_6} &= a_6(1 - a_6) = 0.806 \times (1 - 0.806) = 0.806 \times 0.194 \approx 0.156364 \
\delta_6 &= \frac{\partial L}{\partial z_6} = \frac{\partial L}{\partial a_6} \cdot \frac{\partial a_6}{\partial z_6} = (-0.194) \times 0.156364 \approx -0.03034
\end{aligned}
]

隐藏层误差计算(ReLU导数为分段函数)
[
\begin{aligned}
\delta_3 &= \delta_6 \cdot w_{36} \cdot \text{ReLU}‘(z_3) = (-0.03034) \times 0.3 \times 1 \approx -0.009102 \
\delta_4 &= \delta_6 \cdot w_{46} \cdot \text{ReLU}’(z_4) = (-0.03034) \times 0.6 \times 1 \approx -0.018204 \
\delta_5 &= \delta_6 \cdot w_{56} \cdot \text{ReLU}'(z_5) = (-0.03034) \times 0.5 \times 1 \approx -0.01517
\end{aligned}
]

参数梯度计算

输出层权重和偏置梯度:
[
\begin{aligned}
\frac{\partial L}{\partial w_{36}} &= \delta_6 \cdot a_3 \approx (-0.03034) \times 0.7 = -0.021238 \
\frac{\partial L}{\partial w_{46}} &= \delta_6 \cdot a_4 \approx (-0.03034) \times 0.94 = -0.028520 \
\frac{\partial L}{\partial w_{56}} &= \delta_6 \cdot a_5 \approx (-0.03034) \times 0.9 = -0.027306 \
\frac{\partial L}{\partial b_6} &= \delta_6 \approx -0.03034
\end{aligned}
]

隐藏层权重和偏置梯度(以神经元3为例):
[
\begin{aligned}
\frac{\partial L}{\partial w_{13}} &= \delta_3 \cdot x_1 \approx (-0.009102) \times 0.8 = -0.007282 \
\frac{\partial L}{\partial w_{23}} &= \delta_3 \cdot x_2 \approx (-0.009102) \times 0.5 = -0.004551 \
\frac{\partial L}{\partial b_3} &= \delta_3 \approx -0.009102
\end{aligned}
]

3.3 参数更新

根据梯度下降算法,参数更新公式为:新参数=原参数-学习率×梯度。

输出层参数更新
[
\begin{aligned}
w_{36}^{\text{new}} &= 0.3 - 0.1 \times (-0.021238) \approx 0.302124 \
w_{46}^{\text{new}} &= 0.6 - 0.1 \times (-0.028520) \approx 0.602852 \
w_{56}^{\text{new}} &= 0.5 - 0.1 \times (-0.027306) \approx 0.502731 \
b_6^{\text{new}} &= 0.2 - 0.1 \times (-0.03034) \approx 0.203034
\end{aligned}
]

隐藏层参数更新(神经元3)
[
\begin{aligned}
w_{13}^{\text{new}} &= 0.5 - 0.1 \times (-0.007282) \approx 0.500728 \
w_{23}^{\text{new}} &= 0.2 - 0.1 \times (-0.004551) \approx 0.200455 \
b_3^{\text{new}} &= 0.2 - 0.1 \times (-0.009102) \approx 0.200910
\end{aligned}
]

其他参数更新类似,全部更新后的参数如下表所示:

参数原始值更新后值
( w_{13} )0.50.500728
( w_{23} )0.20.200455
( b_3 )0.20.200910
( w_{14} )0.80.801456
( w_{24} )0.40.400910
( b_4 )0.10.101820
( w_{15} )0.50.501214
( w_{25} )0.60.600759
( b_5 )0.20.201517
( w_{36} )0.30.302124
( w_{46} )0.60.602852
( w_{56} )0.50.502731
( b_6 )0.20.203034

4. 更新后的网络结构与验证

4.1 更新后的网络结构

参数更新后,神经网络的结构图如下(权重四舍五入到小数点后6位):

graph TDI1[输入1: 0.8] -->|w13≈0.500728| H3[神经元3偏置≈0.200910]I1 -->|w14≈0.801456| H4[神经元4偏置≈0.101820]I1 -->|w15≈0.501214| H5[神经元5偏置≈0.201517]I2[输入2: 0.5] -->|w23≈0.200455| H3I2 -->|w24≈0.400910| H4I2 -->|w25≈0.600759| H5H3 -->|w36≈0.302124| O6[神经元6偏置≈0.203034]H4 -->|w46≈0.602852| O6H5 -->|w56≈0.502731| O6

4.2 更新后前向传播验证

使用更新后的权重重新计算输出和损失:

隐藏层输出
[
\begin{aligned}
a_3 &= \text{ReLU}(0.500728 \times 0.8 + 0.200455 \times 0.5 + 0.200910) \approx \text{ReLU}(0.70172) = 0.70172 \
a_4 &= \text{ReLU}(0.801456 \times 0.8 + 0.400910 \times 0.5 + 0.101820) \approx \text{ReLU}(0.94344) = 0.94344 \
a_5 &= \text{ReLU}(0.501214 \times 0.8 + 0.600759 \times 0.5 + 0.201517) \approx \text{ReLU}(0.90287) = 0.90287
\end{aligned}
]

输出层输出
[
\begin{aligned}
z_6 &\approx 0.302124 \times 0.70172 + 0.602852 \times 0.94344 + 0.502731 \times 0.90287 + 0.203034 \
&\approx 0.212 + 0.569 + 0.454 + 0.203 = 1.438 \
a_6 &\approx \frac{1}{1 + e^{-1.438}} \approx 0.8083
\end{aligned}
]

新损失值
[
L_{\text{new}} = \frac{1}{2} (1 - 0.8083)^2 \approx \frac{1}{2} \times (0.1917)^2 \approx 0.018374
]

4.3 损失比较与分析

  • 更新前损失:( L_{\text{old}} \approx 0.018818 )
  • 更新后损失:( L_{\text{new}} \approx 0.018374 )
  • 损失减少量:( \Delta L = 0.018818 - 0.018374 = 0.000444 )(减少约2.36%)

损失函数的减少表明通过一次反向传播,神经网络的预测准确性得到了提升。参数调整方向是正确的,网络正在学习如何更好地拟合训练数据。

5. 总结与扩展

本文通过一个具体的二分类神经网络实例,详细演示了前向传播、反向传播和参数更新的完整计算过程。关键要点如下:

  1. 前向传播计算网络输出,涉及加权求和和激活函数变换。
  2. 反向传播使用链式法则计算损失函数对每个参数的梯度。
  3. 参数更新根据梯度方向调整权重和偏置,使损失函数减小。
  4. 学习率控制参数更新步长,影响训练稳定性和收敛速度。

实际应用建议

  • 对于更复杂的数据集,可能需要增加网络层数或神经元数量。
  • ReLU激活函数能有效缓解梯度消失问题,适用于隐藏层。
  • Sigmoid函数适用于二分类输出层,将输出映射到概率范围。
  • 损失函数的选择取决于任务类型,均方误差适用于回归问题,交叉熵损失更适用于分类问题。

神经网络通过多次迭代上述过程,不断优化参数,最终得到一个能够准确分类的模型。理解这些基础原理对于深入学习更复杂的神经网络架构至关重要。

http://www.dtcms.com/a/407509.html

相关文章:

  • 慈溪网站建设慈溪如何建设盈利网站
  • 免费网站软件app做网站 如何注册公司
  • 制作网站培训网页布局有哪几种
  • 给一张立方体图片的斜视图,对着图片建模的ppo模型,架构怎么设计 solidworks
  • Kafka 面试题及详细答案100道(51-65)-- 性能优化与调优
  • 高要seo整站优化wordpress边框
  • 岐山县住房和城市建设局网站企业网站的推广阶段和特点
  • vue前端项目使用摄像头扫码时需要访问https服务接口,访问自建证书出现接口报错,可能在你的电脑上安装证书
  • 设置环境变量时避坑:不要引号不要空格,如:set API_KEY=.....
  • C++设计模式_创建型模式_单件模式
  • 进阶:基于 dlib 的 68 点人脸关键点检测实现
  • 设计师培训心得北京seo诊断
  • (超详细,于25年更新版) VMware 虚拟机安装以及Linux系统—CentOS 7 部署教程
  • 微信兼职平台网站开发多个域名多国语言网站seo优化
  • JavaScript逆向补环境逆向WASM的思路
  • Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
  • 厦门网站的关键词自动排名大都会app可以删记录吗
  • 网站优化标题百姓网免费发布信息网下载
  • DaemonSet使用示例
  • 台州建网站北京装饰公司电话
  • docker容器的三大核心技术UnionFS(下)
  • 4.6 BRDF
  • Python GIL全局解释器锁技术演进
  • 小学老师在哪个网站做ppt做羊毛毡的网站
  • 模块化神经网络
  • Python多线程:让程序 “多线作战” 的秘密武器
  • 黟县方坑岭影视基地三剧连拍开机 《生死制暴》影视赋能乡村振兴
  • 微信网站打不开海南搜索引擎优化
  • 国产化(银河麒麟_海光CPU)消息中间件选型及安装
  • 宁波品牌网站推广优化公司章丘营销型网站设计公司