# 3.9.无监督学习

    **无监督学习**（Unsupervised Learning, UL）：从无标签的数据中学习一些有用的模式，监督学习是建立**输入-输出**之间的映射关系，无监督学习是发现隐藏的数据中有价值的信息。

    分类：

1. **无监督特征学习**（Unsupervised Feature Learning），从无标签的训练数据中挖掘有效的特征或表示，一般用来降维、数据可视化、数据预处理。
2. **概率密度估计**（Probalilistic Density Estimation），简称密度估计
   1. 参数密度估计：假设数据服从某分布，然后去估计概率密度
   2. 非参数密度估计：不假设数据服从某个已知分布，使用样本进行估计
3. **聚类**（Clustering）将一组样本根据一定准则划分到不同的组**簇**（Cluster）。

## 1.无监督特征学习

### 1.1.主成分分析PCA

    **主成分分析**（Principal Component Analysis，PCA）是一种最常用的降维方法，使得在转换后的空间中数据的方差最大，主成分分析可以转换成一个SVD矩阵特征分解问题，它是一种无监督学习方法，可作为监督学习的数据预处理方法，祛除噪声并减少特征之间的相关性，但它并不能保证投影后数据的类别可分性更好。提高两类可分的方法一般为监督性学习，如**线性判别分析**（Linear Discriminant Analysis, LDA）。

### 1.2.稀疏编码

    **稀疏编码**（Sparse Coding）是受哺乳动物视觉系统中简单细胞感受野而启发的模型，在**初级视觉皮层**（Primary Visual Cortex）中，每个神经元仅对处于其感受野中特定的刺激信号作出响应。——外接刺激在视觉神经系统的表示具有很高的**稀疏性**。

> 如果M个基向量刚好可以支持M维的欧式空间，则这个M个基向量是完备的，如果M个基向量可以支持D维欧式空间，且M > D，则这M个基向量是过完备的（overcomplete）、冗余的。“过完备”基向量是指基向量个数远远大于其支撑空间维度，因此它们不具有独立性、正交等性质。

    给定一组$$N$$个输入向量$$x\_1,...,x\_N$$，稀疏编码的目标函数定义如：

$$L(A,Z) = \sum\limits\_{n=1}^N(||x\_n - Az\_n||^2 + \eta\rho(z\_n))$$

* $$Z = \[z\_1,...,z\_N], \rho(\cdot)$$是一个稀疏性衡量函数
  * $$l\_0$$范数：$$ho(z) = \sum\limits\_{m=1}^M I(|z\_m| > 0)$$
  * $$l\_1$$范数：$$ho(z) = \sum\limits\_{m=1}^M |z\_m|$$
  * 对数函数：$$ho(z) = \sum\limits\_{m=1}^M \log(1 + z\_m^2)$$
  * 指数函数：$$ho(z) = \sum\limits\_{m=1}^M -\exp(-z\_m^2)$$
* $$\eta$$是一个超参数，用来控制稀疏性的强度

#### 1.2.1.训练方法

1. 固定基向量$$A$$，对于每个输入$$x\_n$$，计算其对应的最优编码：

   $$\underset{z\_n}{\min}||x\_n - Az\_n||^2 + \eta \rho(z\_n), \forall n \in \[1,N]$$
2. 固定上一步得到的编码$${z\_n}\_{n=1}^N$$，计算最优的基变量

   $$\underset{A}{\min}\sum\limits\_{n=1}^N (||x\_n - Az\_n||^2) + \lambda \frac{1}{2}||A||^2$$

#### 1.2.2.稀疏编码优点

1. 计算量：极大降低计算量
2. 可解释性：易于理解
3. 特征选择：可实现特征的自动选择，高效表示输出样本，降低噪声减轻过拟合

### 1.3.自编码器

    自编码器（Auto-Encoder,AE）是通过无监督的方式来学习一组数据的有效编码。

![](https://3776797973-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkW0vdxiACBavm67CgB%2Fuploads%2Fgit-blob-d2f638373166c959ab6a67893a5ebbf9729d8928%2F2021-12-02-14-41-05.png?alt=media)

    自编码器分两部分：

1. 编码器Encoder：$$f, R^D \rightarrow R^M$$
2. 解码器Decoder：$$g, R^M \rightarrow R^D$$

### 1.4.稀疏自编码器

    自编码器除了学习低维编码之外，也能够学习高维的稀疏编码，假设中间隐藏层$$z$$的维度$$M$$大于输入样本$$x$$的维度$$D$$，并让$$z$$尽量稀疏，这就是稀疏自编码器（Sparse Auto-Encoder），稀疏自编码器的目标函数为：

$$L = \sum\limits\_{n=1}^N || x\_n - x\_n'||^2 + \eta \rho(Z) + \lambda||W||^2$$

    稀疏性度量函数定义：

$$ho(Z) = \sum\limits\_{j=1}^p KL(\rho^\*||\hat{\rho\_j})$$

### 1.5.堆叠自编码器

    实践中经常使用逐层堆叠的方式来训练一个深层的自编码器，称为堆叠自编码器（Stacked Auto-Encoder,SAE），堆叠自编码器可以采用**逐层训练**（Layer-Wise Training）。

### 1.6.降噪自编码器

    对数据部分损坏（Partial Descruction）的鲁棒性。

    **降噪自编码器**（Denoising Auto-Encoder, DAE）就是一种通过引入噪声来增加鲁棒性的自编码器。

## 2.概率密度估计

    概率密度估计（Probalistic Density Estimation），简称密度估计（Density Estimation），是基于一些观测样本来估计一个随机变量的概率密度函数。

### 2.1.参数密度估计

    参数密度估计（Parametric Density Estimation）是根据先验知识假设随机变量服从某种分布，然后通过训练样本来估计分布的参数。

    令$$D = {x\_n}\_{n=1}^N$$为从某个位置分布中独立抽样的N个训练样本，假设它服从一个概率分布函数，对数似然函数为：

$$\log p(D;\theta) = \sum\limits\_{n=1}^N \log p(x\_n; \theta)$$

    使用**最大似然估计**（Maximum Likelihood Estimation, MLE）来寻找参数$$\theta$$使得$$\log p(D;\theta)$$最大，这样参数估计问题就转换为最优化问题：

$$\theta^{ML} = arg \underset{\theta}{\max} \sum\limits\_{n=1}^N \log p(x\_n;\theta)$$

#### 2.1.1.正态分布

    假设样本$$x \in R^D$$服从正态分布

$$N(x|\mu,\Sigma) = \frac{1}{(2\pi)^{D/2}|\Sigma|^{1/2}} \exp(- \frac{1}{2} ( x - \mu)^T \Sigma^{-1}(x - \mu))$$

#### 2.1.2.多项分布

    假设样本服从$$K$$个状态的多项分布，令$$one-hot$$向量$$x \in {0,1}^K$$来表示第$$k$$个状态，样本$$x$$的概率密度函数为

$$p(x|\mu) = \prod\limits\_{k=1}^K \mu\_k^{x\_k}$$

    参数密度估计会存在的问题

1. 模型选择问题
2. 不可观测变量问题
3. 维度灾难问题

### 2.2.非参数密度估计

    非参数密度估计（Nonparametric Density Estimation）是不假设数据服从某种分布，通过将样本空间划分为不同的区域并估计每个区域的概率来近似数据的概率密度函数。

* 直方图方法：Histogram Method
* 核方法：Kernel Density Estimation
* K近邻方法：K-Nearest Neighbor Method
