3. 向量与矩阵
3.1 向量
- 一个 m m m 维向量是 m m m 维空间的一个点.
- 向量与集合的记法相同, 都可以用 \mathbf, \bm, 或 \boldsymbol.
- x ∈ R m \mathbf{x} \in \mathbb{R}^m x∈Rm.
- 向量可记为 x = ( x 1 , x 2 , … , x m ) \mathbf{x} = (x_1, x_2, \dots, x_m) x=(x1,x2,…,xm) 或 x = [ x 1 , x 2 , … , x m ] \mathbf{x} = [x_1, x_2, \dots, x_m] x=[x1,x2,…,xm], 但绝不可以使用花括号, 因为它表示无序的集合.
- 列向量 x T = ( x 1 , x 2 , … , x m ) T = [ x 1 ; x 2 ; … ; x m ] \mathbf{x}^{\mathrm{T}} = (x_1, x_2, \dots, x_m)^{\mathrm{T}} = [x_1; x_2; \dots; x_m] xT=(x1,x2,…,xm)T=[x1;x2;…;xm]. 这里使用了分号. 源码: \mathbf{x}^{\mathrm{T}} = (x_1, x_2, \dots, x_m)^{\mathrm{T} = [x_1; x_2; \dots; x_m]. 常有人把 \mathbf{x}^{\mathrm{T}} 中的 \mathrm{T} 写成 \top, 即 x ⊤ \mathbf{x}^{\top} x⊤, 我认为这是错误的.
- 向量的内积 a ⋅ b = a b T = ∑ i = 1 n a i b i \mathbf{a} \cdot \mathbf{b} = \mathbf{a} \mathbf{b}^\mathrm{T} = \sum_{i=1}^n a_i b_i a⋅b=abT=∑i=1naibi. 源码: \mathbf{a} \cdot \mathbf{b} = \mathbf{a} \mathbf{b}^\mathrm{T} = \sum_{i=1}^n a_i b_i.
- 加权和 x w T = ∑ i = 1 n x i w i \mathbf{x} \mathbf{w}^\mathrm{T} = \sum_{i=1}^n x_i w_i xwT=∑i=1nxiwi 在机器学习中广泛使用. 其中 x i x_i xi 为对象的属性值 (如体温), w i w_i wi 则为该属性的权重.
3.2 矩阵
- 一个 n n n 行 m m m 列的矩阵可表示为 X ∈ R n × m \mathbf{X} \in \mathbb{R}^{n \times m} X∈Rn×m. 也就是说, 它是 n × m n \times m n×m 空间的一个点.
- 纯矩阵的方式应表示为 X = [ x i j ] n × m \mathbf{X} = [x_{ij}]_{n \times m} X=[xij]n×m. 以后可以看到, 表达为矩阵有些优势.
- 但机器学习通常希望 X \mathbf{X} X 表示包括 n n n 个实例, 每个实例使用 m m m 个属性描述的数据集, 即 X = { x i } i = 1 n = { x 1 , x 2 , … , x n } \mathbf{X} = \{\mathbf{x}_i\}_{i = 1}^n = \{\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_n\} X={xi}i=1n={x1,x2,…,xn}, 其中 x i = [ x i 1 , x i 2 , … , x i m ] \mathbf{x}_i = [x_{i1}, x_{i2}, \dots, x_{im}] xi=[xi1,xi2,…,xim].
- 两种表示方式的优点都想要, 有点尴尬.
- 更多讨论见机器学习的数学基础 5: 数据集的混合表示法.
- 矩阵乘法
给定 m × k m \times k m×k 的矩阵 A \mathbf{A} A 和 k × n k \times n k×n 的矩阵 B \mathbf{B} B, 则 C = A B \mathbf{C} = \mathbf{A} \mathbf{B} C=AB 是一个 m × n m \times n m×n 的矩阵.
矩阵乘法也是我们第一次用到三重循环的地方. 代码参见
日撸代码300行(01-10天,基本语法) 第 8 天内容.
3.3 作业
自己出数据, 做一个 3 × 2 3 \times 2 3×2 与 2 × 4 2 \times 4 2×4 的矩阵乘法.