天天看点

李宏毅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算法原理自编码器

继续阅读