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

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. 最后就是,理解之后,我们直接记住结论即可;在此,贴上书上的结论:

    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何下载jmeter旧版本

如何下载jmeter旧版本 推荐先用旧版本做好测试基本操作,因为高版本不适合做压力测试,需要证书,有点麻烦。 1.百度或直接打开jmeter官网:https://jmeter.apache.org/ 2.向下拖到Archives一栏,点击Apache Jmeter archi…

ICC2:ignore pin的设置

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接:

OS Copilot测评

1.按照第一步管理重置密码时报错了,搞不懂为啥?本来应该跳转到给的那个实例的,我的没跳过去 2.下一步重置密码的很丝滑没问题 3安全组新增入库22没问题 很方便清晰 4.AccessKey 还能进行预警提示 5.远程连接,网速还是很快,一点没卡,下载很棒 6.替换的时候我没有替换<>括…

六、快速启动框架:SpringBoot3实战-个人版

六、快速启动框架&#xff1a;SpringBoot3实战 文章目录 六、快速启动框架&#xff1a;SpringBoot3实战一、SpringBoot3介绍1.1 SpringBoot3简介1.2 系统要求1.3 快速入门1.4 入门总结回顾复习 二、SpringBoot3配置文件2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文…

调制信号识别系列 (一):基准模型

调制信号识别系列 (一)&#xff1a;基准模型 说明&#xff1a;本文包含对CNN和CNNLSTM基准模型的复现&#xff0c;模型架构参考下述两篇文章 文章目录 调制信号识别系列 (一)&#xff1a;基准模型一、论文1、DL-PR: Generalized automatic modulation classification method b…

如何优化 PostgreSQL 中对于复杂数学计算的查询?

文章目录 一、理解复杂数学计算的特点二、优化原则&#xff08;一&#xff09;索引优化&#xff08;二&#xff09;查询重写&#xff08;三&#xff09;数据库配置调整&#xff08;四&#xff09;使用数据库内置函数的优势 三、具体的优化方案和示例&#xff08;一&#xff09;…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【加密导入密钥(C/C++)】

加密导入密钥(C/C) 以加密导入ECDH密钥对为例&#xff0c;涉及业务侧加密密钥的[密钥生成]、[协商]等操作不在本示例中体现。 具体的场景介绍及支持的算法规格。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 设备A&#xf…

【机器学习】——决策树模型

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

PHP宝藏神器多功能投票系统源码小程序

&#x1f389;发现宝藏神器&#xff01;一键解锁“多功能投票小程序”的无限可能✨ &#x1f308; 开篇安利&#xff1a;告别繁琐&#xff0c;拥抱高效&#xff01; Hey小伙伴们&#xff0c;是不是经常为组织活动、收集意见而头疼不已&#xff1f;&#x1f92f; 今天就要给大…

迭代器模式(大话设计模式)C/C++版本

迭代器模式 C #include <iostream> #include <string> #include <vector>using namespace std;// 迭代抽象类,用于定义得到开始对象、得到下一个对象、判断是否到结尾、当前对象等抽象方法&#xff0c;统一接口 class Iterator { public:Iterator(){};virtu…

Android约束布局的概念与属性(2)

目录 3&#xff0e;链式约束4&#xff0e;辅助线 3&#xff0e;链式约束 如果两个或以上控件通过下图的方式约束在一起&#xff0c;就可以认为是他们是一条链&#xff08;如图5为横向的链&#xff0c;纵向同理&#xff09;。 图5 链示意图 如图5所示&#xff0c;在预览图中选…

面向计算机类岗位人才需求分析研究 --基于前程无忧招聘网站的数据经验证据

1 引言 随着智能互联网的快速发展和一系列的技术变革&#xff0c;从而推动全国各行业进行政策的调整、资源的共享、产业的升级和信息的创新。结合国家的战略&#xff0c;政府明确的指出&#xff0c;建设国家大数据池意义重大。通过海量数据的支持与算法优化后的计算能力&#…

水果商城系统 SpringBoot+Vue

1、技术栈 技术栈&#xff1a;SpringBootVueMybatis等使用环境&#xff1a;Windows10 谷歌浏览器开发环境&#xff1a;jdk1.8 Maven mysql Idea 数据库仅供学习参考 【已经答辩过的毕业设计】 项目源码地址 2、功能划分 3、效果演示

Perforce发布白皮书,解读电动汽车初创公司如何加速进入市场并降低软件开发中的风险和成本

电动汽车&#xff08;EV&#xff09;领域的初创企业正迅速崛起&#xff0c;创新速度显著加快。然而&#xff0c;随着消费者对电动汽车需求的激增&#xff0c;老牌汽车制造商正加速进军这一市场&#xff0c;加剧了行业竞争。为在竞争中生存并发展&#xff0c;电动汽车初创企业必…

机器学习与模式识别_清华大学出版社

contents 前言第1章 绪论1.1 引言1.2 基本术语1.3 假设空间1.4 归纳偏好1.5 发展历程1.6 应用现状 第2章 模型评估与选择2.1 经验误差与过拟合2.2 评估方法2.3 性能度量2.3.1 回归任务2.3.2 分类任务 2.4 比较检验2.5 偏差与方差2.5.1 偏差-方差分解2.5.2 偏差-方差窘境 第3章 …

新技术引领商业智能新时代:从 AI 到自助分析的演变

最新技术资源&#xff1a; https://www.grapecity.com.cn/resources/ 引言&#xff1a;商业智能的新技术浪潮 在当今数据驱动的世界中&#xff0c;技术进步不断改变着商业智能&#xff08;BI&#xff09;领域。特别是人工智能&#xff08;AI&#xff09;和自助分析工具的发展&…

python 10个自动化脚本

目录 &#x1f31f; 引言 &#x1f4da; 理论基础 &#x1f6e0;️ 使用场景与代码示例 场景一&#xff1a;批量重命名文件 场景二&#xff1a;自动下载网页内容 场景三&#xff1a;数据清洗 场景四&#xff1a;定时执行任务 场景五&#xff1a;自动化邮件发送 场景六…

10分钟使用网站构建框架hugo本地搭建个人网站并快速上线详细教程

文章目录 前言1. 安装环境2. 配置环境变量与hugo安装2.1 创建程序目录2.2 配置环境变量2.3 查看程序版本 3. 创建博客网站3.1 创建站点3.2 在站点中创建一篇文章3.3 为网站添加主题 4. 本地访问测试5. 安装内网穿透工具6. 配置公网地址7. 配置固定公网地址 前言 今天和大家分享…

压测引擎数据库设计(上)

压测引擎数据库设计&#xff08;上&#xff09; 引言 在当今快速发展的互联网时代&#xff0c;软件质量保证和性能测试变得尤为重要。自动化测试平台&#xff0c;提供了一套完整的解决方案&#xff0c;以确保软件产品在发布前能够满足性能和稳定性的要求。本文将深入探讨滴云自…

启发式防御大模型越狱攻击

前言 在本文中&#xff0c;我们来分析、复现几个典型的启发式的防御工作&#xff0c;用于防御面向大语言模型的越狱攻击。 Self Examination 首先来看Self Examination方法。 这是一种简单的零样本防御LLM攻击的方法&#xff0c;旨在防止用户接触到由LLMs诱导产生的有害或恶…