深度学习 Unsupervised Learning 理论部分

Posted Ali forever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习 Unsupervised Learning 理论部分相关的知识,希望对你有一定的参考价值。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Unsupervised Learning 理论部分


前言

前面我们提到过很多个无监督学习方法,但是一直没有系统地介绍这些学习方法内容,这次将会从机器学习的角度去剖析它们。

一、无监督学习与监督学习的区别

  1. 原理不同
    监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,所以监督学习需要给数据打标签。
    无监督学习指根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题的过程,无监督学习不需要给数据打标签。
  2. 核心不同
    监督学习的核心是分类,有监督的工作是选择分类器和确定权值。
    无监督学习的核心是聚类(将数据集合分成由类似的对象组成的多个类),无监督的工作是密度估计(寻找描述数据统计值),这意味着无监督算法只要知道如何计算相似度就可以开始工作。
  3. 定性过程不同
    监督学习的输出结果,也就是分好类的结果会被直接贴上标签,是好还是坏。也即分类分好了,标签也同时贴好了。
    无监督学习的结果只是一群一群的聚类,如果想要定性,还需要后续设计算法去进行定性。
  4. 维度处理不同
    监督学习的输入如果是n维,特征即被认定为n维,通常不具有降维的能力。
    而无监督经常要参与深度学习,做特征提取,或者干脆采用层聚类或者项聚类,以减少数据特征的维度。
  5. 可解释性不同
    监督学习一般不具有很强的可解释性,因为它的训练过程一般是黑盒子。
    无监督学习由于核心思想是聚类,知道聚类的原因与后续的定性处理,所以可解释性要强的多。

二、K-means

1.K-means的优缺点

  1. 优点:
  • 原理简单,实现方便,算法复杂度低,收敛速度快;
  • 模型的可解释性较强;
  • 调节参数的数量较少,主要需要调参的参数仅仅是簇数K;
  1. 缺点:
  • 采用迭代方法,聚类结果往往收敛于局部最优而得不到全局最优解
  • 易受噪声、边缘点、孤立点影响;
  • K 值需要人为设定,不同 K 值得到的结果不一样
  • 不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类

2.各种距离

想要了解K-means的计算原理,我们首先要理解一些基础概念跟距离模型。
首先我们设两个点 x = ( x 1 , x 2 . . . x n ) , y = ( y 1 , y 2 . . . y n ) x=(x_1,x_2...x_n),y=(y_1,y_2...y_n) x=(x1,x2...xn),y=(y1,y2...yn)

  1. 闵可夫斯基距离
    d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p d(x,y)=(\\sum_i=1^n|x_i-y_i|^p)^\\frac1p d(x,y)=(i=1nxiyip)p1
    其中 p ≥ 1 p\\geq1 p1,事实上这个也是一个 L p L_p Lp范数
  2. 欧氏距离
    欧氏距离是最常用的距离之一,其实是闵可夫斯基距离的特殊情况之一,是一个二范数,可以表征最短距离。
    d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ 2 ) 1 2 d(x,y)=(\\sum_i=1^n|x_i-y_i|^2)^\\frac12 d(x,y)=(i=1nxiyi2)21
  3. 曼哈顿距离
    曼哈顿距离也是很常用的距离之一,也是闵可夫斯基距离的特殊情况之一,是一个一范数,可以表征垂直方向上(x和y方向)的距离之和
    d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x,y)=\\sum_i=1^n|x_i-y_i| d(x,y)=i=1nxiyi

    图中绿色边是欧氏距离,其他都是曼哈顿距离

3.K-means算法

簇:所有数据点的点集合,簇中的对象是相似的
质心:簇中所有点的中心(由簇中所有点的均值求得)

  1. 随机初始化k个点作为簇质心
  2. 然后将样本集中的每个点分配到一个簇中;计算每个点与质心之间的距离(常用欧式距离和余弦距离),并将其分配给距离最近的质心所对应的簇中;
  3. 更新簇的质心。每个簇的质心更新为该簇所有点的平均值;
  4. 反复迭代2 - 3 步骤,直到达到某个终止条件;

聚类效果的评价指标一般为SSE(平方误差和),SSE越小越说明质点越来越接近簇心,聚类效果越好。
S S E = ∑ i = 1 k ∑ x ∈ C ( x − μ i ) 2 SSE=\\sum_i=1^k\\sum_x\\in C(x-\\mu_i)^2 SSE=i=1kxC(xμi)2

三、HAC(层次汇合聚类)

1.HAC的优缺点

  1. 优点
  • 距离的定义比较容易,而且比较自由
  • 可以生成非球形的簇,发现层次间的关系。
  • 有时可以不用指定所需类别个数,可以通过阈值来进行类的划分
  1. 缺点
  • 在建树过程中要计算每个样本间的距离,计算复杂度较高;
  • 容易受异常点的影响
  • 容易形成链状的簇

2.HAC的算法过程

  1. 把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度;
  2. 寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个);
  3. 重新计算新生成的这个类与各个旧类之间的相似度;
  4. 重复2和3直到所有样本点都归为一类,就结束了


