【技术分享】一文读不懂线性代数

文章目录

    • 引言
    • 线性代数
      • 线性方程组与矩阵
      • 方阵的行列式
      • 向量空间与线性方程组解的结构
      • 相似矩阵及二次型
      • 线性空间与线性变换
      • 小结

引言

在研究机器学习的过程中,遇到了一些线性代数相关的知识, 比如在学习PCA降维的时候, 需要用到空间变换的知识点。 虽然之前也学习过线性代数,但是当时根本不知道线性代数有啥用, 就记住了一些计算方法, 对线性代数的物理意义的理解也不是非常透彻,这可能也是学校期间教学方式需要改进的地方,学习一门知识, 不知道它的背景,也不知道它的实际用途,只是一堆的定义和公式,是不利于知识的理解的。如果当时老师能够说这个计算机科学的机器学习有巨大的应用并且能讲几个活脱脱例子,相信我当时一定会对线性代数产生浓厚的兴趣并做一些机器学习的实践的。
今天在这篇文章里,我打算以当前有实际应用需求的视角来重新学习一下线性代数的知识, 参考书籍选取的是统计大学的线性代数, 同时也会穿插着参考一些网络上的博客资源来帮助理解。文章的总体思路是:记录线性代数相关章节的学习心得,并不纠结于具体的公式以及证明,而是重在对相关知识点的理解与应用。也就是说,对线性代数要有一个良好的大局观以及理解,而具体的公式以及证明,可以在需要的时候专注研究一下,而对于自己当前不关注的点,只需要知道是怎么一回事就可以了。

线性代数

线性方程组与矩阵

