2.1 標(biāo)量、向量、矩陣和張量
標(biāo)量(scalar):一個數(shù)
向量(vector):一列數(shù)
矩陣(matrix):二維數(shù)組
張量(tensor):多維數(shù)組(n>=3)
轉(zhuǎn)置(transpose):矩陣的轉(zhuǎn)置是以對角線為軸的鏡像,標(biāo)量的轉(zhuǎn)置等于它本身。
廣播(broadcasting):

import numpy as np
###1###
a = np.array([0, 1, 2])
b = np.array([5, 5, 5])
a + b #---> [5,6,7],這個容易理解
###2###
a + 5 #--> [5,6,7],5被轉(zhuǎn)化為[5,5,5](其實這種復(fù)制并沒有發(fā)生,為了便于理解)
###3###
M = np.ones((3, 3))
"""
M
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
"""
M+a #-->a broadcast到第2,3行,與M的shape匹配
###4###
a = np.arange(3) #shape:(3,)
b = np.arange(3)[:, np.newaxis] #shape:(3, 1)
print(a)
print(b)
"""
[0 1 2]
[[0]
[1]
[2]]
"""
a+b #a broadcast到第2,3行,b broadcast到第2,3列,相加得到
"""
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]]),shape:(3,3)
"""
broadcasting rules:
1.兩個數(shù)組維數(shù)不同,則維數(shù)較小的數(shù)組的shape將在其前側(cè)或左側(cè)進(jìn)行填充
2.兩個數(shù)組的shape不匹配但有維度等于1,則維度中形狀等于1的數(shù)組將被拉伸進(jìn)行匹配。
3.兩個數(shù)組的shape不匹配且不存在維度為1,則報錯
###1###
M = np.ones((2, 3))
a = np.arange(3)
M+a
# M.shape = (2, 3)
# a.shape = (3,)--rule 1--> (1,3) --rule 2--> (2,3)
###2###
a = np.arange(3).reshape((3, 1))
b = np.arange(3)
a+b
# a.shape = (3, 1) --rule 2-->(3,3)
# b.shape = (3,)--rule 1-->(1,3)--rule 2-->(3,3)
###3###
M = np.ones((3, 2))
a = np.arange(3)
M + a
"""ValueError: operands could not be broadcast together with shapes (3,2) (3,) """
# M.shape = (3, 2)
# a.shape = (3,)--rule 1-->(1,3)--rule 2-->(3,3)
"""如果希望數(shù)組a的shape是在其他位置進(jìn)行填充,則可使用np.newaxis"""
M + a[:, np.newaxis]
2.2 矩陣和向量相乘
點積(dot product):C = AB.
Hadamard 乘積(Hadamard product):C = A ⊙ B
2.3 單位矩陣和逆矩陣
單位矩陣(identity matrix):所有沿主對角線的元素都是 1,而所有其他位置的元素都是 0。
逆矩陣(matrix inversion):A的矩陣逆記作:

滿足:

2.4 線性相關(guān)和生成子空間
列空間(column space):由A的各列張成的Rm的子空間稱為A的列空間
線性相關(guān)(linear dependence):某個向量是一組向量中某些向量的線性組合
線性無關(guān)(linearly independent):一組向量中的任意一個向量都不能表示成其他向量的線性組合
方陣(square):m = n,并且所有列向量都是線性無關(guān)的。
一個列向量線性相關(guān)的方陣被稱為奇異的(singular)。
2.5 范數(shù)
Lp 范數(shù)定義如下:

范數(shù)是滿足下列性質(zhì)的任意函數(shù):
? f(x)=0?x=0
? f (x + y) ≤ f (x) + f (y) ( 三角不等式(triangle inequality))
? ?α ∈ R, f(αx) = |α|f(x)
當(dāng) p = 2 時,L2 范數(shù)被稱為 歐幾里得范數(shù)(Euclidean norm),也可記做||x||。它表示從原點 出發(fā)到向量 x 確定的點的歐幾里得距離。
L1范數(shù):

