深度学习入门必备!- 线性代数
以下侧重于对于线性代数体系脉络的梳理,涵盖最基本的概念和理论,若要复习更多性质可以参考课本与教材。
标量、向量、矩阵
初中数学课上我们第一次认识了实数,高中数学课上我们第一次认识了向量,大学线代课程上我们认识到了多维向量与矩阵。其实想来有一点巧合,我们对于数字组织与使用形式的认知其实在不断地演进,而这个演进的逻辑是什么呢?正是数的维度,标量、向量、矩阵、多维矩阵的变化其实与几何中点、线、面、体的变化异曲同工。
以下是关于标量、向量、矩阵中基本运算与长度(一个更一般化的称呼是,范数)计算的对比:

多维向量
当向量的维数超过三维,几何意义实际上就不再可以直观的绘画出来或者被理解了,不过似乎你说两个四维向量垂直或者说平行,也没有什么错。以下是多维向量的几种运算的定义,类比于高中数学的三维向量很容易理解,只是在维度上进行了拓展,计算方式并无不同,这里进行一个回顾:

矩阵
这里将会尽可能以前后因果关系的形式串联起矩阵中的所有相关知识,其实可以说是复习了一遍线性代数,因为线性代数中最重要的就是引入了矩阵这一概念。看之前最好学过一点线性代数,有些基本概念的印象。
1.矩阵的行列式
行列式的概念最初起源于线性方程组的求解问题,线性方程组也就是n元一次的方程组集合,以二元一次方程组和三元一次方程组为例,你会发现通过引入行列式这一运算方式的定义,可以很好地表示它们的解,推广到n元就可以得到我们熟知的克莱姆法则 :
对于n元一次方程组,
如果系数行列式 ,则方程组有唯一解,且
,其中 𝐷𝑗 是把系数行列式D中第j列元素换成方程组等号右边的常数项后得到的行列式。这个n阶行列式是怎么计算的呢? 下面是具体描述,简单来说就是不断地对高阶行列式按行或者列展开达到不断降阶,当所有元素都只含有二阶行列式的时候就很好计算了,或者还能进一步展成一阶行列式(即一阶矩阵的行列式,它的值就是自己本身)就转换为纯实数运算了。这个展开公式被称作拉普拉斯展开。
对于n阶方阵 ,其行列式 |𝐴| 的递归定义如下:
1. 当n = 1时,一阶矩阵 𝐴=[𝑎11] 的行列式 。
2. 当 𝑛>1 时,任选A的某一行i或某一列j,按这一行(列)展开行列式: ,其中 𝑀𝑖𝑗 是元素 𝑎𝑖𝑗 的余子式,即划去A的第i行和第j列后得到的(n - 1)阶矩阵的行列式。 这个定义实际上是通过逐步降阶的方式来计算行列式的值,把n阶行列式的计算转化为(n - 1)阶行列式的计算,不断重复这个过程,直到降为一阶行列式,从而得到最终的行列式值。
从行列式的定义出发,还能得到很多行列式运算的性质,这里不再描述。
2. 矩阵乘法
这里单独列出矩阵x 向量这一个类别是因为它有着特殊的含义。

