机器学习基础的线性代数
在机器学习中,大多数数据通常表示为向量、矩阵或张量,因此机器学习在很大程度上依赖于线性代数。
先了解下向量、矩阵和张量:
- 向量是一维数组,具有大小和方向
- 矩阵是二维数组,具有固定的行和列,一般用方括号[ ]表示
- 张量是向量和矩阵的推广,比如一维张量是一个向量,二维张量是一个矩阵,RGB图像是三维张量,当然还可以扩展到四维张量以及更高维等
描述矩阵的一些基本术语有:(如下图所示)
方阵:nxn,即行数等于列数
对角矩阵:除了对角线外其余元素都为0
上三角阵:对角线以下的所有元素都为0的方阵
下三角阵:对角线以上的所有元素都为0的方阵
矩阵乘法和空间变换
大一的时候都学过线性代数,对于矩阵乘法运算都会按照一定的规则去相乘,为啥会按照这样的规则去相乘?并没有深入的思考,其实矩阵乘法就是空间变换,下面看几个例子。
空间变换类型有很多,但是在机器学习领域所关注的空间变换是最基本的缩放和旋转。下面简单介绍。
空间缩放变换:
现有一个矩阵A
A
=
(
2
0
0
1
)
A=\begin{pmatrix} 2 & 0\\ 0 & 1\end{pmatrix}
A=(2001)
向量α
α
=
(
1
1
)
\alpha=\begin{pmatrix} 1\\ 1 \end{pmatrix}
α=(11)
则有
A
α
=
(
2
0
0
1
)
(
1
1
)
=
(
2
2
)
=
β
A\alpha = \begin{pmatrix} 2 & 0\\ 0 & 1\end{pmatrix}\begin{pmatrix} 1\\ 1 \end{pmatrix}=\begin{pmatrix} 2\\ 2 \end{pmatrix}=\beta
Aα=(2001)(11)=(22)=β
可以看成如下空间变换:矩阵A在x的正方向和y的正方向上都做了一个两倍的拉伸, 即在A的基础上,向量α变换到了向量β,如下图所示。
因此,可以拓展为:
A
α
=
(
x
0
0
y
)
(
a
b
)
=
(
a
x
b
y
)
=
β
A\alpha = \begin{pmatrix} x & 0\\ 0 & y\end{pmatrix}\begin{pmatrix} a\\ b \end{pmatrix}=\begin{pmatrix} ax\\ by \end{pmatrix}=\beta
Aα=(x00y)(ab)=(axby)=β
可以看成如下空间变换:矩阵A在x的正方向和y的正方向上分别拉伸(或缩放)了x倍和y倍, 即在A的基础上,向量α变换到了向量β。
空间旋转变换:
现有矩阵A
A
=
(
0
−
1
1
0
)
A=\begin{pmatrix} 0 & -1\\ 1 &0\end{pmatrix}
A=(01−10)
向量α
α
=
(
1
1
)
\alpha=\begin{pmatrix} 1\\ 1 \end{pmatrix}
α=(11)
则有
A
α
=
(
0
−
1
1
0
)
(
1
1
)
=
(
−
1
1
)
A\alpha =\begin{pmatrix} 0 & -1\\ 1 &0\end{pmatrix}\begin{pmatrix} 1\\ 1 \end{pmatrix}=\begin{pmatrix} -1 \\ 1 \end{pmatrix}
Aα=(01−10)(11)=(−11)
可以看成如下空间变换:在矩阵A的基础上,向量α逆时针旋转了90°, 如下图所示
因此,可以拓展为:
A
α
=
(
cos
θ
−
sin
θ
sin
θ
cos
θ
)
(
a
b
)
=
(
a
cos
θ
−
b
sin
θ
a
sin
θ
+
b
cos
θ
)
A\alpha =\begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta &\cos \theta \end{pmatrix}\begin{pmatrix} a\\ b \end{pmatrix}=\begin{pmatrix} a\cos \theta -b\sin \theta \\ a\sin \theta +b\cos \theta \end{pmatrix}
Aα=(cosθsinθ−sinθcosθ)(ab)=(acosθ−bsinθasinθ+bcosθ)
可以看成如下空间变换:在矩阵A的基础上,向量α逆时针旋转了θ。
行列式的几何意义
行列式的几何意义是图形变化前后的一个放大率。
一般研究的是二维和三维。对于二维来说,就是面积的放大率,对于三维来说,就是体积的放大率。
以下以二维举例说明:
空间缩放变换:
下图中,
∣
A
∣
=
18
\left | A \right | =18
∣A∣=18
即面积放大了18倍。
C
=
(
−
2
0
0
1
)
C=\begin{pmatrix} -2 & 0\\ 0 &1\end{pmatrix}
C=(−2001)
∣
C
∣
=
−
2
\left | C \right | =-2
∣C∣=−2
这里面积放大了两倍,只是图形进行了翻折
空间剪切变换:
如下图所示,在剪切的情况下,单位正方形被映射成单位平行四边形。 这是因为平行四边形的面积是“长 x 高”。 因此,在这种情况下,面积将保持不变,但正方形被拉伸。
空间旋转变换:
B
=
(
cos
θ
−
sin
θ
sin
θ
cos
θ
)
B=\begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta &\cos \theta \end{pmatrix}
B=(cosθsinθ−sinθcosθ)
∣
B
∣
=
1
\left | B \right | =1
∣B∣=1
即对于空间旋转变换,面积不变
有一种特殊的行列式,行列式为0,比如
D
=
(
1
1
1
1
)
D=\begin{pmatrix} 1 & 1\\ 1 &1\end{pmatrix}
D=(1111)
放大率为0,即图形变换后面积为0,说明二维图形变成了一维直线,实现了降维。
之前学到过,对于行列式为0的话,矩阵是可逆的;但是不为0的话,矩阵是不可逆的,从几何意义上就能得到解释,因为拉伸、旋转变换后,图形是可以变换回去的,但是降维后,图形是变换不回去的。
对本小节进行summary一下:
对于2x2的矩阵A,
①当|A|>1,表示经过A变换后,面积放大
②当0<|A|<1且|A|≠0,表示经过A变换后,面积缩小
③当|A|=0,表示经过A变换后,表示整个平面被压缩到一条直线甚至一个点,实现了降维
④当|A|<0,这里的负数表示空间翻转,这里还可以细化讨论行列式的取值情况
对于3x3矩阵A,
①|A|≠0,表示经过A变换后,体积的缩放
②|A|=0,表示体积被压缩成一个面,甚至是一条线
线性相关和线性无关
下图所示,两个向量都在同一个方向上,即还是一维直线,我们删除其中一个向量,也不会影响这两个向量的表示,因此可以认为这里有多余的向量,即线性相关。
下图中,两个向量不在一条线上,即张成了一个二维平面,因此这两个向量是线性无关的。
summary:
线性相关、无关的几何意义:
因为向量是有方向和大小的,两个向量是否可以抵消掉,如果能抵消掉,则认为是线性相关,不能抵消掉,则认为是无关。
物理意义:
因为力是有大小和方向的,可以将向量看成是力,对力进行合成。
特征值和特征向量的意义
A
α
=
λ
α
A\alpha = \lambda \alpha
Aα=λα
以上,\alpha 为特征向量,\lambda 为特征值。
从公式可以看出,对于某个矩阵A,我们可以找到一个向量\alpha,当它与矩阵相乘时,等于这个向量乘以一个系数\lambda,即缩放的向量\alpha。
那么特征值和特征向量的意义是啥?
举个例子:
现有一个矩阵A:
A
=
(
2
0
0
3
)
A=\begin{pmatrix} 2 & 0\\ 0 & 3 \end{pmatrix}
A=(2003)
分别将矩阵A施加在不同的向量上:
1.
(
2
0
0
3
)
(
0
1
)
=
3
(
0
1
)
\begin{pmatrix} 2 & 0\\ 0 & 3 \end{pmatrix}\begin{pmatrix} 0\\ 1 \end{pmatrix}=3\begin{pmatrix} 0\\ 1 \end{pmatrix}
(2003)(01)=3(01)
未改变方向
2.
(
2
0
0
3
)
(
1
1
)
=
(
2
3
)
\begin{pmatrix} 2 & 0\\ 0 & 3 \end{pmatrix}\begin{pmatrix} 1\\ 1 \end{pmatrix}=\begin{pmatrix} 2\\ 3 \end{pmatrix}
(2003)(11)=(23)
改变了方向
3.
(
2
0
0
3
)
(
1
1
/
2
)
=
(
2
3
/
2
)
\begin{pmatrix} 2 & 0\\ 0 & 3 \end{pmatrix}\begin{pmatrix} 1\\ 1/2 \end{pmatrix}=\begin{pmatrix} 2\\ 3/2 \end{pmatrix}
(2003)(11/2)=(23/2)
改变了方向
4.
(
2
0
0
3
)
(
1
0
)
=
(
2
0
)
=
2
(
1
0
)
\begin{pmatrix} 2 & 0\\ 0 & 3 \end{pmatrix}\begin{pmatrix} 1\\ 0 \end{pmatrix}=\begin{pmatrix} 2\\ 0 \end{pmatrix}=2\begin{pmatrix} 1\\ 0 \end{pmatrix}
(2003)(10)=(20)=2(10)
未改变方向
前面说过,矩阵本质上就是一个线性变换,“特征向量”和“特征值”反应在特征二字上,特征向量反应的是矩阵A本身固有的一些特征,当把矩阵作用在不同的向量上时,会被矩阵A变换得面目全非(比如第二个和第三个例子,而且大部分向量会这样),但是存在一些向量(比如第一个和第四个例子),被矩阵A变换后仍然保持原来的样子,于是这些向量就是矩阵A的核心代表了。
summary:
\alpha:特征向量,即在空间变换前后没有改变方向的向量,指示的是拉伸方向
\lambda:特征值,即拉伸的倍率
矩阵和线性变换
所谓变换,就是函数中的一种
“变换”更强调一个空间中的动作,比如拉伸、压缩、旋转等
那么,线性变换性质为:1.任意直线在变换后依然是直线,2.原点的位置在变换后依然保持不变。
对于一个二维平面来说,输入的是向量,线性变换后,输出的也是向量,那么如何用数学去描述呢?
(
x
i
n
y
i
n
)
→
(
x
o
u
t
y
o
u
t
)
\begin{pmatrix} x_{in}\\ y_{in} \end{pmatrix}\rightarrow \begin{pmatrix} x_{out}\\ y_{out} \end{pmatrix}
(xinyin)→(xoutyout)
举个例子:
现有一组基向量
i
⃗
=
(
1
0
)
\vec{i}=\begin{pmatrix} 1\\ 0 \end{pmatrix}
i=(10)
j
⃗
=
(
0
1
)
\vec{j}=\begin{pmatrix} 0\\ 1 \end{pmatrix}
j=(01)
则有
(
−
1
2
)
=
(
−
1
0
)
i
⃗
+
(
0
2
)
j
⃗
\begin{pmatrix} -1\\ 2 \end{pmatrix}=\begin{pmatrix} -1\\ 0 \end{pmatrix}\vec{i}+\begin{pmatrix} 0\\ 2 \end{pmatrix}\vec{j}
(−12)=(−10)i+(02)j
即:
v
⃗
=
−
1
i
⃗
+
2
j
⃗
\vec{v}=-1\vec{i}+2\vec{j}
v=−1i+2j
施加以下线性变换后,有:
变换后的第一个基向量:
i
⃗
′
=
t
r
a
n
s
f
o
r
m
e
d
i
⃗
=
(
1
−
2
)
{\vec{i}}'=transformed \vec{i}=\begin{pmatrix} 1\\ -2 \end{pmatrix}
i′=transformedi=(1−2)
变换后的第二个基向量:
j
⃗
′
=
t
r
a
n
s
f
o
r
m
e
d
j
⃗
=
(
3
0
)
{\vec{j}}'=transformed \vec{j}=\begin{pmatrix} 3\\ 0 \end{pmatrix}
j′=transformedj=(30)
v
⃗
′
=
t
r
a
n
s
f
o
r
m
e
d
v
⃗
=
−
1
(
1
−
2
)
+
2
(
3
0
)
=
(
5
2
)
{\vec{v}}'=transformed \vec{v}=-1\begin{pmatrix} 1\\ -2 \end{pmatrix}+2\begin{pmatrix} 3\\ 0 \end{pmatrix}=\begin{pmatrix} 5\\ 2 \end{pmatrix}
v′=transformedv=−1(1−2)+2(30)=(52)
因此,线性变换后输出的向量为
(
x
′
y
′
)
=
x
(
1
−
2
)
+
y
(
3
0
)
=
(
x
+
3
y
−
2
x
+
0
y
)
=
(
1
3
−
2
0
)
(
x
y
)
\begin{pmatrix} x'\\ y' \end{pmatrix}=x\begin{pmatrix} 1\\ -2 \end{pmatrix}+y\begin{pmatrix} 3\\ 0 \end{pmatrix}=\begin{pmatrix} x+3y\\ -2x+0y \end{pmatrix}=\begin{pmatrix} 1 &3 \\ -2& 0 \end{pmatrix}\begin{pmatrix} x\\ y \end{pmatrix}
(x′y′)=x(1−2)+y(30)=(x+3y−2x+0y)=(1−230)(xy)
summary:
对向量施加线性变换时,实际上是将向量左乘一个矩阵,即
(
a
b
c
d
)
(
x
y
)
=
x
(
a
c
)
+
y
(
b
d
)
=
(
a
x
+
b
y
c
x
+
d
y
)
\begin{pmatrix} a &b \\ c &d \end{pmatrix}\begin{pmatrix} x\\ y \end{pmatrix}=x\begin{pmatrix} a\\ c \end{pmatrix}+y\begin{pmatrix} b\\ d \end{pmatrix}=\begin{pmatrix} ax+by\\ cx+dy \end{pmatrix}
(acbd)(xy)=x(ac)+y(bd)=(ax+bycx+dy)
矩阵和矩阵相乘
即复合变换,对向量进行施加两次相继的变换,即向量左乘一个矩阵再左乘一个矩阵。
逆变换、列空间、秩
对于一个3x3线性方程组:
{
2
x
+
5
y
+
3
z
=
−
3
4
x
+
0
y
+
8
z
=
0
1
x
+
3
y
+
0
z
=
2
\left\{\begin{matrix} 2x+5y+3z=-3\\ 4x+0y+8z=0\\ 1x+3y+0z=2 \end{matrix}\right.
⎩⎨⎧2x+5y+3z=−34x+0y+8z=01x+3y+0z=2
写成矩阵形式:
(
2
5
3
4
0
8
1
3
0
)
(
x
y
z
)
=
(
−
3
0
2
)
\begin{pmatrix} 2 &5 &3 \\ 4 &0 &8 \\ 1 &3 &0 \end{pmatrix}\begin{pmatrix} x\\ y\\ z \end{pmatrix}=\begin{pmatrix} -3\\ 0\\ 2 \end{pmatrix}
⎝⎛241503380⎠⎞⎝⎛xyz⎠⎞=⎝⎛−302⎠⎞
即
A
x
⃗
=
v
⃗
A\vec{x}=\vec{v}
Ax=v
其中,A为系数矩阵,就是一种线性变换,即向量x经过A变换,变成向量v。
同理,2x2线性方程组也可以用矩阵表示。
那么,这个变换呆地是将三维空间(二维平面)挤压成平面或线或点(线或点)等低维空间,还是保持初始状态呢?这就主要看矩阵的行列式了(之前提到过)。
对于二维平面来说:
1.|A |=0,降维了,不存在A的逆变换,即不能将一条直线解压缩回二维平面。此时要么无解(即没有一个输入向量能够变换到我们给定的输出向量)要么无数解(有无数个输入向量能得到给定输出)。
2.|A |不等于0,有且仅存在一个向量x,使得方程组成立。
summary:
1.逆变换:只有行列式不为0时,才有逆变换。
2.秩:变换后空间的维数
3.列空间:不管是一条直线、一个平面还是三维空间,所有可能的变换结果的集合,统称为列空间。
应用:矩阵和图像
首先了解下什么是数字图像? 如下图所示,它只是由一堆像素组成,每个像素都是一种颜色。 像素是图片的一个小元素。 每个像素代表一种颜色,它是三种颜色通道的组合:红色、绿色和蓝色。 通过这些颜色的一百万种组合,我们可以表示任何颜色和任何图像。
在计算机中,图像通常存储为矩阵。 为了表示单通道强度,这里使用 0-255 之间的值。 因此,对于一个彩色图像,用三个 8 位来表示,对于灰度图像,使用 0-255 之间的值来表示灰度强度,其中0表示黑色,255表示白色,只需要 8 位或 1 个字节的数据进行存储。
下面举一个平滑图像的例子。
这里制作一个3x3的矩阵,即过滤器,将这个过滤器在图像矩阵上从左到右、从上到下的移动,并将过滤器矩阵中每一个元素与对应的图像矩阵元素一一相乘,并相加,这称为卷积操作。最终对图像进行了平滑处理。