现实生活中常常会有这样的问题:缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高。很自然地,在建模的过程中希望计算机能代我们完成这些工作,或至少提供一些帮助。根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习。
无监督学习里典型例子是聚类。聚类的目的在于把相似的东西聚在一起,而我们并不关心这一类是什么。因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作了。
聚类算法一般有五种方法,最主要的是划分方法和层次方法两种。划分聚类算法通过优化评价函数把数据集分割为K个部分,它需要K作为 输人参数。典型的分割聚类算法有K-means算法, K-medoids算法、CLARANS算法。层次聚类由不同层次的分割聚类组成,层次之间的分割具有嵌套的关系。它不需要输入参数,这是它优于分割聚类 算法的一个明显的优点,其缺点是终止条件必须具体指定。典型的分层聚类算法有BIRCH算法、DBSCAN算法和CURE算法等。
(1)缺乏足够的先验知识,因此难以人工标注类别;
(2)进行人工类别标注的成本太高。很自然地,我们希望计算机能代我们(部分)完成这些工作,或至少提供一些帮助。
(3)一从庞大的样本集合中选出一些具有代表性的加以标注用于分类器的训练。
(4)先将所有样本自动分为不同的类别,再由人类对这些类别进行标注。
(5)在无类别信息情况下,寻找好的特征。
无监督学习方法主要有:聚类方法(层次聚类与K均值聚类)、奇异值分解(SVD)、主成分分析(PCA)、潜在语义分析(LSA)、概率潜在语义分析(PLSA)、马尔可夫蒙特卡洛法(MCMC,包括Metropolis-Hastings算法和吉布斯抽样)、潜在狄利克雷分配(LDA)、PageRank算法、非负矩阵分解(NMF)、变分推理、幂法。
目前深度学习中的无监督学习主要分为两类,一类是确定型的自编码方法及其改进算法,其目标主要是能够从抽象后的数据中尽量无损地恢复原有数据,一类是概率型的受限波尔兹曼机及其改进算法,其目标主要是使受限玻尔兹曼机达到稳定状态时原数据出现的概率最大。
确定型无监督学习主要有自编码及稀疏自编码、降噪自编码等。自编码可以看作是一个特殊的3层BP神经网络,特殊性体现在需要使得自编码网络的输入输出尽可能近似,即尽可能使得编码无损(能够从编码中还原出原来的信息)。虽然稀疏自编码可以学习一个相等函数,使得可见层数据和经过编码解码后的数据尽可能相等,但是其鲁棒性仍然较差,尤其是当测试样本和训练样本概率分布相差较大时,效果较差。为此,Vincent等人在稀疏自编码的基础上提出了降噪自编码,其基本思想是,以一定概率使输入层某些节点的值为0,此时输入到可视层的数据变为x^,隐含层输出为y,然后由重构x的输出z,使得z和x的差值尽可能的小。
概率型无监督学习的典型代表就是限制玻尔兹曼机,限制玻尔兹曼机是玻尔兹曼机的一个简化版本,可以方便地从可见层数据推算出隐含层的激活状态。
用于聚类的方法有:层次聚类、k 均值聚类、高斯混合模型。常用模型为:聚类树、K中心聚类、高斯混合模型。聚类树是为了使类内样本距离最小,K中心聚类是为了使样本与类中心距离最小,高斯混合模型是为了似然函数最大。为了达到此目的,常用的算法有启发式算法、迭代算法、EM 算法。
由于在实际机器学习过程中常用到高维数据,所以数据降维就显得尤为重要,常用到的对数据进行降维处理的方法有PCA,器模型为低维正交空间,这个模型是为了使方差最大,数据差异化最大,使用的算法为SVD。
对于话题分析方面的问题,则采取的是另一种模式,比如LSA、NMF、PLSA、LDA,对应的常常使用矩阵分解模型,利用非负矩阵分解方法使平方损失最小,而PLSA模型则是使用EM算法使似然函数大豆最大值来达成话题分析的目的。其中对于量级较大的数据,LDA模型有显著优势,因为LDA模型使基于后验概率来估计的,常常用到吉布斯抽样, 变分推理。
对与图分析则常常使用PageRank方法,利用有向图上的马尔可夫链方法达到完成平稳分布求解的目的,又称为幂法。
对于EM 算法,其使用的基本原理为迭代计算、后验概率估计,当收敛于局部最优时,模型达到最优,收敛熟读较快,比较容易实现,比较适合简单模型
变分推理适合于迭代计算、后验概率近似估计,当其收敛于局部最优时,模型最优,只不过收敛速度较慢,而且实现过程较为复杂,因此一般用于较为复杂的模型。
吉布斯抽样的基本原理为随机抽样、后验概率估计,也是当收敛于局部最优时,整个模型达到最优,只不过收敛速度较慢,但是使用方法简单容易,比较适合的问题为复杂模型。
如表所示,为无监督学习的主要算法总结。
无监督学习方法的特点 |
||||
方法 |
模型 |
策略 |
算法 |
|
聚类 |
层次聚类 |
聚类树 |
类内样本距离最小 |
启发式算法 |
k 均值聚类 |
K中心聚类 |
样本与类中心距离最小 |
迭代算法 |
|
高斯混合模型 |
高斯混合模型 |
似然函数最大 |
EM 算法 |
|
降维 |
PCA |
低维正交空间 |
方差最大 |
SVD |
话题分析 |
LSA |
矩阵分解模型 |
平方损失最小 |
SVD |
NMF |
矩阵分解模型 |
平方损失最小 |
非负矩阵分解 |
|
PLSA |
PLSA 模型 |
似然函数最大 |
EM 算法 |
|
LDA |
LDA 模型 |
后验概率估计 |
吉布斯抽样, 变分推理 |
|
图分析 |
PageRank |
有向图上的马尔可夫链 |
平稳分布求解 |
幂法 |
层次聚类,是一种很直观的算法。顾名思义就是要一层一层地进行聚类,可以从下而上地把小的cluster合并聚集,也可以从上而下地将大的cluster进行分割,似乎一般用得比较多的是从下而上地聚集。所谓从下而上地合并cluster,具体而言,就是每次找到距离最短的两个cluster,然后进行合并成一个大的cluster,直到全部合并为一个cluster。整个过程就是建立一个树结构。
对于聚类,关键的一步是要告诉计算机怎样计算两个数据点的“相似性”,不同的算法需要的“相似性”是不一样的。对于以上两组样品,给出了每个数据点的空间坐标,我们就可以用数据点之间的欧式距离来判断,距离越近,数据点可以认为越“相似”。当然,也可以用其它的度量方式,这跟所涉及的具体问题有关。
使用以下方法来判断两个类之间的距离:每个数据点独自作为一个类,它们的距离就是这两个点之间的距离。而对于包含不止一个数据点的 cluster,就可以选择多种方法了。最常用的,就是average-linkage,即计算两个cluster各自数据点的两两距离的平均值。类似的还有single-linkage/complete-linkage,选择两个cluster中距离最短或最长的一对数据点的距离作为类的距离。个人经验complete-linkage基本没用,single-linkage通过关注局域连接,可以得到一些形状奇特的cluster,但是因为太过极端,所以效果也不是太好。
层次聚类较大的优点,就是它一次性地得到了整个聚类的过程,只要得到了上面那样的聚类树,想要分多少个cluster都可以直接根据树结构来得到结果,改变 cluster数目不需要再次计算数据点的归属。层次聚类的缺点是计算量比较大,因为要每次都要计算多个cluster内所有数据点的两两距离。另外,由于层次聚类使用的是贪心算法,得到的显然只是局域最优,不一定就是全局最优,这可以通过加入随机效应解决,这就是另外的问题了。
从原理上来说PCA等数据降维算法同样适用于深度学习,但是这些数据降维方法复杂度较高,并且其算法的目标太明确,使得抽象后的低维数据中没有次要信息,而这些次要信息可能在更高层看来是区分数据的主要因素。所以现在深度学习中采用的无监督学习方法通常采用较为简单的算法和直观的评价标准。
潜在语义分析(latent semantic analysis, LSA)是一种无监督方法,主要用于文本的话题分析,其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系。潜在语义分析是非概率的话题分析方法,将文本集合表示为 单词-文本矩阵,对该矩阵进行进行奇异值分解,从而得到 话题向量空间和 文本在话题向量空间中的表示。也可以使用矩阵的因子分解方法进行分解。
基本思想为给定一个文本,用一个向量表示该文本的”语义“,向量的每一维对应一个单词,其数值为该单词在该文本中出现的频数或权值。
在机器学习领域,LDA是两个常用模型的简称:Linear Discriminant Analysis 和 Latent Dirichlet Allocation。本文的LDA仅指代Latent Dirichlet Allocation. LDA 在主题模型中占有非常重要的地位,常用来文本分类。LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,用来推测文档的主题分布。它可以将文档集中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题分布后,便可以根据主题分布进行主题聚类或文本分类。LDA涉及到的先验知识有:二项分布、Gamma函数、Beta分布、多项分布、Dirichlet分布、马尔科夫链、MCMC、Gibs Sampling、EM算法等。
图分析(graph analytics)的目的是发掘隐藏在图中的统计规律或潜在结构。PageRank算法是无监督学习方法,主要是发现有向图中的重要结点。给定一个有向图,定义在图上的随机游走即马尔可夫链。随机游走者在有向图上随机跳转,到达一个结点后以等概率跳转到链接出 去的结点,并不断持续这个过程。PageRank算法就是求解该马尔可夫链的平稳分布的算法。一个结点上的平稳概率表示该结点的重要性,称为该结点的PageRank值。被指向的结点越多,该结点的PageRank值就越大。被指向的结点的PageRank值越大,该结点的PageRank值就越大。PageRank值越大结点也就越重要。
矩阵分解的原因(作用):矩阵填充(通过矩阵分解来填充原有矩阵,例如协同过滤的ALS算法)、清理异常值和离群点、降维和压缩(本文的目的)、个性化推荐。
矩阵分解的方法:特征值分解;PCA(Principal Component Analysis)分解,作用:降维、压缩;SVD(Singular Value Decomposition)分解,也叫奇异值分解;LDA:线性判别分析;MF(Matrix Factorization)模型,叫做矩阵分解模型。
矩阵分解种类:基本矩阵分解(bastic matrix factorization);正则化矩阵分解(regularized matrix factorization);概率矩阵分解(probabilistic matrix factorization);非负矩阵分解(non-negative matrix factorization),NMF;正交非负矩阵分解(orthogonal non-negative matrix factorization),ONMF;PMF(probabilistic matrix factorization),概率矩阵分解。
幂法主要用于计算矩阵的按模为最大的特征值和相应的特征向量。
实际计算时,为了避免计算过程中出现绝对值过大或过小的数参加运算,通常在每步迭代时,将向量“归一化”即用的按模最大的分量, ,去除的各个分量,得到归一化的向量,并令
由此得到下列迭代公式 :
当k充分大时,或当时,
图模型的学习可以分为两部分:一是网络结构学习,即寻找最优的网络结构。网络结构学习一般比较困难,一般是由领域专家来构建。 二是网络参数估计,即已知网络结构,估计每个条件概率分布的参数。 对于不含隐变量的参数估计,如果图模型中不包含隐变量,即所有变量都是可观测的,那么网络参数一般可以直接通过最大似然来进行估计。对于含隐变量的参数估计,如果图模型中包含隐变量,即有部分变量是不可观测的,就需要用 EM算法进行参数估计。
EM 算法是含隐变量图模型的常用参数估计方法,通过迭代的方法来最大化边际似然。 EM算法具体分为两个步骤: E步和 M步。这两步不断重复,直到收敛到某个局部最优解。 EM算法的应用例子:高斯混合模型Gaussian Mixture Model, GMM)是由多个高斯分布组成的模型,其密度函数为多个高斯密度函数的加权组合。