美文网首页
附录C:机器学习基础之线性代数

附录C:机器学习基础之线性代数

作者: 秋的懵懂 | 来源:发表于2018-09-03 10:59 被阅读0次

    时间:2018-08-27 作者:魏文应


    一、说明

    本章节中, 粗体的 \pmb{x} 表示向量,常规字体的 x 表示一个数。

    二、矩阵运算

    什么是矩阵

    把一些数,排列起来放置,组成数表,比如下面这个就是 m 行 n 列的矩阵:

    \begin{gather*} A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \vdots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} \end{gather*}

    元素 a_{ij} 是矩阵A 的第 ij 列。

    矩阵加法

    AB 两个矩阵相加,需要这两个矩阵为 同型矩阵(同为 m x n 矩阵),相对应元素相加即可:

    \begin{gather*} A = \begin{bmatrix} a_{11} + b_{11} & a_{12} + b_{12} & \cdots & a_{1n} + b_{1n}\\ a_{21} + b_{21} & a_{22} + b_{22} & \cdots & a_{2n} + b_{2n} \\ \vdots & \vdots & \vdots & \vdots \\ a_{m1} + b_{m1} & a_{m2} + b_{m2} & \cdots & a_{mn} + b_{mn} \end{bmatrix} \end{gather*}

    数与矩阵相乘

    \lambda 与 矩阵 A 的乘积:

    \begin{gather*} \lambda A = A \lambda = \begin{bmatrix} \lambda a_{11} & \lambda a_{12} & \cdots & \lambda a_{1n} \\ \lambda a_{21} & \lambda a_{22} & \cdots & \lambda a_{2n} \\ \vdots & \vdots & \vdots & \vdots \\ \lambda a_{m1} & \lambda a_{m2} & \cdots & \lambda a_{mn} \end{bmatrix} \end{gather*}

    矩阵和矩阵相乘

    先举个例子:

    \begin{gather*} AB = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{bmatrix} \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \\ b_{31} & b_{32} \end{bmatrix} \\ = \begin{bmatrix} a_{11}b_{11}+a_{12}b_{21} +a_{13}b_{31} & a_{11}b_{12}+a_{12}b_{22} +a_{13}b_{32} \\ a_{21}b_{11}+a_{22}b_{21} +a_{23}b_{31} & a_{21}b_{12}+a_{22}b_{22} +a_{23}b_{32} \end{bmatrix} \\ \end{gather*}

    矩阵 A = (a_{ij}) 是一个 m \times s 矩阵,矩阵 B = (b_{ij}) 是一个 s \times n 矩阵。两个矩阵相乘 AB 得到一个 m \times n 矩阵 C = (c_{ij})

    c_{ij} = a_{i1}b_{1j} + a_{i2}b_{2j} + \cdots + a_{ik}b_{kj} = \sum_{k=1}^s {a_{ik} b_{kj}}

    (i = 1, 2, 3, \cdots, m); (j = 1, 2, 3, \cdots, n)

    这就是 矩阵和矩阵相乘。从中我们可以看到,矩阵相乘 ABBA 是不一样的。相乘的前提条件是,前一个矩阵列 s 数要和后一个矩阵的行 s 数相等。

    三、超平面

    超平面,是因为机器学习的几何模型需要超平面这个概念,几何模型的决策面就是一个超平面。至于什么是几何模型、什么是决策面,我们后面再说。我们先从数学角度上看超平面。

    有些平面画不出来

    由于人眼睛感知的限制,我们只能看到空间的维数 n \leq 3,比如:一维点 x,二维点 (x, y), 三维点 (x, y, z) ,这些点我们可以用 笛卡尔直角坐标系 表示出来,直观看到。等维数 n \geq 4 以后,人就不能直观地观察到了。但我们依然沿用这种几何的说法,比如 (x, y, z, j) 我们依然可以叫做点。

    向量空间

    向量 应该都知道,比如平面坐标系中的向量 (x, y) 、三维坐标系中的向量 (x, y, z)。在几何中,我们把 “既有大小又有方向的量” 叫做 向量 。现实世界中,我们把空间看做是由一个一个点组成的,这样的空间叫做 点空间n 维向量的全体组成的集合,叫做 n 维向量空间,表示如下:

    R^n = \{ (x_1, x_2, \cdots, x_n) \space | \space x_1, x_2, \cdots, x_n \in R \}

    R 表示实数范围内。也就是说,(x_1, x_2, \cdots, x_n) 表示一些点,把所有的点放在一起,构成的集合,这样的集合,给它取个名字,叫做 n 维向量空间。在几何上,二维向量空间 R^2 是平面空间,三维向量空间 R^3 是三维立体空间。我们知道,在三维空间中,可以用 \vec{i}, \vec{j}, \vec{k} 作为一个基本向量,(a \vec{i}, b \vec{j}, c \vec{k}) 就可以表示三维空间中的任意向量了。n 维向量空间 V 中:

    • a_1, a_2, \cdots, a_n \in V
    • a_1, a_2, \cdots, a_n 之间线性无关。
    • 向量空间 V 中任意向量,都可以用 a_1, a_2, \cdots, a_n 表示。

    这样的向量组 (a_1, a_2, \cdots, a_n) 叫做 向量空间的基 。此外,下面向量空间:

    V = \{ \pmb{x} | \pmb{x} = (\xi_1, \xi_2, \cdots, \xi_n), \xi_i \in R, i = 1, 2, \cdots, n \}, F = R

    这个向量空间,数域F 是在 实数R范围内,所以叫做 n 元实坐标向量空间。相对的,如果数域F是 复数C,那么就叫做 n 元复坐标向量空间

    线性空间

    向量空间,也叫做 线性空间 。向量空间是从几何学的角度去描述,因为向量空间是能够满足线性运算的,所以也叫做线性空间,一般用 V 表示线性空间。满足下面8个运算规则的运算,称为 线性运算

    • \vec{x} + \vec{y} = \vec{y} + \vec{x}
    • (\vec{x} + \vec{y}) + \vec{z} = \vec{x} + (\vec{y} + \vec{z})
    • 在空间 V 存在 **零元素 \vec{0} , 对任何 \vec{x} \in V, 都有 \vec{x} + \vec{0} = \vec{x}
    • 对于任何 \alpha \in V ,都有 \alpha负元素 \beta \in V ,使得 \alpha + \beta = \vec{0}
    • 1 \vec{x} = \vec{x}
    • \lambda(\mu \vec{x}) = (\lambda \mu) \vec{x}
    • (\lambda + \mu) \vec{x} = \lambda \vec{x} + \mu \vec{x}
    • \lambda(\vec{x} + \vec{y}) = \lambda \vec{x} + \lambda \vec{y}

    一般情况下,我们认为向量空间指的就是线性空间,两个名称等价,意思一样。线性空间更加抽象化而已。n 维线性空间 记为 V_n 。如果 \vec{a_1}, \vec{a_2}, \cdots, \vec{a_n}V_n 的一个 ,线性空间 V_n 可以表示为:

    V_n = \{ \vec{\alpha} = x_1 \vec{a_1} + x_2 \vec{a_2} + \cdots + x_n \vec{a_n} \space | \space x_1, x_2, \cdots, x_n \in R\}

    我们可以说这个线性空间 V_n ,是由基 \vec{a_1}, \vec{a_2}, \cdots, \vec{a_n} 生成的线性空间。有些时候,还叫做由基 \vec{a_1}, \vec{a_2}, \cdots, \vec{a_n} 张成的线性空间 。在向量空间,我们说过 实向量空间,也就是 实线性空间

    子空间

    先举个例子:平面R^2R^3 的子集,而且 R^2 也是一个线性空间,称 R^2R^3线性子空间。我们知道了,在数域 F上 的线性空间 V ,可以看成是由无数点的集合构成的。我们选择其中一些点,这些点构成的集合 S 是 线性空间 V 的子集,这个集合S要 满足封闭性,即:

    • \forall x, y \in S ,都有 x + y \in S
    • \forall x \in S, \forall 、\lambda \in F ,都有 \lambda x \in S

    这个线性空间 S 就叫做线性空间V的 线性子空间 。 上面 \forall 符号意思是 任意,也就是 “对于任意 x, y 的意思。符号 \in属于 的意思。

    超平面

    高中我们就知道,ax + by = c 可以在平面上表示一条线,ax + by + cz = d 可以在三维空间上表示一个面。推广到 n 维向量空间,无论是线还是面,我们都把它叫做 。我们可以把面看做是由无数点组成的:

    \vec{x} = \{ (x_1, x_2, \cdots, x_n) | a_1 x_1 + a_2 x_2 + \cdots + a_n x_n = b \}

    上面这个向量集合,由这个集合中的无数个点组成 n 维向量空间的一个面,这个面,就叫做 n 维向量空间中的 n-1 维超平面。为什么是 n-1 呢? 2维空间(2D)中,a_1 x_1 + a_2 x_2 = b 表示的是几何中的直线,线是1维的。3维空间(3D)中,a_1 x_1 + a_2 x_2 + a_3 x_3 = b 表示的是几何中的面,面是2维的。你会发现,直线可以把平面分开两半,平面可以把空间分成两半。这就说明它可以分类,在机器学习的分类问题就会用到。

    超平面

    四、向量运算

    数量积(内积)

    高中,我们就学过:a \bullet b = | a | | b | \cos \theta 。这个就是二维空间中,平面向量的数量积(内积)。引入坐标系以后,向量 \vec a = (x_1, y_1) 和向量 \vec b = (x_2, y_2) 数量积就是:

    a \bullet b = | a | | b | \cos \theta = x_1 x_2 + y_1 y_2

    而且向量 \vec{a} 和向量 \vec{b} 互相垂直 时,有下面公式:

    \vec{a} \bot \vec{b} = x_1 x_2 + y_1 y_2 = 0

    后来我们把数量积推广到了三维空间,对于向量 \vec{a} = (x_1, y_1, z_1) 和 向量 \vec{b} = (x_2, y_2, z_2) ,数量积就是:

    a \bullet b = x_1 x_2 + y_1 y_2 + z_1 z_2

    如果 \vec{a} \bot \alpha ,那么称这个向量 \vec{a} 是 平面 \alpha法向量。如果有一个空间平面,平面方程如下:

    Ax + By + Cz = D

    那么它的法向量就是 (A, B, C) ,解释如下:

    设向量 (A, B, C) 是 平面 \alpha法向量, 并且和平面 \alpha 交于点 (x_0, y_0, z_0) 。平面 \alpha 上的向量均可表示为:(x-x_0, y-y_0, z-z_0),因为向量 (A, B, C) 与向量 (x-x_0, y-y_0, z-z_0) 垂直,所以:
    A(x-x_0) + B(y-y_0) + C(z-z_0)=0

    整理得:Ax+By+Cz+D=0
    可见,标准方程中,三个未知数的 系数所组成的向量 (A,B,C),就是平面的一个 法向量

    前面讲的,是二维空间和三维空间,将 内积计算 推广到 n 维空间:

    \vec{x} = (a_1, a_2, \cdots, a_n)

    \vec{y} = (b_1, b_2, \cdots, b_n)

    \vec{x} \bullet \vec{y} = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n

    内积空间

    我们先说什么是 内积。上面我们说,在解析几何中,设 \pmb{\alpha} = (x_1, y_1, z_1)\pmb{\beta }= (x_2, y_2, z_2),它的内积:

    (\pmb{\alpha}, \pmb{\beta}) = \pmb{\alpha} \bullet \pmb{\beta} = | \pmb{\alpha} | \pmb{\beta} | \cos{\theta} = x_1 x_2 + y_1 y_2 + z_1 z_2

    上面公式中,我们规定了一种规则,让两个 向量相乘,得到一个 实数。可以这么说吧,这种规则是 根据自己的需求自定义的 。如果你规定 \pmb{\alpha} \bullet \pmb{\beta} = x_1 也是可以的,只要满足你的实际需求就可以了。比如上面,解析几何中的 (\pmb{\alpha}, \pmb{\beta}) 之所以等于 x_1 x_2 + y_1 y_2 + z_1 z_2 ,是根据对应的实际物理意义定义的,如 \theta 是两个向量的夹角, | \pmb{\alpha} | 是向量\pmb{\alpha}的模等等 。这样的规则太随意,我们希望对这个生成规则做一些限制。比如下面规定:

    V 是实数域 R 上的 线性空间\forall \pmb{x}, \pmb{y} \in V, 给定 某种规则,使 \pmb{x}\pmb{y} 对应于 一个实数,记为 (\pmb{x}, \pmb{y}), 且满足下列条件:

    • (\pmb{x},\pmb{y}) = (\pmb{y}, \pmb{x}) ;
    • (\lambda \pmb{x}, \pmb{y}) = \lambda (\pmb{x}, \pmb{y});
    • (\pmb{x} + \pmb{y}, \pmb{z}) = (\pmb{x}, \pmb{z}) + (\pmb{y}, \pmb{z});
    • (\pmb{x, x}) \geq 0,当且仅当 \pmb{x = 0} 时, (\pmb{x, x}) = 0 .

    满足上面的实数 d = (\pmb{x, y}) 称为向量 \pmb{x}\pmb{y}内积 。其中,\pmb{x}, \pmb{y}, \pmb{z} \in V\lambda \in R

    定义了内积的 实线性空间 V,叫做 欧几里德空间。简称 欧氏空间 或者 实内积空间。而对于内积空间中,推广到复数的 复内积空间,这里我们不讨论。我们用得比较多的是 标准内积

    n 维向量空间 R^n 中,对于 \pmb{x} = (a_1, a_2, \cdots, a_n)^T\pmb{y} = (b_1, b_2, \cdots, b_n)^T,我们规定:

    (\pmb{x}, \pmb{y}) = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n = \sum_{k=1}^n {a_k b_k}

    这个内积,就称为 R^n 上的 标准内积。可以这么说,R^n 使用上述内积构成 n 维欧氏空间。

    范数

    先看范数的定义:

    令 V 是复向量空间。函数 || \pmb{x} ||V \rightarrow R 称为向量 \pmb{x}范数

    什么意思呢?意思就是将一个 向量 计算以后得到一个 实数,至于你怎么计算,你想怎么算都行。我们来例子。令向量 \pmb{x} = (x_1, x_2, \cdots, x_n),对于这个向量,你可以这么计算:

    || \pmb{x} || = x_1^2 + x_2^2 + \cdots + x_n^2

    也可以这么算(|x| 绝对值符号,x 的绝对值):

    || \pmb{x} || = | x_1 | + | x_2 | + \cdots + | x_n |

    总之你开心就好。但是为了是范数使用起来有意义,范数规定

    • || \pmb{x} || \geq 0 (非负性)
    • || \pmb{x} || = 0 ,当且仅当 \pmb{x} = 0 (正性)
    • || c \pmb{x} || = | c | || \pmb{x} ||, 对所有复常数 c 成立。 (齐次性)
    • || \pmb{x} + \pmb{y} || = || \pmb{x} || + || \pmb{y} || (三角不等式)

    满足上面条件的函数,称为 范数 。如果不满足第二条:正性,则称为 向量 \pmb{x} 的半范数 。我们可能会用到下面范数,L_1 范数 (也叫做 和范数 或者 1范数):

    ||\pmb{x}||_1 \overset{def}{=} |\sum_{i=1}^m {x_i} | = |x_1| + |x_2| + \cdots + |x_m|

    上面等号的 defdefine 的缩写,意思是 定义 。而下面的 L_2范数 ,也叫做 欧几里德范数 ,我们勾股定理,就是当向量 x 的范数为 ||\pmb{x}|| = \sqrt{|x_1|^2 + |x_2|^2} 求得的。你会发现,L2范数可以求空间中两点之间的距离。 L_2范数 如下:

    ||\pmb{x}||_2 \overset{def}{=} \sqrt{ |x_1|^2 + |x_2| ^2+ \cdots + |x_m |^2 }

    下面是 L_p 范数(上面 L_1L_2 范数,就是 p=1p=2 的情况):

    || \pmb{x} ||_p = (\sum_{i=1}^m {|x_i|^p} )^{1/p}

    L_{\infty}范数 (无穷范数或者极大范数):

    || \pmb{x} ||_{\infty} = max\{|x_1|, |x_2|, \cdots, |x_n| \}

    上面各种范数说明了,向量 \pmb{x} 的范数,只是一个转换函数而已,由一个向量得到一个数,这种转换根据现实需求而定。比如空间中的点的坐标 \pmb{x} = (x_1, x_2, x_3) ,它到原点的距离就是:

    f(x) = || \pmb{x} ||_2 = \sqrt{ |x_1|^2 + |x_2|^2 + |x_3|^2 } = d

    上面这个,就是向量 \pmb{x}L_2 范数。我们原来是一个向量 \pmb{x} = (x_1, x_2, x_3) 的形式,经过函数 f(x) 映射关系,得到一个实数 d 。这个函数 f(x) 就可以称为 向量\pmb{x} 的范数。

    五、参考书籍

    • 《线性代数(第五版)》- 同济大学 。
    • 《矩阵分析与应用》- 张贤达 。

    相关文章

      网友评论

          本文标题:附录C:机器学习基础之线性代数

          本文链接:https://www.haomeiwen.com/subject/hiktwftx.html