在这里插入图片描述
1.无监督学习:根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习,“监督”的意思可以直观理解为“是否有标注的数据”。

2.无监督学习的特点是,传递给算法的数据在内部结构中非常丰富,而用于训练的目标和奖励非常稀少。无监督学习算法学到的大部分内容必须包括理解数据本身,而不是将这种理解应用于特定任务。

  • 让机器自己去“学习”如何做——让机器具备人工智能的前提,需要我们用一定量的数据集对机器进行“训练”。如果机器能够根据一些狗狗的图片(训练数据),推演识别出各种类型和状态(包括卡通狗狗)的狗狗的能力,我们就说这台机器被赋予了“智慧”,也就是具备了人工智能。
    在这里插入图片描述
    这个学习的过程,在人工智能术语里称为机器学习。机器学习种类包含:监督学习(supervised Learning)、半监督学习(Semi-supervised learning)、增强学习(reinforcement learning)、无监督学习(unsupervisedlearning)
  • 常用方法之聚类——无监督学习即没有标注的训练数据集,需要根据样本间的统计规律对样本集进行分析,常常被用于数据挖掘,用于在大量无标签数据中发现规律。而聚类是无监督学习的常见任务,就是将观察值聚成一个一个的组,每一个组都含有一个或者几个特征,‎聚类的目的在于‎‎把相似的东西聚在一起,而我们并不关心这一类是什么‎‎。 因此,一个聚类算法通常只需要知道‎‎如何计算相似度‎‎就可以开始工作了。‎例如无监督学习应该能在不给任何额外提示的情况下,仅依据一定数量的“狗”的图片特征,将“狗”的图片从大量的各种各样的图片中将区分出来。
  • 与自监督学习的区别
  1. 对训练集与测试集的使用方式不同
    监督学习的目的是在训练集中找规律,然后对测试集运用这种规律。而无监督学习没有训练集,只有一组数据所构成的数据集,在该组数据集内寻找规律。
  2. 训练集是否有标签
    有监督学习的识别的结果表现在:给待识别数据加上标签,因此训练集必须由带标签的样本组成。而无监督学习方法只有要分析的数据集的本身,预先没有标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不按照某种预先定义的分类标签进行标注。
  3. 无监督学习方法是在数据集中寻找规律性
    这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。比如,一组颜色各异的积木,它可以按形状为维度来分类,也可以按颜色为维度来分类 。而有监督学习则是通过对有标签的数据集进行训练得到一个最优模型。

