神经网络的反向传播算法推导

有了上一篇神经网络的反向传播算法推导 — 前期知识准备 做铺垫,下一步来看看反向传播算法具体的推导过程。一、定义机器学习中常说的两个函数:损失函数 (loss function):是定义在单个样本上的,算的是一个样本的值和预测值的误差,记为C(Θ);代价函数 (cost function):是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均,记为J(Θ);假设函数:二、神经网络结构图以三层神经网络为例: ...
摘要由CSDN通过智能技术生成

目录

一、定义

二、神经网络结构图

三、反向传播算法的四个公式推导


        有了上一篇  神经网络的反向传播算法推导 — 前期知识准备  做铺垫,下一步来看看反向传播算法具体的推导过程。

一、定义

机器学习中常说的两个函数:

损失函数 (loss function):是定义在单个样本上的,算的是一个样本的值和预测值的误差,记为C(Θ)

代价函数 (cost function):是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均,记为J(Θ);

假设函数:h_{\theta }(x) = g(z^{l}) = g(\Theta^{l} x)

[变量定义]

s_{l} : 表示神经网络第 l 层神经元的个数

s_{L}:表示神经网络最终输出的类别数(L表示最后一层)

i:\theta 的尺寸/维度的列,第 i 列

j:\theta 的尺寸/维度的行,第 j 行

二、神经网络结构图

以三层神经网络为例:

                                                                (图1)

上图按照神经网络的计算方法(如不清楚的请参考文章 从逻辑回归到神经网络):

                                                                (图2)

说明:图2中将 \theta _{10}^{(2)} 、\theta _{20}^{(2)} 标为”常量“,有些欠妥,总之意思就是与 a_{j}^{(2)} 无关。

在计算图中可表示如下( 损失函数计算方式有多种,假设我们使用最小化误差函数   \frac{1}{2} \sum_{i=1}^{n} (f(x_{i}) - y_{i})^{2}    ):

这里为什么不是平方误差损失函数  \frac{1}{2m} \sum_{i=1}^{m} (f(x_{i}) - y_{i})^{2}  ,我的理解是在神经网络在计算损失函数时 i 从1到 n对应的是一个样本的多个特征属性,而不是多个样本,因此无需求和后除以m.

三、反向传播算法的四个公式推导

先抛出反向传播算法的四个公式:

\delta ^{L} = \bigtriangledown _{a} C \odot g^{'}(z^{L})         -------------------- BP1

\delta ^{l} = ( (\theta ^{l})^{T} \delta ^{l+1} ) 

  • 51
    点赞
  • 173
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  
神经网络反向传播算法推导可以通过以下步骤进行: 1. 定义符号和常量:根据引用\[1\]中的定义,我们可以定义网络层下标、神经元数量和输入层、隐藏层、输出层的符号。 2. 计算输出层梯度:根据引用\[3\]中的公式,输出层的梯度可以表示为 δ_k = ∂E/∂y_k * ∂y_k/∂u_k。其中,∂E/∂y_k表示损失函数对输出层输出的偏导数,∂y_k/∂u_k表示激活函数对输出层输入的偏导数。 3. 计算隐藏层梯度:根据引用\[2\]中的公式,隐藏层的梯度可以通过链式法则计算得到。具体来说,隐藏层的梯度可以表示为 δ_j = ∑(δ_k * ∂u_k/∂y_j)。其中,∑表示对输出层神经元的求和,δ_k表示输出层的梯度,∂u_k/∂y_j表示输出层输入对隐藏层输出的偏导数。 4. 更新权重和偏置:根据梯度下降法则,可以使用梯度来更新权重和偏置。具体来说,权重的更新可以表示为 Δw_ij = η * δ_j * x_i,其中,η表示学习率,δ_j表示隐藏层的梯度,x_i表示输入层的输出。偏置的更新可以表示为 Δb_j = η * δ_j。 通过以上步骤,我们可以推导神经网络反向传播算法。请注意,这只是一个简单的推导过程,具体的推导可能会根据网络结构和激活函数的选择而有所不同。 #### 引用[.reference_title] - *1* *3* [神经网络——反向传播算法公式推导](https://blog.csdn.net/qq_42733778/article/details/129501294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [神经网络反向传播算法推导](https://blog.csdn.net/hnshhshjq/article/details/85243550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值