Vectors 向量
向量通常用头上有一个箭头的小写字母表示,如x ⃗ \vec{x} x 。构成向量的数字叫做分向量(components),分向量的数量等于向量的维度(dimensionality of the vector)。x ⃗ = ( 8 6 7 5 3 )
\vec{x} = \left(\begin{array}{cc}
8\\
6\\
7\\
5\\
3
\end{array} \right)
x = ⎝ ⎜ ⎜ ⎜ ⎜ ⎛ 8 6 7 5 3 ⎠ ⎟ ⎟ ⎟ ⎟ ⎞
上面的例子表示了一个5维的向量,x 1 = 8 , x 2 = 6 x_1=8,x_2=6 x 1 = 8 , x 2 = 6 ,向量也可以水平表示来节省空间,例如x ⃗ = [ 8 , 6 , 7 , 5 , 3 ] \vec{x}=[8, 6, 7, 5, 3] x = [ 8 , 6 , 7 , 5 , 3 ] 。普遍来说,一个n n n 维向量x ⃗ \vec{x} x 是一个n n n 个数字的序列,分向量x i x_i x i 表示在第i i i 维的x ⃗ \vec{x} x 的值。
Matrices 矩阵
矩阵和表格很像。矩阵由行(row,横向的列表)和列(column,纵向的列表)组成。A = [ 17 18 5 5 45 1 42 28 30 15 115 3 10 10 10 21 51 2 28 5 65 39 132 5 24 26 45 21 116 4 ]
A=
\left[\begin{array}{cc}
17 & 18 & 5 & 5 & 45 & 1\\
42 & 28 & 30 & 15 & 115 & 3\\
10 & 10 & 10 & 21 & 51 & 2\\
28 & 5 & 65 & 39 & 132 & 5\\
24 & 26 & 45 & 21 & 116 & 4
\end{array} \right]
A = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 1 7 4 2 1 0 2 8 2 4 1 8 2 8 1 0 5 2 6 5 3 0 1 0 6 5 4 5 5 1 5 2 1 3 9 2 1 4 5 1 1 5 5 1 1 3 2 1 1 6 1 3 2 5 4 ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
矩阵的大小(或者说维度)是由矩阵的行数和列数决定的,上面的矩阵就是一个5 × 6 5 \times 6 5 × 6 大小的矩阵。通常来说,矩阵用大写字母表示,例如A A A ,矩阵的行数用m m m 表示,列数用n n n 表示。矩阵的元素(entries or elements or components)表示为小写的a a a ,这个元素a a a 的位置是由它所在的行数i i i 和列数j j j 表示。举例来说,132在矩阵的第4行第5列,a 45 = 132 a_{45}=132 a 4 5 = 1 3 2 。在第i i i 行第j j j 列的元素表示为a i j a_{ij} a i j ,叫做i j − e n t r y ij-entry i j − e n t r y 或i j − c o m p n e n t ij-compnent i j − c o m p n e n t 。
Matrix Notation 矩阵表示
m , n m,n m , n 是两个大于1的整数,令a i j , i = 1 , . . . , m , j = 1 , . . . , n a_{ij},i=1,...,m,j=1,...,n a i j , i = 1 , . . . , m , j = 1 , . . . , n ,由数字组成的矩阵A = [ a 11 . . . a 1 j . . . a 1 n . . . a i 1 . . . a i j . . . a i n . . . a m 1 . . . a m j . . . a m n ]
A=
\left[\begin{array}{cc}
a_{11} & ... & a_{1j} & ... & a_{1n}\\
. & & . & & .\\
a_{i1} & ... & a_{ij} & ... & a_{in}\\
. & & . & & .\\
a_{m1} & ... & a_{mj} & ... & a_{mn}
\end{array} \right]
A = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ a 1 1 . a i 1 . a m 1 . . . . . . . . . a 1 j . a i j . a m j . . . . . . . . . a 1 n . a i n . a m n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
是一个m × n m\times n m × n 大小的矩阵,a i j a_{i}j a i j 是A的元素。数字序列A ( i ) = ( a i 1 , . . . , a ( i n ) )
A_{(i)} = (a_{i1}, ..., a_{(in)})
A ( i ) = ( a i 1 , . . . , a ( i n ) )
是矩阵的第i i i 行,数字序列A ( j ) = ( a 1 j , . . . , a ( m j ) )
A^{(j)} = (a_{1j}, ..., a_{(mj)})
A ( j ) = ( a 1 j , . . . , a ( m j ) )
是矩阵的第j j j 行。
矩阵可以看作是一些向量的集合,一个n n n 维的向量可以看作是一个1 × n 1\times n 1 × n 的矩阵。
Vector Terminology 向量术语
Vector Length 向量长度
向量v ⃗ \vec{v} v 的长度表示为∣ v ⃗ ∣ |\vec{v}| ∣ v ∣ 。它的计算公式为∣ v ⃗ ∣ = ∑ i = 1 n x i 2
|\vec{v}| = \sqrt{\sum_{i=1}^{n}x_i^2}
∣ v ∣ = i = 1 ∑ n x i 2
例如,v ⃗ = [ 4 , 11 , 8 , 10 ] \vec{v}=[4,11,8,10] v = [ 4 , 1 1 , 8 , 1 0 ] ,那么它的长度∣ v ⃗ ∣ = 4 2 + 1 1 2 + 8 2 + 1 0 2 = 301
|\vec{v}|=\sqrt{4^2+11^2+8^2+10^2}=\sqrt{301}
∣ v ∣ = 4 2 + 1 1 2 + 8 2 + 1 0 2 = 3 0 1
Vector Addition 向量加法
将两个向量相加,就是把v 1 ⃗ \vec{v_1} v 1 里面的元素与v 2 ⃗ \vec{v_2} v 2 里相对应的元素相加,如果A = [ a 1 , a 2 , . . . , a n ] , B = [ b 1 , b 2 , . . . , b n ] A = [a_1, a_2, ..., a_n], B=[b_1,b_2,...,b_n] A = [ a 1 , a 2 , . . . , a n ] , B = [ b 1 , b 2 , . . . , b n ] , 那么A + B = [ a 1 + b 1 , a 2 + b 2 , . . . , a n + b n ] A+B=[a_1+b_1, a_2+b_2, ..., a_n+b_n] A + B = [ a 1 + b 1 , a 2 + b 2 , . . . , a n + b n ] 。
Scalar Multiplication 标量乘法
将一个标量(实数)和一个向量相乘,就是把向量里面的每个元素与这个标量相乘。如果d d d 是一个实数,v ⃗ \vec{v} v 代表一个向量v 1 , v 2 , . . . , v n v_1, v_2, ...,v_n v 1 , v 2 , . . . , v n ,那么d ∗ v ⃗ = [ d v 1 , d v 2 , . . . , d v n ] d*\vec{v}=[dv_1,dv_2,...,dv_n] d ∗ v = [ d v 1 , d v 2 , . . . , d v n ] 。
Inner Product 内积
两个向量的内积代表将两个向量的每个对应的元素相乘然后将这些结果相加,表示为( v 1 ⃗ , v 2 ⃗ ) (\vec{v_1}, \vec{v_2}) ( v 1 , v 2 ) 或者v 1 ⃗ ⋅ v 2 ⃗ \vec{v_1}\cdot\vec{v_2} v 1 ⋅ v 2 ,( v 1 ⃗ , v 2 ⃗ ) = v 1 ⃗ ⋅ v 2 ⃗ = ∑ i = 1 n x i y i (\vec{v_1}, \vec{v_2})=\vec{v_1}\cdot\vec{v_2}=\sum_{i=1}^{n}x_i y_i ( v 1 , v 2 ) = v 1 ⋅ v 2 = ∑ i = 1 n x i y i
Orthogonality 正交
如果两个向量的内积为0,那么这两个向量是正交的。
Normal Vector or Unit Vector 单位向量
向量长度为1的向量可以叫做单位向量。任何向量长度大于0的向量可以通过将每个元素除以向量长度的方法正规化(normalized)为单位向量。
例如:
令v ⃗ = [ 2 , 4 , 1 , 2 ] \vec{v} = [2, 4, 1, 2] v = [ 2 , 4 , 1 , 2 ] ,那么它的长度为∣ v ⃗ ∣ = 2 2 + 4 2 + 1 2 + 2 2 = 5
|\vec{v}|=\sqrt{2^2 + 4^2 + 1^2 + 2^2} = 5
∣ v ∣ = 2 2 + 4 2 + 1 2 + 2 2 = 5
那么u ⃗ = [ 2 / 5 , 4 / 5 , 1 / 5 , 1 / 5 ] \vec{u}=[2/5, 4/5, 1/5, 1/5] u = [ 2 / 5 , 4 / 5 , 1 / 5 , 1 / 5 ] 是一个单位向量,因为∣ u ⃗ ∣ = ( 2 / 5 ) 2 + ( 4 / 5 ) 2 + ( 1 / 5 ) 2 + ( 1 / 5 ) 2 = 1
|\vec{u}| = \sqrt{(2/5)^2 + (4/5)^2 + (1/5)^2 + (1/5)^2}=1
∣ u ∣ = ( 2 / 5 ) 2 + ( 4 / 5 ) 2 + ( 1 / 5 ) 2 + ( 1 / 5 ) 2 = 1
Orthonormal Vectors
两个正交的单位向量叫做orthonormal。
Gram-Schmidt Orthonormalization Process
将一组向量变成互相正交的单位向量
例如A = [ 1 2 1 0 2 0 2 3 1 1 1 0 ]
A=
\left[\begin{array}{cc}
1 & 2 & 1\\
0 & 2 & 0\\
2 & 3 & 1\\
1 & 1 & 0
\end{array}\right]
A = ⎣ ⎢ ⎢ ⎡ 1 0 2 1 2 2 3 1 1 0 1 0 ⎦ ⎥ ⎥ ⎤
转换为一组正交的单位向量A = [ 6 6 2 6 2 3 0 2 2 3 − 1 3 6 3 0 0 6 6 − 2 6 − 2 3 ]
A=
\left[\begin{array}{cc}
\frac{\sqrt{6}}{6} & \frac{\sqrt{2}}{6} & \frac{2}{3}\\
0 & \frac{2\sqrt{2}}{3} & -\frac{1}{3}\\
\frac{\sqrt{6}}{3} & 0 & 0\\
\frac{\sqrt{6}}{6} & -\frac{\sqrt{2}}{6} & -\frac{2}{3}
\end{array}\right]
A = ⎣ ⎢ ⎢ ⎢ ⎡ 6 6 0 3 6 6 6 6 2 3 2 2 0 − 6 2 3 2 − 3 1 0 − 3 2 ⎦ ⎥ ⎥ ⎥ ⎤
首先,单位化v 1 ⃗ = [ 1 , 0 , 2 , 1 ] \vec{v_1}=[1,0,2,1] v 1 = [ 1 , 0 , 2 , 1 ] u 1 ⃗ = [ 1 6 , 0 , 2 6 , 1 6 ]
\vec{u_1}=[\frac{1}{\sqrt{6}}, 0, \frac{2}{\sqrt{6}}, \frac{1}{\sqrt{6}}]
u 1 = [ 6 1 , 0 , 6 2 , 6 1 ]
然后,令w 2 ⃗ = v 2 ⃗ − u 1 ⃗ ⋅ v 2 ⃗ ∗ u 1 ⃗ = [ 2 , 2 , 3 , 1 ] − [ 1 6 , 0 , 2 6 , 1 6 ] ⋅ [ 2 , 2 , 3 , 1 ] ∗ [ 1 6 , 0 , 2 6 , 1 6 ] = [ 2 , 2 , 3 , 1 ] − 9 6 ∗ [ 1 6 , 0 , 2 6 , 1 6 ] = [ 2 , 2 , 3 , 1 ] − [ 3 2 , 0 , 3 , 3 2 ] = [ 1 2 , 2 , 0 , − 1 2 ] \begin{aligned}
\vec{w_2}=\vec{v_2}-\vec{u_1}\cdot\vec{v_2}*\vec{u_1}=&[2, 2, 3, 1] - [\frac{1}{\sqrt{6}}, 0, \frac{2}{\sqrt{6}}, \frac{1}{\sqrt{6}}]\cdot[2,2,3,1]*[\frac{1}{\sqrt{6}}, 0, \frac{2}{\sqrt{6}}, \frac{1}{\sqrt{6}}]\\
=&[2,2,3,1]-\frac{9}{\sqrt{6}}*[\frac{1}{\sqrt{6}}, 0, \frac{2}{\sqrt{6}}, \frac{1}{\sqrt{6}}]\\
=&[2,2,3,1]-[\frac{3}{2},0,3,\frac{3}{2}]\\
=&[\frac{1}{2}, 2, 0, -\frac{1}{2}]
\end{aligned} w 2 = v 2 − u 1 ⋅ v 2 ∗ u 1 = = = = [ 2 , 2 , 3 , 1 ] − [ 6 1 , 0 , 6 2 , 6 1 ] ⋅ [ 2 , 2 , 3 , 1 ] ∗ [ 6 1 , 0 , 6 2 , 6 1 ] [ 2 , 2 , 3 , 1 ] − 6 9 ∗ [ 6 1 , 0 , 6 2 , 6 1 ] [ 2 , 2 , 3 , 1 ] − [ 2 3 , 0 , 3 , 2 3 ] [ 2 1 , 2 , 0 , − 2 1 ]
把w 2 ⃗ \vec{w_2} w 2 正规化,得到v 2 ⃗ = [ 2 6 , 2 2 3 , 0 , − 2 6 ]
\vec{v_2}=[\frac{\sqrt{2}}{6}, \frac{2\sqrt{2}}{3}, 0, -\frac{\sqrt{2}}{6}]
v 2 = [ 6 2 , 3 2 2 , 0 , − 6 2 ]
同理可得,u 3 ⃗ = [ 2 3 , − 1 3 , 0 , − 2 3 ]
\vec{u_3}=[\frac{2}{3}, -\frac{1}{3}, 0, -\frac{2}{3}]
u 3 = [ 3 2 , − 3 1 , 0 , − 3 2 ]
一般来说,有一组向量,那么w k ⃗ = v k ⃗ − ∑ i = 1 k − 1 u t ⃗ ⋅ v k ⃗ ∗ u t ⃗
\vec{w_k}=\vec{v_k}-\sum_{i=1}^{k-1}\vec{u_t}\cdot\vec{v_k}*\vec{u_t}
w k = v k − i = 1 ∑ k − 1 u t ⋅ v k ∗ u t
Matrix Terminology 矩阵术语
Square Matrix 方块矩阵
如果一个矩阵的行数和列数相同,那么这个矩阵是方块矩阵。
Transpose 转置
一个矩阵的转置矩阵是通过将原本的矩阵的每个元素交换行和列来生成的。A A A 的转置矩阵表示为A T A^T A T 。例如A = [ 1 2 3 4 5 6 ]
A=
\left[\begin{array}{cc}
1 & 2 & 3\\
4 & 5 & 6
\end{array}\right]
A = [ 1 4 2 5 3 6 ]
那么A A A 的转置矩阵为A T = [ 1 4 2 5 3 6 ]
A^T=
\left[\begin{array}{cc}
1 & 4\\
2 & 5\\
3 & 6
\end{array}\right]
A T = ⎣ ⎡ 1 2 3 4 5 6 ⎦ ⎤
Matrix Multiplication 矩阵乘法
m × n m\times n m × n 大小的矩阵A A A 可以和n × s n\times s n × s 大小的矩阵B B B 相乘得到m × s m\times s m × s 大小的矩阵A B AB A B 。
矩阵A B AB A B 的每一个位置的值a b i j = A i ⃗ ⋅ B j ⃗ ab_{ij}=\vec{A_i}\cdot\vec{B^j} a b i j = A i ⋅ B j
Identity Matrix 单位矩阵
一个对角线为1其他都是0的方块矩阵叫做单位矩阵I I I 。A I = A
AI=A
A I = A
Orthogonal Matrix 正交矩阵
如果A A T = A T A = I AA^T=A^TA=I A A T = A T A = I ,那么A A A 就是正交矩阵。
Diagonal Matrix 对角矩阵
如果一个矩阵除了对角线其他都是0,只有对角线有非0值,那么这个矩阵是对角矩阵。
Determinant 行列式
A A A 的行列式表示为∣ A ∣ |A| ∣ A ∣ 或det ( A ) \det(A) det ( A ) 。∣ A ∣ = ∣ a b c d e f g h i ∣ = a ∣ . . . . e f . h i ∣ − b ∣ . . . d . f g . i ∣ + c ∣ . . . d e . g h . ∣ = a ∣ e f h i ∣ − b ∣ d f g i ∣ + c ∣ d e g h ∣ = a e i + b f g + c d h − c e g − b d i − a f h \begin{aligned}
|A|=
\left|\begin{array}{cc}
a & b & c\\
d & e & f\\
g & h & i
\end{array}\right|
=&a
\left|\begin{array}{cc}
. & . & .\\
. & e & f\\
. & h & i
\end{array}\right|
-b
\left|\begin{array}{cc}
. & . & .\\
d & . & f\\
g & . & i
\end{array}\right|
+c
\left|\begin{array}{cc}
. & . & .\\
d & e & .\\
g & h & .
\end{array}\right|
\\
=&a
\left|\begin{array}{cc}
e & f\\
h & i
\end{array}\right|
-b
\left|\begin{array}{cc}
d & f\\
g & i
\end{array}\right|
+c
\left|\begin{array}{cc}
d & e\\
g & h
\end{array}\right|\\
=&aei+bfg+cdh-ceg-bdi-afh
\end{aligned} ∣ A ∣ = ∣ ∣ ∣ ∣ ∣ ∣ a d g b e h c f i ∣ ∣ ∣ ∣ ∣ ∣ = = = a ∣ ∣ ∣ ∣ ∣ ∣ . . . . e h . f i ∣ ∣ ∣ ∣ ∣ ∣ − b ∣ ∣ ∣ ∣ ∣ ∣ . d g . . . . f i ∣ ∣ ∣ ∣ ∣ ∣ + c ∣ ∣ ∣ ∣ ∣ ∣ . d g . e h . . . ∣ ∣ ∣ ∣ ∣ ∣ a ∣ ∣ ∣ ∣ e h f i ∣ ∣ ∣ ∣ − b ∣ ∣ ∣ ∣ d g f i ∣ ∣ ∣ ∣ + c ∣ ∣ ∣ ∣ d g e h ∣ ∣ ∣ ∣ a e i + b f g + c d h − c e g − b d i − a f h
Eigenvectors and Eigenvalues 特征向量和特征值
一个能满足下列条件的非零向量叫做特征向量A v ⃗ = λ v ⃗
A\vec{v}=\lambda\vec{v}
A v = λ v
其中,A A A 是一个方块矩阵,λ \lambda λ 是一个纯量,v ⃗ \vec{v} v 就是特征向量,λ \lambda λ 叫做特征值。
例如,有一个矩阵A = [ 2 1 1 2 ]
A=
\left[\begin{array}{cc}
2 & 1\\
1 & 2
\end{array}\right]
A = [ 2 1 1 2 ]
那么A v ⃗ = λ v ⃗ = [ 2 1 1 2 ] [ x 1 x 2 ] = λ [ x 1 x 2 ]
A\vec{v}=\lambda\vec{v}=
\left[\begin{array}{cc}
2 & 1\\
1 & 2
\end{array}\right]
\left[\begin{array}{cc}
x_1\\
x_2
\end{array}\right]
=\lambda
\left[\begin{array}{cc}
x_1\\
x_2
\end{array}\right]
A v = λ v = [ 2 1 1 2 ] [ x 1 x 2 ] = λ [ x 1 x 2 ]
所以2 x 1 + x 2 = λ x 1 x 1 + 2 x 2 = λ x 2
2x_1+x_2=\lambda x_1\\
x_1+2x_2=\lambda x_2
2 x 1 + x 2 = λ x 1 x 1 + 2 x 2 = λ x 2
可以转变为( 2 − λ ) x 1 + x 2 = 0 x 1 + ( 2 − λ ) x 2 = 0
(2-\lambda)x_1+x_2=0\\
x_1+(2-\lambda)x_2=0
( 2 − λ ) x 1 + x 2 = 0 x 1 + ( 2 − λ ) x 2 = 0
让向量[ x 1 , x 2 ] [x_1,x_2] [ x 1 , x 2 ] 非0的充分且必要条件是系数矩阵要为0,那么就有∣ ( 2 − λ ) 1 1 ( 2 − λ ) ∣ = 0 ( 2 − λ ) ( 2 − λ ) − 1 ⋅ 1 = 0 λ 2 − 4 λ + 3 = 0 ( λ − 3 ) ( λ − 1 ) = 0 λ 1 = 3 , λ 2 = 1
\left|\begin{array}{cc}
(2-\lambda) & 1\\
1 & (2-\lambda)
\end{array}\right|
=0\\
(2-\lambda)(2-\lambda)-1\cdot 1=0\\
\lambda^2-4\lambda+3=0\\
(\lambda-3)(\lambda-1)=0\\
\lambda_1=3,\lambda_2=1
∣ ∣ ∣ ∣ ( 2 − λ ) 1 1 ( 2 − λ ) ∣ ∣ ∣ ∣ = 0 ( 2 − λ ) ( 2 − λ ) − 1 ⋅ 1 = 0 λ 2 − 4 λ + 3 = 0 ( λ − 3 ) ( λ − 1 ) = 0 λ 1 = 3 , λ 2 = 1
对于λ = 3 \lambda=3 λ = 3 ,可得x 1 = x 2 x_1=x_2 x 1 = x 2 ,所以一种可能的特征向量为[ 1 , 1 ] [1,1] [ 1 , 1 ] 。
对于λ = 1 \lambda=1 λ = 1 ,可得x 1 = − x 2 x_1=-x_2 x 1 = − x 2 ,所以一种可能的特征向量为[ 1 , − 1 ] [1,-1] [ 1 , − 1 ] 。
Singular Value Decomposition(SVD)
可以从三个观点来看SVD。
可以将其看作是将一组互相关联的变量转换为一组互不相关的变量的方法,这个方法可以揭示原本数据项之间的关系。
SVD可以找出变化最剧烈的数据维度,这样就可以用更少的维度来表示原始数据
SVD可以看作是一种压缩数据的方法。
举个例子,下图有一堆点来表示2维的数据,这根线是这些点的最佳线性回归,用一根线(一维)来表示这些点(二维)。
这里的线是一维的个人理解是其中一项值可以用另一项表示,所以只要有一个变数就能确定数据,所以这个线是一维的。
某种意义上,这根线是这笔资料的最佳近似,因为这一条线使各个点到这条线的距离总和最小。如果我们在每个点画一个与这条线垂直的线,并且交点作为原始数据的近似值,那么就可以利用这条回归线作为原始数据的表示,压缩原始数据,并且尽可能的接近于原始数据。
如果有这么一条与上图的线垂直的线,如下图。这条线沿着数据的第二维尽可能的捕捉了尽量多的变化,但是它在近似数据方面表现不佳,因为它表现出了较少变化的维度。
SVD的基本思想:将高维度、高度变化的数据集压缩到低维度的空间,从而更加清晰表现原数据,并且将原市数据从高度变化到低变化排序。在NLP中大量使用SVD的原因是可以在简单的忽略某些值的情况下大量的减少数据,同时保持原来数据的主要关系。
Example of Full Singular Value Decomposition
SVD基于一个线性代数的定理,该定理表明一个矩阵A A A 可以分解为三个矩阵的乘积:
正交矩阵U U U
对角矩阵S S S
正交矩阵U U U 的转置矩阵V V V
表示为A m n = U m m S m n V n n T
A_{mn}=U_{mm}S_{mn}V_{nn}^T
A m n = U m m S m n V n n T
这里的U T U = I , V T V = I U^TU=I,V^TV=I U T U = I , V T V = I ,U U U 的列是A A T AA^T A A T 的正交特征向量,V V V 的特征是A T A A^TA A T A 的正交特征向量,S S S 是一个对角矩阵,包含有U U U 或者V V V 的特征值的平方根,以降序排列。
下面这个例子仅将其应用于小矩阵来计算它的SVD。
首先,有一个矩阵A = [ 3 1 1 − 1 3 1 ]
A=
\left[\begin{array}{cc}
3 & 1 & 1\\
-1 & 3 & 1
\end{array}\right]
A = [ 3 − 1 1 3 1 1 ]
为了计算U U U ,得先计算A A T AA^T A A T ,A T A^T A T 为A T = [ 3 − 1 1 3 1 1 ]
A^T=
\left[\begin{array}{cc}
3 & -1\\
1 & 3\\
1 & 1
\end{array}\right]
A T = ⎣ ⎡ 3 1 1 − 1 3 1 ⎦ ⎤
所以A A T = [ 3 1 1 − 1 3 1 ] [ 3 − 1 1 3 1 1 ] = [ 11 1 1 11 ]
AA^T=
\left[\begin{array}{cc}
3 & 1 & 1\\
-1 & 3 & 1
\end{array}\right]
\left[\begin{array}{cc}
3 & -1\\
1 & 3\\
1 & 1
\end{array}\right]
=\left[\begin{array}{cc}
11 & 1\\
1 & 11
\end{array}\right]
A A T = [ 3 − 1 1 3 1 1 ] ⎣ ⎡ 3 1 1 − 1 3 1 ⎦ ⎤ = [ 1 1 1 1 1 1 ]
接下来,要计算A A T AA^T A A T 的特征向量和特征值,特征向量的定义为A v ⃗ = λ v ⃗ A\vec{v}=\lambda\vec{v} A v = λ v ,带入这个公式可得[ 11 1 1 11 ] [ x 1 x 2 ] = λ [ x 1 x 2 ]
\left[\begin{array}{cc}
11 & 1\\
1 & 11
\end{array}\right]
\left[\begin{array}{cc}
x_1\\
x_2
\end{array}\right]=\lambda
\left[\begin{array}{cc}
x_1\\
x_2
\end{array}\right]
[ 1 1 1 1 1 1 ] [ x 1 x 2 ] = λ [ x 1 x 2 ]
重写为方程组11 x 1 + x 2 = λ x 1 x 1 + 11 x 2 = λ x 2
11x_1+x_2 = \lambda x_1 \\
x_1+11x_2 = \lambda x_2
1 1 x 1 + x 2 = λ x 1 x 1 + 1 1 x 2 = λ x 2
重组,可得( 11 − λ ) x 1 + x 2 = 0 x 1 + ( 11 − λ ) x 2 = 0
(11-\lambda)x_1+x_2=0\\
x_1+(11-\lambda)x_2=0
( 1 1 − λ ) x 1 + x 2 = 0 x 1 + ( 1 1 − λ ) x 2 = 0
系数矩阵的行列式为0来求解λ \lambda λ ∣ ( 11 − λ ) 1 1 ( 11 − λ ) ∣ = 0
\left|\begin{array}{cc}
(11-\lambda) & 1\\
1 & (11-\lambda)
\end{array}\right| = 0
∣ ∣ ∣ ∣ ( 1 1 − λ ) 1 1 ( 1 1 − λ ) ∣ ∣ ∣ ∣ = 0
求解可得λ 1 = 10 , λ 2 = 12 \lambda_1=10, \lambda_2=12 λ 1 = 1 0 , λ 2 = 1 2 。对于λ 1 = 10 \lambda_1=10 λ 1 = 1 0 来说,带入可得x 1 = − x 2 x_1=-x_2 x 1 = − x 2 ,选取[ 1 , − 1 ] [1, -1] [ 1 , − 1 ] 作为特征向量;对于λ 2 = 12 \lambda_2=12 λ 2 = 1 2 来说,带入可得x 1 = x 2 x_1=x_2 x 1 = x 2 ,选取[ 1 , 1 ] [1, 1] [ 1 , 1 ] 作为特征向量。这两个特征向量作为列向量组成的矩阵,按相应特征值的大小排序。换句话说,特征向量大的那一个作为列1,小的那一个作为列2。[ 1 1 1 − 1 ]
\left[\begin{array}{cc}
1 & 1\\
1 & -1
\end{array}\right]
[ 1 1 1 − 1 ]
最后,要将这个转换为一组正交的单位向量。首先正规化v 1 ⃗ \vec{v_1} v 1 u 1 ⃗ = v 1 ⃗ ∣ v 1 ⃗ ∣ = [ 1 , 1 ] 1 2 + 1 2 = [ 1 2 , 1 2 ]
\vec{u_1} =
\frac{\vec{v_1}}{|\vec{v_1}|} =
\frac{[1,1]}{\sqrt{1^2+1^2}}=
[\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}]
u 1 = ∣ v 1 ∣ v 1 = 1 2 + 1 2 [ 1 , 1 ] = [ 2 1 , 2 1 ] w 2 ⃗ = v 2 ⃗ − u 1 ⃗ ⋅ v 2 ⃗ ∗ u 1 ⃗ = [ 1 , − 1 ] − [ 1 2 , 1 2 ] ⋅ [ 1 , − 1 ] ∗ [ 1 2 , 1 2 ] = [ 1 , − 1 ] − 0 ∗ [ 1 2 , 1 2 ] = [ 1 , − 1 ] \begin{aligned}
\vec{w_2}=&\vec{v_2}-\vec{u_1}\cdot\vec{v_2}*\vec{u_1}\\
=&[1, -1] - [\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}]\cdot[1,-1]*[\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}]\\
=&[1, -1] - 0 * [\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}]\\
=&[1, -1]
\end{aligned} w 2 = = = = v 2 − u 1 ⋅ v 2 ∗ u 1 [ 1 , − 1 ] − [ 2 1 , 2 1 ] ⋅ [ 1 , − 1 ] ∗ [ 2 1 , 2 1 ] [ 1 , − 1 ] − 0 ∗ [ 2 1 , 2 1 ] [ 1 , − 1 ]
正规化可得u 2 ⃗ = w 2 ⃗ ∣ w 2 ⃗ ∣ = [ 1 2 , − 1 2 ]
\vec{u_2}=\frac{\vec{w_2}}{|\vec{w_2}|} = [\frac{1}{\sqrt{2}}, -\frac{1}{\sqrt{2}}]
u 2 = ∣ w 2 ∣ w 2 = [ 2 1 , − 2 1 ]
所以U = [ 1 2 1 2 1 2 − 1 2 ]
U=
\left[\begin{array}{cc}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}
\end{array}\right]
U = [ 2 1 2 1 2 1 − 2 1 ]
同理,可得V = [ 1 6 2 5 1 30 2 6 − 1 5 2 30 1 6 0 − 5 30 ]
V=
\left[\begin{array}{cc}
\frac{1}{\sqrt{6}} & \frac{2}{\sqrt{5}} & \frac{1}{\sqrt{30}}\\
\frac{2}{\sqrt{6}} & -\frac{1}{\sqrt{5}} & \frac{2}{\sqrt{30}}\\
\frac{1}{\sqrt{6}} & 0 & -\frac{5}{\sqrt{30}}
\end{array}\right]
V = ⎣ ⎢ ⎡ 6 1 6 2 6 1 5 2 − 5 1 0 3 0 1 3 0 2 − 3 0 5 ⎦ ⎥ ⎤
同时,特征值为λ 1 = 0 , λ 2 = 10 , λ 3 = 12 \lambda_1=0, \lambda_2=10, \lambda_3=12 λ 1 = 0 , λ 2 = 1 0 , λ 3 = 1 2 。
需要的是V V V 的转置矩阵V T = [ 1 6 2 6 1 6 2 5 − 1 5 0 1 30 2 30 − 5 30 ]
V^T=
\left[\begin{array}{cc}
\frac{1}{\sqrt{6}} & \frac{2}{\sqrt{6}}& \frac{1}{\sqrt{6}}\\
\frac{2}{\sqrt{5}} & -\frac{1}{\sqrt{5}} & 0\\
\frac{1}{\sqrt{30}} & \frac{2}{\sqrt{30}} & -\frac{5}{\sqrt{30}}
\end{array}\right]
V T = ⎣ ⎢ ⎡ 6 1 5 2 3 0 1 6 2 − 5 1 3 0 2 6 1 0 − 3 0 5 ⎦ ⎥ ⎤
对于S S S 来说,按大小顺序将特征值排序塞入到对角线上(这里使用U U U 或者V V V 的特征值都可以,因为总是一样)。因为这里做的是Full SVD,所以要在S S S 后面赛上0列向让它的大小为m × n m\times n m × n 。U U U 中的列成为左特征向量,V V V 中的列称为右特征向量。S = [ 12 0 0 0 10 0 ]
S=
\left[\begin{array}{cc}
\sqrt{12} & 0 &0\\
0 & \sqrt{10} & 0
\end{array}\right]
S = [ 1 2 0 0 1 0 0 0 ] A m n = U m m S m n V n n T = [ 1 2 1 2 1 2 − 1 2 ] [ 12 0 0 0 10 0 ] [ 1 6 2 6 1 6 2 5 − 1 5 0 1 30 2 30 − 5 30 ] = [ 3 1 1 − 1 3 1 ] \begin{aligned}
A_{mn}=U_{mm}S_{mn}V_{nn}^{T}=&
\left[\begin{array}{cc}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}
\end{array}\right]
\left[\begin{array}{cc}
\sqrt{12} & 0 &0\\
0 & \sqrt{10} & 0
\end{array}\right]
\left[\begin{array}{cc}
\frac{1}{\sqrt{6}} & \frac{2}{\sqrt{6}}& \frac{1}{\sqrt{6}}\\
\frac{2}{\sqrt{5}} & -\frac{1}{\sqrt{5}} & 0\\
\frac{1}{\sqrt{30}} & \frac{2}{\sqrt{30}} & -\frac{5}{\sqrt{30}}
\end{array}\right]=
\left[\begin{array}{cc}
3 & 1 & 1\\
-1 & 3 & 1
\end{array}\right]
\end{aligned} A m n = U m m S m n V n n T = [ 2 1 2 1 2 1 − 2 1 ] [ 1 2 0 0 1 0 0 0 ] ⎣ ⎢ ⎡ 6 1 5 2 3 0 1 6 2 − 5 1 3 0 2 6 1 0 − 3 0 5 ⎦ ⎥ ⎤ = [ 3 − 1 1 3 1 1 ]
Example of Reduced Singular Value Decomposition
要把一个数据压缩到K K K 维,做法与上面相同,但是只取V V V 的前K K K 列。作为数据的压缩结果。
Reference
https://davetang.org/file/Singular_Value_Decomposition_Tutorial.pdf