1.2 矩阵运算和变换

矩阵运算和变换

标签:矩阵运算 如何理解矩阵乘法 如何理解矩阵除法 矩阵的逆
_ 写的辛苦 转载请注明出处!

矩阵乘法

===
如何理解矩阵乘法

从实数函数来看

我们再来类比一下:
实数函数: y = a x + b y=ax+b y=ax+b
矩阵变换: Y = A x ⃗ + B Y=A\vec{x}+B Y=Ax +B
在实数函数视角下,实数a即表示静态的一个数,在参与运算后就表征动态的一个线性的缩放因子,b也本是一个静态的数在参与运算中体现出了平移偏置的动态意义
在矩阵乘法视角下,矩阵A本也是一个**【静态的】数据块记录**,在运算时就有了线性空间的变换的【动态属性】,矩阵B也是在运算后附加了动态属性:平移和偏置。
这里a,b A,B本质上是一样的,只是处理的对象不同,一个是一个实数一个是一组实数,含义也扩大为了空间。
我们把维度增加为多元函数,进行归纳推广
二元线性函数单值函数: y = a 1 ∗ x 1 + a 2 ∗ x 2 + b y=a_1*x_1+a_2*x_2+b y=a1x1+a2x2+b
二元线性二值函数函数: y 1 = a 11 ∗ x 1 + a 12 ∗ x 2 + b 1 y1=a_{11}*x_1+a_{12}*x_2+b1 y1=a11x1+a12x2+b1 y 2 = a 21 ∗ x 1 + a 22 ∗ x 2 + b 2 y2=a_{21}*x_1+a_{22}*x_2+b2 y2=a21x1+a22x2+b2
二元线性多值函数:
[ y 1 y 2 y 3 ] = [ a 11 a 12 a 21 a 22 a 31 a 32 ] × [ x 1 x 2 ] \begin{bmatrix} y_1\\ y_2\\ y_3 \end{bmatrix}\quad =\begin{bmatrix} a_{11} &a_{12}\\ a_{21} &a_{22}\\a_{31}&a_{32 }\end{bmatrix}\quad\times\begin{bmatrix} x_1\\ x_2 \end{bmatrix}\quad y1y2y3=a11a21a31a12a22a32×[x1x2]
如果自变量 X \bm{X} X 是有多列也就是有多组输入 [ X 1 , X 2 , . . . X n ] [{\bm{X_1,X_2,...X_n}}] [X1,X2,...Xn]那么X就是一个矩阵的时候我们可以看作是A分别作用于X的每一列向量 X i ⃗ \vec{X_i} Xi 。那么矩阵乘法定义就很容易定义:
A m s ∗ B s n = C m n A_{ms}*B_{sn}=C_{mn} AmsBsn=Cmn 其中 c i j = ∑ k = 1 s a i k ∗ b k j c_{ij}=\sum_{k=1}^sa_{ik}*b_{kj} cij=k=1saikbkj
因此矩阵乘以向量可理解为矩阵乘法就是线性乘子函数,当乘以矩阵可以理解为A对B矩阵每一列向量的线性函数
从这一点上矩阵乘法和实数函数里的代数乘法,线性函数是一脉相通的。只是处理的是“块”数输出的也是“块”(数,向量,矩阵)

从向量空间来看