矩阵最初始的意图是为了解线性方程组。

  • 什么是线性和非线性? 初学者经常会听到这两个概念,但是可能并没有理解。简单的说, 线性(linear)就是量与量之间按比例,成直线的关系, 非线性(non-linear)表示不按比例, 不成直线的关系。 一次函数是线性,其他函数则为非线性。

  • 通过线性方程组, 引出矩阵的概念。 在工程应用中,我们经常会遇到线性方程组求解未知数的问题,矩阵给我们提供了一个很好的表示线性方程组的形式。 注意这里的表示相当于等价的表示, 有人会问:那么直接用方程组表示不就够了嘛, 为什么要用矩阵呢? 个人理解, 矩阵的表示有这样的好处: 1. 表示形式更加简洁,用一组数就可以表示方程组; 2. 有利于分析与计算,更好的求解方程组。

  • 矩阵的运算中, 矩阵的加减都比较简单,但是到了矩阵的乘法,规则似乎变的难了起来(横着的数 X 竖着的数,再累加)。其实,矩阵的本质就是线性方程式, 两者一一对应, 可以从线性方程式的角度来理解矩阵的乘法。
    下面是一组线性方程式:
    { 2 x + y = 3 4 x + 3 y = 7 \begin{cases} 2x+y=3 \\ 4x+3y=7 \end{cases} {2x+y=34x+3y=7

矩阵最初的目的,只是为线性方程组提供一个简写形式。(这里可以查询一下矩阵的历史看看它的起源是啥 ~)下面的矩阵乘法和上面的方程组是等价的。
( 1 2 4 3 ) ( x y ) = ( 3 7 ) \begin{pmatrix} 1 & 2 \\ 4 & 3 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 3 \\ 7 \end{pmatrix} (1423)(xy)=(37)

《矩阵乘法主要参考资料》

  • 分块矩阵, 这个知识点倒是于我相对次要, 主要理解是, 在矩阵的加减乘运算中, 可以两个矩阵分成小矩阵进行运算, 最后在把小矩阵的计算结果整合起来形成最后的结果。 可以了解下分块矩阵的乘法运算,个人理解,这个分块矩阵在计算机中的运算是有意义的, 比如,可以将超大矩阵进行分块之后在计算, 这样既可以减少内存的使用,又可以搞一波并行计算。

  • 矩阵的初等变换。 还记得以前怎么解方程组的嘛? 从现在的视角来看,解方程组可以看成是一个消消乐游戏,目的就是尽可能的把未知数的系数消为零,等到最后实在是消不掉了,解就出来了。 游戏的规则会有点不同,一般消消乐是遇到相同的元素就自动消掉; 我们解方程组的时候,可以做一些加减乘除的变换,把一些系数消为0。其实,矩阵的初等变换可以看作解方程组的过程,操作主要有: 交换两行;某一行乘以一个数; 某一行乘以一个数加到另外一行。

  • 初等矩阵与逆矩阵。 逆矩阵可以用来求解方程组,如果知道逆矩阵,一个乘法运算就把方程解出来了,因此逆矩阵作用还是挺大的,但是并不是所有的矩阵都是可逆的。 可以通过初等变换来判断这个矩阵是否是可逆的。
    这里描述一下逆矩阵的物理意义: 大部分矩阵可以把直角坐标系变成各种斜的坐标系, 而逆矩阵可以把斜的坐标系变回直角坐标系。
    求解逆矩阵的过程也是挺有意思的。看到了教材中的求解逆矩阵的过程, 要求A的逆矩阵, 就把AE组成一个分块矩阵, 然后一起做初等变换,等把A变换为E了, E变换出来的值就A的逆矩阵。
    证明公式如下,可以理解一下。
    A-1(A|E)=(E|A-1)

什么是初等矩阵: 对n阶单位矩阵E实施一次初等变换得到的矩阵称为n阶初等矩阵。初等矩阵都是可逆的。
《逆矩阵的含义》

方阵的行列式

行列式出现与线性方程的求解过程,它的计算过程还挺烦的,balalaba一堆的相乘相加相减,虽然有规律可循,但还是比较复杂。行列式有啥意义呢? 查了下这个可以用来解线性方程,如果行列式求出来了,线性方程的解就呼之欲出了(克莱姆法则,好像计算量比较大,一般不这么求解,而是用初等变换消消乐方式求解)。但是行列式求解方式还是挺复杂的, 有没有更为简便的方法呢? 答案是有的,只要把行列式转化为上三角或者下三角方阵,就可以直接求斜对角元素的乘积得到行列式的值了。

行列是有一堆的性质的, 笔者当前对行列式的性质还不感兴趣,就先不做研讨。

向量空间与线性方程组解的结构

在这里,视角就要改变了, 要把矩阵的列元素看作是多维空间中的一个点或向量。我们这里的目的也不是求解线性方程组了, 而是更多的关注一个点或者向量是如何在多维空间进行变换的。这里的每个向量在机器学习中就可以对应这数据集样本中每个特征的值。 到了这里,才是我真正敢兴趣的地方,也是和机器学习关联最多的地方了。

  • 向量组及其线性组合。什么是向量呢? 定义: 由n个数a1,a2,…,an组成的有序数组称为n维向量。再回顾一下什么是矩阵呢? mxn个数排成的m行n列的数表称为一个mxn的矩阵。 那么向量是不是矩阵呢?个人理解向量是一种特殊的矩阵,可以用矩阵的运算来定义向量的运算。但是视角需要调整一下,向量是列着也就是竖着看的,多个向量组成了一向量组,也要用一竖行为一个个体来看待哦。线性组合就是向量x常数再累加,线性表示就是线性组合之后可以表示的向量。可以类比: 三维空间的坐标轴乘以一个常数就能表示一个坐标点了。但有的时候,也会出现不能表示的情况, 比如二维的坐标是不能够表示三维的点的。一个向量组可以由另外一个向量组线性表示的含义是什么呢? 是不是可以理解为一组点经过空间变换到另外一组点呢。 如果两个向量组可以相互表示,则这两个向量组等价。那么,要想知道是否等价,一定需要证明可以相互表示吗?不是的,其实求秩是一个更为简便的方法。

  • 向量组的线性相关性 其实,我更关注的是线性无关,说明向量组里的每一个向量都不能用其他向量来表示。例如三维空间的三个坐标轴,每个坐标轴是缺一不可的,不可以相互表示。

  • 向量组的秩与矩阵的秩 求秩可以判断线性方程组是否有多余的方程以及线性方程组有几个多余的方程。 极大无关组的个数就是秩的大小。秩可以表现一个向量组的性质, 也就是说这个向量组可以至少由多少个向量来表示。

  • 线性方程组解的结构, 我们可以通过秩来了解矩阵所表示的线性方程组有多少个解。在实际的工程应用中, 许多模型都是线性的,比如会遇到求有42个未知数的42个方程组的情况,或者每天会求上千个方程组的需求,在这种场景下, 研究线性代数有着很大的意义,可以帮助解决工程问题。

  • 向量空间在这里,需要理解一下基的概念,基不是一个向量, 而是一个向量组,他们线性无关并且可以表示向量空间中的任意向量。比如三维空间的坐标轴所代表的向量就是基。用基来线性表示其他向量,系数被定义为坐标。基与坐标都是可以变换的。 例如,我们可以用两种不同的坐标系来表示同一个点。

相似矩阵及二次型

  • 向量的内积,长度及正交性, 是尝试把二维空间的向量长度和夹角扩展到n维空间去了。 向量的内积可以表示什么呢? 内积可以用来求两个n维度向量的夹角。这里有个非常重要的公式。夹角只是一个定义,并且可以证明这个定义是合理的, 也就是值域范围没有问题。也许这种n维空间的夹角,我们无法直观的感受到,也就只能想象啦。特别的,我们更关心夹角为90度的场景,这说明两个向量是正交的。
    θ = arccos ⁡ [ x , y ] ∥ x ∥ ∥ y ∥ \theta=\arccos\frac{[\pmb{x},\pmb{y}]}{\lVert{\pmb{x}}\rVert \lVert{\pmb{y}}\rVert } θ=arccosxy[x,y]
    规范正交基,是单位向量,也是两两正交。
    正交矩阵可以引出正交变换的概念, 正交变换可以保持向量的长度不变,这也是正交变换的优良特性。

  • 方阵的特征值与特征向量, 个人理解,特征向量是向量在做空间变换的时候,方向可以保持不变或者方向相反的向量,而特征向量则是在这个方向上伸缩的比例。
    特征值与特征向量的推导公式:
    A α = λ α \pmb{A\alpha}=\lambda\pmb{\alpha} Aα=λα
    ( A − λ E ) α = 0 (\pmb{A}-\lambda\pmb{E})\pmb{\alpha}=0 (AλE)α=0
    这就要求线性方程组有非零解也就是说行列式等于零。
    ∣ A − λ E ∣ = 0 |\pmb{A} - \lambda\pmb{E}|=0 AλE=0
    矩阵的特征值有几个性质, 等需要用到的时候可以再仔细了解下。

  • 相似矩阵,这里,我们可以把矩阵进行相似矩阵对角化,为什么要对角化呢,这是由于对角化矩阵有许多良好的性质。如果两个矩阵相似, 那么他们有相同的特征值。

  • 实对称矩阵的相似对角化 由于实对称矩阵总是可以对角化的,因此讨论实对称矩阵对角化的场景会多些。

  • 二次型及其标准型线性代表的是一次的, 这里推广到了二次。 任意给一个二次型, 就可以唯一的确定一个对称矩阵。二次型矩阵不是笔者关注的重点,先忽略。

线性空间与线性变换

  • 线性空间有时也被称为向量空间,但是与第三章中的向量空间不同,前者中的元素形式多样,而后者中的元素只是n元数组向量。线性空间中的元素不论其本来的性质如何,统称为向量.

  • 维数、基与坐标第三章中向量空间的基、维数、向量在基下的坐标、基变换与坐标变换等概念也适用于一般的线性空间

  • 线性变换简而言之, 线性映射就是保持线性组合的对应的映射。

小结

大体上过了一遍线性代数,书本上比较侧重于最基本的概念以及相关概念的性质。在机器学习中,经常会见到相关概念的身影, 在大学的教程里,对线性代数的学习也就止步于此了,只停留在具体的概念而没有实际的应用。但是在实际的工程应用中,只有真正使用到线性代数,才能体现出更大的价值。后续会在这个基础上学习研究一下机器学习中的降维相关的知识点。

你可能感兴趣的:(深度学习,线性代数,矩阵)