矩阵求导(一)

news/发布时间2024/5/3 22:26:33

前言


在大学的微积分课程中,我们学习过关于标量函数的导数。但是当我们求解一个多元函数的极值时,单独一个自变量的偏导数往往不能告诉我们太多信息,于是我们有一种天然的想法是要把每个自变量的偏导数放在一起,看看他们的联合效果如何。这个过程其实是一个向量求导的过程。也就是说,我们把每个元素单独求偏导的结果按照一个顺序放入一个向量,与用这些元素组成的向量对函数直接求导,结果是一样的。因为这些非标量的求导过程实在太重要,我把他们整理到了这个博客中。

  • 矩阵求导的分类

由于我们现在有三种不同维度的数据容器,我们一共可以求出3*3=9种不同类型的导数,这几种导数的形状也各不相同。幸运的是,通常我们只需要了解其中一部分,就可以满足工作中的大部分需求。

上图是九种组合的情况,其中小写字母x、加粗小写字母x以及加粗大写字母X分别表示标量、向量和矩阵。
标量对标量的导数是自变量在变化一个微小值时函数值的变化比例,我们已经在学校里接触过了,这里九不再赘述。剩余的还有五种求导形式较为简单,是我们首先应该掌握的:

  1. 标量对向量和矩阵求导
  2. 向量或矩阵对标量求导
  3. 向量对向量求导

而向量对矩阵的求导,矩阵对向量的求导,以及矩阵对矩阵的求导则更加繁琐,我们在这里不做进一步介绍。

  • 求导结果的布局

然而还有一件事应该先解决,即求导结果的形式。我们在前言里说过,标量对向量的求导,等于标量对每个分量求导再把求导的结果放到一个向量中。但这其实是不严谨的,因为我们没有说明按照列向量来放置这些结果,还是按照行向量来放。事实上,两者都可以,取决于一个概念:矩阵求导的布局。通常大部分时候,我们在谈论到一个向量时,除了特殊说明,都默认这是一个列向量。当我们用标量对向量求导时,如果我们选择将求导结果依然按照列排列,那么我们把这种布局方式称为分母布局(求导结果的行数与分母相同)。显而易见,分子布局下求导的结果应该是分母布局的转置。具体来说,这九种求导的形状如下:

  • 标量对向量和矩阵的求导

正如我们前文所述,当一个标量是一个向量中分量的函数时,我们可以尝试拿这个标量对向量进行求导。
图一:标量对向量的求导
标量对矩阵的求导,推导过程是相似的。首先,我们将矩阵分块成一个列向量的形式,然后按照向量求导进行处理;对于每个求导后的分量,再次用向量求导的方式去处理。那么对于一个m*n的矩阵,我们的求导结果就是标量对矩阵中每个元素求导的结果,按照原矩阵形状放到一起而已。

  • 向量或矩阵对标量的求导

向量或者矩阵对标量的求导,只需要将前者的每个元素对标量进行求导,再按照指定的布局方式放置即可。

以上,就是涉及到标量的四种求导。剩下还有一种向量对向量的求导,以及一些相关的常用公式,我们放到下一节再介绍。

参考文献:https://www.cnblogs.com/pinard/p/10750718.html
https://www.jianshu.com/p/d4277f9db7a0

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

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

吴恩达机器学习笔记(1-1到2-1)

吴恩达机器学习笔记(1-1到2-1) https://www.bilibili.com/video/BV164411b7dx?p=1 https://www.bilibili.com/video/BV164411b7dx?p=2 https://www.bilibili.com/video/BV164411b7dx?p=3 https://www.bilibili.com/video/BV164411b7dx?p=4 机器学习-吴恩达 一、初学 1、什…

NPU硬件架构及张量技术开发

NPU硬件架构及张量技术开发 NPU 系统介绍 V853 芯片内置一颗 NPU,其处理性能为最大 1 TOPS 并有 128KB 内部高速缓存用于高速数据交换,支持 OpenCL、OpenVX、android NN 与 ONNX 的 API 调用,同时也支持导入大量常用的深度学习模型。 NPU 系统架构 NPU 的系统架构如下图所示…

音乐盒组件Aplayer+Metingjs

Aplayer🍭 Wow, such a beautiful HTML5 music player(哇,好漂亮的HTML5音乐播放器) Aplayer是一个功能强大的HTML5音乐播放器 Aplayer官网文档:https://aplayer.js.org/#/MetingjsMetingjs基于Aplayer插件封装好的插件,开箱即用 Metingjs官网文档:https://github.com/me…

手动给docusaurus添加一个搜索

如果algolia不能自动配置的话,我教你手动给docusaurus添加一个搜索新版博客用docusaurus重构已经有些日子了,根据docusaurus的文档上也申请了Algolia,想一劳永逸的解决博客的搜索问题。但是流水有意,落花无情。 algolia总是不给我回复,我只能对着algolia的申请页面仰天长叹。…

这个网络爬虫代码,拿到数据之后如何存到csv文件中去?

大家好,我是皮皮。 一、前言 还是昨天的那个网络爬虫问题,大佬们,帮忙看看这个网络爬虫代码怎么修改?那个粉丝说自己不熟悉pandas,用pandas做的爬虫,虽然简洁,但是自己不习惯,想要在他自己的代码基础上进行修改,获取数据的代码已经写好了,就差存储到csv中去了。 他的…

栈1: 栈的顺序存储

栈: 顺序存储栈是一种先进后出(First In Last Out,FILO)的数据结构 如果你将两个元素压入栈,先加入的元素将在后加入的元素之后出栈栈顶元素值为null(未满时)定义栈的数据结构 #define MAX_SIZE 1024 //利用数组模拟栈的顺序存储 typedef struct sqStack{void *data[MAX_SIZE]…