天天看點

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

由于要做遷移學習項目, 按照李宏毅給出的學習路線圖, 計劃分别看無監督學習(第九章), 異常檢測(第十章), 遷移學習(第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的樹圖檔轉變為一棵抽象的樹.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

2. 無中生有: 給function一個不同數字,生成不同的圖像,此時訓練集沒有輸入x,隻有輸出y.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

聚類

Clustering聚類,把相近的樣本劃分為同一類,比如對無标簽圖檔進行分類,打上cluster 1、2、3的标簽,這個分類過程化繁為簡.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

目前分幾個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依據相似度建樹.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

2. 選取門檻值

在構造好的樹上橫着切一刀,相連的葉結點屬于同一個簇.

不同顔色的橫線和葉結點上不同顔色的方框對應着切法與cluster的分法

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

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
李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

2. 降維(Dimension Reduction): 原樣本高維(image),用其特值來描述可轉變為低維空間.

降維有助于學習的原因

設資料呈3D螺旋式分布,用3D空間描述很浪費,把卷攤平後用2D的空間即可.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

MNIST(手寫數字集),每一張圖檔有28*28維,但大多數其他的28*28維向量表示的圖檔,都不像數字,是以描述數字需要的次元可能遠小于28*28.

例: 幾張表示“3”的圖檔,可以用一個端正的"3"的特征, 加角度就可以多描述原先28*28 維的圖像.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

抓住角度的變化即可描述28維空間中的變化. 28維pixel=樊一翁的胡子; 1維的角度=他的頭

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

如何降維

降維要找一個function,其輸入原始的x,輸出次元更小的z.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

最簡單的方法是特征選擇Feature Selection,即拿掉一些直覺上就對結果沒有影響的次元, 如圖隻需要x2次元:

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

該方法有時無法使用,如下圖中的螺旋卷任何一個dimension都不能被拿掉:

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

另一個常見的方法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 $$

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

w^1目标

要找什麼樣的w^1

例子: 寶可夢樣本點分布如下,橫坐标代表寶可夢的攻擊力,縱坐标代表防禦力,任務是把二維分布投影到一維空間上.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

選擇w1使得經過投影之後得到的分布越大越好,不同樣本點之間的差別明顯. 即方差越大越好, 如:

右上方向比左上得到的方差大.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

不希望投影後樣本點通通擠在一起,導緻點與點之間的奇異度消失.

方差計算公式:即各樣本點與平均值距離求平方的和, 再除以樣本數.

$$ 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:

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

所得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的數字圖像.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

寫成表達式:

$$ 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,

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

其系數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個列的矩陣來表示:

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

系數c1~cK排成一列, 矩陣U*系數向量c可得x1的重建誤差向量x1-x bar.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

其他的樣本也類似排列, 可得到矩陣X, 其列數(有多少列)為資料樣本數目,

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

目标是使u矩陣與c矩陣相乘後接近X矩陣, 即最小化重建誤差:

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

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為元件數目.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

使用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内積表示(對應元素相乘), 可看作線性激活函數的神經元:

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

通過計算c1估計x hat重建(x-x bar), 最小化重建誤差即使輸出x hat接近輸入(x-x bar)

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

此處可以看出, 這是含一個隐藏層的神經網絡, 通過輸入(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降維但屬于監督學習.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

2. linear: 如下圖曲面,期望平鋪拉直進行降維,但這是non-linear的投影轉換,PCA無法實作,PCA隻能把這個曲面打扁壓在平面上, 而無法把它拉開.

對類似曲面空間的降維投影,需要用到non-linear transformation.

李宏毅ML筆記14:降維/無監督-線性方法無監督學習介紹PCA數學推導PCA算法原理自編碼器

繼續閱讀