网站首页 > 技术文章 正文
很多与深度学习算法相关的面试,面试官可能都会问一类问题,那就是你是如何理解矩阵乘算法的。
更有甚者,会让你当场手写矩阵乘算法,然后问细节,问如何优化,面试现场,残忍至极。
那矩阵乘法的本质到底是什么呢?为什么在神经网络中,甚至如今大火的大模型中,有那么多矩阵乘法出现呢?
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、深度学习中的矩阵乘法
回到深度学习算法中,矩阵乘法的右矩阵通常是权值矩阵,是作为模型的参数被训练出来的。
一个模型,在对多种数据集训练之后,模型就学习到了一个权值矩阵,实际上一个模型中会学到很多个权值矩阵,这里用一个举例子说明。
这个权值矩阵可以很好的匹配多种输入数据,并对输入数据进行整合和再创。
卷积和全连接算法,或多或少都是一种矩阵乘法,将其转换为矩阵乘法之后,那么和权值矩阵对应的另一个矩阵,就是输入数据。
假设输入的数据是一张图片,那么图片中一个通道维度代表图片的一个特征,通过矩阵乘法对通道进行乘累加操作,便可以实现特征之间的整合和再创。
也就是所谓的特征融合,跟调酒是不是很像?
更显而易见的例子体现在全连接层上,全连接层通过矩阵乘法的运算,把所有的特征全部进行了融合,最终可能就会得到某一个类别。
免费分享一些我整理的人工智能学习资料给大家,整理了很久,非常全面。包括人工智能基础入门视频+AI常用框架实战视频、机器学习、深度学习与神经网络等视频、课件源码、毕设项目、AI热门论文等。
下面是截图,扫码进群免费领取:扫码进群领资料
我会在群里与朋友们定期分享人工智能的发展就业情况与相关资料。
最后祝大家天天进步!!
- 上一篇: 线性代数的秘密:矩阵相乘的本质是什么?
- 下一篇: 一文揭秘|预训练一个72b模型需要多久?
猜你喜欢
- 2025-07-08 最让人惊艳的并行算法之一——矩阵算法
- 2025-07-08 小红书基于 PPO 的多模态大模型 RLHF 系统的设计与优化
- 2025-07-08 洞察宇宙(十七):线性代数期末复习指南
- 2025-07-08 线性代数:矩阵的定义和简单计算。
- 2025-07-08 OpenAI久违发了篇「正经」论文:线性布局实现高效张量计算
- 2025-07-08 全网最详细!油管1小时视频详解AlphaTensor矩阵乘法算法
- 2025-07-08 初等矩阵简单性质(初等矩阵的性质及例子)
- 2025-07-08 越览(44)——Matlab入门学习(3)之矩阵运算
- 2025-07-08 可以用爱因斯坦求和替代的那些矩阵运算
- 2025-07-08 浅谈LabelSmooth两种实现及推导(labels and)
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 533℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 496℃MySQL service启动脚本浅析(r12笔记第59天)
- 475℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 473℃启用MySQL查询缓存(mysql8.0查询缓存)
- 453℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 432℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 430℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)