向量內積
這個基本上是中學當中數學課本上的概念,兩個向量的內積非常簡單,我們直接看公式回顧一下:
這里X和Y都是n維的向量,兩個向量能夠計算內積的前提是兩個向量的維度一樣。從上面公式可以看出來,兩個向量的內積就等於兩個向量對應各個維度的分量的乘積的和。
為了和矩陣乘法以及普通的乘法做區分,我們通常把兩個向量的內積寫成:\([x, y]=x^Ty\)。
這里有一個很重要的性質,對於一個向量而言,我們可以用歐幾里得公式計算它的長度。進一步,我們可以用向量的長度以及向量之間的夾角來表示向量的內積,如下:
其中的\(\theta\)是x和y向量之間的夾角,對於三維及以下空間內的向量,這一點非常直觀。對於高維度的向量,我們很難想象它的物理意義。不過沒有關系,我們一樣可以認為向量之間存在一個廣義超空間內的一個夾角。在機器學習領域,我們通常用這個夾角來反應向量之間的相似度。兩個向量越相似,那么它們之間的夾角應該越小,對應的cos余弦值應該越大。所以我們可以用兩個向量之間的余弦值來反應它們之間的相似度。余弦值的計算就源於此。
正交向量
從上面的公式可以看出來,向量的內積等於兩個向量長度乘上向量之間的夾角。對於非零向量而言,它們的長度都應該是大於0的。所以兩個向量的內積的大小,就完全取決於向量之間的夾角\(\theta\)。
如果\(\theta\)小於90°,那么\(\cos\theta>0\),那么內積為正值。如果\(\theta\)大於90°,那么余弦值為負值。所以我們可以通過余弦值正負判斷夾角是銳角還是鈍角。既然說到夾角,自然就離不開一種特殊情況——垂直。
如果是在二維平面當中,兩個向量夾角是90°,那么顯然這兩個向量垂直。在高維空間當中也是一樣,不過我們一般不說垂直,而是會換一個詞——正交。兩個非零向量的內積為0,說明兩個向量正交。
正交向量組
搞清楚了正交向量之后,正交向量組也就明確了。正交向量組是指一組兩兩正交且非零的向量組。
如果n維的向量組:\(a_1, a_2, \cdots,a_r\)兩兩正交,那么,它們一定線性無關。也就是說不存在一組不為零的系數\(\lambda\),使得:
這點很容易證明,由於向量組內向量均不為0,我們只需要在等式兩邊隨便乘上一個向量即可,假設我們乘的是\(a_1\)。由於它與其他向量兩兩正交,所以其他項全為0。如果要等式成立,那么必須要:
由於\(a_1\)不為0,那么\(a_1^Ta_1\)必然不為0,要使得等式成立,只能是\(\lambda_1\)為0。
規范正交基
我們把正交向量組的概念和基的概念融合,如果向量組\(e_1, e_2, \cdots, e_r\)是向量空間V的一個基。如果它們之間彼此正交,那么就稱它們是一組規范正交基。
對於向量a,我們可以很方便地求出它在規范正交基下各個維度的坐標:
也就是說向量a,在規范正交基下某一個維度的坐標, 等於它和這個維度的正交基向量的內積。
如果說我們已經知道向量空間V中的一組基是\(a_1, a_2, \cdots, a_r\),我們怎么求V的規范正交基呢?
這里要用到一個算法,叫做施密特算法。通過這個算法,我們可以通過向量空間的一組基來求出它的正交基。
這個算法很簡單,我們可以直接寫出它的公式:
我們隨便取兩個b向量乘一下就知道,b向量組之中兩兩正交。所以,我們只要將b向量組單位化一下,就可以求出對應的規范正交基了。
即:
這個算法雖然不難,但蠻重要。在機器學習領域中一些降維算法,很多都與施密特正交化方法有關。
正交矩陣
之前我們在介紹矩陣的時候,曾經說過,我們可以把一個矩陣看成是一個特定的向量組的結構。同樣,我們也可以把一個規范正交基向量組看成是一個矩陣,那么這個矩陣就稱為是正交矩陣。
它擁有如下性質:
其中I是單位矩陣,它的充要條件是矩陣A當中的每一列都是一個單位列向量,並且兩兩正交。
最后,我們看一下正交矩陣的性質。它的主要性質有三個:
-
如果A是正交矩陣,那么\(A^{-1}=A^T\),也是正交矩陣,並且\(|A|=\pm 1\)。
-
如果A和B都是正交矩陣,並且它們階數一樣,那么AB也是正交矩陣。
-
如果A是正交矩陣,向量y經過A變換之后行列式保持不變。
這三個性質都很簡單,我們通過正交矩陣的性質基本上都可以直接推導得到,或者是非常直觀,和我們的直覺吻合。其實怎么推導不是重點,對於算法工程師而言,更重要的是理解這些概念的意思,並且將它與算法模型當中起到的功能聯系起來,這才是最重要的事情。
今天關於正交向量和矩陣的內容就到這里,如果覺得有所收獲,請順手點個關注或者轉發吧,你們的支持是我最大的動力。