还记得之前说过初学是我们更擅长从向量理解矩阵,矩阵就是多个向量
【内积】: a ⃗ ∗ b ⃗ \vec{a}*\vec{b} a b = a 1 ∗ b 1 + a 2 ∗ b 2 + . . = ∣ a ⃗ ∣ ∣ b ⃗ ∣ c o s θ . a1*b1+a2*b2 +..=|\vec{a}||\vec{b}|cos\theta. a1b1+a2b2+..=a b cosθ.
两个向量的乘法可以看作是一个在另外一个上的投影。我们还可以再写一遍:
【内积】: e ⃗ ∗ x ⃗ \vec{e}*\vec{x} e x = x 1 ∗ i ⃗ + x 2 ∗ j ⃗ + . . = ( x 1 , x 2 , . . ) x1*\vec{i}+x2*\vec{j} +..=(x_1 ,x_2,..) x1i +x2j +..=(x1,x2,..)
当一向量为基向量时,课看做向量乘法就是一个向量在另一个特征基向量方向上的投影坐标
因此矩阵乘法可定义为一组向量与另外一组向量分别内积
[ a 1 ⃗ a 2 ⃗ a 3 ⃗ ] × [ x 1 ⃗ x 2 ⃗ x 3 ⃗ ] = a 1 ⃗ ⋅ x 1 ⃗ + a 2 ⃗ ⋅ x 2 ⃗ + a 3 ⃗ ⋅ x 3 ⃗ \begin{bmatrix} \vec{a_1}\\ \vec{a_2}\\ \vec{a_3} \end{bmatrix}\quad \times \begin{bmatrix} \vec{x_1}& \vec{x_2}&\vec{x_3} \end{bmatrix}\quad=\vec{a_1}\cdot\vec{x1}+\vec{a2}\cdot\vec{x2}+\vec{a3}\cdot\vec{x3} a1 a2 a3 ×[x1 x2 x3 ]=a1 x1 +a2 x2 +a3 x3
可以看到这种乘法写法,把矩阵乘法写作两组分块矩阵的子乘 -》写作两组向量的分别内积-》实数的加权线性求和 这种方式有美妙的相似运算结构,符合算法里的递归方法在编程处理类似问题可以充分发挥最优性子结构的特征写出DP,贪婪 分治思想 递归等算法,所以应用价值很大。我们给个对向量的空间变换图说明一下:
这里矩阵乘法把二维向量变换到三维空间
当我们吧内积写成:
【内积】: e ⃗ ∗ x ⃗ \vec{e}*\vec{x} e x = x 1 ∗ i ⃗ + x 2 ∗ j ⃗ + . . = ( x 1 , x 2 , . . ) x1*\vec{i}+x2*\vec{j} +..=(x_1 ,x_2,..) x1i +x2j +..=(x1,x2,..) 对应的矩阵就是单位正交矩阵 ∗ I ∗ *I* I
矩阵乘法就成了一个向量在标准正交坐标系里各个坐标轴上的投影坐标。
矩阵乘法就是一个矩阵向量变换到另一个矩阵向量为基所构成的空间中去 A B = C AB=C AB=C
从空间来看,矩阵乘法就是旋转伸缩,加法对应平移偏置
理解定义】:


  • 通常我们说的是左边矩阵B的列向量变换到右边矩阵A行向量为基的空间去,这里左右,行列,谁在主动变换谁其实没有什么本质区别,这都是相互的都是为了统一方便的约束 不信你看 B T A T = C T B^TA^T=C^T BTAT=CT 这不等价了吗 (为方便以后我也主要采用这种通常的表述!)

  • 矩阵表示一个静态的空间(也就是一组向量),也动态的表征这组基向量构成的空间变换,这是乘法赋予的动态含义,所以上面的C既表示生成的结果空间,也代表新的空间变换(把A变换和B变换结合起来的变换),所以这样看矩阵乘法结合律是很自然的。

  • 向量乘以向量: x ⃗ y ⃗ \vec{x}\vec{y} x y 内积表征y在一个基向量方向(即x)上的投影变换,因此只能是一个标量数值
  • 矩阵乘以向量: X y ⃗ \bm{X}\vec{y} Xy 表征y在X的空间(X各行向量构成的空间)上的投影变换,因此结果应当是一个向量,当X行数大于列数(y的维度)意味着是低维到高维的变换,象征“放大”“扩充丰富”的味道;当X行小于列数,就是高维到低位的映射,有压缩,提取,核表示的味道。

  • 矩阵乘以矩阵: X Y \bm{X}\bm{Y} XY可以继续理解为对各列分别的变换,也可理解为是对Y列向量所表示的空间进行变换,是一个新的空间也代表新的空间变换

  • 简单的几个二维图形变换矩阵更多详情自行查阅
    旋转 [ s i n θ c o s θ − c o s θ c o s θ ] \begin{bmatrix} sin\theta & cos\theta \\ -cos\theta & cos\theta \end{bmatrix}\quad [sinθcosθcosθcosθ]
    伸缩 [ α 0 0 β ] \begin{bmatrix} \alpha & 0 \\ 0 & \beta \end{bmatrix}\quad [α00β]

