1.矩阵求导
1.1 标量导数(高中知识)
都是高中的知识
1.2 亚导数
将导数拓展到不可导的情况

1.3 梯度
将导数扩展到向量
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XBLTEhV-1646918599686)(00-autograd.assets/image-20220308195139662.png)]](https://i-blog.csdnimg.cn/blog_migrate/969c46d8e4d5edeaf64f214f46028741.png)
1.3.1 ∂y/∂x\partial y/\partial\mathbf{x}∂y/∂x 底部是向量,上部是标量
由于向量在底部,所以求导之后结果的向量会反过来
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VzRWJXvM-1646918599687)(00-autograd.assets/image-20220308201452411.png)]](https://i-blog.csdnimg.cn/blog_migrate/c3423b604eacf0a539aed87938ed75f3.png)
样例为下:
特别的就是,两个向量的内积为矩阵,sum一个向量,其导数为向量1的转置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NhAncMdu-1646918599688)(00-autograd.assets/image-20220308200744624.png)]](https://i-blog.csdnimg.cn/blog_migrate/44c434f35d81e6060c1457330afc960c.png)
注意,对于∂<w,x>∂w=xT\frac{\partial<\bold{w,x}>}{\partial\bold{w}} = \bold{x^T}∂w∂<w,x>=xT
1.3.2 ∂y/∂x\partial \bold{y}/\partial x∂y/∂x 底部是标量,上部是向量
上部是向量的时候,求导不会反置了,这个叫做分子布局符号
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQFugCFh-1646918599689)(00-autograd.assets/image-20220308201537854.png)]](https://i-blog.csdnimg.cn/blog_migrate/e017d42a97e36c5faf063eb9d6c24efe.png)
向量和向量:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CbD1NYZN-1646918599690)(00-autograd.assets/image-20220308202334947.png)]](https://i-blog.csdnimg.cn/blog_migrate/bcaa4f34708d5e4a3c7a855b6571d216.png)
样例:
注意第一行最后两列,a和A分别为和向量x无关的向量和矩阵
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQCbAXxL-1646918599692)(00-autograd.assets/image-20220308202524987.png)]](https://i-blog.csdnimg.cn/blog_migrate/bde7833458cebd4d12743d85a885deb3.png)
1.3.3 拓展到矩阵(拓展内容)
同样,和向量一样,如果矩阵在下面,那么他的行和列的个数就会转一下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8EFwx8Z-1646918599693)(00-autograd.assets/image-20220308202956028.png)]](https://i-blog.csdnimg.cn/blog_migrate/609ee671f2216389c37904a4f8d2b947.png)
2.自动求导
2.1 向量链式法则
类比标量的链式法则,重点就是维度要弄对
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUSPo36c-1646918599694)(00-autograd.assets/image-20220308203214739.png)]](https://i-blog.csdnimg.cn/blog_migrate/c16ec0c60cc16896f881cfd2afd855cb.png)
例子1:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fk3WgvRK-1646918599695)(00-autograd.assets/image-20220308204406709.png)]](https://i-blog.csdnimg.cn/blog_migrate/49b4bb36407bd6ab9144bdb1ba3fe618.png)
例子2 :
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hw9GnycC-1646918599696)(00-autograd.assets/image-20220308204635140.png)]](https://i-blog.csdnimg.cn/blog_migrate/2583c196b9f4a09806c542b95b4e63c6.png)
2.2 自动求导
对于神经网络几百层的神经,手动求导几乎不可能,所以使用自动求导计算。
自动求导计算一个函数在指定值上的导数,有别于:
- 符号求导:给出表达式,求出导数表达式
- 数值求导:不需要知道f(x)的样子,通过一些数值去拟合这个函数
2.2.1 计算图
pytorch中不需要使用,但是tansflow和mxnet中可以显示构造
有点类似于刚才的链式求导过程
- 将代码分解为操作子
- 将计算表示成一个无环的图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N3bCkZEg-1646918599697)(00-autograd.assets/image-20220308205501563.png)]](https://i-blog.csdnimg.cn/blog_migrate/b44523aacde8cb29351c232b8350de5e.png)
- 显示构造,TensorFlow MXNet
- 隐式构造 MXNet PyTorch
2.2.2 自动求导的两种方式
- 正向累积,从内往外
- 反向累积、又称反向传递(大名鼎鼎)
![- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3u9y1oAN-1646918599699)(00-autograd.assets/image-20220308210325668.png)]](https://i-blog.csdnimg.cn/blog_migrate/f81d8b75e965aa8adc1b1c5d3538cd87.png)
2.2.3反向累积
例子:
先计算z关于b的导数为2b,由于之前计算过了b的结果,所以读取之前存的b的结果即可。
同理往下继续算,需要的结果就从之前计算存的结果中读取即可
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XG3ZOOpt-1646918599700)(00-autograd.assets/image-20220308211010870.png)]](https://i-blog.csdnimg.cn/blog_migrate/34dfed56e5644a4cb5107746efd0b8f7.png)
总结:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ap5RhWIu-1646918599701)(00-autograd.assets/image-20220308211135067.png)]](https://i-blog.csdnimg.cn/blog_migrate/e8a2b3fa07c4153e3e265864d354c87b.png)
复杂度
内存复杂度:O(n),因为需要存储正向的所有中间结果(这也是耗费GPU资源的原因)

对于正向传播,如果计算一个变量的梯度,还需要再扫描一遍,复杂度太高。所以来说一般的神经网络几乎不会去用正向传播
这篇博客深入探讨了矩阵求导的基础概念,包括标量导数、亚导数和梯度,特别是梯度在向量和矩阵运算中的应用。此外,介绍了自动求导的原理,如向量链式法则,并对比了正向和反向累积方法。自动求导在处理复杂神经网络的梯度计算中起到关键作用,降低了手动求导的难度和复杂度。

887

被折叠的 条评论
为什么被折叠?



