由于要做遷移學習項目, 按照李宏毅給出的學習路線圖, 計劃分别看無監督學習(第九章), 異常檢測(第十章), 遷移學習(第12章). (但可能要鴿了, 馬上要開始項目, 接下來一段時間直接看遷移學習相關. 希望以後有機會回來填坑.)
目錄
無監督學習介紹
無監督學習
聚類
K-means
層次聚類HAC
降維
降維有助于學習的原因
如何降維
PCA數學推導
降到1維
降到多元空間
求解PCA-拉格朗日乘子法
計算w1
計算w2
去相關性
PCA算法原理
重建元件
PCA所得W最小化 重建誤差證明
自編碼器
無監督學習介紹
無監督學習
無監督學習(Unsupervised Learning)可以分為兩種:
1. 化繁為簡:聚類(Clustering), 降維(Dimension Reduction)
2. 無中生有: Generation
無監督學習(Unsupervised Learning)通常隻會擁有xy中的一側(x或y).
1. 化繁為簡: 複雜的input->簡單的output,此時訓練集隻有輸入x,而沒有輸出y. 比如把unlabel的樹圖檔轉變為一棵抽象的樹.
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYTMfhHLlN3XnxCM38FdsYkRGZkRG9lcvx2bjxSNx8VZ6l2cs0TRHJGa4JDW1ljMi5mRHJWQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4cDNwQzMxkTM0ETOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2. 無中生有: 給function一個不同數字,生成不同的圖像,此時訓練集沒有輸入x,隻有輸出y.
聚類
Clustering聚類,把相近的樣本劃分為同一類,比如對無标簽圖檔進行分類,打上cluster 1、2、3的标簽,這個分類過程化繁為簡.
目前分幾個cluster的問題主要還依據經驗標明.
K-means
聚類中最常用的方法K-means. 步驟:
1. 已有unlabeled data ,要劃分為K個cluster.
$$ X = \left\{ {x^{1},\cdots,x^{n},\cdots,x^{N}} \right\} $$
其中每個樣本用一個向量表示.
2. 每個簇選一個樣本向量作為center ,K個簇需要K個center初始值.
3. 周遊所有的樣本x,判斷其所屬簇,如果與第i個簇的center 最接近,則歸于該簇.
b^n_i=1表示第n個樣本屬于第i個簇,b^n_i=0表示不屬于:
$$ b_{i}^{n} \begin{cases}1 & x^{n} \text { is most "close" to } c^{i} \\ 0 & \text { Otherwise }\end{cases} $$
4. 更新center:把每個簇裡所有樣本均值作為新的center值,即
$$ c^{i} = {{\sum_{x^{n}}{b_{i}^{n}x^{n}}}/{\sum_{x^{n}}b_{i}^{n}}} $$
反複進行3,4操作.
注:如果不從原先的data set裡取center的初始值,可能會導緻部分cluster沒有樣本點
層次聚類HAC
Hierarchical Agglomerative Clustering
假設有5個樣本點,聚類步驟:
1. 建立樹結構
對5個樣本點兩兩計算相似度,挑出最相似的一對,設為樣本點1和2.
将樣本點1和2合并(可以對兩個vector取平均),生成代表這兩個樣本點的新結點.
此時隻剩下4個結點,兩兩計算相似度, 重複上述步驟進行樣本點的合并,直到隻剩根結點.
過程類似建立Huffman 樹,差別是Huffman依據詞頻,HAC依據相似度建樹.
2. 選取門檻值
在構造好的樹上橫着切一刀,相連的葉結點屬于同一個簇.
不同顔色的橫線和葉結點上不同顔色的方框對應着切法與cluster的分法
HAC和K-means最大差別: 如何決定簇的數量.
在K-means直接決定K值;
HAC決定這一刀切在樹的哪裡, 不需要精确知道需要分幾類.
降維
聚類clustering缺點: 以偏概全,強迫每個樣本屬于某個簇.
降維Dimension Reduction即分布式表示Distributed Representation, 可用兩個角度了解.
1. 分布式表示Distributed Representation的角度: 樣本具有多個簇的特征, 用向量表示樣本比單一類别更好, 向量每一維都代表object的某種屬性.
例子: 小傑的念能力分布,不僅僅歸為強化系.
強化系 | 0.70 |
放出系 | 0.25 |
變化系 | 0.05 |
操作系 | 0.00 |
具現化系 | 0.00 |
特質系 | 0.00 |
2. 降維(Dimension Reduction): 原樣本高維(image),用其特值來描述可轉變為低維空間.
降維有助于學習的原因
設資料呈3D螺旋式分布,用3D空間描述很浪費,把卷攤平後用2D的空間即可.
MNIST(手寫數字集),每一張圖檔有28*28維,但大多數其他的28*28維向量表示的圖檔,都不像數字,是以描述數字需要的次元可能遠小于28*28.
例: 幾張表示“3”的圖檔,可以用一個端正的"3"的特征, 加角度就可以多描述原先28*28 維的圖像.
抓住角度的變化即可描述28維空間中的變化. 28維pixel=樊一翁的胡子; 1維的角度=他的頭
如何降維
降維要找一個function,其輸入原始的x,輸出次元更小的z.
最簡單的方法是特征選擇Feature Selection,即拿掉一些直覺上就對結果沒有影響的次元, 如圖隻需要x2次元:
該方法有時無法使用,如下圖中的螺旋卷任何一個dimension都不能被拿掉:
另一個常見的方法PCA(Principe Component Analysis): 其降維用線性函數,對輸入x線性變換(linear transform)得輸出z. 系數W由PCA找出.
$$ 𝑧=𝑊𝑥 $$
PCA數學推導
PCA算法認為降維就是線性function,輸入x與輸出z之間是線性變換(linear transform),PCA 目标: 找變換系數W.
降到1維
假設把x投影到1維向量z (也就是标量),此時w為行向量
$$ z_{1} = w^{1} \cdot x $$
其中w^1表示W的第一行,x與w^1做内積.
令w^1的長度為1,此時z_1就是在w^1方向上的投影, 投影的值即内積結果:
$$ \left\| w^{1} \right\|_{2} = 1 $$
w^1目标
要找什麼樣的w^1
例子: 寶可夢樣本點分布如下,橫坐标代表寶可夢的攻擊力,縱坐标代表防禦力,任務是把二維分布投影到一維空間上.
選擇w1使得經過投影之後得到的分布越大越好,不同樣本點之間的差別明顯. 即方差越大越好, 如:
右上方向比左上得到的方差大.
不希望投影後樣本點通通擠在一起,導緻點與點之間的奇異度消失.
方差計算公式:即各樣本點與平均值距離求平方的和, 再除以樣本數.
$$ Var\left( z_{1} \right) = \frac{1}{N}{\sum_{z_{1}}\left( {z_{1} - \overset{-}{z_{1}}} \right)^{2}},\left\| w^{1} \right\|_{2} = 1 $$
降到多元空間
假設是要降到二維空間, 就再找一個w2把x投影到z2:
$$ Var\left( z_{2} \right) = \frac{1}{N}{\sum_{z_{2}}\left( {z_{2} - \overset{-}{z_{2}}} \right)^{2}},\left\| w^{2} \right\|_{2} = 1,w^{1} \cdot w^{2} = 0 $$
z1表示在w1方向上的投影; z2表示在w2方向上的投影.
z1, z2串起來就得到z,w1, w2分别是W的第1,2行:
$$ z_{1} = w^{1} \cdot x,\\ z_{2} = w^{2} \cdot x,\\z = Wx $$
求w1與求w2的表達式完全相同, 如果不加以限制,則找到的實際上是相同的值.
故w1, w2必須互相正交:
$$ w^{1} \cdot w^{2} = 0 $$
将所有找到的w作為一行排起來, 得到W是正交矩陣(orthogonal matrix):
$$ W = \begin{bmatrix} \left( w^{1} \right)^{T} \\ \left( w^{2} \right)^{T} \\ \vdots \\ \end{bmatrix} $$
求解PCA-拉格朗日乘子法
經典方法-拉格朗日乘數法(Lagrange multiplier)求解PCA的數學推導過程.
(求解PCA,可以調用套件,此外也可以把PCA描述成neural network,然後用gradient descent的方法來求解.
拉格朗日乘子法的詳細介紹可參考:
Using Lagrange multiplier [Bishop, Appendix E])
注:w和x均為列向量,下文中類似w*x表示的是矢量内積,而w^T*x表示的是矩陣相乘
計算w1
投影z1:
$$ z_{1} = w^{1} \cdot x $$
z1的均值(對樣本點求和與w1無關, 是以w1可以提出來):
$$ \overset{-}{z_{1}} = \frac{1}{N}{\sum z_{1}} = \frac{1}{N}{\sum{w^{1} \cdot x}} \\= w^{1} \cdot \frac{1}{N}{\sum x} = w^{1} \cdot \overset{-}{x} $$
z1的方差:
$$ Var\left( z_{1} \right) = \frac{1}{N}{\sum_{z_{1}}{\left( {z_{1} - \overset{-}{z_{1}}} \right)^{2} \\= \frac{1}{N}{\sum_{x}\left( {w^{1} \cdot x - w^{1} \cdot \overset{-}{x}} \right)^{2}}}} \\= \frac{1}{N}{\sum\left( {w^{1} \cdot \left( {x - \overset{-}{x}} \right)} \right)^{2}} $$
此處求兩個向量内積的平方用到公式:
$$ \left( {a \cdot b} \right)^{2} = \left( {a^{T}b} \right)^{2} \\= a^{T}ba^{T}b \\= a^{T}b\left( {a^{T}b} \right)^{T}\\ = a^{T}bb^{T}a $$ 其中(a^T*b)^T直接加了一個轉置是因為标量轉置不變 |
代入提出w1後得:
$$ Var\left( z_{1} \right) = \frac{1}{N}{\sum{\left( w^{1} \right)^{T}\left( {x - \overset{-}{x}} \right)\left( {x - \overset{-}{x}} \right)^{T}w^{1}}} \\= \left( w^{1} \right)^{T}\frac{1}{N}{\sum{\left( {x - \overset{-}{x}} \right)\left( {x - \overset{-}{x}} \right)^{T}}}w^{1} \\= \left( w^{1} \right)^{T}Cov\left( x \right)w^{1} $$
其中求和部分就代表x的協方差矩陣. 令S代表x的協方差矩陣:
$$ S = Cov\left( x \right) = \frac{1}{N}{\sum{\left( {x - \overset{-}{x}} \right)\left( {x - \overset{-}{x}} \right)^{T}}} $$
代入S得最大化目标z1的方差(投影定理, 瑞利熵):
$$ \left( w^{1} \right)^{T}Sw^{1} $$
但此處優化目标w1是有限制條件(constraint)的, 否則可以取無窮大.
$$ \left\| w^{1} \right\|_{2}=\left( w^{1} \right)^{T}w^{1} = 1 $$
即:
$$ \mathop{\arg\max}_{w^{1}} \left( w^{1} \right)^{T}Sw^{1}\\s.t. \left( w^{1} \right)^{T}w^{1} = 1 $$
有了優化目标, 接下來解優化問題.
先看優化問題結論:
w1是這個協方差矩陣S的特征向量(eigenvector),其對應特征值(eigenvalue)為最大的λ.
此處注意S作為協方差矩陣, 具有性質:
對稱的(symmetric);
半正定的(positive-semidefine), 即所有特征值(eigenvalues)非負的(non-negative).
使用拉格朗日乘數法,利用目标和限制條件構造函數:
$$ g\left( w^{1} \right) = \left( w^{1} \right)^{T}Sw^{1} - \alpha\left( {\left( w^{1} \right)^{T}w^{1} - 1} \right) $$
其中左邊一項是優化目标, 右邊一項是乘子*限制條件.
g對w1求導為矩陣求導的第一種情況, f(x)為标量函數, x為向量.
$$ f(x)=f(x_1,...,x_n)\\ x=[x_1,...x_n]^\mathrm T\\ \frac{df(x)}{dx}= \begin{bmatrix} \frac{\partial f(x)}{\partial x_1} \\ \vdots \\ \frac{\partial f(x)}{\partial x_n} \\ \end{bmatrix} $$
詳細可參考:
https://blog.csdn.net/lagoon_lala/article/details/116506042#t10
對w中的每一個元素偏微分, 令其為0, 結果寫在一個列向量中:
$$ {{\partial g\left( w^{1} \right)}/{\partial w_{1}^{1} = 0}}\\ \Rightarrow 0=\frac{ \partial \left( w^{1} \right)^{T}Sw^{1}}{\partial w_{1}^{1}}-\frac{ \alpha\partial \left( {\left( w^{1} \right)^{T}w^{1} - 1} \right)}{\partial w_{1}^{1}}\\ \Rightarrow 0=(S+S^T)w^{1}_{1} - 2\alpha w^{1}_{1}\\ \mathop\Longrightarrow^{S對稱} 0=2Sw^{1}_{1} - 2\alpha w^{1}_{1} \\{{\partial g\left( w^{1} \right)}/{\partial w_{2}^{1} = 0}} $$
整理上述推導式,可以得到:
$$ Sw^{1} - \alpha w^{1} = 0\\Sw^{1} = \alpha w^{1} $$
該式含義即為: w1是S的特征向量(eigenvector).
滿足的特征向量有很多,要找最大化w^TSw的特征向量作為w. 代入上式:
$$ \left( w^{1} \right)^{T}Sw^{1} \\ \mathop{\Longrightarrow}\limits^{Sw^{1} = \alpha w^{1}} \alpha\left( w^{1} \right)^{T}w^{1} \\ \mathop{\Longrightarrow}\limits^{\left( w^{1} \right)^{T}w^{1}=1} \alpha $$
此時最大化w1^TSw1等價于最大化α,當w為最大λ對應的特征向量時, α最大.
特征值最大時對應的那個特征向量就是我們要找的目标w.
計算w2
目标: 尋找w2, 最大化方差w2^TSw2, 限制條件為w2長度為1, w2與w1正交(orthogonal).
$$ \mathop{\arg\max}_{w^{2}} \left( w^{2} \right)^{T}Sw^{2}\\s.t. \left( w^{2} \right)^{T}w^{2} = 1,\left( w^{2} \right)^{T}w^{1} = 0 $$
結論:w2也是協方差矩陣S的特征向量,對應第二大的特征值λ.
拉格朗日乘數法求解:
$$ g\left( w^{2} \right) = \left( w^{2} \right)^{T}Sw^{2} - \alpha\left( {\left( w^{2} \right)^{T}w^{2} - 1} \right) - \beta\left( {\left( w^{2} \right)^{T}w^{1} - 0} \right) $$
其中, 第一項為最大化目标,後兩項為兩個限制條件, 分别給予不同的乘子.
對w2中的每個元素做偏微分, 整理後得到:
$$ {{\partial g\left( w^{2} \right)}/{\partial w_{1}^{2} = 0}}\\{{\partial g\left( w^{2} \right)}/{\partial w_{2}^{2} = 0}}\\Sw^{2} - \alpha w^{2} - \beta w^{1} = 0 $$
上式兩側同乘w1^T: $$ \left( w^{1} \right)^{T}Sw^{2} - \alpha\left( w^{1} \right)^{T}w^{2} - \beta\left( w^{1} \right)^{T}w^{1} = 0\\ \mathop{\Longrightarrow}\limits^{\left( w^{1} \right)^{T}w^{1}=1}_{\left( w^{1} \right)^{T}w^{2}=0} \left( w^{1} \right)^{T}Sw^{2} - \alpha\cdot 0 - \beta\cdot 1 = 0 $$ 其中向量w1*矩陣S*向量w2=标量, 是以可以直接加轉置. $$ \left( w^{1} \right)^{T}Sw^{2} = \left( {\left( w^{1} \right)^{T}Sw^{2}} \right)^{T} \\ = \left( w^{2} \right)^{T}S^{T}w^{1} \\ \mathop{\Longrightarrow}\limits^{S=S^{T}} \left( w^{2} \right)^{T}Sw^{1}\\ \mathop{\Longrightarrow}\limits^{Sw^{1} = \lambda_{1}w^{1}} \lambda_{1}\left( w^{2} \right)^{T}w^{1} \\\mathop{\Longrightarrow}\limits^{\left( w^{2} \right)^{T}w^{1}=0}0 $$ 是以β必為0: $$ 0 - \alpha\cdot 0 - \beta\cdot 1 = 0 $$ |
代入β, 原式可化為:
$$ Sw^{2} - \alpha w^{2} - \beta w^{1} = 0\\ \mathop{\Longrightarrow}\limits^{\beta=0} Sw^{2} = \alpha w^{2} $$
與計算w1時類似, 最大化目标w2^T*S*w2=α=λ, 但此時不能選擇最大的λ, 因為要與w1正交, 是以選第二大的特征值λ. 因為S是正交矩陣, 是以w1, w2一定正交.
去相關性
PCA-decorrelation
z=Wx, z協方差矩陣是一個對角diagonal陣:
$$ z = Wx\\ Cov\left( z \right) = D $$
decorrelation即PCA使不同次元間的相關度為0:
所得feature z之間沒有相關性(correlation),無需考慮不同次元之間交叉項,減少model所需的參數量, model得到簡化,避免過拟合.
推導
z的協方差矩陣(計算w1時已經推導過):
$$ Cov\left( z \right) = \frac{1}{N}{\sum{\left( {z - \overset{-}{z}} \right)\left( {z - \overset{-}{z}} \right)^{T}}} \\= WSW^{T},\\ S = Cov\left( x \right) $$
W^T展開, 把S乘進去, 因為w1是S的特征向量, 是以可以将S進行代換:
$$ Cov\left( z \right) = WS\begin{bmatrix} w^{1} & \cdots & w^{K} \\ \end{bmatrix} \\ = W\left\lbrack {S\begin{matrix} w^{1} & \cdots & {Sw^{K}} \end{matrix}} \right\rbrack \\ = W\left\lbrack {\lambda_{1}\begin{matrix} w^{1} & \cdots & {\lambda_{K}w^{K}} \end{matrix}} \right\rbrack $$
再把W乘進去, 因為w1是W的第一行, 而W是正交矩陣,特征值不同的特征向量相乘等于0, w1*w1等于1, 是以W*w1=e1
$$ Cov\left( z \right) = \left\lbrack {\lambda_{1}\begin{matrix} {Ww}^{1} & \cdots & {\lambda_{K}{Ww}^{K}} \\ \end{matrix}} \right\rbrack \\ = \left\lbrack {\lambda_{1}\begin{matrix} e_{1} & \cdots & {\lambda_{K}e_{K}} \\ \end{matrix}} \right\rbrack = D $$
其中, e1向量代表第一維是1, 其他都是0. eK向量代表第K維是1, 其他都是0.
可以看出, 該矩陣為對角陣.
PCA算法原理
從元件和SVD分解的角度了解PCA,PCA的神經網絡實作方式,寶可夢、手寫數字分解、人臉圖像分解例子. 介紹NMF算法的基本思想.
重建元件
Reconstruction Component
手寫數字識别中數字由類似于筆畫的基礎元件(basic component)組成,基礎元件為向量, 記做u1, u2… ,以MNIST為例,筆畫也一個28×28的vector,把幾個vector加起來,就組成了一個28×28的數字圖像.
寫成表達式:
$$ x \approx c_{1}u^{1} + c_{2}u^{2} + \cdots + c_{K}u^{K} + \overset{-}{x} $$
某個數字的pixel=k個元件的權重和+所有image的平均
該式各部分含義:
x | 數字中的pixel |
$$ \sum c_iu^I $$ | k個元件的權重和 |
$$ \bar x $$ | 所有image的平均 |
比如數字'7'=u1+u3+u5,
其系數c:
$$ c = \begin{bmatrix} 1 \\ 0 \\ 1 \\ 0 \\ 1 \\ \vdots \\ \end{bmatrix} $$
用c1~cK來表示一張數字圖像,如果元件的數目k遠小于pixel數目,則描述比較有效:
$$ c = \begin{bmatrix} c_{1} \\ c_{2} \\ \vdots \\ c_{K} \\ \end{bmatrix} $$
哈哈哈好像五筆打字
把平均移到左邊, 則剩下一堆元件的線性組合. 定義元件的線性組合為x hat:
$$ x - \overset{-}{x} \approx c_{1}u^{1} + c_{2}u^{2} + \cdots + c_{K}u^{K} = \hat{x} $$
目前不知道元件u的值,找這樣k個vector,使得x hat與x-x bar越接近越好.
定義重建誤差Reconstruction error:真實值與元件重建值的差
$$ \left\| {~\left( x - \overset{-}{x} \right) - \hat{x}} \right\|_{2} $$
最小化目标: 找k個向量u使重建誤差最小.
$$ L = {\min\limits_{\{{u^{1},\ldots,u^{K}}\}}{\sum\left\| {\left( {x - \overset{-}{x}} \right) - \left( {\sum_{k = 1}^{K}{c_{k}u^{k}}} \right)} \right\|_{2}}} $$
其中:
$$ \hat x={\sum_{k = 1}^{K}{c_{k}u^{k}}} $$
PCA所得W最小化 重建誤差證明
回顧PCA,PCA是找一個矩陣W将輸入x映射到z. 展開後形如:
$$ z = Wx\\ \begin{bmatrix} z_{1} \\ z_{2} \\ \vdots \\ z_{K} \\ \end{bmatrix} = \begin{bmatrix} \left\lbrack w_{1} \right\rbrack^{T} \\ \left\lbrack w_{2} \right\rbrack^{T} \\ \vdots \\ \left\lbrack w_{K} \right\rbrack^{T} \\ \end{bmatrix}x $$
其中w1~wK都是協方差矩陣的特征向量.
通過PCA解得的W可使重建誤差最小化. 以下簡單證明.
1. 最小化目标:重建誤差
資料集中某樣本x1-x bar的重建元件:
$$ x^{1} - \overset{-}{x} \approx c_{1}^{1}u^{1} + c_{2}^{1}u^{2} + \cdots $$
其中c_1^1的下标代表是u1的系數, 上标代表是重建x1的元件.
将u1~uk用一排向量, 即K個列的矩陣來表示:
系數c1~cK排成一列, 矩陣U*系數向量c可得x1的重建誤差向量x1-x bar.
其他的樣本也類似排列, 可得到矩陣X, 其列數(有多少列)為資料樣本數目,
目标是使u矩陣與c矩陣相乘後接近X矩陣, 即最小化重建誤差:
2. 解最小化重建誤差的的u
解法參考SVD:
http://speech.ee.ntu.edu.tw/~tlkagk/courses/LA_2016/Lecture/SVD.pdf
每一個句子X可以通過奇異值分解SVD拆成矩陣U、Σ、V的乘積,其中U為m×k維, Σ為k×k維, V為k×n維. k為元件數目.
使用SVD拆解後的三個矩陣相乘,是跟等号左邊的矩陣X最接近的.
U的K列為正交向量, 其對應特征值為協方差矩陣S=XX^T的k個最大特征值. 即U等于PCA的k個解. PCA所得w其實就是元件. 降維的結果就是參數c_i.
(簡單來說就是,用PCA對x進行降維的過程中,我們要找的投影方式就相當于恰當的元件,投影結果就相當于這些元件各自所占的比例)
參考:
https://sakura-gh.github.io/ML-notes/ML-notes-html/18_Unsupervised-Learning-PCA-part2.html
下式簡單示範了将一個樣本點劃分為k個元件的過程,其中c是每個元件的比例;把x劃分為k個元件即從n維投影到k維空間,c是投影結果
$$\hat x= \left[ \begin{matrix} u_1\ u_2\ ...\ u_k \end{matrix} \right ]\cdot \left[ \begin{matrix} c_1\\ c_2\\ \vdots\\ c_k \end{matrix} \right ]\\ \\ \left[ \begin{matrix} x_1\\ x_2\\ \vdots\\ x_n \end{matrix} \right ]=\left [ \begin{matrix} u_1^1\ u_2^1\ ... u_k^1 \\ u_1^2\ u_2^2\ ... u_k^2 \\ \vdots\\ u_1^n\ u_2^n\ ... u_k^n \end{matrix} \right ]\cdot \left [ \begin{matrix} c_1\\ c_2\\ \vdots\\ c_k \end{matrix} \right] $$
注:x和u均為n維列向量
自編碼器
PCA與神經網絡關系
已知PCA的K個w就是K個元件u
$$ \left\{ {w^{1},w^{2},\ldots w^{K}} \right\}\Rightarrow\left\{ {u^{1},u^{2},\ldots u^{K}} \right\} $$
重建誤差x hat是元件做線性組合的結果, 目标是最小化重建誤差, 即使x hat接近(x-x bar) .
$$ \hat{x} = {\sum_{k = 1}^{K}{c_{k}w^{k}}}\approx x - \bar{x} $$
已經根據SVD找到了w的值,而對每個不同的樣本點,都會有一組不同的c值: 因為k個w向量互相正交, 是以隻需将w^k與(x-x bar)内積.
$$ c_{k} = \left( {x - \overset{-}{x}} \right) \cdot w^{k} $$
這個求c_k的式子來源大多數地方沒有說清楚, 我在這裡展開一下.
$$ x - \bar{x} \approx \hat{x} = {\sum_{k = 1}^{K}{c_{k}w^{k}}}\\ \Downarrow\\ \left [ \begin{matrix} x_1\\ x_2\\ \vdots\\ x_n \end{matrix} \right ]=\left [ \begin{matrix} u_1^1\ u_2^1\ ... u_k^1 \\ u_1^2\ u_2^2\ ... u_k^2 \\ \vdots\\ u_1^n\ u_2^n\ ... u_k^n \end{matrix} \right ]\cdot \left [ \begin{matrix} c_1\\ c_2\\ \vdots\\ c_k \end{matrix} \right ]\\ \left( {x - \bar{x}} \right) \cdot w^{k} \approx \hat x\cdot w^{k}\\ \Downarrow\\ \left[\begin{matrix} u_k^1&u_k^2& \cdots& u_k^n \end{matrix}\right]\cdot \left [ \begin{matrix} u_1^1\ u_2^1\ ... u_k^1 \\ u_1^2\ u_2^2\ ... u_k^2 \\ \vdots\\ u_1^n\ u_2^n\ ... u_k^n \end{matrix} \right ]\cdot \left [ \begin{matrix} c_1\\ c_2\\ \vdots\\ c_k \end{matrix} \right ] $$
其中由于W(或者稱為U)矩陣正交, uk*u1内積為0, 隻有uk*uk内積為uk長度1:
$$ \left[\begin{matrix} u_k^1&u_k^2& \cdots& u_k^n \end{matrix}\right]\cdot\left [ \begin{matrix} u_1^1\\ u_1^2\\ \vdots\\ u_1^n \end{matrix}\right] =0\\ \left[\begin{matrix} u_k^1&u_k^2& \cdots& u_k^n \end{matrix}\right]\cdot\left [ \begin{matrix} u_k^1\\ u_k^2\\ \vdots\\ u_k^n \end{matrix}\right] =1 $$
所得即為c_k:
$$ \left( {x - \bar{x}} \right) \cdot w^{k} \approx \\ \left[\begin{matrix} u_k^1&u_k^2& \cdots& u_k^n \end{matrix}\right]\cdot \left [ \begin{matrix} u_1^1\ u_2^1\ ... u_k^1 \\ u_1^2\ u_2^2\ ... u_k^2 \\ \vdots\\ u_1^n\ u_2^n\ ... u_k^n \end{matrix} \right ]\cdot \left [ \begin{matrix} c_1\\ c_2\\ \vdots\\ c_k \end{matrix} \right ]\\ =\left[\begin{matrix} 0 &0 & \cdots& 1 \end{matrix}\right]\cdot \left [ \begin{matrix} c_1\\ c_2\\ \vdots\\ c_k \end{matrix} \right ]\\ =c_k $$
參數c與元件w做線性組合的過程可以用神經網絡表示
假設x-x bar為3維向量, 要投影到k=2維, 即用兩個元件表示, 則c1根據(x-x bar)*w内積表示(對應元素相乘), 可看作線性激活函數的神經元:
通過計算c1估計x hat重建(x-x bar), 最小化重建誤差即使輸出x hat接近輸入(x-x bar)
此處可以看出, 這是含一個隐藏層的神經網絡, 通過輸入(x-x bar)計算隐藏層c的參數, 與通過c還原輸出x hat的參數是同一組. 這樣能夠還原的才可以稱作原資訊的壓縮, 而不是随便一組資料.
這樣的方法訓練神經網絡使輸出接近輸入, 稱為自編碼.
注意,通過PCA求解出的wi與直接對上述的神經網絡做梯度下降所解得的wi不一樣. 因為PCA解出的元件向量wi互相垂直(orgonormal),而NN方式的解無法保證互相垂直,NN無法做到Reconstruction error比PCA小,是以:
在linear的情況下,直接用PCA找遠比用神經網絡的方式更快速友善
用NN優點: 不止一層hidden layer,它可以做deep autoencoder.
PCA弱點
1. 無監督: 将下圖綠色的點投影到一維空間上,PCA從左下到右上的劃分使原本屬于藍色和橙色的兩個class的點被merge在一起.
LDA線性判别分析考慮labeled data降維但屬于監督學習.
2. linear: 如下圖曲面,期望平鋪拉直進行降維,但這是non-linear的投影轉換,PCA無法實作,PCA隻能把這個曲面打扁壓在平面上, 而無法把它拉開.
對類似曲面空間的降維投影,需要用到non-linear transformation.