从物理运动看[1]

我这里简单解读下,我们熟悉的都是标准正交单位基构成的坐标空间,实际上任何线性无关的向量组都表示一个空间,他们可能相互斜交 并不垂直。我们从物理运动上看,用一个公交车载人位移看,人初始在地球参考系里(标准正交空间),上车后以车为参考系(车在运动,表征变换矩阵A的空间),是静止的,车到地方后下车,我们又回到地球坐标系了,此时我们的位置发生改变(相对于地球参考系,相对于车我们没发生位移),这就是空间变换完成了。因此矩阵乘法象征着在该参考系下的运动变换,那么我们就更好理解一些概念了

  • 矩阵乘法代表物理机械运动
  • 秩,表示运动的范围,就是A能将你映射到几维空间
  • 特征值与特征向量,分别表示运动的速度大小和运动的速度方向

为什么这么定义[2]?

  • 为什么不简单定义成矩阵对应点乘?
    这已经是无损信息下最简单的定义了,多维情况下,信息你总要考虑各个维度的信息吧
  • 为什么定义为加权求和(不是求和后再乘)?
    上文又谈到这种定义顺理成章,也可以思考这种方式正是向量内积投影的定义,符合我们空间运动变换的理解;再者这是线性的定义和我们实数函数观点出发的定义一致,因为非线性化后考虑变化量:实数函数 y = y 0 + a ( d x ) , d y / d x = a y=y_0+a(dx),dy/dx=a y=y0+a(dx),dy/dx=a 矩阵 y = y 0 + A x ⃗ \bm{y}=\bm{y_0}+A\vec{x} y=y0+Ax 刚好导数就是A,也就是jaccob矩阵,代表线性的边际增量
  • 为什么定义成前者的行乘以后者的列?
    参考前文,行列,左右,本质上没差别的,转置处理一下即可。

矩阵除法

