1.8.0-矩阵乘法的反向传播-简单推导

news2024/9/21 4:35:59

1相关资料

  1. 之前分享过一个博客里面写的,我们大致了解并记住结论的博客:【深度学习】7-矩阵乘法运算的反向传播求梯度_矩阵梯度公式-CSDN博客;
  2. 这里再分享一下自然语言处理书上关于这部分的推导过程:3-矩阵相乘-梯度反向传播的计算.pdf;

2补充内容

  1. 矩阵乘法,在深度学习中,如果不考虑mini-batch学习的话,那么就是行向量与一个矩阵相乘得到一个行向量的过程;考虑mini-batch学习时,行向量就成了矩阵了,于是就变成矩阵与矩阵的乘积;
  2. 所以关键是搞清楚向量与矩阵相乘得到向量的这个过程,然后直接将维度值为1的那个维度,从1变成N即可。
  3. 书上只描述了对 x x x求梯度的过程,这里补充一下对权重矩阵求梯度的过程。
  1. 不考虑mini-batch,计算过程如下图所示:

    在这里插入图片描述

  2. 现需要对权重矩阵中某个具体值求梯度,有下式:

    ∂ L ∂ W i j = ∂ L ∂ y j ∂ y j ∂ W i j (1) \frac{\partial L}{\partial W_{ij}}=\frac{\partial L}{\partial y_j}\frac{\partial y_j}{\partial W_{ij}}\tag{1} WijL=yjLWijyj(1)

    1. 这里与对 x x x求梯度不同,对权重矩阵中某个值求梯度,只取决于某一个 y j y_j yj;因为输入 x x x与权重矩阵的某一列相乘得到输出 y y y中的某一个元素;
  3. 根据上图,(1)式中 ∂ y j ∂ W i j = x i \frac{\partial y_j}{\partial W_{ij}}=x_i Wijyj=xi;所以有下式:
    ∂ L ∂ W i j = ∂ L ∂ y j x i (2) \frac{\partial L}{\partial W_{ij}}=\frac{\partial L}{\partial y_j}x_i\tag{2} WijL=yjLxi(2)

  4. 进一步分析,我们发现,对权重矩阵的第 j j j列的每个元素 W , j W_{,j} W,j求梯度,都只是和输出的 y j y_j yj有关,且 ∂ L ∂ W i j \frac{\partial L}{\partial W_{ij}} WijL x i x_i xi对应;因此有下式:
    ∂ L ∂ W , j = ∂ L ∂ y j ∂ y j ∂ W , j = ∂ L ∂ y j x (3) \frac{\partial L}{\partial W_{,j}}=\frac{\partial L}{\partial y_j}\frac{\partial y_j}{\partial W_{,j}}=\frac{\partial L}{\partial y_j}x\tag{3} W,jL=yjLW,jyj=yjLx(3)

  5. 更进一步,从 W , j W_{,j} W,j扩展到 W W W中的每个元素;式(3)可以理解为:要用 y i y_i yi的梯度乘上输入 x x x中的每个值;那么此时就可以理解为:要用 y y y的梯度乘上输入 x x x中的每个值,且是 y y y的梯度中的每个值都要分别与输入 x x x中的每个值相乘;即此时所有的 ∂ L ∂ y j \frac{\partial L}{\partial y_j} yjL都要出马了;因此直接对(3)式进行简单粗暴的改造就会得到下式:
    ∂ L ∂ W = ∂ L ∂ y x (4) \frac{\partial L}{\partial W}=\frac{\partial L}{\partial y}x\tag{4} WL=yLx(4)

  6. 但是 y y y的维度是[1,H] x x x的维度是[1,D],两者无法直接相乘;

  7. 此时我们分析一下式(4)等号左右两边的维度,既然是相等的,那么维度得符合要求; ∂ L ∂ W \frac{\partial L}{\partial W} WL表示对权重矩阵中的每个元素求梯度,那么梯度矩阵的维度与权重矩阵相同,即[D,H];那么式(4)的维度变化应该是:[D,H]=[D,1]x[1,H];即需要将 x x x转置,然后放到前面,即下式:
    ∂ L ∂ W = x T ∂ L ∂ y (5) \frac{\partial L}{\partial W}=x^T\frac{\partial L}{\partial y}\tag{5} WL=xTyL(5)

  8. 式(5)可以用下图来确认一下:

    1. 权重矩阵的某一列确实只取决于 ∂ L ∂ y j \frac{\partial L}{\partial y_j} yjL;权重矩阵一列中的某一个值确实还只取决于某一个 x i x_i xi

    在这里插入图片描述

  9. 以上只是一条数据的过程;考虑mini-batch情况下,变动的就是维度值为1的那个维度;从1变成N

  10. 数据量的增加不会影响整个过程,因为本来mini-batch个数据也是可以一个个输进去计算的;所以上述过程不会因为数据量多了而有所不同;

  11. 下图是mini-batch情况下式(5)的情况:

    1. 权重矩阵的某一列本质上其实还是只取决于 ∂ L ∂ y j \frac{\partial L}{\partial y_j} yjL;只不过此时 ∂ L ∂ y j \frac{\partial L}{\partial y_j} yjL不是一个值,而是一个列向量;
    2. [ x i 1 , x i 2 , . . . , x i N ] [x_{i1},x_{i2},...,x_{iN}] [xi1,xi2,...,xiN] [ y j 1 , y j 2 , . . . , y j N ] T [y_{j1},y_{j2},...,y_{jN}]^T [yj1,yj2,...,yjN]T对应元素相乘再相加,其实就是mini-batch个数据对 W i j W_{ij} Wij梯度的累加;

    在这里插入图片描述