L0范數(shù):非零元素的個數(shù)。但是這個術(shù)語在數(shù)學(xué)意義上是不對的,向量的非零元素的數(shù)目不是范數(shù),因為對向量縮放 α 倍不會改變該向量非零元素的數(shù)目
L∞ 范數(shù),也被稱為 最大范數(shù)(max norm),表示向量中具有最大幅值的元素的絕對值: ||x||∞ =max|xi|.
Frobenius 范數(shù)(Frobenius norm):衡量矩陣的大小

L0,L1,L2范數(shù)
- L0的求解是NP-hard問題
- 機(jī)器學(xué)習(xí)中,使用L0和L1范數(shù)可以求得稀疏解(易于特征篩選,模型的可解釋性變強(qiáng)),L2范數(shù)則會獲得稠密解
- L2范數(shù)越小,可以使得w的每個元素都很小,接近于0,但L1范數(shù)不同的是他不會讓它等于0而是接近于0。w越小,模型越簡單,越不容易產(chǎn)生過擬合。
圖來源:《Pattern Recognition And Machine Learning 》
2.6 特殊類型的矩陣和向量
對角矩陣(diagonal matrix)只在主對角線上含有非零元素,其他位置都是零。
對稱矩陣(symmetric matrix)是轉(zhuǎn)置和自己相等的矩陣
單位向量(unit vector)是具有 單位范數(shù)(unit norm)的向量:
如果 x?y = 0,那么向量 x 和向量 y 互相正交(orthogonal)。
如果這些向量不僅互相正交,并且范數(shù)都為 1,那么我們稱它們是標(biāo)準(zhǔn)正交(orthonormal)。
正交矩陣(orthogonal matrix)是指行向量和列向量是分別標(biāo)準(zhǔn)正交的方陣:


2.7 特征分解
特征分解(eigendecomposition):將矩陣分解成一組特征向量和特征值。
方陣 A的特征向量(eigenvector)是指與 A 相乘后相當(dāng)于對該向量進(jìn)行縮放 的非零向量 v:Av = λv.標(biāo)量λ被稱為這個特征向量對應(yīng)的特征值(eigenvalue)。
不是每一個矩陣都可以分解成特征值和特征向量。在某些情況下,特征分解存在,但是會涉及到復(fù)數(shù),而非實數(shù)。
假設(shè)矩陣A有n個線性無關(guān)的特征向量 {v(1),...,v(n)},對應(yīng)著特征值 {λ1,...,λn}。
記V = [v(1), . . . , v(n)]. 類似地,我們也可以將特征值連接成一個向量 λ = [λ1, . . . , λn]?。 因此A的特征分解(eigendecomposition)可以記作:

每個實對稱矩陣都可以分解成實特征向量和實特征值:

所有特征值都是正數(shù)的矩陣被稱為正定(positive definite);所有特征值都是非負(fù)數(shù)的矩陣被稱為半正定(positive semidefinite)。同樣地,所有特征值都是負(fù)數(shù)的矩陣被稱為負(fù)定(negative definite);
特征向量和特征值的作用效果。特征向量和特征值的作用效果的一個實例。在這里,矩陣 A 有兩個標(biāo)準(zhǔn)正交的特征向量,對應(yīng)特征值為 λ1 的 v(1) 以及對應(yīng)特征值為 λ2 的 v(2)。(左) 我 們畫出了所有的單位向量 u ∈ R2 的集合,構(gòu)成一個單位圓。(右) 我們畫出了所有的 Au 點的集 合。通過觀察 A 拉伸單位圓的方式,我們可以看到它將 v(i) 方向的空間拉伸了 λi 倍。
2.8 奇異值分解
奇異值分解(singular value decomposition, SVD):

假設(shè) A 是一個 m×n 的矩陣,那么 U 是一個 m×m 的矩陣,D 是一個 m×n 的矩陣,V 是一個 n × n 矩陣。矩陣 U 和 V 都被定義為正 交矩陣,而矩陣 D 被定義為對角矩陣。注意,矩陣 D 不一定是方陣。
SVD 最有用的一個性質(zhì)可能是拓展矩陣求逆到非方矩陣上。
2.9 Moore-Penrose 偽逆
Moore-Penrose 偽逆(Moore-Penrose pseudoinverse):矩陣 A 的偽逆定義為:

