5分钟搞懂矩阵乘法的本质

很多与深度学习算法相关的面试,面试官可能都会问一类问题,那就是你是如何理解矩阵乘算法的。

更有甚者,会让你当场手写矩阵乘算法,然后问细节,问如何优化,面试现场,残忍至极。

那矩阵乘法的本质到底是什么呢?为什么在神经网络中,甚至如今大火的大模型中,有那么多矩阵乘法出现呢?

1、矩阵乘法的本质

我查了很多资料,得出一个结论:矩阵乘法的本质,是数据整合和再创造的输出。

举个例子。

你是一个鸡尾酒调酒师,家里储存了很多鸡尾酒的原料,有金酒、利口酒、柠檬汁和可乐等等。

今天家里来了 3 位客人,他们分别喜欢喝"自由古巴"、"长岛冰茶"以及"龙舌兰日出这 3 款鸡尾酒,并向你下了单。

希望你给他们调配出来各自喜欢的鸡尾酒。

巧的是,这 3 款鸡尾酒的原料都是金酒、利口酒、柠檬汁和可乐。

你作为一个调酒师,分分钟就把客人的爱好的鸡尾酒给调出来了。

怎么做的呢?你知道配方:

  • 自由古巴: 20%金酒 + 45% 利口酒 + 10%柠檬汁 + 25%可乐
  • 长岛冰茶: 60%金酒+ 30%利口酒 + 5% 柠檬汁 + 5% 可乐
  • 龙舌兰日出:30%金酒 + 10%利口酒 + 30%柠檬汁 + 30%可乐

你在调配鸡尾酒的过程中,是按照这个配方来调配的。

这里的原料,比如利口酒和可乐,就是输入资源,配比(比如可乐的 25% )就是赋予该资源的权重。

将相同的原料按照不同的配比混合起来,就得到了不同口味的鸡尾酒。

这种做法,可以抽象一下,写成一个公式:

  • 自由古巴 = 0.2 x 金酒 + 0.45 x 利口酒 + 0.1 x 柠檬汁 + 0.25 x 可乐
  • 长岛冰茶 = 0.6 x 金酒 + 0.3 x 利口酒 + 0.05 x 柠檬汁 + 0.05 x 可乐
  • 龙舌兰日出 = 0.3 x 金酒 + 0.1 x 利口酒 + 0.3 x 柠檬汁 + 0.3 x 可乐

我们知道矩阵乘法的规则是,左矩阵的第一行乘以右矩阵的第一列,得到第一个值,第一行乘以第二列得到第二个值,...,以此类推

上面这种连乘的操作,就可以用矩阵乘法来表示。

左矩阵是一行四列,代表原料。

右矩阵是四行三列,每一列代表对应原料的配比。

按照矩阵乘法的规则,他们的结果应该是一个一行三列的矩阵,分别代表调配出来的三种鸡尾酒。

看到这是不是有点熟悉了。

矩阵乘法,通过相乘累加的操作,实际上是对数据(鸡尾酒的原料)的整合和创新输出(创造出了新的口味,如自由古巴)。

2、深度学习中的矩阵乘法

回到深度学习算法中,矩阵乘法的右矩阵通常是权值矩阵,是作为模型的参数被训练出来的。

一个模型,在对多种数据集训练之后,模型就学习到了一个权值矩阵,实际上一个模型中会学到很多个权值矩阵,这里用一个举例子说明。

这个权值矩阵可以很好的匹配多种输入数据,并对输入数据进行整合和再创。

卷积和全连接算法,或多或少都是一种矩阵乘法,将其转换为矩阵乘法之后,那么和权值矩阵对应的另一个矩阵,就是输入数据。

假设输入的数据是一张图片,那么图片中一个通道维度代表图片的一个特征,通过矩阵乘法对通道进行乘累加操作,便可以实现特征之间的整合和再创。

也就是所谓的特征融合,跟调酒是不是很像?

更显而易见的例子体现在全连接层上,全连接层通过矩阵乘法的运算,把所有的特征全部进行了融合,最终可能就会得到某一个类别。

本文首发:5分钟搞懂矩阵乘法的本质

作者原创,请勿随意转载,写文不易,点个赞呗~

相关推荐
ytttr87340 分钟前
matlab通过Q学习算法解决房间路径规划问题
学习·算法·matlab
沃夫上校1 小时前
Feign调Post接口异常:Incomplete output stream
java·后端·微服务
LeeGe1 小时前
SpringAOP中@within和@annotation以及 @within和@target的区别
后端
一个平平无奇的Java小学生1 小时前
Spring Cloud Alibaba 微服务从入门到生产部署完整指南
后端
一个平平无奇的Java小学生1 小时前
Spring Cloud Alibaba 微服务实战指南
后端
张小洛2 小时前
Spring IOC容器核心阶段解密:★Bean实例化全流程深度剖析★
java·后端·spring·ioc容器·bean实例化
小王子10242 小时前
Django+DRF 实战:从异常捕获到自定义错误信息
后端·django·web开发
go54631584652 小时前
修改Spatial-MLLM项目,使其专注于无人机航拍视频的空间理解
人工智能·算法·机器学习·架构·音视频·无人机
hdsoft_huge2 小时前
Spring Boot 高并发框架实现方案:数字城市的奇妙之旅
java·spring boot·后端
油泼辣子多加2 小时前
【Torch】nn.BatchNorm1d算法详解
算法