深度学习基础系列之三:线性代数

850 阅读5分钟

划重点

如果说上一小节的微积分我们是不情不愿的复习的, 那么线性代数就是需要心甘情愿彻底搞搞清楚的了。毕竟我们在深度学习中会接触到的数据操作,大部分都是线性代数的知识。同样的,他不需要我们把线代里所有概念都搞懂,咱们只需要搞懂这些就够了。

什么是线性系统

如果有一个线性系统,那么它符合这样的特征:

  1. 当接受的输入x,输出y时,那么输入是kx时,输出就是ky。 依次可以判断y = 3x函数是线性系统,而y = x^2不是线性系统

  2. 当输入x输出y1,输入k输出y2,那么输入x+k输出就是y1+y2。 依次也可以判断y = 3x函数是线性系统,而y = x^2不是线性系统

向量

向量就是矢量,如

image.png

如果在坐标轴上表示向量,第一个a可以理解为这个向量在x轴的投影截距为x,在y轴的投影截距为y 第二个向量在x轴的投影截距为x,在y轴的投影截距为y,在z轴的投影截距为z。

image.png

矩阵

矩阵,matrix。大家都很熟悉黑客帝国《Matrix》,取名就是矩阵。

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵A也记作A mn

元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。

线性系统与linear combination

一个线性系统可以看做是一个矩阵和一个向量相乘,而这种看待方法非常符合我们的空间直觉,也对接下去理解线代的意义有很大的帮助

企业微信截图_16406161841690.png 如图,A是一个矩阵,x是一个向量,当一个矩阵和向量相乘,我们在计算上可以看出,是每一行(row)对应一个个的去和x的值相乘并相加。(注意:如果这个矩阵的行内元素个数和向量的元素个数不一致是不能相乘的)但结合上图下半部分,可以理解为是每一列作为一个向量,并和对应的x内元素相乘,把结果向量相加,最后得到一个新的向量。像(a11+a21+...am1)* x1,以此类推。

企业微信截图_16406147321848.png

一个线性系统,可以简化成上图的形式,是一个输入,结合线性系统变换,输出一个值。 等到我们接触深度学习案例的时候,你会发现,这不就是一回事吗?A矩阵就是训练数据的集合,每一行就是一组训练数据,每一组训练数据的第n个值组合起来就是一个向量n,x向量就是斜率k集合。我们不断的输入训练的数据向量,以求获取k集合。真实情况下只是求得一个使得损失函数尽量小的集合。如果对这里感觉不清楚,可以直接看下图。

那么,之前说到,从每一列作为一个向量来看待,符合我们的空间直觉,具体一个线性系统在坐标轴上,是怎么样的呢?

企业微信截图_16406161673864.png 如图,我们现在有数据(2,3)和(3,1),通过同样函数变换得到4和-1,在深度学习中,这个函数就是我们要求得的模型。 我们于是可以对这个关系列出函数式:

  1. 2x1 + 3x2 = 4

  2. 3x1 + 1x2 = -1

用函数求值我们很熟悉了,我们今天先不求解。我们在线性系统里,可以按照上面的方法,看做是矩阵和向量的相乘,而其中这个矩阵又可以按列看作是两个向量:[2,3]和[3,1],他们和[x1, x2]向量相乘以后,相加得到向量[4,-1]。 P.S.,由于这两个向量在二维坐标轴里不平行,所以可以组合出占满整个二维空间的向量,这个函数是有解的。

矩阵的乘法

image.png

如图,两个矩阵相乘,首先需要保证第一个矩阵的列数(每行的元素个数)等于第二个矩阵的行数(每列元素个数),两个矩阵才可以相乘。 看图可以很容易得知,首先将A的第一行分别乘以B的第一列,并将乘积相加放入结果的第一行第一列; 然后将A的第一行分别乘以B的第二列,并将乘积相加放入结果的第一行第二列; 依次类推,如果B列数更多,一样操作方法。 然后将A的第二行分别乘以B的第一列,并将乘积相加放入结果的第二行第一列; 然后将A的第二行分别乘以B的第二列,并将乘积相加放入结果的第二行第二列; 依次类推。

还是很好理解的^ ^