y.sum().backward()为什么需要.sum()的思考
这是2.5小节的内容,在网上看了一些回答后仍然不是很清楚,深入思考后忽然想明白了,在此记录一下,希望对和我一样有疑惑的人有所帮助 : )
首先,需要明确两点:
- backward是对标量的操作,没办法对向量进行操作
- 梯度是偏导数的集合
在清楚这个之后,我们仍然沿用书中的例子。
1. 结果为标量
如果关于向量x的函数为y = torch.dot(x, x) ,也就是点积,这个函数最后得到的是一个标量。如果我们的输入是x = [1, 2, 3],那么y = x1*x1 + x2*x2 + x3*x3 = 1 + 2 + 9 = 12,它的梯度就是[2x1, 2x2, 2x3] = [1, 4, 6]。以上都是我们在高数中学到的,容易理解。
2. 结果为向量
但是当关于x的函数为y = x*x时,就会变的复杂起来。同样的输入x = [1, 2, 3],得到的函数值为y = [x1*x1, x2*x2, x3*x3] = [1, 4, 9],这是一个向量。我们仍然想要求函数的偏导,并且也很清楚对于每一个输入,它的偏导就是[2x1, 2x2, 2x3] = [1, 4, 6],只是backward并不支持对向量的操作。因此,我们进行.sum()操作,将所有的输出加起来,y = x1*x1 + x2*x2 + x3*x3,在求梯度时会发现,虽然相加了起来,但是除了关于x1本身的运算之外,其他的运算会被当做常数项在偏导数中被消去,因此最终就可以得到不同的输入时的偏导,也就是梯度。
3. 理解
上面是一个很简答的例子,在神经网络里有大量的张量运算,要比这个复杂很多。我们进行.sum()的本质在于:偏导是函数的一个性质,对函数成立,我们得到的向量实际上是运算的集合,对向量中的每一个元素而言,都有自己的运算过程,也就是属于自己的函数。将这些结果加起来,再求偏导,等效于对每一个元素对应的函数单独求导。
以上是我并不成熟的思考,没有经过数学上的推理求证,如果有误,十分欢迎各位指出,非常感谢!!让我们一起学习吧!
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
更新于2025-2-8:
在学习强化学习过程中看到了随机优化算法,这才是随机梯度下降的合理的证明,之前仅仅是个人的推测,想了解的可以看一下!
y.sum().backward()为什么需要.sum()的思考的更多相关文章
- Subarray Sum & Maximum Size Subarray Sum Equals K
Subarray Sum Given an integer array, find a subarray where the sum of numbers is zero. Your code sho ...
- 编写一个求和函数sum,使输入sum(2)(3)或输入sum(2,3),输出结果都为5
昨天的笔试题,做的一塌糊涂,题目考的都很基础而且很细,手写代码对我来说是硬伤啊.其中有一道是这个,然而看到题目的时候,根本没有想到arguments:然后现在就恶补一下. arguments:用在函数 ...
- leetcode 112. Path Sum 、 113. Path Sum II 、437. Path Sum III
112. Path Sum 自己的一个错误写法: class Solution { public: bool hasPathSum(TreeNode* root, int sum) { if(root ...
- Subarray Sum & Maximum Size Subarray Sum Equals K && Subarray Sum Equals K
Subarray Sum Given an integer array, find a subarray where the sum of numbers is zero. Your code sho ...
- [LeetCode] Range Sum Query - Immutable & Range Sum Query 2D - Immutable
Range Sum Query - Immutable Given an integer array nums, find the sum of the elements between indice ...
- ORACEL12c求和SUM(a+b)与SUM(a)+SUM(b)结果不一致问题
今天在oracle12c数据库遇到的问题,下面重现一下: 1.先创建一个临时表 temp.一个数据表bitest_sum; -- Create table create table PEC.BITES ...
- leetcode 39. Combination Sum 、40. Combination Sum II 、216. Combination Sum III
39. Combination Sum 依旧与subsets问题相似,每次选择这个数是否参加到求和中 因为是可以重复的,所以每次递归还是在i上,如果不能重复,就可以变成i+1 class Soluti ...
- 39. Combination Sum + 40. Combination Sum II + 216. Combination Sum III + 377. Combination Sum IV
▶ 给定一个数组 和一个目标值.从该数组中选出若干项(项数不定),使他们的和等于目标值. ▶ 36. 数组元素无重复 ● 代码,初版,19 ms .从底向上的动态规划,但是转移方程比较智障(将待求数分 ...
- leetcode 1.Two Sum 、167. Two Sum II - Input array is sorted 、15. 3Sum 、16. 3Sum Closest 、 18. 4Sum 、653. Two Sum IV - Input is a BST
1.two sum 用hash来存储数值和对应的位置索引,通过target-当前值来获得需要的值,然后再hash中寻找 错误代码1: Input:[3,2,4]6Output:[0,0]Expecte ...
- 29.Combination Sum(和为sum的组合)
Level: Medium 题目描述: Given a set of candidate numbers (candidates) (without duplicates) and a targe ...
随机推荐
- Delphi 执行一个外部程序,当外部程序结束后言主程序立即响应
delphi 执行一个外部程序,当外部程序结束后言主程序立即响应 我们经常能看到360安全卫士进行windows系统升级时,执行windows升级程序,当升级程序执行完成后,360马上弹出提示框.这样 ...
- 【网络攻防】ARP欺骗实验
实验概述 ARP欺骗是一类地址欺骗类病毒,属于木马病毒,自身不具备主动传播的特性,不会自我复制.但是由于其发作的时候会不断向全网发送伪造的ARP数据包,导致网络无法正常运行,严重的甚至可能带来整个网络 ...
- $.ajax jsonp parsererror
场景重现 通过$.ajax()发起的跨越请求代码如下: $.ajax({ dataType: "JSONP", type: "GET", url: " ...
- HTB打靶记录-Administrator
# 信息收集 nmap -sV -sC -O 10.10.11.42 Nmap scan report for 10.10.11.42 Host is up (0.70s latency). Not ...
- 『Plotly实战指南』--直方图绘制与应用
在数据科学的世界里,直方图是一种不可或缺的可视化工具,它以其简洁而直观的方式,揭示了数据的内在规律,为数据分析和决策提供了有力支持. 它能够帮助我们快速识别异常值,并为统计推断提供有力支撑. 无论是对 ...
- Condition类的signal()方法底层原理
一.Condition类的signal()方法底层原理 Condition 接口的 signal 方法是用于唤醒一个在 Condition 上等待的线程.与 Object 的 notify 方法类似, ...
- 如何处理 MySQL 的主从同步延迟?
如何处理 MySQL 的主从同步延迟? MySQL 的主从同步延迟通常是由主库与从库之间的网络延迟.从库的处理能力.主库的写操作量等因素导致的.长时间的同步延迟可能会影响系统的稳定性和数据一致性.以下 ...
- adb常见命令及日志
一.adb介绍 1.adb(Android Debug Bridge)是android sdk的一个工具 2.adb是用来连接安卓设备和PC端的桥梁,用户可以通过adb在电脑上对手机进行一系列操作 3 ...
- wpf 代码判断当前是否在设计模式,兼容没有UI线程的限制
/// <summary> /// 当前是否处于设计模式 /// </summary> bool IsInDesignMode { get { return (bool)Des ...
- .net core日志NLog的使用
Nlog日志使用 视频:https://www.bilibili.com/video/BV1bv4y1a79X 参照:https://www.cnblogs.com/sheng-jie/p/17169 ...