首页 > 其他分享 >umich cv-3-2

umich cv-3-2

时间:2023-10-14 16:44:06浏览次数:32  
标签:dL dscore 梯度 矩阵 cv 计算 umich 节点

UMICH CV Neural Network

既然谈到神经网络,我们肯定要讨论在神经网络中是如何进行梯度的计算以及参数的优化的
传统的方法就是我们手动计算梯度,但是随着神经网络层数的增加,这种方法显然过于复杂
因此我们引入了计算图的概念,从一个简单的例子出发:
img
我们可以把一个(x+y)z的计算式拆分成上图所示,向前传播就是计算出我们的输出结果,一步步
而反向传播是为了计算梯度,比如说我们想要f对x,y,z的偏导
求f对y的偏导 我们可以根据链式法则来计算:
img
用专业的语言,我们要求下游梯度,现在我们在当前一个节点,可以很容易求出当前梯度,上游再将之前计算出的上游梯度传递给我们,我们就可以计算出下游梯度:
img

举一个更复杂的例子:
img
这里我们可以把中间sigmoid函数这一部分合并成为一个节点,直接用上游梯度,乘以计算得到的当前梯度,简化计算图的计算过程

计算图本身有些节点也存在着规律:
img
+节点,它们的下游节点梯度于上游节点梯度相等
*节点,它们下游节点梯度等于上游节点梯度乘以另一个下游节点的值
复制节点,下游节点梯度等于上游节点梯度之和
max节点,下游较大节点梯度于上游相等,较小节点为0

涉及到实际应用时,我们可以选择直接一步步实现前向传播钰反向:
img
也可以写成模块化的形式:
img

上面讨论的都是针对一个数的梯度计算过程,我们还需要把它推广到矩阵与向量,首先需要一点矩阵/向量之间的微分知识:
img

向量反向传播:
img
img
只有对角线上元素有关系,所以除了对角线其它元素均为0,在对角线上的元素,由于是max函数,所以大于0的和对y求导的值相等,小于0的值为0
注意到这个矩阵绝大多数的数均为0,所以我们在具体实现的时候不要直接用矩阵来进行乘法,可以直接应用我们的推理结果:
img

矩阵反向传播:
img
显然当地矩阵非常大,我们不可能直接去用矩阵来进行乘法运算:
img
img
img
我们根据定义去求dy/dx1,1,可以发现最终数值等于w矩阵的第一行,最终结果可以换成下图所示形式
img
我们也可以通过矩阵的形状去记忆,最终结果是一个ND的矩阵,所以要乘以一个MD的矩阵,就是W的转置

在作业中我们要实现两层神经网络的前向传播与反向传播,前向传播比较简单直接计算即可,反向传播分为两步
score = W2h1+b2
根据softmax损失函数的定义梯度,我们可以计算出dL/dscore,再根据之前推导,dL/dw2 = dL/dscore * dscore/dw2 = h1.t() * dL/dscore
dL/dh1 = dL/dscore * w2.t()
dL/db2 = dL/dscore,偏置项这里的梯度计算就是累和,注意维度一致
同样h1 = W1
x+b1 也可以这样计算

反向传播也可以计算高阶导数,只需要把低阶导数作为计算图的一部分,然后反向传播即可
img

标签:dL,dscore,梯度,矩阵,cv,计算,umich,节点
From: https://www.cnblogs.com/dyccyber/p/17764347.html

相关文章

  • 【CV】图像去雾物理模型推导
    经典大气散射模型描述如下:\[I(x)=J(x)t(x)+A(1-t(x)),\]其中\(I(x)\)为带雾图像,\(J(x)\)为清晰图像,\(t(x)\)为透射率,\(A\)为全局全局背景光。通常定义\[t(x)=e^{-\betad(x)},\]其中\(\beta\)为大气散射系数,\(d(x)\)为相机到物体深度。我们从体渲染角度来考虑带雾图像模型,简......
  • umich cv-3-1
    UMICHCVNeuralNetwork对于传统的线性分类器,分类效果并不好,所以这节引入了一个两层的神经网络,来帮助我们进行图像分类可以看出它的结构十分简单,x作为输入层,经过max(0,W1*x)到达h隐藏层,再经过W2到达s输出层如果我们对隐藏层的结果进行可视化,我们可以看到如下的图像:相对于之前......
  • Spring远程命令执行漏洞(CVE-2022-22965)原理研究
    一、前置知识SpringMVC参数绑定为了方便编程,SpringMVC支持将HTTP请求中的的请求参数或者请求体内容,根据Controller方法的参数,自动完成类型转换和赋值。之后,Controller方法就可以直接使用这些参数,避免了需要编写大量的代码从HttpServletRequest中获取请求数据以及类型转换。这个......
  • Webmin 远程命令执行 (CVE-2019-15107)
    说明内容漏洞编号CVE-2019-15107漏洞名称Webmin远程命令执行漏洞评级影响范围Webmin<=1.920漏洞描述该漏洞由于password_change.cgi文件在重置密码功能在重置密码功能中发现了一个错误,该错误允许恶意第三方由于缺少输入验证而执行恶意代码。修复方......
  • umich cv-2-2
    UMICHCVLinearClassifiers在上一篇博文中,我们讨论了利用损失函数来判断一个权重矩阵的好坏,在这节中我们将讨论如何去找到最优的权重矩阵想象我们要下到一个峡谷的底部,我们自然会选择下降最快的斜坡,换成我们这个问题就是要求权重矩阵相对于损失函数的梯度函数,最简单的方法就是......
  • 国标GB28181视频平台LiteCVR运行CPU占用与实际使用不符,如何排查?
    在高清化、智能化和网联化的需求下,5G、人工智能、云计算等信息技术快速发展带动用途单一的安防系统功能走向多元化,并开始与电信、交通、建筑、物业等多领域进行融合,进入泛安防时代。LiteCVR平台可支持多协议、多类型设备接入,平台可在复杂的网络环境中,将分散的各类视频资源进行统......
  • 介绍国标视频监控平台LiteCVR的三种监控视频录像模式
    经过多年的高速发展,安防已经发展成为一个庞大的产业。在经历了数字化、网络化发展后,安防行业未来将向智能化方向深度发展,智能安防行业市场规模将持续增长。视频监控综合管理平台LiteCVR可以实现海量资源的接入、汇聚、计算、存储、处理等,平台具备轻量化接入能力,可支持多协议方式......
  • LabWindows/CVI Scan( )函数
    背景介绍Scan()可以将字符串按照用户formatString格式说明分解成多个组件。最多可以分解29个组件。Scan()很强大且复杂,使用起来容易出错,但它却被频繁使用。Scan()函数函数头文件:#include<formatio.h>函数原型:intScan(void*Source,charFormat_String[],...);将字符......
  • 2023ICCV_Retinexformer: One-stage Retinex-based Transformer for Low-light Image
    一.Motivation(1)Retinex理论没有考虑到噪声,并且基于Retinex分解的网络通常需要很多阶段训练。(2)直接使用从CNN从低光图像到正常光图像的映射忽略了人类的颜色感知,CNN更适合捕获局部信息,对于捕获远程依赖和非局部自相似性方面存在局限。二.Contribution(1)设计了一个阶段......
  • 安防视频监控平台EasyCVR集成到ios系统不能播放是什么原因?如何解决?
    视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控汇聚平台EasyCVR支持多种播放......