3.无监督学习的常用算法:无监督学习算法没有标签,因此训练模型往往没有明确目标,对于训练结果也可能并不确定,在本质上来说,无监督学习算法是一种概率统计的方法,用以在数据中发现一些潜在结构。
一个经典的无监督学习任务是找到数据的最佳表示,去除那些无关紧要不影响大局或影响因子极小的因素,找到数据最核心最关键的简单表示,这里的简单表示包括低纬表示(将 x 中的信息尽可能压缩在一个较小的表示中,通常会产生比原始的高维数据具有较小或较弱依赖关系的元素)、稀疏表示(将数据集嵌入到输入项大多数为零的表示中,通常会用于需要增加维数的情况,使得大部分为零的表示不会丢失很多信息)和独立表示(试图分开数据分布中变化的来源,使得表示的维度是相互独立的)。

  • 聚类(clustering)——聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。聚类分析以相似性为基础,在一个聚类中的模式之间比不在同一聚类中的模式之间具有更多的相似性。

    • k-均值聚类(k-means):是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类、没有(或最小数目)聚类中心再发生变化、误差平方和局部最小。
      优点: 算法简单易实现,易于理解,可合理地伸缩;
      缺点: 需要用户事先指定类簇个数,聚类结果对初始类簇中心的选取较为敏感, 容易陷入局部最优, 只能发现球形类簇
    • 层次聚类(Hierarchical Clustering):就是一层一层地进行聚类,既可以由下向上对小的类别进行聚合凝聚法),也可以由上向下对大的类别进行分割分裂法)。在应用中,使用较多的是凝聚法。
      INPUT:training_set D,聚类数目或者某个条件(一般是样本距离的阈值)
      OUTPUT:聚类结果
      (1)凝聚法——先将每个样本当做一个类簇,然后依据某种规则合并这些初始的类簇,直到达到某种条件或者减少到设定的簇数。在算法迭代中每次均选取类簇距离最小的两个类簇进行合并,迭代会在簇数减少到设定数量时结束,如果设定了阈值f,那么当存在两个距离小于f的集合时则会继续迭代直到不存在这样的两个集合。
      (2)分裂法——首先将所有样本归类到一个簇,然后依据某种规则逐渐分裂,直到达到某种条件或者增加到设定的簇数。
    • 基于密度聚类Mean Shift:这种基于核函数估计的爬山算法不仅可以用于聚类,也可用于图像分割与目标跟踪等方面,跟k-means作比较,两者都用集合内点的均值进行中心点移动,不同的是shift mean可以自行决定类簇数。
      漂移向量:给定n维空间内数据点集X与中心点x,并以D表示数据集中与中心点x距离小于半径h的点的集合,则漂移向量Mh表示为: Mh =Exi∈D[xi-x]
      漂移操作:计算得到漂移向量后将中心位置更新一下,使得中心位置始终处于力的平衡位置。更新公式为: x ← x + Mh
      均值飘移算法实现过程
      (1)在未被标记的点中随机选取一个点作为起始中心点center;
      (2)找出以center为中心半径为h的空间内所有的点,记作集合D,认为这些点归属于类簇c。同时将这些点属于这个类的概率加1,这个参数将用于最后步骤的分类;
      (3)计算D内数据点与中心点center的漂移向量Mh;
      (4)进行漂移操作x ← x + Mh ;
      (5)重复步骤2.3.4直到迭代收敛,记下此时的center位置。在这一过程中遇到的点都归类到簇c;
      (6)如果收敛时当前簇c的center与其它已存在的簇c‘中心的距离小于阈值,则合并c和c’。否则,把c作为新的聚类,增加1类;
      (7)重复步骤1-6直到所有的数据点都被标记访问;
      (8)分类:根据每个类对每个点的访问频率,取频率最大的类作为当前点集的所属类。
    • 基于密度聚类DBSCAN:DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。 该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。
      INPUT:Training_set D,半径Eps,密度阈值MinPts
      OUTPUT:类簇clusters
      优点:可以对任意形状的稠密数据集进行聚类;可以在聚类的同时发现异常点,对数据集中的异常点不敏感;聚类结果没有偏倚
      缺点:如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差;如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进
    • 基于图论聚类:图论聚类方法又称作最大(小)支撑聚类算法。图论聚类要建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边或者是弧对应于最小数据之间的相似性度量。因此,每个最小处理单元之间都会有一个度量的表达,这就确保数据局部特性比较易于处理。图论聚类法是以样本数据的局域链接特征作为聚类的主要信息源,因而其优点是易于处理局部数据的特性。
      算法步骤
      (1)利用prim算法构造最小支撑树。
      (2)给定一个阈值r,在最小支撑树中移除权值大于阈值的边,形成森林。
      (3)森林中包含剩下的所有的树。
      (4)每棵树视为一个聚类。
  • 关联规则——反映一个事物与其他事物之间的相互依存性和关联性,是数据挖掘的一个重要技术,用于从大量数据中挖掘出有价值的数据项之间的相关关系。

    • 先验算法(Apriori Algorithm):是关联规则学习的经典算法之一。先验算法的设计目的是为了处理包含交易信息内容的数据库(例如顾客购买的商品清单或者网页常访清单),而其他的算法则是设计用来寻找无交易信息(如Winepi算法和Minepi算法)或无时间标记(如DNA测序)的数据之间的联系规则。先验算法采用广度优先搜索算法进行搜索并采用树结构来对候选项目集进行高效计数。
    • FP-Growth算法:FP-growth算法是基于Apriori原理的,通过将数据集存储在FP(Frequent Pattern)树上发现频繁项集,但不能发现数据之间的关联规则。FP-growth算法只需要对数据库进行两次扫描,而Apriori算法在求每个潜在的频繁项集时都需要扫描一次数据集,所以说Apriori算法是高效的。其中算法发现频繁项集的过程是:构建FP树并从FP树中挖掘频繁项集。
  • 降维——机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式, y是数据点映射后的低维向量表达,通常y的维度小于x的维度。f可能是显式的或隐式的、线性的或非线性的。

    • 主成分分析(PCA):指的是将n维特征映射到k维上(k<n),通过正交变换将一组可能存在相关性的变量数据转换为一组线性不相关的变量,转换后的变量被称为主成分。PCA可看作一个端到端的算法,它完全没有参数限制,在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关。
      INPUT:原始维度n,目标维度k,无标签训练集D
      OUTPUT:转换矩阵M
    • 独立成分分析(ICA):是从多元(多维)统计数据中寻找潜在因子或成分的一种方法.ICA与其它的方法重要的区别在于,它寻找满足统计独立和非高斯的成分。
    • 奇异值分解(SVD):是特征分解在任意矩阵上的推广,在机器学习领域有着广泛应用,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石。
    • t-分布领域嵌入式算法(t-SNE):t-SNE的前身是2002年提出的SNE算法,2008年Laurens van der Maaten 和 Geoffrey Hinton在SNE基础上又提出t-SNE算法。作为一种非线性降维算法,非常适用于高维数据降到2-3维,进行可视化。其思想是在“低维空间中嵌入高维点,并以此彰显点之间的相似性”,主要关注的是数据的局部结构,高维空间的相近点总是对应于被嵌入的低维空间的相近点,以便在原始高维数据中看出我们想要的“自然聚类”。日常工作中,涉及到数据可视化的时候一般都会想到去使用这个工具,因此在图像领域应用较多,另外在NLP,基因组数据和语音处理领域也应用广泛。

