矩阵乘法的程序员直觉

2020-10-23 01:54:20

这个真挚而幽默的故事描述了陷入传统与现代冲突中的女孩的生活。阅读亚马逊上的订单摘录。

这在第一次学习向量时很有用:向量进去,新的出来。不幸的是,这可能会导致过度依赖几何可视化。

如果有20个家庭来参加你的烧烤,你如何估计你需要的热狗?(人力资源管理…。20个家庭,每个家庭3人,每个…2个热狗。大约20*3*2=120个热狗。)。

你可能不认为哦,我需要一个邀请函家庭大小的饥饿棱镜的体积!对于大型矩阵,我不考虑500维向量,只考虑要修改的数据。

这是技术上的准确定义:是的,矩阵乘法产生一个新的矩阵,该矩阵组成原始函数。然而,有时被运算的矩阵不是线性运算,而是一组向量或数据点。对于正在发生的事情,我们需要另一种直觉。

我认为线性代数就像数学电子表格(如果你是线性代数的新手,请阅读下面的介绍):

有些数据被视为要应用的函数,另一些则被视为要使用的数据点。

有时我会把数据看作几何矢量,有时我会把矩阵看作合成函数。但我主要考虑的是流经系统的信息。(一些纯粹主义者不愿把漂亮的代数结构简化成陈词滥调的电子表格;我晚上睡得很好。)

带上你最喜欢的食谱。如果你把这些词解释成指令,你最终会得到一个馅饼、松饼、蛋糕等。

如果您将单词解释为数据,则文本是可以调整的散文:

结果是一个新的食谱,可以进一步调整,或者按照指令执行,以制作不同的馅饼、松饼、蛋糕等。(编译器将程序视为文本,对其进行修改,最终输出指令-可以是另一层的文本。)。

这就是线性代数。我们将原始信息(如3 4 5&34;)视为向量或函数,具体取决于它的书写方式:

按照惯例,垂直列通常是向量,而水平行通常是函数:

[3;4;5]表示x=(3,4,5)。这里,x是一个数据向量(我使用;来分隔每行)。

[3 45]表示f(a,b,c)=3a+4b+5c。这是一个接受三个输入并返回单个结果的函数。

包含水平函数的行实际上可能是三个数据点(每个数据点都有一个元素)。垂直的数据列实际上可以是三个不同的函数,每个函数都有一个参数。

阿。这变得越来越巧妙:根据期望的结果,我们可以以不同的顺序组合数据和代码。

如果x是具有3个条目([3;4;5])的列向量,则x#39;为:

X';仍然可以作为数据载体,但可以作为三个单独的条目。转置把它拆分了。

类似地,如果f=[3 4 5]是我们的行向量,则f';可以表示:

当我们看到x';*x时,我们的意思是:x';(作为单个函数)正在x(单个向量)上工作。结果是点积(请阅读更多内容)。换句话说,我们已经将数据应用于自身。

当我们看到x*x';时,我们的意思是x(作为一组函数)正在处理x&#(一组单独的数据点)。结果是一个网格,我们在其中将每个函数应用到每个数据点。在这里,我们已经在每一种可能的排列中将数据与自身混合在一起。

我把xx想成x(X)。它是处理向量x;的函数x#34;。(这有助于计算协方差矩阵,这是数据中自相似性的度量。)。

哟!这对我们有什么帮助?当我们看到这样的等式时(来自机器学习课程):

我现在马上就能感觉到发生了什么。在第一个等式中,我们将$\theta$(通常是一组数据参数)视为函数,并将$x$作为参数传入。这应该会给我们一个单一的值。

是可以解决的。在某些情况下,这会变得很棘手,因为我们将数据存储为矩阵中的行(而不是列),但现在我有更好的工具可用。你可以开始估计什么时候你会得到一个单值,或者什么时候你会得到一个排列网格。

几何缩放和线性合成各有用武之地,但这里我要考虑的是信息。X中的信息正在变成一个函数,我们正在将a参数传递给自己。";

长话短说,不要拘泥于单一的直觉。乘法从重复加法到缩放(小数),再到旋转(虚数),再到将一个数字应用到另一个数字(积分),以此类推,从重复加法到缩放(小数),再到旋转(虚数),再到将一个数字应用到另一个数字(积分),等等。为什么矩阵乘法不一样呢?

你可能很好奇,为什么我们不能使用其他组合,比如xx或xx;简单地说,参数不会排成一行:我们会有一些函数期望3个输入只传递给一个参数,或者函数期望单个输入传递3个。

我们定义了一个包含3个参数的函数,并将3个参数传递给它。这将返回50(点积)。

请记住,[3 4 5]是函数,[3;4;5]或[3 4 5]或[3 4 5]';是我们写入数据向量的方式。

我想用通俗易懂的英语向自己解释,为什么我们想要x,而不是相反。现在,简单地说:我们将信息视为函数,并传递与参数相同的信息。

“如果你不能简单地解释它,那你就不够理解它。”--爱因斯坦(更多)|隐私|CC-by-NC-SA