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

【机器学习】033_反向传播

一、计算图、反向传播原理

1. 回顾前向传播

        例:假设现在有一个神经网络,其仅有一个输出层和一个神经单元

        · 定义 z = wx+b

        · 定义 a = g(z) = z = wx+b,即激活函数对激活值不再做具体处理

        · 定义平方损失函数 J(w,b) = \frac{1}{2}(a-y)^2,计算a的值与真实值的差距

        此时,通过计算图,我们可以看到前向传播的过程:

        ①输入 x,分别与权重 w 和 b 做运算得到 z,再经过激活函数得到 a 的值;

        ②拿 a 的值与真实值 y 做比较,从而得到损失函数的值。

        

        在这个过程中,我们通过计算图将得到损失函数 J(w,b) 的每一小步操作都呈现了出来,并用诸如 c 和 d 的变量名表示其中的某一部分,※这方便我们后续进行反向传播的求导操作。

        如果我们要实现梯度下降不断更新权重 w 和 b 的值从而减小损失函数,就需要知道损失函数对于 w 和 b 的导数值。这个过程我们称之为【反向传播】。

2. 反向传播

        损失函数对于 w 和 b 的导数值不能够直接求导呈现,由于 J(w,b) 是 w 和 b 经过了多个变换最终计算出来的,因此要对 J(w,b) 求 w 和 b 的导数,就应该使用链式法则来进行计算。

        如图所示,在计算图中进行反向传播的运算,最终可以通过链式法则得到 \frac{\partial J}{\partial w} 和 \frac{\partial J}{\partial b} 的值。

        · 利用这些值,我们就可以进一步执行梯度下降算法的相关操作,来不断更新 w 和 b 的值从而使 J(w,b) 最小。

        · 一般地,当导数为0时,证明达到了极小值点,此时即是梯度下降收敛的位置。

※有关梯度下降算法的相关知识,详见先前学习笔记※

        激活函数的选择:

        目前使用较多的是ReLU函数,它的求导表现是要么让某个参数通过,要么让某个参数消失,因此优化表现更好,且缓解了梯度消失问题(后续会进一步学习)

二、使用 Sympy 的库和包自行计算导数

import sympy
# 使用J和w作为求导计算的符号
J, w = sympy.symbols('J, w')
# 确定两者之间的函数表达式
J = w**2
# diff()函数表示求第一个数对第二个数的导数
dJ_dw = sympy.diff(J, w)
print(dJ_dw)
print(dJ_dw.subs([(w,2)]))  # subs表示将w的值实际代入进去求dJ_dw的值

http://www.lryc.cn/news/237992.html

相关文章:

  • 关于缓存和数据库一致性问题的深入研究
  • vim模式用法总结
  • 基于深度学习的单帧图像超分辨率重建综述
  • 开源与闭源:创新与安全的平衡
  • C# 22H2之后的windows版本使用SetDynamicTimeZoneInformation设置时区失败处理
  • 分布式与微服务 —— 初始
  • 多因素方差分析(Multi-way Analysis of Variance) R实现
  • git撤销某一次commit提交
  • 数据结构详细笔记——图
  • 黑马React18: 基础Part II
  • Maven工程继承关系,多个模块要使用同一个框架,它们应该是同一个版本,项目中使用的框架版本需要统一管理。
  • Selenium UI 自动化
  • 竞赛 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]
  • 【unity3D-网格编程】01:Mesh基础属性以及用代码创建一个三角形
  • Java贪吃蛇小游戏
  • Linux:系统基本信息扫描(1)
  • VR全景打造亮眼吸睛创意内容:三维模型、实景建模
  • ProTable高级表格获取表单数据
  • 力扣刷题第二十七天--二叉树
  • 一个快递包裹的跨国之旅
  • qsort函数使用方法总结
  • 机器学习介绍与分类
  • linux控制台命令
  • 快时尚品牌Halara登上TikTok美国小店榜Top 5,运动健身风靡TikTok
  • Docker 安装 Oracle Database 23c
  • 什么是美国服务器,有哪些优势,适用于什么场景?
  • TeXLive 2023安装教程
  • uniapp中swiper 轮播带左右箭头,点击切换轮播效果demo(整理)
  • 网络连接Android设备
  • Redis(位图Bitmap和位域Bitfield)