4.自监督学习(self-supervised learning) 主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征,是无监督学习里面的一种。(也就是说自监督学习的监督信息不是人工标注的,而是算法在大规模无监督数据中自动构造监督信息,来进行监督学习或训练。因此,大多数时候,我们称之为无监督预训练方法或无监督学习方法,严格上讲,他应该叫自监督学习)

5.自监督学习的方法

  • 基于上下文(Context Based)——基于数据本身的上下文信息,我们可以构造很多任务,比如在 NLP 领域中最重要的算法 Word2vec ,是一群用来产生词向量的相关模型,这些模型是双层的浅层神经网络,用来训练以重新建构语言文本。Word2vec 主要是利用语句的顺序,例如 CBOW 通过前后的词来预测中间的词,而 Skip-Gram 通过中间的词来预测前后的词。
    图像处理领域,研究人员通过一种名为 Jigsaw(拼图) 的方式来构造辅助任务。我们可以将一张图分成 9 个部分,然后通过预测这几个部分的相对位置来产生损失;后续人们又拓展了这种拼图的方式,设计了更加复杂的任务,首先我们依然将图片分为 9 块,我们预先定义好 64 种排序方式,模型输入任意一种被打乱的序列,期待能够学习到这种序列的顺序属于哪个类(64分类),和上个工作相比,这个模型需要学习到更多的相对位置信息。除了这种拼图的模式,还有一种是抠图,随机将图片中的一部分删掉,然后利用剩余的部分来预测删掉的部分,只有模型真正读懂了这张图所代表的含义,才能有效地进行补全。
  • 基于时序(Temporal Based)——基于上下文的方法大多是基于样本自身的信息,比如旋转、色彩、裁剪等。而样本间其实也具有很多约束关系,比利用时序约束来进行自监督学习的方法,而最能体现时序的数据类型就是视频(video)。
    第一种思想是基于帧的相似性,对于视频中的每一帧,其实存在着特征相似的概念,简单来说我们可以认为视频中的相邻帧特征是相似的,而相隔较远的视频帧是不相似的,通过构建这种相似(position)和不相似(negative)的样本来进行自监督约束。对于同一个物体的拍摄可能存在多个视角(multi-view),对于多个视角中的同一帧,可以认为特征是相似的,对于不同帧可以认为是不相似的。
    还有一种思想来自 ICCV 2015 所发表的基于无监督追踪方法,首先在大量的无标签视频中进行无监督追踪,获取大量的物体追踪框。那么对于一个物体追踪框在不同帧的特征应该是相似的(positive),而对于不同物体的追踪框中的特征应该是不相似的(negative)。
    除了基于特征相似性外,视频的先后顺序也是一种自监督信息。比如ECCV 2016, Misra, I. 等人提出基于顺序约束的方法,可以从视频中采样出正确的视频序列和不正确的视频序列,构造成正负样本对然后进行训练。简而言之,就是设计一个模型,来判断当前的视频序列顺序是否正确。
  • 基于对比(Contrastive Based)——通过学习对两个事物的相似或不相似进行编码来构建表征,主要围绕的是如何选取正负样本进行构建,这类方法的性能目前来说是非常强的。比如 ICLR 2019 中提出的 DIM ,具体思想是对于隐层的表达,我们可以拥有全局的特征(编码器最终的输出)和局部特征(编码器中间层的特征),模型需要分类全局特征和局部特征是否来自同一图像。所以这里 x 是来自一幅图像的全局特征,正样本是该图像的局部特征,而负样本是其他图像的局部特征。这个工作的开创性很强,已经被应用到了其他领域。CPC 同样是一个基于对比约束的自监督框架,主要思想是基于过去的信息预测未来的数据,通过采样的方式进行训练。主要可用于能够以有序序列表示的任何形式的数据:文本、语音、视频、甚至图像,利用自回归的想法,对相隔多个时间步长的数据点之间共享的信息进行编码来学习表示,这个表示 c_t 可以代表融合了过去的信息,而正样本就是这段序列 t 时刻后的输入,负样本是从其他序列中随机采样出的样本。

参考链接

  1. 什么是无监督学习?- 溪亭日暮的回答 - 知乎
  2. 无监督学习算法
  3. 四大机器学习降维方法
  4. <机器学习>无监督学习算法总结
  5. 奇异值分解(SVD)原理与在降维中的应用
  6. 自监督学习 | (1) Self-supervised Learning入门
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