Lecture3:神经网络与反向传播

news2024/11/19 11:24:08

目录

1.计算图

2.反向传播与计算图

2.1 第一个例子

2.2 第二个例子--sigmoid

2.3 第三个例子--MAX门 

2.4 第四和例子--对于向量的梯度 

3.神经网络 

4.常见矩阵求导公式 

4.1 标量对向量求导

4.2  二次型对向量求导


1.计算图

        在实践中我们想要推导和使用解析梯度,但是同时用数值梯度来检查我们的实现结果以确保我们的推导是正确的。

        这篇博客将讲述如何计算任意复杂函数的解析梯度,需要利用到一个叫做计算图的框架。大体上来说,计算图就是我们用这类图表示任意函数,其中图的节点表示我们要执行的每一步计算,如下图的线性分类器:

         一旦我们能用计算图表示一个函数,那么就能用反向传播技术递归地调用链式法则计算图中每个变量的梯度。

2.反向传播与计算图

2.1 第一个例子

        我们要找到函数输出对应任一变量的梯度。

        第一步就是用计算图表示我们的整个函数,如上图中网络结构。

        第二步是计算这个网络的前向传播,如上图中的绿色节点的值。

        这里我们给每个中间变量一个名字:

q=x+y \ \ ,\frac{\partial q}{\partial x}=1,\frac{\partial q}{\partial y}=1

f=qz \ \ ,\frac{\partial f}{\partial q}=z,\frac{\partial f}{\partial z}=q

        我们待求的变量是:\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z}

        我们可以用链式法则求:\frac{\partial f}{\partial x}= \frac{\partial f}{\partial q}\frac{\partial q}{\partial x}=-4*1=-4,其他两项也可以这么求。

         具体说来,在一个节点中,我们做了以下的事情:

        ①前向传播:根据输入x,y计算输出z

        ②根据它的表达式z=f(x,y)来计算它的本地梯度\frac{\partial z}{\partial x},\frac{\partial z}{\partial y}

        ③根据上层反向传播下来的对于此节点的梯度\frac{\partial L}{\partial z}反向传播给上层节点\frac{\partial L}{\partial x},\frac{\partial L}{\partial y}

2.2 第二个例子--sigmoid

f(w,x)=\frac{1}{1+e^{-(w_{0}x_{0}+w_{1}x_{1}+w_{2})}}

 前向传播:

反向传播:

        因此,只要知道本地梯度与上层梯度,那么就能完成反向传播。

        我们也可以将一些节点组合在一起形成更复杂的节点,如下:

         这么做的前提是能写出它的本地梯度才行,在这里我们定义了sigmoid函数:

\sigma (x)=\frac{1}{1+e^{-x}}

         它的本地梯度为:

\frac{d\sigma (x)}{dx}=(1-\sigma (x))\sigma (x)

        通过这种方法我们还是可以完成反向传播。

2.3 第三个例子--MAX门 

         那么max门的梯度如何计算?在卷积神经网络的池化层中,最大池化卷积中的max梯度如何计算?

        如上图,假设max门的上游梯度为2.0,那么这个本地梯度会是怎样的呢?

        我们规定,其中一个变量将会得到刚传递回来的梯度完整值,另外一个变量会得到0。我们可以把这个想象成一个梯度路由器,加法节点回传相同的梯度给进来的两个分支,max门将获取梯度并且将其路由到它其中一个分支。因为只有最大值对应的值才会影响到后面。

2.4 第四和例子--对于向量的梯度 

         这里和前面没有什么区别,只是x,y,z变成了向量的形式。

        这时整个计算流程还是一样的,唯一的区别在于我们刚才的梯度变成了雅克比矩阵。所以现在是一个包含了每个变量里各元素导数的矩阵,比如z在每个x方向的导数。

        那么对于上面这个例子来说,雅可比矩阵的维度是多少呢?4096*4096。

        但在实际运算时多数情况下不需要计算这么大的雅克比矩阵,只需要算一个对角矩阵即可。
        我们举个具体的例子:

f=(x,W)=||w\cdot x||^2=\sum_{i=1}^{n}(W\cdot x)_{i}^{2} \ \ \ x\epsilon \mathbb{R}^n,W\epsilon \mathbb{R}^{n\times n}

         类似如下:(我们实例化了这个例子)

