欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

线性代数的本质

程序员文章站 2022-07-12 14:01:11
...

机器学习之线性代数回顾篇

引言

最近在研究机器学习的一些东西,发现有些东西涉及到微积分,线性代数,概率论与数理统计,如果不懂的话感觉不明所以,所以在此准备出一个系列回顾这三门数学,不求手算偏微分方程,矩阵乘法,但求明白这些数学概念的本质,从直观上能理解数学概念,能明白代码究竟在干些什么。

向量是什么

向量是个很神秘的东西,高中我们学到向量是具有方向的标量,是坐标系中的一个箭头,后来大学学到向量是一组数,后来我明白了,向量是线性空间的一个对象,不论是一个箭头还是一组数都是这个对象的表示方法,就像我们人是三维欧式空间的一个对象。

矩阵是什么

  • 矩阵代表着线性空间的一种运动,我们称为线性变换。那么矩阵和向量的乘法就可以理解了,就是对向量这个对象施以线性变换,让它进行了某些运动。从另一个方面看,对象的运动也可以反过来理解为对空间的变换,那么矩阵和向量的乘法就可以理解为,一个空间变换之后,比如一个空间旋转之后,这个向量在新空间的表示方法。
  • 首先一个向量描述的是对基底向量scale之后相加的结果,比如一个向量(2, -1) 其实是在单位坐标系下([(1, 0), (0, 1)],均为列向量的表示)对(1,0)这个x轴基底向量拉伸两倍,对(0, 1)这个y轴基底向量拉伸-1倍,然后把这两个向量相加的结果,然而这种关系是恒定的,不管什么坐标系,那么就是说,在另一个坐标系下,我们也可以这么表示这一个向量。那么矩阵[(3, 2), (-3, 2)]就描述了一个线性变化,可以把(1,0)->(3,2),(0,1)->(-3,2),那么我们对于新的基底向量也应用同样的scale,就得到(3,2) * 2 +(-3, 2) * -1,这个结果向量就是原先的向量经过线性变换之后在I坐标系下的表示
  • 首先我们来看一下Ma = Ib, 这个等式,有两种描述
  1. a向量经过M变换之后成为b向量
  2. 一个向量,在I坐标系下表示为b,在M坐标系下表示为a
  • 矩阵乘法,MNa = Ib,
  • 同样的描述的是一个向量,在I坐标系下是b,在MN坐标系下表示方法是a,假如Na = c,那么在M坐标系下表示方法就是c
  • 另一个表述是MNIa = b ,对a向量在I坐标系下应用变换N,然后在N坐标系下应用变换M,然后得到了b向量

行列式是什么

  • 前面我们明白了矩阵代表着空间的变换,那我们怎么去衡量空间变换的程度呢,比如空间拉伸还是收缩了多少,于是就产生了行列式。
  • 行列式是表示某一个线性变换对空间拉伸或者压缩了多少,举个例子,在二维空间下,可以观察一个1*1的正方形在某一个线性变换后面积变成了多少,由此观察这个线性变换对空间的影响。比如一个矩阵的行列式为3,意思是它将原来一个区域的面积变为了原先的3倍,如果是3 * 3的矩阵,那么就是把原来一个立方体的体积变为了原先的3倍。
  • 如果行列式的值为0,在二维空间,意味着这个变换把这个二维空间变为了一维空间,面积为0.所以只需要校验当前矩阵的行列式是否为0,就可以知道这个矩阵是否将这个空间降为了更低的维度。另外,如果这个矩阵代表的线性变换将当前空间降维了,那么意味着这个矩阵的各个列向量中至少有两个是线性相关的,两个列向量线性相关,意味着降了一维,因为其中一个向量并没有提供维度,三个列向量线性相关,意味着降了两维
  • 行列式的值为负数,意味着什么呢,意味着这个空间的取向发生了翻转,比如说一张纸是一个二维空间,经过一个线性变换之后,它从一面翻成了另一面,那么就说它的空间取向发生了翻转,这个时候的行列式就是负数(但是绝对值仍然代表着空间缩放的比例)。
  • 行列式从正变为负,可以理解为一个二维空间在变换中向一维运动,在某一个瞬间它变成了一维,但是继续变换由变成了2维,这个我们就可以理解为他的空间取向发生了变换
  • 假设A,B分别为两个向量,|A|意为对他们求行列式,为什么|A * B| = |A| * |B|。
  • 因为两次变换之后一共的对空间的缩放倍数一定等于第一次变换的缩放倍数*第二次变换的缩放倍数,很直观的理解。