計算偽逆的實際算法沒有基于這個定義,而是使用下面的公式:

其中,矩陣 U,D 和 V 是矩陣 A奇異值分解后得到的矩陣。對角矩陣 D 的偽逆
D+ 是其非零元素取倒數(shù)之后再轉(zhuǎn)置得到的。
2.10 跡運(yùn)算
跡運(yùn)算返回的是矩陣對角元素的和:

Frobenius 范數(shù)(Frobenius norm):

2.11 行列式
行列式,記作det(A),是一個將方陣 A 映射到實數(shù)的函數(shù)。行列式等于矩陣特征值的乘積。行列式的絕對值可以用來衡量矩陣參與矩陣乘法后空間擴(kuò)大或者縮小了多少。如果行列式是 0,那么空間至少沿著某一維完全收縮了,使其失去了所有的體積。如果行列式是 1,那么這個轉(zhuǎn)換保持空間體積不變。
2.12 實例:主成分分析
主成分分析(principal components analysis, PCA):
假設(shè)在 Rn 空間中我們有 m 個點 {x(1), . . . , x(m)},我們希望對這些點進(jìn)行有損壓縮。
一種編碼這些點的方式是用低維表示。每個點 x(i) ∈ Rn,會有一個對應(yīng)的編碼向量 c(i) ∈ Rl(其中l(wèi)<n)
給定編碼函數(shù)f(x),使得f(x) = c;給定解碼函數(shù),使得x ≈ g(f(x))。
- 為了簡化解碼器,我們使用矩陣乘法將編碼映射回 Rn,即 g(c) = Dc,其中 D ∈ Rn×l 是定義解碼的矩陣
- D 的列向量彼此正交(除非 l = n,否則嚴(yán)格意義上 D 不是一個 正交矩陣)
定義目標(biāo)函數(shù):最小化原始輸入向量 x 和重構(gòu)向量 g(c?) 之間的距離。我們使用范數(shù)來衡量它們之間的距離(L2 范數(shù)):
求導(dǎo)得到:則記
求解編碼矩陣D,由于用相同的矩陣 D 對所有點進(jìn)行解碼,即最小化所有x與c之間的誤差,需使用Frobenius 范數(shù),得到
當(dāng)l=1時,此時D為一維列向量,將D簡化為d,得到:
記
得到:
最優(yōu)的 d 是 X?X 最大特征值對應(yīng)的特征向量。
以上推導(dǎo)特定于 l = 1 的情況,僅得到了第一個主成分。更一般地,當(dāng)我們希望得到主成分的基時,矩陣 D 由前 l 個最大的特征值對應(yīng)的特征向量組成。
附1:
矩陣求導(dǎo):(參考:https://github.com/soloice/Matrix_Derivatives)
- 變量多次出現(xiàn)的求導(dǎo)法則:若某個變量在函數(shù)表達(dá)式中多次出現(xiàn),可以單獨(dú)計算函數(shù)對?變量的每一次出現(xiàn)的導(dǎo)數(shù),再把結(jié)果加起來。
f(x)=(2x+1)x+x^2
=> f=(2x_1+1)x_2+x_3^2
=> ?f=2x_2+2x_1+1+2x_3
=> 6x+1- 向量求導(dǎo)的鏈?zhǔn)椒▌t
- 實值函數(shù)對向量求導(dǎo)
變量多次出現(xiàn)的求導(dǎo)法則, x_c表示將x的此次出現(xiàn)不視作自變量同上- 向量量數(shù)乘求導(dǎo)公式
- 矩陣跡求導(dǎo)
上式證明- 矩陣求導(dǎo)的鏈?zhǔn)椒▌t
設(shè)y=f(U),U=G(x),則:- 線性變換的導(dǎo)數(shù)
設(shè)
則:
附2:
推導(dǎo)1:線性方程組Ax=b的最?二乘解
使用線性變換的求導(dǎo)公式
推導(dǎo)2:F范數(shù)的求導(dǎo)公式推導(dǎo)
推導(dǎo)3:
學(xué)習(xí)仿射變換






