q = W \cdot x = \begin{bmatrix} 0.1 & 0.5\\ -0.3 & 0.8 \end{bmatrix} \begin{bmatrix} 0.2\\ 0.4 \end{bmatrix}

f(q) = ||q||^2 = q_{1}^{2}+ q_{2}^{2}+ ...+ q_{n}^{2}

          它的计算图如下:

         和之前一样,首先将计算图写下来,如上。先将Wx相乘,再计算L_2范数输出。

         现在我们来计算反向传播:

         先计算q方向上的梯度:q是一个二维向量,我们想要做到事情是找到q的每个元素是怎样影响f最终的值的,我们可以发现f在特定q_i中方向上的梯度是二倍的q_i,即:

\frac{\partial f}{\partial q_i}=2q_i

        如果写成向量的形式: 

\frac{\partial f}{\partial q} = \begin{bmatrix} 0.44\\ 0.52 \end{bmatrix}

         我们再来计算关于W的梯度是什么:我们采用和之前相同的方法,使用链式法则,我们希望计算关于Wq的本地梯度,我们观察一下对每个q的影响,q的每个元素对应W的每个元素,这就是雅可比矩阵,那什么是导数呢?或者说q的第一个元素的梯度是什么?我们的第一个元素对应W_{11}所以q_1对应W_{11}么?

         我们通过矩阵论的知识知道:

\frac{\partial q_K}{\partial W_{i,j}}= 1_{k=i}x_j

         由此:

\frac{\partial f}{\partial W_{i,j}}= \sum_{k}^{}\frac{\partial f}{\partial q_{k}}\frac{\partial q_{k}}{\partial W_{i,j}}=\sum_{k}^{}(2q_{k})(1_{k=i}x_j) =2q_ix_j

        同理:

\frac{\partial f}{\partial x_{i}}= \sum_{k}^{}\frac{\partial f}{\partial q_{k}}\frac{\partial q_{k}}{\partial x_{i}}=2q_kW_{k,i}

         最后的结果如下:

         我们看一个偏导数门的运行,我们运行前向传播,输入x,y输出z。反向传播输入dz逆向梯度希望输出的是\frac{ \partial L}{\partial x},\frac{ \partial L}{\partial y}的梯度继续传递下去,我们需要注意的是我们需要缓存前向传播的数值,因为我们需要利用它取计算反向传播。因此在前向计算中我们需要缓存x,y这些值,在反向计算使用链式法则将上游梯度的值使用其他分支的值对它进行量化并保持计算\frac{ \partial L}{\partial x},\frac{ \partial L}{\partial y}

3.神经网络 

        在我机器学习的专栏说过,这里不再赘述。

        在这里放一个激活函数的预览图:

4.常见矩阵求导公式 

4.1 标量对向量求导

已知:

f(x)=A^T\cdot x=\sum_{i=1}^{n}a_ix_i,A=[a_1,a_2,...,a_n],x=[x_1,x_2,...,x_n],求\frac{df(x)}{dx}

\frac{df(x)}{dx}=\begin{bmatrix} \frac{\partial f(x)}{\partial x_{1}}\\ \frac{\partial f(x)}{\partial x_{2}} \\ \frac{\partial f(x)}{\partial x_{3}} \\ ... \\ \frac{\partial f(x)}{\partial x_{n}} \end{bmatrix}=\begin{bmatrix} a_1\\ a_2 \\ a_3 \\ ... \\ a_n \end{bmatrix}

因此:

\frac{dA^Tx}{dx}=\frac{dx^TA}{dx}=A

4.2  二次型对向量求导

已知:f(x)=x^TAx=\sum_{i=1}^{n}\sum_{j=1}^{n}a_{ij}x_{i}x_{j},x\epsilon \mathbb{R}^n,A\epsilon \mathbb{R}^{n\times n},求\frac{df(x)}{dx}

