专栏首页云原生实验室彻底理解矩阵乘法

彻底理解矩阵乘法

点击 "阅读原文" 可以获得更好的阅读体验。

前言

今天的角度比较清奇,我们来讲讲矩阵的乘法。当然了,我告诉你的肯定不是大学教科书上那些填鸭式的云里雾里的计算规则,你可能将规则背下来了,但完全不理解为什么会这样。别怕,我将会在这篇文章中为你带来矩阵乘法的全新体验,就算你大学时代学的高数全忘了也能看懂这篇文章。

先来回顾一下矩阵加法,还蛮简单的,就是相同位置的数字加一下。

矩阵乘以一个常数,就是所有位置都乘以这个数。

但是,等到矩阵乘以矩阵的时候,一切就不一样了。

这个结果是怎么计算出来的呢?大多数人知道的计算方法应该是教科书上给出的,我们就先来看这种方法。

教科书告诉你,计算规则是,第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。

也就是说,结果矩阵第 m 行与第 n 列交叉位置的那个值,等于第一个矩阵第 m 行与第二个矩阵第 n 列,对应位置的每个值的乘积之和。

假设

其中,

可以得出矩阵 每个元素的表达式为

这就是矩阵乘法的一般性法则,人们一般都用这个法则来计算,我也不例外。不过我觉得还是有必要讲讲其他几种方法,比如考虑整行或整列。下面还是继续拿矩阵 和 举例。

列向量视角

先将矩阵 和 的每一列看成一个向量,例如:

这样就可以把矩阵 和 写成如下的形式:

现在如果我将矩阵 和向量 相乘会得到什么?通过前面的一般性法则我们知道大小为 m x n 的矩阵乘以大小为 n x p 的矩阵得到的矩阵大小为 m x p

我们来耍一些小聪明,让矩阵 以列向量 作为其元素,而矩阵 以 作为其元素。这样看来,矩阵 的大小为 1 x n,矩阵 的大小为 n x 1,所以 的大小为 1 x 1,这也是一个列向量。如果你代入上面的一般性法则,可以发现 恰恰就是矩阵 的第一列。同样,如果把矩阵 的每一列看成一个向量,那么

其中,

发现了什么? 其实就是矩阵 中所有列的线性组合!

更一般性地,我们可以推出:

至此我们得到了一个优美的结论:

矩阵 中的每一列都是矩阵 中所有列的线性组合。

到这里你应该能领悟为什么矩阵 的行数与矩阵 的行数相同了,也就是矩阵 的列向量与矩阵 的列向量大小相同。

怎么样,是不是有一种茅塞顿开的感觉?别急,下面我们再换一种理解角度。

行向量视角

先将矩阵 和 的每一行看成一个向量,例如:

这样就可以把矩阵 和 写成如下的形式:

同理,你会发现 恰好就等于矩阵 的第一行。同样,如果把矩阵 的每一行看成一个向量,那么

其中,

更一般性地,我们可以推出:

又得到了一个结论:

矩阵 中的每一行都是矩阵 中所有行的线性组合。

现在你应该能领悟为什么矩阵 的列数与矩阵 的列数相同了,也就是矩阵 的行向量与矩阵 的行向量大小相同。

故事到这里就结束了吗?远远没有,下面我们再换一种理解角度。

鬼畜视角

常规性的一般性法则其实是拿矩阵 的每一行去乘矩阵 的每一列的。现在我们反过来思考一下,如果拿矩阵 的每一列去乘矩阵 的每一行会发生什么?

为了方便计算,我们将矩阵 的每一列看成一个向量,而将矩阵 的每一行看成一个向量,即:

矩阵 的大小为 m x 1,矩阵 的大小为 1 x n,发现了什么? 得到的是一个大小为 m x n 的矩阵!等等,矩阵 的大小不也是 m x n 吗?没错,就是这么神奇,事实上矩阵 等于矩阵 的每一列与矩阵 每一行的乘积之和。下面省略一万字的证明,直接给出公式:

结论:

矩阵 等于矩阵 中各列与矩阵 中各行乘积之和。

举个例子,设矩阵 ,矩阵 ,那么:

你有没有发现,你每切换一次视角,你就会对矩阵乘法理解的更深刻。事实上世间万物皆是如此,这里我顺便谈一下”理解“和”理解“的本质,因为理解是我们每个人的目标,我们想要去理解事物。我认为理解和切换视角的能力密切相关,如果你没有切换视角的能力,你就无法理解事物。关于数学,很多人认为数学就是加减乘除、分数、几何代数之类的东西,但实际上数学和模式密切相关,每切换一次视角,你就会得到一种全新的模式。我所说的模式是指影响我们观察的关系、结构以及规律。

当然了,关于矩阵的乘法还有很多种理解方式,你可以自己去探索,我的讲解到此结束,拜了个拜~~

本文分享自微信公众号 - 云原生实验室(cloud_native_yang),作者:米开朗基杨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 让 Linux 防火墙新秀 nftables 为你的 VPS 保驾护航

    上篇文章 给大家介绍了 nftables 的优点以及基本的使用方法,它的优点在于直接在用户态把网络规则编译成字节码,然后由内核的虚拟机执行,尽管和 iptabl...

    米开朗基杨
  • VXLAN 基础教程:结合 VRF 在 Linux 中实践 VXLAN 网络

    上篇文章结尾提到 Linux 是支持 VXLAN 的,我们可以使用 Linux 搭建基于 VXLAN 的 overlay 网络,以此来加深对 VXLAN 的理解...

    米开朗基杨
  • 详细解读 Prometheus 的指标类型

    原文链接:https://prometheus.io/docs/concepts/metric_types/

    米开朗基杨
  • 透析矩阵,由浅入深娓娓道来—高数-线性代数-矩阵

    线性代数是用来描述状态和变化的,而矩阵是存储状态和变化的信息的媒介,可以分为状态(静态)和变化(动态)信息来看待。

    周陆军
  • matlab—基本操作与矩阵输入

    还有一个月就美赛了,本系列文章适用于完全没有任何matlab基础,但是有别的编程语言基础的人看,我会结合自己的理解,有的放矢的讲,不会掺杂很多废话,各位读者轻喷...

    mathor
  • Python|详解矩阵乘法

    矩阵相信大家都知道,是线性代数中的知识,就是一系列数集。顾名思义,数字组成的矩形,例如:

    算法与编程之美
  • “花书”的佐餐,你的线性代数笔记

    最近,巴黎高等师范学院的博士生Hadrien Jean,整理了关于深度学习“花书”的一套笔记,还有幸在推特上被Ian Goodfellow老师翻了牌。

    量子位
  • 快速学习-机器学习(线性代数[矩阵])

    cwl_java
  • 线性代数精华2——逆矩阵的推导过程

    矩阵的定义很简单,就是若干个数按照顺序排列在一起的数表。比如m * n个数,排成一个m * n的数表,就称为一个m * n的矩阵。

    TechFlow-承志
  • 【读书笔记】之矩阵知识梳理

    用户1594945

扫码关注云+社区

领取腾讯云代金券