3总结

  1. 理解上述过程之后,我们要知道,我们需要弄清楚的是一条数据的过程,mini-batch的情况只是为了可以一次性处理多条数据,不会影响一条数据的计算过程;而一条数据的推导过程,其实还是去看里面具体的某一个值的梯度是怎么算的,最终就是落到了加法和乘法,落实到我们学过的基本的加法和乘法的偏导数了。

  2. 最后就是,理解之后,我们直接记住结论即可;在此,贴上书上的结论:

    在这里插入图片描述

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

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

相关文章

开源模型应用落地-FastAPI-助力模型交互-进阶篇(一)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。 在数据验证和转换方面,高级用法提供了更精细和准确的控制&#…

上海慕尼黑电子展开展,启明智显携物联网前沿方案亮相

随着科技创新的浪潮不断涌来,上海慕尼黑电子展在万众瞩目中盛大开幕。本次展会汇聚了全球顶尖的电子产品与技术解决方案,成为业界瞩目的焦点。启明智显作为物联网彩屏显示领域的佼佼者携产品亮相展会,为参展者带来了RTOS、LINUX全系列方案及A…

【见刊通知】MVIPIT 2023机器视觉、图像处理与影像技术国际会议

MVIPIT 2023:https://ieeexplore.ieee.org/xpl/conhome/10578343/proceeding 入库Ei数据库需等20-50天左右 第二届会议征稿启动(MVIPIT 2024) The 2nd International Conference on Machine Vision, Image Processing & Imaging Techn…

java —— tomcat 部署项目

一、通过 war 包部署 1、将项目导出为 war 包; 2、将 war 包放置在 tomcat 目录下的 webapps 文件夹下,该 war 包稍时便自动解析为项目文件夹; 3、启动 tomcat 的 /bin 目录下的 startup.bat 文件,此时即可从浏览器访问项目首页…

3.Python学习:模块\包\yaml

1.模块与包–互相引用 (1)一个模块就是一个.py文件 (2)有模块的目录–文件夹 (3)包:文件夹包含__init__.py文件 (4)导入包时,init.py文件里的内容会执行一次 …

聚鼎装饰画:装饰画喊个与现在是什么情况

回眸历史长河,装饰画以其独特的魅力一直为人类生活环境添彩增趣。从古埃及的壁画到文艺复兴时期的油画,再到现代简约的线条画,装饰画如同时代的缩影,映射出不同历史阶段的文化特征与审美趣味。 在现代社会,装饰画的现状…

C语言学习笔记[21]:分支语句if...else