\frac{df(x)}{dx}=\begin{bmatrix} \frac{\partial f(x)}{\partial x_{1}}\\ \frac{\partial f(x)}{\partial x_{2}} \\ \frac{\partial f(x)}{\partial x_{3}} \\ ... \\ \frac{\partial f(x)}{\partial x_{n}} \end{bmatrix} =\begin{bmatrix} \sum_{j=1}^{n}a_{1j}x_{j}+\sum_{i=1}^{n}a_{i1}x_{i}\\ \sum_{j=2}^{n}a_{1j}x_{j}+\sum_{i=1}^{n}a_{i2}x_{i} \\ \sum_{j=3}^{n}a_{1j}x_{j}+\sum_{i=1}^{n}a_{i3}x_{i} \\ ... \\ \sum_{j=n}^{n}a_{1j}x_{j}+\sum_{i=1}^{n}a_{in}x_{i} \end{bmatrix}

因此:

\frac{df(x)}{dx} = Ax + A^Tx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SOLIDWORKS PDM 2023新功能 SOLIDWORKS本地数据管理优化升级

SOLIDWORKS 2023新版本已经与大家见面,今天众联亿诚与大家分享SOLIDWORKS PDM 2023新功能,让我们先一起来看看视频—— 点击观看SOLIDWORKS PDM 2023新功能 长期以来,SOLIDWORKS PDM Professional一直为SOLIDWORKS的本地数据管理制定标准。随…

centos8 离线安装redis的艰苦历程(gcc、make、redis)

目录 背景环境 一、安装gcc 二、安装make 三、安装redis 背景环境 服务器centos8,内网不能联网 本机Windows,能联网 一、安装gcc 1、下载rpm文件 比较恶心的是需要手动的搜索一个一个的下载。不要问我为什么知道的!!&…

C++11特性-模板的改进

1.模板的右尖括号>> C11模板的多个右尖括号需要一个空格符fun<A<> >,之前连在一起是右移操作符 C11特性优化了这个fun<A<>> 2.模板的默认参数 函数模板能添加模板参数 template <typename T int> 类模板参数多个时&#xff0c;必…

opencv c++ 光流法、稀疏光流法、稠密光流法、均值迁移追踪(meanshift、camshift)

1、概念 参考&#xff1a; (70条消息) 什么是光流法_张年糕慢慢走的博客-CSDN博客_光流法 (70条消息) 计算机视觉--光流法(optical flow)简介_T-Jhon的博客-CSDN博客_光流法 此外&#xff0c;还有基于均值迁移的目标追踪方法&#xff1a; camshift&#xff1a; (75条消息)…

【VC7升级VC8】将vCenter Server 7.X 升级为 vCenter Server 8 (上)—— VC 8系统要求与升级前的说明

目录1. 新 vCenter Server Appliance 8的系统要求1.1 确认升级路径1.2 硬件要求1.3 存储要求1.4 软件要求1.5 vSphere Client 软件要求2. 升级说明2.1 升级阶段介绍2.2 旧VC7虚拟机的信息2.3 打开升级用安装程序&#xff08;1&#xff09;进入vcsa镜像目录&#xff08;2&#x…

leetcode(力扣)算法刷题-160. 相交链表

描述&#xff1a; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据保证整个链式结构中不存在环。 注意&#xff0c…

Java基础入门第三版黑马课后习题(编程部分)

第 1 章 Java 开发入门 第 2 章 Java 编程基础 1. 编写程序,计算13…99的值,要求如下&#xff1a; (1)使用循环语句实现1~99的遍历 (2)在遍历过程中,通过条件判断当前的数是否为奇数,如果是就累加,否则不加。 public class getSum { 2 public static void main(String[] ar…

vue elementui 多选级联组件 全选功能

Vue 封装 多选级联组件 支持全选功能 使用方式和elm官方一致&#xff0c;原参数一致主要参数&#xff1a; options&#xff1a;级联数菜单。多维数组mulSelectedVal&#xff1a;绑定值。id集合。且取值最后一层idcollapseTags&#xff1a;是否tag展示fieldNames&#xff1a;自…

酵母葡聚糖硫酸酯(SPS)|葡聚糖修饰异黄酮|右旋糖酐修饰Savinase蛋白酶

酵母葡聚糖硫酸酯(SPS)|葡聚糖修饰异黄酮|右旋糖酐修饰Savinase蛋白酶 酵母葡聚糖硫酸酯(SPS) 中文名称&#xff1a;酵母葡聚糖硫酸酯(SPS) 纯度&#xff1a;95% 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 外观:固体或粘性液体 包装&#xff1a;瓶装/袋…

