1. 对矩阵基本的理解
一个m行n列的矩阵,符号标记为M,其可以被视为线性变换的便利表达法
比如,有一个n维向量x,则通过矩阵乘法便可以得到一个m维向量y
矩阵M记录了一个从n维空间到m维空间的一个线性变换
为了方便,以下考虑的均是理想情况
2. 特征值与特征向量
M是一个n行n列的方阵
若有满足,其中,为数值,为n维向量
则称为矩阵M的特征向量,且对应一个特征值
特征向量经过线性变换后不改变方向,可以将特征向量视为这个线性变换的基
特征值可视为这个线性变换在这个基上的权重
令矩阵M有n个线性无关的特征向量,对应的特征值为
且满足 \begin{align} \lambda_1 \geq \lambda_2 \geq … \geq \lambda_n \end{align}
则有
\begin{align} M * \begin{bmatrix} v_1 & v_2 & … & v_n \end{bmatrix} = \begin{bmatrix}\lambda_1 v_1 & \lambda_2 v_2 & … & \lambda_n v_n \end{bmatrix}= \begin{bmatrix} v_1 & v_2 & … & v_n \end{bmatrix} \begin{bmatrix} \lambda_1 & 0 & … & 0 \\ 0 & \lambda_2 & … & 0 \\ … & … & … & … \\ 0 & 0 & 0 & \lambda_n \end{bmatrix} \end{align}
令 \begin{align} V &= \begin{bmatrix} v_1 & v_2 & … & v_n \end{bmatrix} \\ \Lambda &= \begin{bmatrix} \lambda_1 & 0 & … & 0 \\ 0 & \lambda_2 & … & 0 \\ … & … & … & … \\ 0 & 0 & 0 & \lambda_n \end{bmatrix} \end{align}
则有
\begin{align} M = V \Lambda V^{-1} \end{align}
上式称为特征值分解
3. 奇异值分解
特征值分解只适用于方阵,对于普通的m行n列矩阵,则使用奇异值分解
令为矩阵的特征向量, 称为左奇异向量
令为矩阵的特征向量,称为右奇异向量
令 \begin{align} U &= \begin{bmatrix} u_1 & u_2 & … & u_m \end{bmatrix} \\ V &= \begin{bmatrix} v_1 & v_2 & … & v_n \end{bmatrix} \end{align}
直接上定义 \begin{align} M = \begin{bmatrix} u_1 & u_2 & … & u_m \end{bmatrix} \begin{bmatrix} \sigma_1 & 0 & … \\ 0 & \sigma_2 & … \\ … & … & … \end{bmatrix} \begin{bmatrix} v_1^T \\ v_2^T \\ … \\ v_n^T \end{bmatrix} \end{align} 其中 \begin{align} \Sigma= \begin{bmatrix} \sigma_1 & 0 & … \\ 0 & \sigma_2 & … \\ … & … & … \end{bmatrix} \end{align}
为m行n列的对角矩阵,对角线上的值称为奇异值
设有n维向量,则其可表示为 \begin{align} x = a_1 v_1 + a_2 v_2 + … + a_n v_n \end{align}
接下来一步步模拟线性变换的过程,首先左乘
\begin{align} \begin{bmatrix} v_1^T \\ v_2^T \\ … \\ v_n^T \end{bmatrix}x = \begin{bmatrix} a_1v_1^Tv_1 \\ a_2v_2^Tv_2 \\ … \\ a_nv_n^Tv_n \\ \end{bmatrix} \end{align}
接着左乘
如果 \begin{align} \begin{bmatrix} \sigma_1 & 0 & … \\ 0 & \sigma_2 & … \\ … & … & … \end{bmatrix} \begin{bmatrix} a_1v_1^Tv_1 \\ a_2v_2^Tv_2 \\ … \\ a_nv_n^Tv_n \\ \end{bmatrix} = \begin{bmatrix} a_1 \sigma_1 v_1^Tv_1 \\ a_2 \sigma_2 v_2^Tv_2 \\ … \\ a_n \sigma_n v_n^Tv_n \\ … \\ 0 \\ 0 \end{bmatrix} \end{align}
则\begin{align}x = a_1\sigma_1v_1^Tv_1u_1 + a_2\sigma_2v_2^Tv_2u_2 + … + a_n\sigma_nv_n^Tv_nu_n\end{align}
如果 \begin{align} \begin{bmatrix} \sigma_1 & 0 & … \\ 0 & \sigma_2 & … \\ … & … & … \end{bmatrix} \begin{bmatrix} a_1v_1^Tv_1 \\ a_2v_2^Tv_2 \\ … \\ a_nv_n^Tv_n \\ \end{bmatrix} = \begin{bmatrix} a_1 \sigma_1 v_1^Tv_1 \\ a_2 \sigma_2 v_2^Tv_2 \\ … \\ a_m \sigma_m v_m^Tv_m \\ \end{bmatrix} \end{align} 则\begin{align}x = a_1\sigma_1v_1^Tv_1u_1 + a_2\sigma_2v_2^Tv_2u_2 + … + a_m\sigma_mv_m^Tv_mu_m\end{align}
由上式,可以这么理解线性变换
首先将n维向量使用矩阵的右奇异向量作为基表示,再将每个维度映射到一个左奇异向量基
奇异值则可以认为是输入与输出间进行的标量的膨胀控制。