C语言是结构化的程序设计语言 顺序结构选择结构循环结构 分支语句对应的就是选择结构,循环语句对应的就是循环结构 分支语句 if...elseswitch 循环语句 whilefordo...while goto语句 语句 C语言中由分号隔开的就是一条语句,比如: #…

猫咪浮毛多怎么办?一分钟推荐性价比高的养猫空气净化器排名

作为一名猫咖店老板,我发现很多铲屎官来店里咨询,在春夏换季时会频繁打喷嚏、全身过敏红肿。这是因为猫咪在换季时会大量掉毛,家里就像下雪一样,空气中充满了猫毛。这些猫毛上附带的细菌会随浮毛被人吸入,从而引发打喷…

【计算机毕业设计】021基于weixin小程序微信点餐

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

奇安信20240513笔试

题目一 解题思路 n转为字符串,如果位数为偶数,取前一半设为x,后一段为y,从x最低位开始,9,9*10,9*10*10。。。 到最高位,加x,如果x大于或等于y,加1. 位数为奇数…

数据结构——二叉树之c语言实现堆与堆排序

目录 前言: 1.二叉树的概念及结构 1.1 特殊的二叉树 1.2 二叉树的存储结构 1.顺序存储 2.链式存储 2. 二叉树的顺序结构及实现 2.1 堆的概念 ​编辑 2.2 堆的创建 3.堆的实现 3.1 堆的初始化和销毁 初始化: 销毁: 插入&…

React Hooks:上天在提醒你,别再用Class组件了!

React Hooks:上天在提醒你,别再用Class组件了! React Hooks 的出现可以说是前端界的一场革命。它不仅让我们告别了繁琐的 Class 组件,还让代码变得更加简洁、易读、易维护。如果你还在固守 Class 组件的阵地,那么这篇…

如何处理 PostgreSQL 中由于表锁定导致的并发访问问题?

文章目录 一、表锁定的类型二、表锁定导致的并发访问问题三、解决方案(一)使用合适的锁定模式(二)优化事务处理(三)避免不必要的锁定(四)使用索引(五)监控和分…

Java-链表反转

题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 图示: 输入: head [1,2,3,4,5] 输出: [5,4,3,2,1] 解题思路: 情况一: 只有一个节点或者没有节点 …

小白学C++(第一天)基础入门

温馨提醒:本篇文章,请各位c基础不行的童鞋不要贸然观看 C的第一个程序 第一个关键字namespace namespace 是定义空间的名字的关键字,使用格式格式如下: namespace 空间名 { } 其中{ }内的命名空间的成员,可以定义…

计算机图形学入门26:高级光线传播

1.有偏与无偏 在做光线追踪很多方法都是用蒙特卡洛积分去估计,蒙特卡洛积分有些是无偏的(Unbiased),所谓无偏估计就是无论使用多少个样品,所估计的期望值都是正确的。那么,所有其他情况都是有偏的(Biased),就是估计的期…

MySQL存储与优化 一、MySQL架构原理

1.MySQL体系架构 MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层 (1)网络连接层 客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常…

《初级C++》(一)

初级C(一) 1: C参考⽂档2:C创建与实现创建C的第一套程序命名空间的理解空间命名的实现C输⼊&输出缺省参数 1: C参考⽂档 https://legacy.cplusplus.com/reference/ 《非官方》 https://zh.cppreference.com/w/cpp 《官方中文版》 https:/…

前端面试题28(Vue3的Teleport功能在什么场景下特别有用?能给个例子吗?)

Vue 3 的 Teleport 功能在需要将组件的渲染结果放置在 DOM 树中与当前组件位置无关的任意位置时特别有用。这通常涉及到需要将某些UI元素(如模态框、弹出菜单、通知、工具提示等)从其逻辑上的父级组件中“提取”出来,放置到页面的更高层级或完…

PCIe 入门 Demo(一):基础知识

PCIe 入门 Demo(一):基础知识 主要参考 up主 芯片人阿伟 的教程【针对 RISC-V 架构】 视频介绍:https://www.bilibili.com/video/BV1Xm4y1V757 源码仓库:https://github.com/oldawei/show_me_the_code 本文主要补充一些…