许多与深度学习算法相关的面试,面试官或许都会问一类问题,那便是你是怎么理解矩阵乘算法的。

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

矩阵乘法的实质究竟是什么呢?为什么在神经网络中,甚至现在大火的大模型中,有那么多矩阵乘法出现呢?

1、矩阵乘法的实质

我查了许多资料,得出一个定论:矩阵乘法的实质,是数据整合和再发明的输出。

举个比方。

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

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

期望你给他们分配出来各自喜爱的鸡尾酒。

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

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

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

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

  • 自在古巴: 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 可乐

咱们知道矩阵乘法的规则是,左矩阵的榜首行乘以右矩阵的榜首列,得到榜首个值,榜首行乘以第二列得到第二个值,…,以此类推

上面这种连乘的操作,就能够用矩阵乘法来表明。

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

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

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

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

看到这是不是有点了解了。

矩阵乘法,经过相乘累加的操作,实践上是对数据(鸡尾酒的质料)的整合和立异输出(发明出了新的口味,如自在古巴)。

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

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

一个模型,在对多种数据集练习之后,模型就学习到了一个权值矩阵,实践上一个模型中会学到许多个权值矩阵,这儿用一个举比方阐明。

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

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

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

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

更清楚明了的比方体现在全衔接层上,全衔接层经过矩阵乘法的运算,把所有的特征全部进行了交融,最终或许就会得到某一个类别。

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

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