A ∗ ( B + C ) = A ∗ B + A ∗ C A*(B+C)=A*B+A*C A∗(B+C)=A∗B+A∗C(分配率) A ∗ ( B ∗ C ) = ( A ∗ B ) ∗ C A*(B*C)=(A*B)*C A∗(B∗C)=(A∗B)∗C(结合律) A ∗ B ≠ B ∗ A A*B \neq B*A A∗B=B∗A(一般不满足交换律) ( A ∗ B ) T = B T ∗ A T (A*B)^T=B^T*A^T (A∗B)T=BT∗AT(转置) X T ∗ Y = ( X T ∗ Y ) T = Y T ∗ X X^T*Y=(X^T*Y)^T=Y^T*X XT∗Y=(XT∗Y)T=YT∗X(转置) 附注: X X X, Y Y Y都是列向量, X T X^T XT是行向量, X T ∗ Y X^T*Y XT∗Y的结果是一个标量
单位矩阵
任意向量或矩阵和单位矩阵相乘,都不会改变,记为 I I I。所有沿主对角线的元素都为1,而所有其他位置的元素都是0。逆矩阵:狭义上的逆矩阵是方阵才有逆矩阵,但是广义逆矩阵就不单单指的是方阵的逆矩阵了。
逆矩阵的定义是对于一个矩阵 A A A,能够找到一个矩阵 B B B,使得 A ∗ B = B ∗ A = I A*B=B*A=I A∗B=B∗A=I, I I I是一个单位矩阵。满足上面条件的 B B B就被称为 A A A的逆矩阵。
矩阵(方阵)的逆满足如下条件: A − 1 ∗ A = A ∗ A − 1 = I n A^{-1}*A=A*A^{-1}=I_n A−1∗A=A∗A−1=In
矩阵 B B B(一般指的都是方阵,只有方阵才能有对角化)的对角化 P − 1 ∗ A ∗ P = B P^{-1}*A*P=B P−1∗A∗P=B,其中 A A A为对角矩阵, P P P为单位正交矩阵。
对角矩阵:只有对角线上的数不为零,其余位置的数值都为零,具体形式如下所示。
[ λ 1 0 0 0 0 λ 2 0 0 0 0 . . . 0 0 0 0 λ n ] \begin {bmatrix} \lambda _{1}&0 &0 &0 \\ 0 & \lambda _{2}& 0 &0 \\ 0& 0 &... & 0 \\ 0 & 0 &0 & \lambda _{n} \end {bmatrix} ⎣⎢⎢⎡λ10000λ20000...0000λn⎦⎥⎥⎤
单位正交矩阵:满足以下条件: P T ∗ P = P ∗ P T = I P^T*P=P*P^T=I PT∗P=P∗PT=I 单位矩阵满足的条件是: A − 1 ∗ A = A ∗ A − 1 = I n A^{-1}*A=A*A^{-1}=I_n A−1∗A=A∗A−1=In 因此可以看做: P T = P − 1 P^T=P^{-1} PT=P−1
一般的矩阵不一定能对角化,如果不是方阵,更加不能。但是对称矩阵一定可以对角化(特别是对称正定矩阵,得到的 λ i \lambda_{i} λi都是正数, λ i \lambda_{i} λi是上面说的对角矩阵中对角线上的非零值)。
对称矩阵:关于对角线对称,方阵,满足以下条件: A T = A A^T=A AT=A
对称正定矩阵:对于任意一个列向量 X n ∗ 1 X_{n*1} Xn∗1,方阵 A n ∗ n A_{n*n} An∗n满足以下条件,则说明矩阵 A A A是对称正定矩阵。 X T ∗ A ∗ X > 0 X^T*A*X > 0 XT∗A∗X>0
对称半正定矩阵:对于任意一个列向量 X n ∗ 1 X_{n*1} Xn∗1,方阵 A n ∗ n A_{n*n} An∗n满足以下条件,则说明矩阵 A A A是对称正定矩阵。 X T ∗ A ∗ X ≥ 0 X^T*A*X \geq 0 XT∗A∗X≥0
因为 P P P是一个单位正交矩阵,根据上面单位正交矩阵和单位矩阵的相关性质,可以得到: P − 1 ∗ A ∗ P = B P^{-1}*A*P=B P−1∗A∗P=B上面这个公式可以转化为下面的公式: P T ∗ A ∗ P = B P^{T}*A*P=B PT∗A∗P=B P T P^T PT是一个方阵,假设 P T P^T PT是一个 N ∗ N N*N N∗N维的方阵。设 P T = ( u 1 , u 2 , . . . , u n ) , u i ∈ R n P^T=(u_1,u_2,...,u_n),u_i\in R^n PT=(u1,u2,...,un),ui∈Rn, u i u_i ui是一个包含 n n n个值的一维向量。 A A A是一个对角矩阵,根据对角矩阵的定义,可以假设对角矩阵 A A A的形式为: A = [ λ 1 0 0 0 0 λ 2 0 0 0 0 . . . 0 0 0 0 λ n ] A=\begin {bmatrix} \lambda _{1}&0 &0 &0 \\ 0 & \lambda _{2}& 0 &0 \\ 0& 0 &... & 0 \\ 0 & 0 &0 & \lambda _{n} \end {bmatrix} A=⎣⎢⎢⎡λ10000λ20000...0000λn⎦⎥⎥⎤那么矩阵B可以表示为: B = [ u 1 , u 2 , . . . , u n ] ∗ [ λ 1 0 0 0 0 λ 2 0 0 0 0 . . . 0 0 0 0 λ n ] ∗ [ u 1 T u 2 T ⋮ u n T ] B=[u_1,u_2,...,u_n]*\begin {bmatrix} \lambda _{1}&0 &0 &0 \\ 0 & \lambda _{2}& 0 &0 \\ 0& 0 &... & 0 \\ 0 & 0 &0 & \lambda _{n} \end {bmatrix} * \begin{bmatrix} u_1^{T}\\ u_2^{T}\\ \vdots \\ u_n^{T} \end{bmatrix} B=[u1,u2,...,un]∗⎣⎢⎢⎡λ10000λ20000...0000λn⎦⎥⎥⎤∗⎣⎢⎢⎢⎡u1Tu2T⋮unT⎦⎥⎥⎥⎤ B = λ 1 u 1 u 1 T + λ 2 u 2 u 2 T + . . . + λ n u n u n T B=\lambda _1u_1u_1^T+\lambda _2u_2u_2^T+...+\lambda _nu_nu_n^T B=λ1u1u1T+λ2u2u2T+...+λnununT在上面公式中 u 1 u 1 T u_1u_1^T u1u1T是一个 N N N维矩阵,则B可以表示为由多个 N N N维矩阵组成的一个矩阵。 B = λ 1 W N ∗ N 1 + λ 2 W N ∗ N 2 + . . . + λ n W N ∗ N n B=\lambda _1W_{N*N}^1+\lambda _2W_{N*N}^2+...+\lambda _nW_{N*N}^n B=λ1WN∗N1+λ2WN∗N2+...+λnWN∗Nn上面公式中的 λ 1 \lambda _1 λ1, λ 2 \lambda _2 λ2, λ n \lambda _n λn都是一个实数。矩阵对角化最本质的一个意义是做矩阵分解,这个矩阵分解有几个好处。
原来的矩阵 B B B是 N ∗ N N*N N∗N维的方阵,需要保存的参数为 N ∗ N N*N N∗N个,通过矩阵分解写成多个矩阵相加后,表面上每个矩阵的参数都是 N ∗ N N*N N∗N个,感觉上参数变多了。其实不然,在上面的公式中, λ 1 W N ∗ N 1 \lambda _1W_{N*N}^1 λ1WN∗N1其实是由 u 1 ∗ u 1 T u_1*u_1^T u1∗u1T得到的,这样一个 N ∗ N N*N N∗N维的矩阵只需要保存 N N N个参数就可以了。也就是说矩阵 B B B可以分解为很多简单的矩阵,矩阵 B B B可以看成这种简单矩阵的线性之和。
因为在机器学系中用到的一般都是对称正定矩阵或者是对称半正定矩阵,因为对称正定矩阵的 λ i \lambda_i λi的值都大于0,对称半正定矩阵的 λ i \lambda_i λi的值都大于等于0。那么可以对对称正定矩阵或者对称半正定矩阵中的 λ \lambda λ做一个大小排序。假设 λ 1 = 1000 \lambda_1=1000 λ1=1000, λ 2 = 100 \lambda_2=100 λ2=100, λ 3 = 10 \lambda_3=10 λ3=10,这样第一块矩阵就占了很大的一部分,这种情况就为矩阵的压缩提供了一种方法。
曾经有一道面试题,给一个 N ∗ N N*N N∗N方阵,怎样用 N + ! N+! N+!个参数压缩方阵。答案就是对方阵做对角化,写成多个简单矩阵线性相加的形式。当只能用 N + ! N+! N+!个参数表示时,那就用第一项简单矩阵去表示方阵,因为第一个简单矩阵需要 N N N个参数, λ 1 \lambda_1 λ1也是一个参数,这样就需要 N + 1 N+1 N+1个参数,这就是矩阵的压缩表示。
在矩阵的对角化 P − 1 A P = B P^{-1}AP=B P−1AP=B中, A A A是一个对角矩阵,在对角矩阵 A A A中的 λ \lambda λ值叫做矩阵 B B B的特征值。
可以得到一个结论:如果矩阵 B B B是一个对称半正定矩阵,那么矩阵 B B B的特征值是大于等于0的;如果矩阵 B B B是一个对称正定矩阵,那么矩阵 B B B的特征值是大于0的。
一个矩阵的行列式等于矩阵的所有特征值的相乘。一个矩阵的所有特征值都大于0,那么矩阵对应的行列四肯定是不等于零的。一个矩阵的行列式不为零可以推出矩阵是可逆的。
矩阵可逆的条件是矩阵的行列式不等于0,同时矩阵的行列式是所有特征值相乘得到的,那就意味着矩阵只要有一个特征值为零,矩阵的行列式就为零,矩阵就是不可逆的。如果矩阵是一个对称正定矩阵,那么特征值都是大于零的,那么该矩阵必然是可逆的。如果一个矩阵是半正定的,那么对应的特征值是大于等于零的,矩阵的行列式仍然有可能为零,所以矩阵不一定是可逆的。
矩阵能够对角化的限制条件比较多,需要矩阵是一个方阵,同时矩阵是一个对角化矩阵,这样的矩阵是能够进行对角化操作的。如果不符合这两个条件,矩阵不一定能够对角化,所以不具有一般的通用性。
对于任意一个矩阵,不一定是方阵,那么怎么进行对角化操作呢?这时候需要更一般的方法——SVD分解,也就是奇异值分解。
给定一个矩阵 A A A,矩阵的维度为 m ∗ n m*n m∗n,那么有: ( A T A ) n ∗ n = U T D 1 U (A^TA)_{n*n}=U^TD_1U (ATA)n∗n=UTD1U ( A A T ) m ∗ m = V T D V (AA^T)_{m*m}=V^TDV (AAT)m∗m=VTDV 证明 A T A A^TA ATA的对称性: ( A T A ) T = A T ( A T ) T = A T A ⇒ 对 称 性 (A^TA)^T=A^T(A^T)^T=A^TA\Rightarrow 对称性 (ATA)T=AT(AT)T=ATA⇒对称性 证明 A T A A^TA ATA的正定性: X T ( A T A ) X = ( X T A T ) ( A X ) = ( A X ) T ( A X ) ≥ 0 ⇒ 半 正 定 性 X^T(A^TA)X=(X^TA^T)(AX)=(AX)^T(AX)\geq0\Rightarrow半正定性 XT(ATA)X=(XTAT)(AX)=(AX)T(AX)≥0⇒半正定性 通过这两个证明可以知道 A T A A^TA ATA是一个对称半正定矩阵。
在公式 ( A T A ) n ∗ n = U T D 1 U (A^TA)_{n*n}=U^TD_1U (ATA)n∗n=UTD1U ( A A T ) m ∗ m = V T D V (AA^T)_{m*m}=V^TDV (AAT)m∗m=VTDV 中, D ! D_! D!和 D 2 D_2 D2是不一样的,一个是 m ∗ m m*m m∗m维,一个是 n ∗ n n*n n∗n维。
这里有一个结论,给定一个矩阵 A A A,一个矩阵 B B B, A ∗ B A*B A∗B和 B ∗ A B*A B∗A这两个矩阵是不相等的,矩阵一般不满足交换律,假设 A ∗ B A*B A∗B的特征值为 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn, B ∗ A B*A B∗A的特征值为 u 1 , u 2 , . . . , u m u_1,u_2,...,u_m u1,u2,...,um,这两组特征值中不为零的值是一样的。假设 A ∗ B A*B A∗B的特征值为 ( 1 , 2 , 3 , 0 , 0 ) (1,2,3,0,0) (1,2,3,0,0), B ∗ A B*A B∗A的特征值为 ( 1 , 2 , 3 , 0 , 0 , 0 ) (1,2,3,0,0,0) (1,2,3,0,0,0),也就是两个矩阵交换相乘,两者之间的特征值不为零的部分是相等的。
现在证明一下上面这个结论:设矩阵 A A A和矩阵 B B B是都是 n ∗ n n*n n∗n维的方阵,那么 A B AB AB和 B A BA BA都是 n ∗ n n*n n∗n维的方阵。假设 A B AB AB的特征值为 ( λ 1 , λ 2 , . . . , λ n ) (\lambda_1,\lambda_2,...,\lambda_n) (λ1,λ2,...,λn),假设 B A BA BA的特征值为 ( u 1 , u 2 , . . . , u n ) (u_1,u_2,...,u_n) (u1,u2,...,un)。这里用到一个结论,一个矩阵的特征值之和等于矩阵的迹,也就是 t r ( A B ) = λ 1 + λ 2 + . . . + λ n tr(AB)=\lambda_1+\lambda_2+...+\lambda_n tr(AB)=λ1+λ2+...+λn,也就是矩阵的对角线之和。同理, t r ( B A ) = u 1 + u 2 + . . . + u n tr(BA)=u_1+u_2+...+u_n tr(BA)=u1+u2+...+un。再用到另外一个结论,对矩阵 A B AB AB平方,得到的矩阵的特征值为 ( λ 1 2 , λ 2 2 , . . . , λ n 2 ) (\lambda_1^2,\lambda_2^2,...,\lambda_n^2) (λ12,λ22,...,λn2),同理,矩阵 B A BA BA的平方之后的矩阵的特征值为 ( u 1 2 , u 2 2 , . . . , u n 2 ) (u_1^2,u_2^2,...,u_n^2) (u12,u22,...,un2)。如果矩阵 ( A B ) 2 (AB)^2 (AB)2和矩阵 ( B A ) 2 (BA)^2 (BA)2的迹是一样的,那么同样有 λ 1 2 + λ 2 2 + . . . + λ n 2 = u 1 2 + u 2 2 + . . . + u n 2 \lambda_1^2+\lambda_2^2+...+\lambda_n^2=u_1^2+u_2^2+...+u_n^2 λ12+λ22+...+λn2=u12+u22+...+un2;矩阵 ( A B ) 2 (AB)^2 (AB)2可以看成 A B ∗ A B AB*AB AB∗AB,把 ( A B A ) (ABA) (ABA)看做一个整体,表示为 ( A B A ) B (ABA)B (ABA)B;矩阵 ( B A ) 2 (BA)^2 (BA)2可以看成 B A ∗ B A BA*BA BA∗BA,把 ( A B A ) (ABA) (ABA)看成一个整体,表示为 A ( B A B ) A(BAB) A(BAB)。那么 ( A B A ) B (ABA)B (ABA)B和 A ( B A B ) A(BAB) A(BAB)可以看成两个矩阵交换相乘,即 C D CD CD和 D C DC DC,这样矩阵的迹就是一样的,那就说明 ( A B ) 2 (AB)^2 (AB)2和 ( B A ) 2 (BA)^2 (BA)2的迹是一样的。同理, ( A B ) 3 (AB)^3 (AB)3有同样的结论。
虽然 D ! D_! D!和 D 2 D_2 D2的形式是不一样的,但是两个矩阵中不为零的部分的值是相等的。现在只考虑不为零的部分,忽略值为零的部分。那么一般矩阵的奇异值分解公式可以表示为: A m ∗ n = V m ∗ m T ∗ [ λ 1 1 / 2 0 0 0 λ 2 1 / 2 0 0 0 λ 3 1 / 2 0 0 0 0 0 0 ] ∗ U n ∗ n A_{m*n}=V^T_{m*m}*\begin{bmatrix} \lambda_1^{1/2} &0 &0 \\ 0&\lambda_2^{1/2} &0 \\ 0& 0 &\lambda_3^{1/2} \\ 0& 0 &0 \\ 0& 0 &0 \end{bmatrix}*U_{n*n} Am∗n=Vm∗mT∗⎣⎢⎢⎢⎢⎢⎡λ11/200000λ21/200000λ31/200⎦⎥⎥⎥⎥⎥⎤∗Un∗n这里假设非零特征值只有三个,分别为 λ 1 \lambda_1 λ1, λ 2 \lambda_2 λ2, λ 3 \lambda_3 λ3。 令 V m ∗ m T = ( v 1 , v 2 , . . . , v m ) V^T_{m*m}=(v_1,v_2,...,v_m) Vm∗mT=(v1,v2,...,vm) U n ∗ n T = ( u 1 , u 2 , . . . , u n ) U^T_{n*n}=(u_1,u_2,...,u_n) Un∗nT=(u1,u2,...,un)由这三个公式可推导出: A m ∗ n = λ 1 1 / 2 v 1 u 1 T + λ 2 1 / 2 v 2 u 2 T + λ 3 1 / 2 v 3 u 3 T + . . . A_{m*n}=\lambda_1^{1/2}v_1u_1^T+\lambda_2^{1/2}v_2u_2^T+\lambda_3^{1/2}v_3u_3^T+... Am∗n=λ11/2v1u1T+λ21/2v2u2T+λ31/2v3u3T+...从上边的公式可以看出,左边的矩阵 A m ∗ n A_{m*n} Am∗n需要 m ∗ n m*n m∗n个参数,右边的每个矩阵仅需要 m + n m+n m+n,因此也可以看做矩阵压缩。
从图像压缩看这个问题,有一个 m ∗ n m*n m∗n的图像,本来需要 m ∗ n m*n m∗n个参数去存储这个图像,要用最少的参数去保存这个图像,那么只需要保存最主要的一块就可以了。最大的 λ \lambda λ值即可尽可能地保存图像原来的信息。那么图像压缩所需的最少参数个数为 m + n + 1 m+n+1 m+n+1个。如果用前k项保存图像信息,那么所需的参数个数为 ( m + n + 1 ) ∗ k (m+n+1)*k (m+n+1)∗k,得到的压缩图像的误差公式为: e r r o r = 1 − ∑ i = 1 k λ i ∑ i = 1 m i n ( m , n ) λ i error=1-\frac{\sum_{i=1}^k{\lambda_i}} {\sum_{i=1}^{min(m,n)}{\lambda_i}} error=1−∑i=1min(m,n)λi∑i=1kλi
SVD分解除了在图像压缩中的应用之外,还有在神经网络中的应用,通过SVD分解,能够有效降低神经网络的运算次数如下图所示: 神经网络中经常遇到一个矩阵乘于一个向量的情况,通过SVD分解之后,能够把需要运算的次数从20000次降低为300次,能够有效提升效率。
首先看一下多元线性回归的例子: x 1 , x 2 , . . . , . x N , x i ∈ R n x_1,x_2,...,.x_N,x_i\in R^n x1,x2,...,.xN,xi∈Rn y 1 , y 2 , . . . , y N , y i ∈ R 1 y_1,y_2,...,y_N,y_i\in R^1 y1,y2,...,yN,yi∈R1 y 1 = x 11 a 1 + x 12 a 2 + . . . + x 1 n a n y_1=x_{11}a_1+x_{12}a_2+...+x_{1n}a_n y1=x11a1+x12a2+...+x1nan y 2 = x 21 a 1 + x 22 a 2 + . . . + x 2 n a n y_2=x_{21}a_1+x_{22}a_2+...+x_{2n}a_n y2=x21a1+x22a2+...+x2nan ⋮ \vdots ⋮ y N = x N 1 a 1 + x N 2 a 2 + . . . + x N n a n y_N=x_{N1}a_1+x_{N2}a_2+...+x_{Nn}a_n yN=xN1a1+xN2a2+...+xNnan这些方程组可以用矩阵相乘来表示:
[ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x N 1 x N 2 ⋯ x N N ] ∗ [ a 1 a 2 ⋮ a n ] = [ y 1 y 2 ⋮ y n ] \begin {bmatrix} x_{11} &x_{12} &\cdots &x_{1n} \\ x_{21}&x_{22} &\cdots &x_{2n} \\ \vdots & \vdots & \ddots &\vdots \\ x_{N1} &x_{N2} &\cdots &x_{NN} \end {bmatrix} * \begin{bmatrix} a_1\\ a_2\\ \vdots \\ a_n \end{bmatrix}=\begin{bmatrix} y_1\\ y_2\\ \vdots \\ y_n \end{bmatrix} ⎣⎢⎢⎢⎡x11x21⋮xN1x12x22⋮xN2⋯⋯⋱⋯x1nx2n⋮xNN⎦⎥⎥⎥⎤∗⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤即有 X N ∗ n a n ∗ 1 = Y N ∗ 1 X_{N*n}a_{n*1}=Y_{N*1} XN∗nan∗1=YN∗1当 N = n N=n N=n且 X N ∗ n X_{N*n} XN∗n可逆时: X − 1 ∗ X ∗ a = X − 1 ∗ Y X^{-1}*X*a=X^{-1}*Y X−1∗X∗a=X−1∗Y逆矩阵乘于本身等于一个单位矩阵,可以省略,于是可以得到: a = X − 1 ∗ Y a=X^{-1}*Y a=X−1∗Y逆矩阵的条件比较严格,必须是方阵,特征值不能为零。
一般情况下,N是不等于n的,这样上面的解法就不可行了。那应该怎么解决呢?此时仍然要求解 X ∗ a = Y X*a=Y X∗a=Y,不能解出该方程,可以解出误差的最小值: m i n ∣ ∣ X ∗ a − Y ∣ ∣ 2 = J min||X*a-Y||^2=J min∣∣X∗a−Y∣∣2=J本来我们的目的是求出 X ∗ a = Y X*a=Y X∗a=Y,当没法满足条件时,就让方程组最接近于零,就等于让方程的范数最接近零。对a求偏导: ∂ J ∂ a = X T ∗ ( X ∗ a − Y ) = 0 \frac{\partial {J}}{\partial a}=X^T*(X*a-Y)=0 ∂a∂J=XT∗(X∗a−Y)=0将该方程展开可以得到: X T ∗ X ∗ a = X T ∗ Y X^T*X*a=X^T*Y XT∗X∗a=XT∗Y问题来了, X T ∗ X X^T*X XT∗X是否可逆呢?因为我们假定了 N ≠ n N\neq n N=n,所以 X X X不是方程,但是 X T ∗ X X^T*X XT∗X是方阵。通过第一节的分析,我们可以知道 X T ∗ X X^T*X XT∗X必定是一个半正定矩阵,也就是 X T ∗ X X^T*X XT∗X是特征值是大于等于0的。但是半正定矩阵不一定是可逆的,所以还需要分以下两种情况进行讨论:
N > n N>n N>n,如 N = 5 , n = 3 N=5,n=3 N=5,n=3, ( X T ∗ X ) 3 ∗ 3 (X^T*X)_{3*3} (XT∗X)3∗3一般是可逆的。N是样本的个数,n是样本的维度,当样本的个数大于样本的维度的时候,一般是可逆的。所以可以得到: a = ( X T ∗ X ) − 1 ∗ X T ∗ Y a=(X^T*X)^{-1}*X^T*Y a=(XT∗X)−1∗XT∗Y这个解也叫最小二乘解,其中 ( X T X ) − 1 X T (X^TX)^{-1}X^T (XTX)−1XT是伪逆矩阵。 N < n N<n N<n,如 N = 3 , n = 5 N=3,n=5 N=3,n=5, ( X T ∗ X ) 5 ∗ 5 (X^T*X)_{5*5} (XT∗X)5∗5必定不是可逆矩阵(矩阵可逆的条件是特征值不为零,同时矩阵的值等于矩阵的行数或者列数,因为矩阵是方阵。这里引用一个结论: R ( A ∗ B ) ⩽ R ( A ) o r R ( B ) R(A*B)\leqslant R(A) or R(B) R(A∗B)⩽R(A)orR(B)。一个矩阵的秩肯定比矩阵的行数或者列数都要小,所以 ( ) − ()- ()−),两个矩阵相乘,得到的矩阵的秩。有 R ( X T ∗ X ) ≤ R ( X ) ≤ 3 R(X^T*X) \leq R(X) \leq 3 R(XT∗X)≤R(X)≤3,所以 X T ∗ X X^T*X XT∗X是不可逆的,因为矩阵 X T ∗ X X^T*X XT∗X是方阵,行数和列数都是5,但是该矩阵的秩最大为3,所以该矩阵是不可逆的;另一方面,可以知道该矩阵必定是半正定矩阵,即存在一些特征值为零。当 X T ∗ X X^T*X XT∗X是不可逆的时候,需要在公式 J = ∣ ∣ X ∗ a − Y ∣ ∣ 2 J=||X*a-Y||^2 J=∣∣X∗a−Y∣∣2中加上一个正则项,即该公式表示为: J = ∣ ∣ X ∗ a − Y ∣ ∣ 2 + λ ∣ ∣ a ∣ ∣ 2 J=||X*a-Y||^2+\lambda ||a||^2 J=∣∣X∗a−Y∣∣2+λ∣∣a∣∣2这也是机器学习中我们经常说到的正则项,因为当训练数据比较少同时参数过多时,训练出来的模型容易过拟合,所以需要加上正则项。那为什么加上正则项就可以防止过拟合或者说得到的矩阵是可逆的呢?
通过对 J = ∣ ∣ X ∗ a − Y ∣ ∣ 2 + λ ∣ ∣ a ∣ ∣ 2 J=||X*a-Y||^2+\lambda ||a||^2 J=∣∣X∗a−Y∣∣2+λ∣∣a∣∣2进行求导,有: ∂ J ∂ a = X T ∗ X ∗ a − X T ∗ Y + λ ∗ a = 0 \frac{\partial J}{\partial a}=X^T*X*a-X^T*Y+\lambda*a=0 ∂a∂J=XT∗X∗a−XT∗Y+λ∗a=0通过转换,可以得到: ( X T ∗ X + λ I ) a = X T Y (X^T*X+\lambda I)a=X^TY (XT∗X+λI)a=XTY这个公式中的 ( X T ∗ X + λ I ) (X^T*X+\lambda I) (XT∗X+λI)必定是可逆的。因为前面已经分析 X T ∗ X X^T*X XT∗X是半正定矩阵,对于矩阵 X T ∗ X + λ I X^T*X+\lambda I XT∗X+λI,要判断该矩阵是正定矩阵,必须要有 Z T ∗ ( X T ∗ X + λ I ) ∗ Z > 0 Z^T*(X^T*X+\lambda I)*Z>0 ZT∗(XT∗X+λI)∗Z>0,公式中 Z Z Z是一个非零向量。这样就可以证明矩阵 X T ∗ X + λ I X^T*X+\lambda I XT∗X+λI是一个正定矩阵。下面就证明一下矩阵 X T ∗ X + λ I X^T*X+\lambda I XT∗X+λI是一个正定矩阵。 Z T ∗ ( X T ∗ X + λ I ) ∗ Z Z^T*(X^T*X+\lambda I)*Z ZT∗(XT∗X+λI)∗Z = Y T X T X Y + λ Y T Y =Y^TX^TXY+\lambda Y^TY =YTXTXY+λYTY = ( X Y ) T ( X Y ) + λ ∣ ∣ Y ∣ ∣ 2 =(XY)^T(XY)+\lambda ||Y||^2 =(XY)T(XY)+λ∣∣Y∣∣2令 X Y = K XY=K XY=K,有 = ∣ ∣ K ∣ ∣ 2 + λ ∣ ∣ Y ∣ ∣ 2 =||K||^2+\lambda ||Y||^2 =∣∣K∣∣2+λ∣∣Y∣∣2该公式中 ∣ ∣ K ∣ ∣ 2 ||K||^2 ∣∣K∣∣2的值是大于等于0的,因为 Y Y Y是非零向量,同时 λ \lambda λ大于零,所以公式中 λ ∗ ∣ ∣ y ∣ ∣ 2 \lambda * ||y||^2 λ∗∣∣y∣∣2的值是大于零的。所以整体上该公式的值是大于零的,所以该矩阵是正定矩阵。
既然矩阵 ( X T X + λ I ) (X^TX+\lambda I) (XTX+λI)是可逆的,那么可以通过公式: a = ( X T X + λ I ) − 1 X T Y a=(X^TX+\lambda I)^{-1}X^TY a=(XTX+λI)−1XTY来对a的值进行求解,这种回归在机器学习中叫岭回归。为什么叫岭回归呢?因为这个公式就相当于在原来对称矩阵 ( X T X ) (X^TX) (XTX)的基础上,在对角线上加上一个 λ \lambda λ的值,这就相当于是一个岭。这个解也称为最小范数解。
PCA是一种数据压缩方法,如下图: 图中A点需要x,y两个坐标来表示,假设A在向量u上面的投影点为A’,则A’仅仅需要一个参数就能表示,就是OA’的长度(即A’在u上的坐标),我们就想着用A’来替换A,这个N个点(原来需要2*N个参数),现在只需要(N+2)个参数(u也需要2个参数)。但是这样就带来了误差,如AA’和BB’,所以我们要能够找到这样一个方向u,使得所有原始点与投影点之间的误差最小,这就叫最小重构误差。
使用PCA时,首先需要进行样本点中心化 比如上图中,u方向已经确定了。左图中的数据分布就是把右图中数据的分布移动到中心点,这样使得数据的误差更加小。所以有必要在做PCA降维的时候将数据进行中心化处理。其实就是算样本点的x坐标的均值和y坐标的均值,然后将每一个数据都减去这个均值,就可以得到中心化处理后的数据分布。
在上图中,假设 X X X是一个样本点,向量 u u u是一个主方向,也就是样本点往向量 u u u上进行投影使得损失误差最小。数据点 X X X在向量 u u u上的损失误差为向量 e e e,通过公式表示为: e ⃗ = x ⃗ − p i j x ⃗ \vec{e}=\vec{x}-p_{ij}\vec{x} e =x −pijx = x ⃗ − < x ⃗ , u ⃗ > u ⃗ =\vec{x}-<\vec{x},\vec{u}> \vec{u} =x −<x ,u >u = x ⃗ − ( x ⃗ T u ⃗ ) u ⃗ =\vec{x}-(\vec{x}^T\vec{u})\vec{u} =x −(x Tu )u 公式中 u ⃗ ∈ R n \vec{u}\in R^n u ∈Rn且 ∣ ∣ u ⃗ ∣ ∣ = 1 , u T u = 1 ||\vec{u}||=1,u^Tu=1 ∣∣u ∣∣=1,uTu=1。数据点X的损失可以表示为: J = ∣ ∣ e ⃗ ∣ ∣ 2 = [ x − ( x T u ) u ] T [ x − ( x T u ) u ] J=||\vec{e}||^2=[x-(x^Tu)u]^T[x-(x^Tu)u] J=∣∣e ∣∣2=[x−(xTu)u]T[x−(xTu)u] = [ x T − ( x T u ) u T ] [ x − ( x T u ) u ] =[x^T-(x^Tu)u^T][x-(x^Tu)u] =[xT−(xTu)uT][x−(xTu)u] = x T x − ( x T u ) ( x T u ) − ( x T u ) ( u T x ) + ( x T u ) 2 u T u =x^Tx-(x^Tu)(x^Tu)-(x^Tu)(u^Tx)+(x^Tu)^2u^Tu =xTx−(xTu)(xTu)−(xTu)(uTx)+(xTu)2uTu = ∣ ∣ x ∣ ∣ 2 − ( x T u ) 2 − ( x T u ) 2 + ( x T u ) 2 =||x||^2-(x^Tu)^2-(x^Tu)^2+(x^Tu)^2 =∣∣x∣∣2−(xTu)2−(xTu)2+(xTu)2 = ∣ ∣ x ∣ ∣ 2 − ( x T u ) 2 =||x||^2-(x^Tu)^2 =∣∣x∣∣2−(xTu)2注意公式中 x T u x^Tu xTu是一个实数,所以转置的时候实数是不用改变的。通过分析公式中最后得到的结果 ∣ ∣ x ∣ ∣ 2 − ( x T u ) 2 ||x||^2-(x^Tu)^2 ∣∣x∣∣2−(xTu)2, ∣ ∣ x ∣ ∣ 2 ||x||^2 ∣∣x∣∣2是一个固定值,所以只需要找到合适的 u u u使得误差最小,也就是要最大化 ( x T u ) 2 (x^Tu)^2 (xTu)2。 m a x ( x T u ) 2 max(x^Tu)^2 max(xTu)2 ⇔ m a x ( x T u ) ( x T u ) ⇔ m a x ( u T x ) ( x T u ) \Leftrightarrow max(x^Tu)(x^Tu)\Leftrightarrow max(u^Tx)(x^Tu) ⇔max(xTu)(xTu)⇔max(uTx)(xTu) ⇔ m a x u T ( x x T ) u \Leftrightarrow maxu^T(xx^T)u ⇔maxuT(xxT)u这是只有一个样本的情况下得到的要优化的问题。假设有N个样本,那就对所有样本进行求和,得到以下公式: m a x ∑ i = 1 N u T ( x i x i T ) u = u T ( ∑ i = 1 N x i x i T ) u , ∣ ∣ u ∣ ∣ = 1 max\sum_{i=1}^Nu^T(x_ix_i^T)u=u^T(\sum_{i=1}^Nx_ix_i^T)u,||u||=1 maxi=1∑NuT(xixiT)u=uT(i=1∑NxixiT)u,∣∣u∣∣=1将 ( ∑ i = 1 N x i x i T ) (\sum_{i=1}^Nx_ix_i^T) (∑i=1NxixiT)看做是 X X X,那么公式可以表示为: m a x u T ( X ) u , s t : ∣ ∣ u ∣ ∣ = 1 ( u T u = 1 ) maxu^T(X)u,st:||u||=1(u^Tu=1) maxuT(X)u,st:∣∣u∣∣=1(uTu=1) 这是带约束条件的损失函数,可以通过拉格朗日乘子法进行约束求解,转换为拉格朗日公式,有: L ( u , λ ) = u T X u + λ ( 1 − u T u ) L(u,\lambda)=u^TXu+\lambda(1-u^Tu) L(u,λ)=uTXu+λ(1−uTu)分别对公式中的 u u u和 λ \lambda λ进行求导,有: ∂ L ∂ u = 0 ⇔ X u − λ u = 0 \frac{\partial L}{\partial u}=0\Leftrightarrow Xu-\lambda u=0 ∂u∂L=0⇔Xu−λu=0 X u = λ u Xu=\lambda u Xu=λu ∂ L ∂ λ = 0 ⇔ u T u = 1 \frac {\partial L}{\partial \lambda}=0\Leftrightarrow u^Tu=1 ∂λ∂L=0⇔uTu=1公式中的 X X X是 ( ∑ i = 1 N x i x i T ) (\sum_{i=1}^Nx_ix_i^T) (∑i=1NxixiT),这是N个样本计算之后得到的,每一个样本都可以得到一个矩阵,把N个矩阵加起来得到一个更大的矩阵,求这个大的矩阵的特征值和特征向量,特征向量求出来之后做归一化运算就可以了。
可以知道,矩阵 X X X必然是一个对称矩阵,因为 X X X矩阵的每一个小矩阵都是对称矩阵。同时,矩阵 X X X一般情况下都是正定矩阵,因为矩阵 X X X是由 ( ∑ i = 1 N x i x i T ) (\sum_{i=1}^Nx_ix_i^T) (∑i=1NxixiT)得到的,对于每个 x i x i T x_ix_i^T xixiT,利用试探向量 y y y,可以得到 y T x i x i T y = ( x i T y ) T ( x i T y ) y^Tx_ix_i^Ty=(x_i^Ty)^T(x_i^Ty) yTxixiTy=(xiTy)T(xiTy),令 z = x i T y z=x_i^Ty z=xiTy,则有 ( x i T y ) T ( x i T y ) = ∣ ∣ z ∣ ∣ 2 (x_i^Ty)^T(x_i^Ty)=||z||^2 (xiTy)T(xiTy)=∣∣z∣∣2。每一个样本都有一个 ∣ ∣ z ∣ ∣ 2 ||z||^2 ∣∣z∣∣2,那么N个样本就有N个 ∣ ∣ z ∣ ∣ 2 ||z||^2 ∣∣z∣∣2,把所有的 ∣ ∣ z ∣ ∣ 2 ||z||^2 ∣∣z∣∣2加起来得到的值一般是大于零的。所以一般认为矩阵 X X X是对称正定矩阵,所有该矩阵有N个 λ \lambda λ值,对应有N个特征向量。因为矩阵 X X X是对称正定矩阵,所以得到的每个特征向量是相互垂直的。
假设随机变量 X ∼ P ( x ; θ ) X \sim P(x;\theta ) X∼P(x;θ) 现有样本 x 1 , x 2 , . . . , x N x_1,x_2,...,x_N x1,x2,...,xN 定义似然函数为 L ~ = P ( x 1 ; θ ) P ( x 2 ; θ ) ⋯ P ( x N ; θ ) \tilde{L}=P(x_1;\theta)P(x_2;\theta)\cdots P(x_N;\theta) L~=P(x1;θ)P(x2;θ)⋯P(xN;θ) 对数似然函数为 L = l n L ~ = l n [ P ( x 1 ; θ ) P ( x 2 ; θ ) ⋯ P ( x N ; θ ) ] L=ln\tilde{L}=ln[P(x_1;\theta)P(x_2;\theta)\cdots P(x_N;\theta)] L=lnL~=ln[P(x1;θ)P(x2;θ)⋯P(xN;θ)] 极大似然估计为 m a x L max \space L max L
举个例子,有一组数据样本 x 1 , x 2 , . . . , x N x_1,x_2,...,x_N x1,x2,...,xN符合高斯分布: P ( x ) = 1 2 π σ e − ( x − 2 ) 2 2 σ 2 P(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-2)^2}{2\sigma ^2}} P(x)=2π σ1e−2σ2(x−2)2,那么其似然函数为: L = l n [ 1 2 π σ e − ( x 1 − 2 ) 2 2 σ 2 , . . . , 1 2 π σ e − ( x N − 2 ) 2 2 σ 2 ] L=ln[\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x_1-2)^2}{2\sigma ^2}},...,\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x_N-2)^2}{2\sigma ^2}}] L=ln[2π σ1e−2σ2(x1−2)2,...,2π σ1e−2σ2(xN−2)2] L = − N l n 2 π − N l n σ − [ ( x 1 − u ) 2 2 σ 2 + . . . + ( x N − u ) 2 2 σ 2 ] L=-Nln\sqrt{2\pi}-Nln\sigma-[\frac{(x_1-u)^2}{2\sigma^2}+...+\frac{(x_N-u)^2}{2\sigma^2}] L=−Nln2π −Nlnσ−[2σ2(x1−u)2+...+2σ2(xN−u)2] ∂ L ∂ u = 2 ( x 1 − u ) + 2 ( x 2 − u ) + . . . + 2 ( x N − u ) = 0 \frac{\partial L}{\partial u}=2(x_1-u)+2(x_2-u)+...+2(x_N-u)=0 ∂u∂L=2(x1−u)+2(x2−u)+...+2(xN−u)=0 ⇒ u = x 1 + x 2 + . . . + x N N \Rightarrow u=\frac{x_1+x_2+...+x_N}{N} ⇒u=Nx1+x2+...+xN ∂ L ∂ σ = 0 ⇒ − N σ + ∑ i ( x i − u ) 2 σ 3 = 0 \frac{\partial L}{\partial \sigma}=0\Rightarrow-\frac{N}{\sigma}+\frac{\sum_i(x_i-u)^2}{\sigma^3}=0 ∂σ∂L=0⇒−σN+σ3∑i(xi−u)2=0 ⇒ = σ 2 = ∑ i = 1 N ( x i − u ) 2 N \Rightarrow = \sigma^2=\frac{\sum_{i=1}^N(x_i-u)^2}{N} ⇒=σ2=N∑i=1N(xi−u)2
前面讲过最小二乘法,如下: x 1 , x 2 , . . . , x N , x i ∈ R N x_1,x_2,...,x_N,x_i\in R^N x1,x2,...,xN,xi∈RN y 1 , y 2 , . . . , y N , y i ∈ R y_1,y_2,...,y_N,y_i\in R y1,y2,...,yN,yi∈R y i ~ = W T x i , w ∈ R N \tilde{y_i}=W^Tx_i,w\in R^N yi~=WTxi,w∈RN拟合误差: e i = y i − W T x i e_i=y_i-W^Tx_i ei=yi−WTxi若设 e i ∼ N ( 0 , 1 ) e_i \sim N(0,1) ei∼N(0,1)即 e i ∼ 1 2 π e − e i 2 2 e_i\sim \frac{1}{\sqrt{2\pi}}e^{-\frac {e_i^2}{2}} ei∼2π 1e−2ei2似然函数 L = l n [ 1 2 π e − e 1 2 2 1 2 π e − e 2 2 2 , . . . , 1 2 π e − e N 2 2 ] L=ln[\frac{1}{\sqrt{2\pi}}e^{-\frac {e_1^2}{2}}\frac{1}{\sqrt{2\pi}}e^{-\frac {e_2^2}{2}},...,\frac{1}{\sqrt{2\pi}}e^{-\frac {e_N^2}{2}}] L=ln[2π 1e−2e122π 1e−2e22,...,2π 1e−2eN2]最大化L等价于最小化 ( e 1 2 + e 2 2 + . . . + e N 2 ) (e_1^2+e_2^2+...+e_N^2) (e12+e22+...+eN2)将上面公式代入该公式有 m i n [ ( y 1 − W T x 1 ) 2 + ( y 2 − W T x 2 ) 2 + . . . + ( y N − W T x N ) 2 ] = J min[(y_1-W^Tx_1)^2+(y_2-W^Tx_2)^2+...+(y_N-W^Tx_N)^2]=J min[(y1−WTx1)2+(y2−WTx2)2+...+(yN−WTxN)2]=J ∂ J ∂ W = − 2 [ ( y 1 − W T x 1 ) x 1 + . . . + ( y N − W T x N ) x N ] = 0 \frac {\partial J}{\partial W} =-2[(y_1-W^Tx_1)x_1+...+(y_N-W^Tx_N)x_N]=0 ∂W∂J=−2[(y1−WTx1)x1+...+(yN−WTxN)xN]=0 ⇒ ∑ i = 1 N x i y i = ∑ i = 1 N W T x i ⋅ x i \Rightarrow \sum_{i=1}^Nx_iy_i=\sum_{i=1}^N{W^Tx_i}\cdot x_i ⇒i=1∑Nxiyi=i=1∑NWTxi⋅xi W T x i ⋅ x i = x i ( W T x i ) = x i ( x i T W ) = ( x i x i T ) W W^Tx_i\cdot x_i=x_i(W^Tx_i)=x_i(x_i^TW)=(x_ix_i^T)W WTxi⋅xi=xi(WTxi)=xi(xiTW)=(xixiT)W ∑ i = 1 N ( x i x i T ) w = ∑ i = 1 N x i y i \sum_{i=1}^N(x_ix_i^T)w=\sum_{i=1}^Nx_iy_i i=1∑N(xixiT)w=i=1∑Nxiyi假设公式中的矩阵的逆矩阵是存在的,有 w = [ ∑ i = 1 N ( x i x i T ) ] − 1 ⋅ ∑ i = 1 N x i y i w=[\sum_{i=1}^N(x_ix_i^T)]^{-1}\cdot \sum_{i=1}^Nx_iy_i w=[i=1∑N(xixiT)]−1⋅i=1∑Nxiyi对比之前得到的关于多源线性回归方程的参数求解公式: w = ( X T X ) − 1 X T Y w = (X^TX)^{-1}X^TY w=(XTX)−1XTY X = [ x 1 T x 2 T ⋮ x N T ] X=\begin{bmatrix} x_1^T\\ x_2^T\\ \vdots \\ x_N^T \end{bmatrix} X=⎣⎢⎢⎢⎡x1Tx2T⋮xNT⎦⎥⎥⎥⎤ X T = [ x 1 x 2 ⋯ x N ] X^T=\begin{bmatrix} x_1& x_2 &\cdots & x_N \end{bmatrix} XT=[x1x2⋯xN] Y = [ y 1 y 2 ⋮ y N ] Y=\begin{bmatrix} y_1\\ y_2\\ \vdots \\ y_N \end{bmatrix} Y=⎣⎢⎢⎢⎡y1y2⋮yN⎦⎥⎥⎥⎤通过相乘,可以知道两者是等价的。 通过上面的公式可以发现,误差的高斯分布与最小二乘估计的等价性就是,在做多元线性回归的时候,可以通过另外一个角度来分析,假设拟合的误差是服从高斯分布的,用极大似然估计进行计算,得到的解和前面分析的最小二乘解分析角度得到的解是一样的。
无约束优化问题是机器学习中最普遍、最简单的优化问题 x ∗ = m i n x f ( x ) , x ∈ R n x^*=min_x\space f(x),x\in R^n x∗=minx f(x),x∈Rn无约束的最优化理论最简单的算法是梯度下降法,举个例子,一个二元函数 f ( x , y ) = x 2 + y 2 f(x,y)=x^2+y^2 f(x,y)=x2+y2这个函数是微积分中的旋转抛物面,目标是求出这个函数的最小值。假设有一个点 P P P,坐标为 ( 1 , 1 ) (1,1) (1,1),从该点开始到达函数的最小值点位置。该点的梯度的反方向是梯度下降最快的方向。
梯度下降是一次收敛,牛顿法是二次收敛(速度快,但也有缺陷,要在比较接近最优点的时候才能收敛,否则可能发散) 梯度下降: ∣ ∣ X n + 1 − X ∗ ∣ ∣ < K ∣ ∣ X n − X ∗ ∣ ∣ ||X_{n+1}-X^*||<K||X_n-X^*|| ∣∣Xn+1−X∗∣∣<K∣∣Xn−X∗∣∣牛顿法: ∣ ∣ X n + 1 − X ∗ ∣ ∣ < K ∣ ∣ X n − X ∗ ∣ ∣ 2 ||X_{n+1}-X^*||<K||X_n-X^*||^2 ∣∣Xn+1−X∗∣∣<K∣∣Xn−X∗∣∣2其中 X ∗ X^* X∗是函数最小值所在的位置, X n + 1 X_{n+1} Xn+1是进行 n + 1 n+1 n+1次迭代之后的坐标,一般来说是比 X n X_n Xn更接近于极值点。 梯度下降法考虑到步长的影响,在接近极值点时可能会因为步长过大导致出现震荡问题,而牛顿法在极值点附近的收敛比较好,所以一般在刚开始拟合极值点的时候使用梯度下降法,在快接近极值点的时候使用牛顿法进行拟合。
经典拉格朗日乘子法是下面的优化问题(注: x x x是一个向量) m i n x f ( x ) min_xf(x) minxf(x) s . t . g ( x ) = 0 s.t.\space g(x)=0 s.t. g(x)=0直观上理解,最优解 x o p t i m a l x_optimal xoptimal一定有这样的性质,以 x x x是二维变量为例: