【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes

本节对应笔记:

本节内容综述

  1. 李老师将无监督学习分为两类:化繁为简(聚类 Clustering),降维 Dimension Reduction、无中生有(Generation)
  2. 讲了 K-means 、Hierarchical Agglomerative Clustering (HAC)、Distributed Representation / Dimension Reduction (如何做?Feature Selection、PCA)。
  3. 详细介绍 PCA 。很详细,从线性代数角度。但是,PCA有不可逆的缺陷(无监督、线性)。之后用宝可梦、MNIST、人脸识别举了例子,例子详见上述的笔记3。
  4. 另外,略提了 NMF (Non-negative matrix factorization),其要求,所有数据都必须是组件的非负加权组合。

小细节

PCA

principal components analysis

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,我们希望找一个方向,这个方向能让数据进行分散地投影在上面。

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
我们再找下一个 ww 是,其必须与上一个 ww 是正交的。

此时WW是正交矩阵(orthogonal matrix)。

Lagrange multiplier

除了经典梯度下降(建模成神经网络),也可以用拉格朗日乘数法。

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
简单的线性代数展开如上。我们的目标即为最大化 (w1)TSw1(w^1)^TSw^1
【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
然后使用拉格朗日乘数法。

结论:w1w^1S=Cov(x)S=Cov(x)这个matrix中的特征向量,对应最大的特征值λ1\lambda_1

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
结论,w2w^2也是S=Cov(x)S=Cov(x)这个matrix中的特征向量,对应第二大的特征值λ2\lambda_2

PCA-decorrelation

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,z=Wxz=W \cdot xCov(z)=DCov(z)=D,这使得zz的协方差是一个对角矩阵 diagonal matrix。

“PCA可以让不同dimension之间的covariance变为0,即不同new feature之间是没有correlation的,这样做的好处是,减少feature之间的联系从而减少model所需的参数量。”

Reconstruction Component

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,数字 7 是由不同的组件 uu 加起来的结果。

如果 uu 的数量比 pixel 少,那么这个组合是有意义的。

于是我们来确定优化目标。

xxˉc1u1+c2u2+...+ckuk=x^x-\bar x≈c_1u^1+c_2u^2+...+c_ku^k=\hat x

L=minu1,...,uk(xxˉ)(i=1kciui)2L=\min\limits_{u^1,...,u^k}\sum||(x-\bar x)-(\sum\limits_{i=1}^k c_i u^i) ||_2

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,我们希望两边的矩阵越接近越好。

可以使用 SVD 拆分。

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,可以得出结论:

  • 用 PCA 找出来的 w1,w2,...,wk{w^1,w^2,...,w^k} 就是 kk 个组件的 u1,u2,...,uk{u^1,u^2,...,u^k}

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,我们的目标是将x^=k=1Kckwk\hat x=\sum\limits_{k=1}^K c_k w^k逼近xxˉx- \bar{x},此时因为WW是标准正交的,应该有ck=(xxˉ)wkc_k=(x-\bar x)\cdot w^k

于是我们可以用神经网络表示上述优化问题。

这件事就叫做了:Autoencoder

注意,通过 PCA 直接解出的 wiw^i 与使用神经网络梯度下降的方式得到的 wiw^i 其结果是不一样的,因为神经网络无法保证 wiw^i 正交。

因此:

  • 在 linear 的情况下,直接使用 PCA 找 WW 比神经网络更快更方便;
  • 用神经网络的好处是,可以使用不止一层隐层,作为 deep autoencoder 。

Weakness of PCA

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,PCA 有明显的弱点:

  • 非监督学习,如果我们要将下图绿色的点投影到一维空间上,PCA给出的从左上到右下的划分(如上)会使原本属于蓝色和橙色的两个class的点被merge在一起(因此我们可以使用 LDA);
  • 线性的,对于S型彩色曲面,无法拉直。

Matrix Factorization

举个例子讲解一下矩阵分解。
【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
加深每个人有一定数量的手办。如上。发现,有手办1的人,就比较可能有手办2。说明可能人们偏好不同。
【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
但是,一个人的偏好,与手办的属性其实没有办法知道。我们只能通过数据来推导。

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,首先我们明确:对于 r 向量,其维度需要人为确定好,就好像神经网络的神经元数量一样。

之后,我们可以将矩阵分解如上图下半部分。我们即可知道 rA,r1r^A, r^1 等值。

可以使用 SVD 等方法求解。
【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,此外,我们可能缺失一些值。此时我们更换我们的优化目标,变为 L=(i,j)(rirjnij)2L = \sum_{(i,j)} (r^i \cdot r^j - n_{ij})^2,并且跳过我们不知道到的元素。

使用梯度下降即可。

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
如上,我们使用梯度下降,得到各自的编码,就可以根据 nij=rirjn_{ij} = r_i \cdot r_j 得到矩阵中的位置数据,从而进行推荐。

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization

此外,模型还可以做的紧致一些:

  • 用户 A 本身的属性 bAb_A
  • 手办 1 本身的欢迎程度 b1b_1

Latent semantic analysis (LSA)

Matrix Factorization for Topic analysis
【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization

如上,每个文档中出现词汇的顺序。可以找出每个词背后的主题。

【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization
有很多方法,比如PLSA、LDA。