添加图片注释,不超过 140 字(可选)
3. 矩阵的逆
类似于实数乘法运算中倒数的概念,对于矩阵乘法来说,也有它的“倒数”,不过我们一般称之为矩阵的逆或者逆矩阵。矩阵的逆的定义是 :对于一个矩阵A,如果存在矩阵B,使得AB =BA =I,I这里为单位阵(行数和列数相同,对角线元素全1,其他元素均为0),那么就称A的逆矩阵为B,相应地,B的逆矩阵是A也成立。可能有人好奇为什么逆矩阵这么定义?其实再次类比实数中的倒数,你会发现实数的倒数也可以采用上面类似的定义来获得。没错,更一般的,在离散数学中把这种关于某一个运算满足上面关系的对象称之为原对象的逆元。
从定义来说,这里要求原矩阵A必须为方阵(即行数和列数相同的矩阵),因为矩阵乘法的需要满足第一个举证的列数等于第二个矩阵的行数这一要求,并且两个矩阵乘法AB与BA最终相乘结果是一个单位阵(方阵)。也就是说,并非每一个矩阵都有逆,首先它必须是方阵,但是也并不是所有方阵都有逆。
矩阵逆存在的充要条件是:该矩阵的行列式不为0。仍然从线性方程组的求解出发进行理解,任给一个方阵A可可以构造一个线性方程组,而用矩阵乘法可以将n元一次方程组表示为Ax = b的形式,左右两侧同时左乘A的逆,利用矩阵逆的定义就会得到x的解,所以我们知道线性方程组有解就等价于矩阵A存在逆,而根据克莱姆法则(前面有提到)线性方程组有解等价于其分子不为0,即A的行列式不等于0,因此一个矩阵存在逆等价于其行列式不为0。根据一个矩阵的行列式是否为0,又将矩阵分成了奇异矩阵和非奇异矩阵这两类。行列式不为0,就称做非奇异矩阵,反之就成为奇异矩阵。
关于矩阵逆的计算方法(初等变换法与伴随矩阵法)以及逆矩阵满足的性质,这里不再做进一步解释。
4. 矩阵的秩
还是从线性方程组的求解出发,除了之前我们提到的克莱姆法则这一比较复杂的公式方法外,更朴素和直接的求解方式是高斯消元的思想,标准化我们消元的过程,单独观察方程组每一步变化中系数矩阵的变化,就会发现很多有用的结论。消元的过程可以标准化为对某个方程所有系数(即矩阵中某一行)的三种操作:同乘一个非零的数,某一行的元素的K倍加到另一行上,对换两行系数。上面统称初等行变换。不断消元最终是为了形成行阶梯矩阵的形式。 实际上我们在对矩阵做行初等变换的过程中方程组一直在同步进行着等价变化,最后得到的行阶梯矩阵中,每一个非零行其实就是一个独立的方程,或者称之为一个有效的约束关系。这是我们就会发现,如果阶梯形矩阵中非零行的数量较少,那么方程组的解可能有无穷多个;如果非零行的数量较多,方程组的解可能会受到更多限制。这个非零行的数量与线性方程组的求解又是息息相关的,也就成为了描述矩阵中行或者列的线性无关程度性质的一个重要指标,被称作矩阵的秩。上面的分析过程还能得到线性方程组解情况判断的一个非常重要的规律:

关于秩的另外一个很难懂的一般定义形式是通过子式来定义,这也提供了一种计算任意一个矩阵的秩的方法。一般来说在人工分析时更多采用上面所述的初等行变换求行阶梯矩阵中非零行数量的方法。
5. 特征值与特征向量
前面提到矩阵与向量相乘等价于将原始向量进行了一次线性变换得到一个新向量(一般大小与方向会同时发生变化),有没有向量满足在被一个矩阵相乘后仍然保持原来的方向上呢?这就是特征向量,将上述语言数学化描述,即为: 𝐴𝑥=𝜆𝑥 . 其中A代表那个矩阵(要求必须为方阵,即行数与列数相同的矩阵),x代表那个向量(要求为非零向量)称为特征向量, 𝜆 称为这个特征向量所对应的特征值,几何意义上表示经过A的变换后的缩放因子。
如何找出一个方阵的所有特征值以及对应的特征向量呢?可以对一个方阵进行特征值分解。如果矩阵可以分解为 ,其中 D 是一个对角矩阵,其对角线上的元素就是的特征值, P是由的特征向量组成的矩阵(P矩阵的每一列即为一个特征向量),这个过程就称为特征值分解。 关于
成立的推导思路:设A有n个特征向量与n个特征值,n个特征值构成了一个矩阵P,将n个特征值表示为一个对角矩阵的形式,分别计算AP与PD,根据特征值与特征向量之间满足 𝐴𝑥=𝜆𝑥 的关系即可得到 AP =PD,进而可得
。
怎么进行特征值分解?暂时不做补充,可以自行查找,原理类似。
6. 正定矩阵与二次型
之后补充...
NDarray
ndarray是一种表示多维数组的一种数据结构,常用于深度学习中的数据表示与存储。通过指定维度数以及每个维度上的大小即可创建一个具有具体形状的ndarrary。


ndarray支持在两个对象上进行数学运算(比如:加减乘除),运算逻辑即为对应位置上的元素进行运算得到的结果所以构成的对象,对于不同形状的两个对象在进行上面的运算时,会自动先进行广播机制使得较小的形状扩展到较大的形状上再进行运算;也支持矩阵的运算(比如:矩阵乘法,求逆,转置)。 通过切片与索引操作可以访问到该对象上的特定的子区域。
更多推荐
所有评论(0)