非方阵

  • 非方阵意味着这是一次不同维度间的线性变换,因为比如一个3*2的矩阵,一个2维向量与其相乘,变成了一个三维向量。意味着输入空间是二维,但是变换后为一个三维空间,因为有三行,说明两个基向量在新的维度空间中以三个坐标来表示,这样的话可以理解了就是把一个二维空间变换为三维空间的一个面。
  • 同理2*3的一个矩阵,代表着一个降维变换,从三维空间压成了二维空间。

之前我们讲了维度间变换的概念,怎么去衡量维度变换这个概念呢,就发明了秩。秩就代表着经过这个矩阵变换之后,空间的维度,同时也可以理解为一个矩阵的列向量所张成的空间。比如一个3*3的方阵,现在它的秩为2,说明经过这个方阵变换之后,一个三维空间被压扁为一个二维空间,降维了,这个时候去求它的行列式,一定为0.

逆矩阵,零空间

  • 逆矩阵其实是一次可逆的线性变换,如果这个线性变换降维了,那么这个线性变换就不可逆,意味着逆矩阵不存在,怎么判断不可逆呢,行列式的值为0,就意味着降维了(体积变成面积了)。一个矩阵的秩,代表着这个矩阵的列向量所张成空间的维度,比如一个3*3的矩阵,但是它的矩阵的秩是2,意味着这个矩阵的列向量的空间为2维,也即是,这个矩阵代表的变换把3维空间降为2维。

  • 如果降维了,有可能会有原空间的一系列向量降为零向量,那么这一系列向量,可以称为这个矩阵的零空间,也可以称为核,零向量就是原点,在每一个维度上都为0

特征向量与特征值
  • 表示方式为A * V = lamda * V
    A为矩阵,V为向量,lamda是一个标量数值
  • 如果满足这个等式,那么就说V是矩阵A的特征向量,lamda是矩阵A的特征值
  • 简而言之,特征向量代表着V向量在A矩阵代表的变换中并不改变方向,只是拉伸或者收缩,而拉伸或者收缩的幅度就是lamda。
  • 一个线性变换通常可以由其特征值和特征向量完全描述。特征空间是相同特征值的特征向量的集合
  • https://www.zhihu.com/question/21874816 可以参考这边文章 把特征值的用处讲的非常清楚,我们可以简化一个图片的像素点,因为只要表达最重要的特征值就可以了
  • 特征向量V,代表在A矩阵代表的线性变换中,它没有改变方向,仅仅只是scale,所以相当于把这个向量V乘以一个标量
  • 相似矩阵,相似矩阵代表的是同一个线性变换在不同基向量下的表示方法。而相似对角化,是该线性变换刚好在它的特征向量为基的空间中的表示方法,因为线性变换只是拉伸或者缩小了特征向量,所以该线性变换在特征基下为对角矩阵。用处https://www.zhihu.com/question/21874816这里面讲的很清楚,可以找出用处最大的特征值们,然后在还原回去,丢掉了不重要的特征信息, 保留了最重要的特征信息
  • 如何定义线性变换,可加性和成比例 T(x) +T(Y) = T(X+Y), T(cx)=cT(x)
  • 所以回归到第一章,向量的定义,矩阵乘法为什么可以理解为对不同基向量做相同的拉伸。那是因为假设x, y 为基向量,z为线性空间某个向量,a,b为数值, L代表了某线性变换。
  • z = ax + by, L(z) = L(ax + by) = L(ax) + L(by) = aL(x) + bL(y), 推出以上结果,一个向量经过线性变换之后 其实就是对变换之后的基向量做同样的拉伸或者收缩,然后再相加
函数
  • 函数也可以理解为一个向量,只不过是一个具有无限维连续值的向量
  • 函数也可以进行线性变换,只不过它在函数中有了另一个名字,叫算子
  • 比如求导运算,就是一个线性运算,满足可加性和成比例
  • 为了将线性变换和向量的概念抽象化以更泛用,我们抽象出了线性变换的性质.可加性和成比例
在v + w =a 时
满足T(v) + T(w) = T(v + w)
满足T(kV) = kT(v)
  • 多项式的每一个幂可以理解为一个基函数比如多项式x + 3x平方,所有的x,x平方,x三方这种都可以理解为一个基函数,对应线性空间中的基向量