深度学习系列笔记(二)
目录 - 深度学习系列笔记(二)
- 线性代数复习
- 向量索引
- 向量补集中的索引
- 张量(tensor)
- 广播(broadcasting)
- 矩阵元素对应乘积(element-wise product)
- 范数(norm)
- 对角矩阵(diagonal matrix)
- 特征分解(eigendecomposition)
- 奇异值分解(singular value decomposition, SVD)
- Moore-Penrose 伪逆(Moore-Penrose pseudoinverse)
- 迹运算
- 行列式
- 线性代数复习
- 向量索引
- 向量补集中的索引
- 张量(tensor)
- 广播(broadcasting)
- 矩阵元素对应乘积(element-wise product)
- 范数(norm)
- 对角矩阵(diagonal matrix)
- 特征分解(eigendecomposition)
- 奇异值分解(singular value decomposition, SVD)
- Moore-Penrose 伪逆(Moore-Penrose pseudoinverse)
- 迹运算
- 行列式
线性代数复习
向量索引
我们定义一个包含向量中元素索引的集合,然后将集合写在脚标处,表示索引向量中的元素。比如,指定 x_1、x_3、x_6 ,我们定义集合S={1,3,6} ,然后写作 x_S 。
向量补集中的索引
我们用符号 - 表示集合的补集中的索引。比如,x_{-1}表示 x 中除 x_1 外的所有元素,x_{-S} 表示 x 中除 x_1、x_3、x_6 外的所有元素构成的向量。
张量(tensor)
一个数组中的元素分布在若干维坐标的规则网格中。
广播(broadcasting)
在深度学习中,我们允许矩阵和向量相加,产生另一个矩阵:C=A+b ,其中 C_{i,j}=A_{i,j}+b_j 。也就是说,向量 b 和矩阵 A 的每一行相加。这种简写方法使我们无需在加法操作前定义一个将向量 b 复制到每一行而生成的矩阵,这种隐式地复制向量 b 到很多位置的方式成为广播。
矩阵元素对应乘积(element-wise product)
两个矩阵中对应元素的乘积,也叫 Hadamard乘积(Hadamard product),记为 A ⊙B 。 保持 n 维向量不变的单位矩阵记作 I_n 。
范数(norm)
范数形式上的定义如下:
\begin{Vmatrix} x \end{Vmatrix}_p = ( \sum\limits_i \begin{vmatrix} x_i \end{vmatrix}_p)^\tfrac{1}{p}
其中 p ∈ R,p≥1 。范数(包括 L^p 范数)是将向量映射到非负值的函数。直观上来说,向量 x的范数衡量从原点到点 x的距离。更严格地说,范数是满足下列性质的任意函数:
- f(x)=0 ⇒ x=0
- f(x+y)\leq;f(x) + f(y) (三角不等式(triangle inequality))
- ∀ \alpha ∈ R ,f(\alpha x)=|\alpha|f(x)
当 p=2 时, L^2 范数称为欧几里得范数(Euclidean norm)。它表示从原点出发到向量 x 确定点的欧几里得距离。可简化表示为 \begin{Vmatrix} x \end{Vmatrix} ,平方 L^2 范数可简单地通过点积 x^Tx 计算。
平方 L^2 范数对 x 中每个元素的导数只取决于对应的元素, 而 L^2 范数对每个元素的导数和整个向量相关。
平方 L^2 范数在原点附近增长得十分缓慢。
在某些机器学习的应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数:L^1 范数。 L^1 范数可简化如下:
\begin{Vmatrix} x \end{Vmatrix} _1 = \sum\limits_i |x_i|
当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L^1 范数。每当 x 中某个元素从 0 增加 \epsilon ,对应的 L^1 范数也会增加 \epsilon 。
最大范数(max norm):表示向量中具有最大幅值的元素的绝对值:
\begin{Vmatrix} x \end{Vmatrix}_\infty = \max_i\limits |x|_i
使用Frobenius范数衡量矩阵的大小
\begin{Vmatrix} A \end{Vmatrix}F = \sqrt{\sum\limits{i,j}A_{i,j}^2}
其类似于向量的L^2范数。
两个向量的点积可以用范数来表示: x^Ty=\begin{Vmatrix} x\end{Vmatrix}_2\begin{Vmatrix} y\end{Vmatrix}_2cos\theta ,其中 \theta 表示 x 和 y 之间的夹角。
对角矩阵(diagonal matrix)
我们用 diag(v) 表示对角元素由向量 v 中元素给定的一个对角方阵。
diag(v)x=v\odot x
假设对角方阵的逆矩阵存在,当且仅当对角元素都是非零值,在这种情况下,diag(v)^{-1}= ([1/v_1,...,...,1/v_n]^T))。
并非所有的对角矩阵都是方阵,长方形的矩阵也有可能是对角矩阵。
对于一个长方形对角矩阵 D 而言,乘法 Dx 会涉及 x 中每个元素的缩放,如果 D 是瘦长型矩阵,那么在缩放后的末尾添加一些零;如果 D 是胖宽型矩阵,那么在缩放后去掉最后一些元素。
单位向量是具有单位范数的向量,即 \begin{Vmatrix} x \end{Vmatrix}_2 = 1 。
如果两个向量都有非零范数,那么这两个向量之间的夹角是90°。
标准正交:R^n 中,至多有 n 个范数非零向量相互正交,且范数都是 1 。
正交矩阵指行向量和列向量是分别标准正交的方阵。 A^TA=AA^T=I ,这意味着 A^{-1}=A^T
特征分解(eigendecomposition)
A 的特征分解可以记为: A=Vdiag(\lambda)V^{-1} 。
每个实对称矩阵都可以分解成特征向量和特征值: A=Q\Lambda Q^T 。其中 Q 是 A 的特征向量组成的正交矩阵,\Lambda 是对角矩阵。
虽然任意一个实对称矩阵A都有特征分解,但是特征分解可能并不唯一。主要是因为可能存在相同的特征值,但是如果规定\Lambda的元素按照降序排列,那么在该约定下特征分解唯一。
矩阵是奇异的,当且仅当含有零特征值。
奇异值分解(singular value decomposition, SVD)
每个实数矩阵都有一个奇异值分解,但不一定有特征分解。
奇异值分解将矩阵分解成三个矩阵的乘积:A=UDV^T ,假设A是一个m \times n的矩阵, 那么U是一个m\times m的矩阵,D是一个m\times n的矩阵,V是一个n\times n的矩阵。U和V都定义为正交矩阵,D为对角矩阵,注意D不一定是方阵。
对角矩阵D对角线上的元素称为矩阵A的奇异值。
A的非零奇异值是A^TA特征值的平方根,同时也是AA^T特征值的平方根。
SVD最有用的性质可能是拓展矩阵求逆到非方矩阵上。
Moore-Penrose 伪逆(Moore-Penrose pseudoinverse)
矩阵A的伪逆定义为:A^+= \lim\limits_{a\searrow0} (A^TA +\alpha I)^{-1}A^T
伪逆的计算公式: A^+=VD^+U^T ,对角矩阵D的伪逆D^+是其非零元素取到数之后再转置得到的。
当矩阵A的列数多于行数时,使用伪逆求解线性方程是众多可能解法中的一种。特别地,x=A^+y是方程所有可行解中欧几里得范数\begin{Vmatrix} x \end{Vmatrix}_2最小的一个。当行数多于列数时,可能没有解,此时通过求伪逆得到的x使得Ax和y的欧几里得距离\begin{Vmatrix} Ax-y\end{Vmatrix}_2最小.
迹运算
迹运算返回的是矩阵对角元素的和: Tr(A)=\sum\limits_{i} A_{i,i}。
迹运算提供了另一种描述矩阵Frobenius范数的方式: \begin{Vmatrix} A \end{Vmatrix}_F = \sqrt{Tr(AA^T)} 。
Tr(A)=Tr(A^T)
当矩阵相乘可以更换矩阵位置时(可以相乘时),Tr(ABC)=Tr(CAB)=Tr(BCA) 或者更一般地: Tr(\prod\limits_{i=1}^n F^{(i)})=Tr(F^{(n)}\prod\limits_{n=1}^{n-1}F^{(i)}).即使循环置换后矩阵乘积得到的矩阵形状变了,迹运算的结果依然不变。
标量在迹运算之后依然是它自己:a=Tr(a) 。
行列式
det(A)=\prod\limits_{i=1}^n \lambda_i
行列式的绝对值可以用来衡量矩阵参与矩阵乘法后空间扩大或者缩小了多少。如果行列式是0,那么空间至少沿着某一维完全收缩了,使其失去了所有的体积。如果行列式是1,那么这个转换保持空间体积不变。
参考文献: 《深度学习》