实数函数: y = f ( x ) . x = f − 1 ( y ) , y = a x , x = 1 a y y=f(x).x=f^{-1}(y),y=ax,x=\frac{1}{a}y y=f(x).x=f1(y),y=ax,x=a1y
矩阵代数: Y = A X , X = A − 1 Y , X = Y / A Y=AX,X=A^{-1}Y,X=Y/A Y=AX,X=A1Y,X=Y/A
其实就是从实数领域的一种统一,表示一种反函数,表示一种空间的反变换,逆变换,运动的回溯。写成乘法的方式便与理解,这就是矩阵逆的含义
所以 ( A B ) − 1 = B − 1 A − 1 \bm(AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1也是很自然的

矩阵的逆 (伪逆)

如上所示表示一种逆变换。但注意我们通常说的逆针对方阵,但是方阵可能奇异无逆,就如同没有反函数一样没有逆变换。我们说矩阵乘法就是把一个空间投影到另外一个空间,如果是吧一个高维(严格高维,线性无关,高秩)投影到一个低维空间(线性相关,低秩,表面上是高维矩阵,实际线性相关表征低纬度空间) ,这种显然逆变换是不存在的(不唯一),比如三维的线段投影到x0y坐标平面上是唯一的,反过去这样的线就是无数的(因为z坐标不确定可取任一值)。即
高维到低维的变换无逆变换(不唯一)但是实际上是存在的,不过找不到解。
类似的非
方阵A为m*n的矩阵是他也是把一个空间映射到m维的空间
,可能是低到高也可能是高到低的投影(取决于m>n)。本质上来讲我们应该也有反变换(只是这种变换不唯一不是我们想要的)毕竟未知数多于了方程组数所以解不唯一。这种我们定义一个伪逆,在有一定先验限制下我们可以最大化还原我们想要的反变换

  • 这部分具体我以后在写文详述 可以参考matlab pinv() ,2018/1/7
    我们从最小二乘拟合直线来谈伪逆
    前面谈到,方阵不可逆或者是矩阵的时候,他也表示一种空间变换,只是从高维到低维,所以逆变换可能不存在(方程组相悖)也可能有无穷多个。但我们仍然想找到。我们把约束定义为平方误差最小,显然我们需要多个从x->y的变化数据组才能确定这个变换。
    定义m个数据集A=[x1;x2;…xm]每个数据xi是n维行向量。定义线性拟合函数为 f = x i ⃗ ∗ c ⃗ , c = [ c 1 c 2 . . . c n ] T f=\bm{\vec{x_i}*\vec{c},c}=[c_1 c_2 ...c_n]^T f=xi c ,c=[c1c2...cn]T
    目标就是最小化下式:
    m i n : η = 1 2 ( A c − y ) 2 , A = [ x 1 ⃗ x 2 ⃗ . . . x m ⃗ ] min:\eta=\frac{1}{2}\bm{(Ac-y)^2},A=\begin{bmatrix} \vec{x_1} \\ \vec{x_2}\\ ...\\\vec{x_m} \end{bmatrix}\quad min:η=21(Acy)2,A=x1 x2 ...xm
    求导数为 d η d c ⃗ = 0 = > ( A c − y ) T A = 0 = > A T A c = A T y \frac{d\eta}{d\vec{c}}=0 =>\bm{(Ac-y)^TA=0}=>\bm{A^TAc=A^Ty} dc dη=0=>(Acy)TA=0=>ATAc=ATy
    得到 A = [ ( A T A ) − 1 A T ] y = A + y A=[(A^TA)^{-1}A^T]y=A^+y A=[(ATA)1AT]y=A+y这里 A + = ( A T A ) − 1 A T A^+=(A^TA)^{-1}A^T A+=(ATA)1AT即为伪逆,用pinv(A)表示,显然定义伪逆,应当满足pinv(A)A=I这显然是满足的。
    因此最小平方误差情况下求【超定方程】或不可逆方程等方程的等效逆变换等价与求Ax=y的近似解 x = A + y x=A^+y x=A+y
    实际应用中不会求逆,这涉及数值稳定问题,在后面的矩阵算法,我们会再次谈到。
    –edit 1/14/2019–

单位矩阵

按照前文的类比理解,单位矩阵应当表示实数里的“1”,是正变换和反变换的结果,是表征没有变换没有运动,就是在空间里表征通常我们用的标准正交坐标空间(各向同性,均匀性的坐标空间),在运动观点里它代表没有位移(不是路程)代表地球参考系,所以自然他应当满足如下性质和运算:
I x ⃗ &lt; = &gt; x ⃗ , A ∗ A − 1 &lt; = &gt; I \bm{I}\vec{x}&lt;=&gt;\vec{x},A*A^{-1} &lt;=&gt; \bm{I} Ix <=>x ,AA1<=>I所以I的形式就是
[ 1 0 0 0 1 0 0 0 1 ] \begin{bmatrix} 1 &amp;0&amp;0\\ 0&amp;1&amp;0\\0&amp;0&amp;1 \end{bmatrix}\quad 100010001

[1]原文启发:https://www.zhihu.com/question/21351965/answer/204058188
[2]部分回答https://www.zhihu.com/question/21082351/answer/126177114
参考书目《线性代数的几何解释》《矩阵论》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值