C++ 函数重载的细节

前言&#xff1a;如果不想看论证&#xff0c;可以直接点击总结&#xff0c;跳转到最后 目录 总结 1、使用重载函数时&#xff0c;如果数据类型不匹配&#xff0c;C尝试使用类型转换与形参进行匹配&#xff0c;如果转换后有多个函数能匹配上&#xff0c;编译器将报错&#xff1…

【重识云原生】第六章容器基础6.4.12节——IPv4与IPv6双协议栈配置

1 IPv4/IPv6 双协议栈特性 Kubernetes v1.23 [stable] IPv4/IPv6 双协议栈网络能够将 IPv4 和 IPv6 地址分配给 Pod 和 Service。 从 1.21 版本开始&#xff0c;Kubernetes 集群默认启用 IPv4/IPv6 双协议栈网络&#xff0c; 以支持同时分配 IPv4 和 IPv6 地址。 1.1 支持的…

6 张配图通俗易懂说透 K8S 请求和限制

6 张配图通俗易懂说透 K8S 请求和限制 在 Kubernetes 中使用容器时&#xff0c;了解涉及的资源是什么以及为何需要它们很重要。有些进程比其他进程需要更多的 CPU 或内存。这很关键&#xff0c;永远不应该让进程挨饿。知道了这一点&#xff0c;我们应该正确配置容器和 Pod&…

ICV:L2级乘用车渗透率预计将在2025年超过50%

全球前沿科技咨询机构ICV近期发布了全球乘用车市场的分析报告。ICV在报告中指出&#xff0c;作为汽车消费大国之一的中国在2022年仍是乘用车销量第一的国家。目前L0和L1级别的自动驾驶乘用车仍占市场主导地位&#xff0c;但随着供应端在技术方面的不断突破以及需求端在认可度方…

让你的Python程序像C语言一样快

让你的Python程序像C语言也一样快 在《Python性能优化指南–让你的Python代码快x3倍的秘诀》中有提到很多加速Python程序的方法&#xff0c;在随后的系列文章中我也为大家专门介绍了用PyPy加速Python 和 用Numba&#xff1a;一行代码将Python程序运行速度提升100倍。但在所有方…

VM系列振弦读数模块通讯协议

通讯协议是上位机通过 VMXXX 模块支持的数字接口完成信息交互的数据格式、传输步骤、 通讯速率等的一系列预先约定。上位机必须按照本章描述的通讯协议规则来完成与 VMXXX 的数据交互工作。 寄存器机制 VMXXX 内部维护有若干寄存器&#xff0c;模块在寄存器参数值的控制下…

【LeetCode_字符串_逻辑分析】13. 罗马数字转整数

目录考察点第一次&#xff1a;2022年12月8日15:24:16解题思路代码展示优秀的解题思路1. 总结规律2. 字符串替换题目描述13. 罗马数字转整数 考察点 逻辑分析能力 第一次&#xff1a;2022年12月8日15:24:16 解题思路 分析能力有待提高 代码展示 class Solution {public i…

【HTML5期末作业】用HTML+CSS一个兰州交通大学官网网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

百度 Android 直播秒开体验优化

作者 | 任雪龙 导读 网络直播功能作为一项互联网基本能力已经越来越重要&#xff0c;手机中的直播功能也越来越完善&#xff0c;电商直播、新闻直播、娱乐直播等多种直播类型为用户提供了丰富的直播内容。随着直播的普及&#xff0c;为用户提供极速、流畅的直播观看体验也越来越…

外汇天眼:什么是外汇动量交易?新手指南

1. 什么是动量交易&#xff1f; 我们需要了解的第一件事是动量到底是什么。势头是字面意义上的趋势强度。动量交易策略涉及仅在强劲的价格趋势方向开仓&#xff0c;利用持续的价格变动&#xff0c;并在趋势逆转之前退出。 动量交易者通常不会担心趋势在哪里结束和开始&#x…

计算机毕业设计ssm+vue基本微信小程序的校园通知小程序系统 uniapp 小程序

项目介绍 随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具。在高校,各种管理系统层出不穷,为校园通知管理开发必要的系统,能够有效的提升管理效率。一直以来,校园通知一直没有进行系统化的管理,学生无法准确掌握高校通知状态,…