本文用于复习并记录机器学习中的相关数学基础,仅供学习参考。很多总结和例子来源于mml项目(mml-book.github.io)十分感谢这本书的作者,PS:这本书目前没有中文版。
线性代数
线性代数在大学阶段都是必修科目,但是由于大学中的线性代数都是从行列式开始,尽管考试能够通过练习拿到高分,但是“线性代数到底是干啥的,很多概念为何要这么定义”这个问题使得线性代数的学习始终是雾里看花。本人也因为这个问题苦恼了很久,故有此文的出现,仅做抛砖引玉,文字加了不少自己的理解而且对于部门内容进行了精简以求快速复习,有不当之处,还请大家指正。
这一篇以基础概念为主,是后面更深层理解的基础。
线性方程组
线性方程组大家是再熟悉不过了,从中学就接触过像下面这样的式子:
x 1 + x 2 + x 3 = 3 x 1 − x 2 + 2 x 3 = 2 2 x 1 + 3 x 3 = 5 \begin{alignedat}{3} & x_1 + &x_2 + &x_3 = 3 \\ & x_1 - &x_2 + &2x_3 = 2 \\ 2& x_1 &+ &3x_3 = 5 \end{alignedat} 2x1+x1−x1x2+x2++x3=32x3=23x3=5
这个式子很简单,我们可以很快的得到解( x 1 = x 2 = x 3 = 1 x_1 = x_2 =x3 =1 x1=x2=x3=1)。
那么对于任意一个线性方程组,我们都会得到这么舒服的解吗?不,要这么舒服就没得研究了。事实上,对于线性方程组的解,我们可能会面对三种情况:
- 无解
- 唯一解
- 无数解
为了更好的理解这三种情况,我们可以从几何的角度来想象。
对于一个仅有2个变量 x 1 , x 2 x_1,x_2 x1,x2的线性方程组,每个方程代表着二维平面上的一条直线,那么满足所有方程的点自然会有三种情况:
- 所有直线平行(无解)
- 所有直线相交于一点(唯一解)
- 所有直线其实都是同一条直线(无数解)
这种几何上的直观理解也可以继续向高维度推广。
比如一个仅有3个变量 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3的线性方程组,每个方程代表着三维空间上的一个平面,那么同上我们会面对三种情况:
- 所有的平面都是平行的(无解)
- 所有的平面相交于一条线(唯一解)
- 所有的平面其实都是一个平面(无数解)
至此,我们发现线性方程组解的情况只有三种,而其有对应的几何解释,这一些都十分顺畅,我迫不及待的要看看接下来我们还会对它做什么了,但是有一件事很让人糟心,那就是------线性方程组写起来好麻烦。。。写那么长的式子分析来分析去不会糊涂吗???
但是不慌,我们换种写法就OK,于是就有了下面这样的式子:
x 1 [ a 11 . . a m 1 ] + x 1 [ a 12 . . a m 2 ] + . . . + x 1 [ a 1 n . . a m n ] = [ b 1 . . b m ]    ⟹    [ a 11 . . . a 1 n . . . . . . a m 1 . . . a m n ] [ x 1 . . . x n ] = [ b 1 . . b m ] x_1\begin{bmatrix} a_{11} \\ ..\\ a_{m1} \end{bmatrix} +x_1\begin{bmatrix} a_{12} \\ ..\\ a_{m2} \end{bmatrix} + ... + x_1\begin{bmatrix} a_{1n} \\ ..\\ a_{mn} \end{bmatrix} = \begin{bmatrix} b_{1} \\ ..\\ b_{m} \end{bmatrix}\implies \begin{bmatrix} a_{11}&... & a_{1n} \\ ...&&...\\ a_{m1} &...& a_{mn} \end{bmatrix}\begin{bmatrix} x_1 \\ ...\\ x_n \end{bmatrix}= \begin{bmatrix} b_{1} \\ ..\\ b_{m} \end{bmatrix} x1⎣⎡a11..am1⎦⎤+x1⎣⎡a12..am2⎦⎤+...+x1⎣⎡a1n..amn⎦⎤=⎣⎡b1..bm⎦⎤⟹⎣⎡a11...am1......a1n...amn⎦⎤⎣⎡x1...xn⎦⎤=⎣⎡b1..bm⎦⎤
这么一看,清爽多了,这玩意好啊,我们得给最左边这块个名字-----矩阵。
矩阵
矩阵是线性代数里的核心概念。我们可以用它来表达两种对象:
- 线性方程组
- 线性映射
前者的来历我们已经说明,后者等到我们介绍完向量空间以后再进行讨论。
矩阵的定义本身就不再赘述,对行向量/列向量的定义熟悉即可,不加声明的情况下,向量默认为列向量。
矩阵的加法与乘法
矩阵加法
对于两个矩阵( A ∈ R m × n , B ∈ R m × n A \in R^{m \times n}, B \in R^{m \times n} A∈Rm×n,B∈Rm×n)的和,定义如下:
A + B = [ a 1 1 + b 1 1 . . a 1 n + b 1 n . . . . . . a m 1 + b m 1 . . . a m n + b m n ] A + B = \begin{bmatrix} a_11 + b_11 &..& a_{1n}+b_{1n} \\ ...&&...\\ a_{m1} + b_{m1} &... & a_{mn} + b_{mn} \end{bmatrix} A+B=⎣⎡a11+b11...am1+bm1.....a1n+b1n...amn+bmn⎦⎤
矩阵乘法
对于两个矩阵( A ∈ R m × n , B ∈ R n × k A \in R^{m \times n}, B \in R^{n \times k} A∈Rm×n,B∈Rn×k)的点乘(dot product),定义如下:
C = A B ∈ R m × k c i j = ∑ l = 1 n a i l b l j , i = 1 , . . . , m , j = 1 , . . . , n C = AB \in R^{m \times k} \\ c_{ij} = \sum_{l=1}^{n}a_{il}b_{lj}, \quad i=1,...,m, \quad j=1,...,n C=AB∈Rm×kcij=∑l=1nailblj,i=1,...,m,j=1,...,n。
一定要注意矩阵的维度要符合乘法的定义。
矩阵乘法的定义看起来比较突兀,但目前,我们先记住这个概念,然后到用矩阵表示线性映射的章节再来看这个定义,就是十分流畅的了。
单位矩阵
简单来说,单位矩阵就是一个对角线上全是1,其余部分全是0的方阵。
我们把 n n n阶的单位矩阵一般写为 I n I_n In。
与标量相乘
前面说了矩阵之间的乘法,那么如果我们给一个矩阵乘上一个标量呢?
结果是:对矩阵的每个元素乘上这个标量
逆与转置
逆
对于一个方阵 A ∈ R n × n A \in R^{n \times n} A∈Rn×n,如果存在一个矩阵 B ∈ R n × n B \in R^{n \times n} B∈Rn×n,使得:
A B = I n = B A AB = I_n=BA AB=In=BA
那么我们就称矩阵 B B B为逆,并记为 A − 1 A^{-1} A