这样下来,你会发现通过这个手段,HAC生成了一颗自底向上的树,并且终止条件可以是一个阈值,比较两个类的距离,如果大于某个阈值就可以停止进行聚类。
最后只需要在每一层上切一刀,相邻地叶子结点就是一个聚类。

四、PCA算法(主成分分析)

上面介绍的K-means与HAC都是聚类的方法,他们致力于将类别划分在一起,如何划分在一起,接下来将会介绍一些降维的方法。

1.为什么要使用PCA算法?

  1. 聚类的缺点是以偏概全,强迫每个数据都要归顺于某一个簇,但是事实上一个数据可能归顺于多个簇,包含多个特征,如果这样做将会丢失掉这个数据得到其他特征,所以应该找一个向量去包含这些特征。
  2. 许多变量之间存在相关性,如果对每个指标进行分析,将会是孤立的,无法利用到数据中心的很多信息,所以我们要在减少需要分析的指标同时,尽量减少原指标包含信息的损失

2.PCA算法的优缺点

  1. 优点:
  • 各主成分之间正交,可消除原始数据成分间的相互影响
  • 用PCA技术可以对数据进行降维,同时对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息
  • PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关
  • 计算方法简单,主要运算是特征值分解,易于实现。
  1. 缺点:
  • 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
  • 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。
  • PCA是无监督的,不知道数据的标签,这样在降维映射之后可能会把两类数据混到一起。
  • PCA是线性的,把一个三维空间中的S形分布的数据做PCA之后的效果,就是把S形拍扁,而非展开。

3.奇异阵分解(SVD)

1.奇异阵分解的作用以及应用

奇异阵分解的核心目标就是在低维空间中寻找最接近原矩阵A的低维矩阵M ,实现数据降维。
因为在数学上来说,一定能找到一个更低规模的矩阵去迫近原来高维度的矩阵,这样就实现了数据的压缩,提高后续处理的速度。
而奇异值分解的几何含义为:对于任何的一个矩阵,我们要找到一组两两正交单位向量序列,使得矩阵作用在此向量序列上后得到新的向量序列保持两两正交。
奇异阵分解的主要应用:

  • 图像压缩
  • 图像恢复
  • 获取特征脸
  • 谱聚类
  • 从视频中删除背景

2.奇异阵分解原理

给定一个大小为M*N的矩阵A,我们可以将其分解成:
A m ∗ n = U m ∗ m Λ m ∗ n V n ∗ n A_m*n=U_m*m\\Lambda_m*nV_n*n Amn=UmmΛmnVnn
我们可以看到 UV两个矩阵都是方阵,而中间的特征矩阵则是一个非方阵,接下来我们将对我们的A矩阵进行对角化分解
A A T = P Λ 1 P T AA^T=P\\Lambda_1 P^T AAT=PΛ1PT
A T A = Q Λ 2 Q T A^TA=Q\\Lambda_2 Q^T ATA=QΛ2QT
由于对角化分解后的结果是一个方阵,所以这时我们的 Λ 1 , Λ 2 \\Lambda_1,\\Lambda_2 Λ1,Λ2则分别是一个 m ∗ m m*m mm n ∗ n n*n nn的方阵,而P的大小也是 m ∗ m m*m mm,Q的大小为 n ∗ n n*n nn
对角化分解后的两个矩阵 A A T , A T A AA^T,A^TA AAT,ATA之间存在很大的关系,我们会发现虽然它们的特征矩阵不同,但是它们在对角线上的特征值是完全相等的,接下来我们只要取特征矩阵较小的那个那个特征矩阵作为我们的 Λ \\Lambda Λ就可以进行迫近了,因为这个特征矩阵已经包含了整个奇异阵分解的大部分有用信息,最后得出的分解结果为:(假设特征矩阵的秩为k)
A m ∗ n = U m ∗ k Λ k ∗ k V k ∗ n A_m*n=U_m*k\\Lambda_k*kV_k*n Amn=UmkΛkkVkn
注意:这里的特征值是求平方根后的结果,必须要保证最后的结果是正的
我们同时展开奇异阵分解,会得到如下式子:
A = λ 1 u 1 v 1 + λ 2 u 2 v 2 + . . . λ n u n v n A=\\lambda_1u_1v_1+\\lambda_2u_2v_2+...\\lambda_nu_nv_n A=λ1u1v1+λ以上是关于深度学习 Unsupervised Learning 理论部分的主要内容,如果未能解决你的问题,请参考以下文章

数据聚类|深度聚类Unsupervised Deep Embedding for Clustering Analysis(DEC)论文研读

数据聚类|深度聚类Unsupervised Deep Embedding for Clustering Analysis(DEC)论文研读

笔记:unsupervised domain adaptation by backpropagation

深度学习—反卷积的理解

DeepFuse:A Deep Unsupervised Approach for Exposure Fusion with Extreme Exposure Image Pairs

Machine Learning——Unsupervised Learning(机器学习之非监督学习)