打印图书打印图书

第七章 无监督学习

共享课程

站点: 广开网络教学平台
课程: 人工智能(共享)
图书: 第七章 无监督学习
打印: 访客用户
日期: 2025年07月20日 星期日 13:06

1. 7.1无监督学习简介

ppt page 1:

大家好,接下来给大家讲解第7章第1节,主要讲解无监督学习简介

 

ppt page 2:

本节目标是理解无监督学习、聚类模型和自编码网络模型的概念

 

ppt page 3:

在前面介绍的机器学习方法中,训练数据都是有标签的。但在现实世界中,想要提供具有标签的数据并不容易,对于大量的训练数据,我们没有精力去进行标识,甚至是无法标识的,我们希望能够实现一种犹如人脑的模型,只需少量的标签便可理解这个多彩的世界。对于这种仅有数据本身而没有标签的训练数据的学习,就是无监督学习。

对于无监督学习而言,由于输入数据没有标签,因此在学习训练时无法获取正确的标签信息。无监督学习在模型构建、正确率等方面与监督学习都是不一样的

有监督学习和无监督学习的区别:

有监督训练过程

          ----训练样本集中每个样本的类别已经被标记

无监督训练过程

          ----使用未被标记的训练样本

 

ppt page 4:

无监督学习方法好处:

1.收集并标记大型样本集非常费时费力,无监督学习节省了时间成本

 -例如:语音信息的记录

2.逆向解决问题:用大量未标记样本集训练,将未标记的样本数据分组,再人工标记数据分组

 --例如:数据挖掘的应用

3.对于待分类模式性质会随时间变化的情况,使用无监督方法可以大幅提升分类器性能

  --例如:自动食品分类器中食品随季节而改变

4.用无监督方法提取一些对进一步分类很有用的基本特征

  --独立于数据的“灵巧预处理”,“灵巧特征提取"

5.揭示观测数据的一些内部结构和规律

  --就能更有效设计有针对性的分类器

 

ppt page 5:

对于无监督学习而言,由于输入数据没有标签,所以在学习训练时无法获取正确的标签信息,在模型构建、正确率等方面和监督学习都是不一样的,主要的模型为:

Ø 聚类模型

Ø 自编码网络模型

目前在无监督学习中研究最多、应用最广的就是最聚类模型。那么,接下来简单了解一下聚类模型和自编码网络模型

 

ppt page 6:

聚类的概念

一、聚类就是将集合划分成由类(相)似的对象组成的多个类的过程。

二、聚类分析是研究(样品或指标)分类问题的一种统计分析方法。

三、聚类所要求划分的类是未知的,一般把它理解为无监督学习。而分类算法是有训练样本的,属于监督学习。

如右图所未,我们可以将某个点划分到某个类别中,至于划分的算法是什么,那就是我们后面要介绍的内容了。

 

 

ppt page 7:

聚类的典型应用

1、聚类可以帮助市场分析人员从客户基本信息库中发现不同的客户群;

2、在生物学上,聚类可以根据生物基因结构,推导出植物和动物的物种分类,从而获得对生物种群固有结构的认识;

3、聚类还能从地球观测数据库中找到地形、地貌等地理特征相似的区域,提供生物物种或病虫害预警信息;

4、根据房屋的类型、价值和地理位置等信息对城市房屋进行聚类分组,为客户提供房屋资产评估服务

 

ppt page 8:

聚类的思想:对于未指定明确的分类的数据,通过其本身呈现出的集群的结构,使用若干个通常是不相交的子集对样本数据进行划分,每个子集称之为“簇”(Cluster)。通过这样的划分,每个簇可能对应着一些潜在的类别。这些通过聚类模型划分的类别在训练前是未知的,只是在训练过程中自动形成的簇结构,对于这种自然划分形成的簇,在实际使用前还需要使用者再次进行评估

基于不同的学习策略,人们设计出了多种类型的聚类算法,主要包括原型聚类、密度聚类和层次聚类。

Ø 原型聚类算法:假设数据的聚类结构能通过一组原型进行刻画,然后对原型进行不断的迭代更新而获取到数据的聚集、分类。主要的原型聚类算法包括了k均值算法(k-means)、学习向量量化(LVQ)以及高斯混合聚类。

Ø 密度聚类算法:假设数据的聚类结构能通过样本分布的紧密程度确定。通常情况下,密度聚类从样本密度的角度出来,来考查样本之间的可连接性,并基于可连接样本不断扩展聚类簇,以获得最终的聚类结果。最著名的的密度聚类算法就是dbscan算法。

Ø 层次聚类算法:假设数据的聚类结构能够通过数据的分层来进行确定。试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用"自底向上"的聚合策略,也可以采用"自顶向下"的分拆策略。层次聚类算法的优势在于,可以通过绘制树状图(dendrogram),帮助我们使用可视化的方式来解释聚类结果。层次聚类的另一个优点就是,它不需要事先指定簇的数量。最著名的层次聚类算法就是agnes算法。

 

ppt page 9:

自编码网络模型

在无监督学习中,还有一种重要的训练方法是自编码网络。

自编码网络是一种神经网络,利用信息论中对信息进行“编码-解码”原理。通过对信息进行“编码-解码”,可以对原始信息进行恢复重建,而且编码后的信息虽然在形式上与原信息不同,但有效地保留了原始信息的内容。

在自编码网络模型中,一般都通过构建多层神经网络来实现。将原信息作为神经网络模型的输入,通过神经网络中间层的处理对原信息进行“编码-解码”过程,形成神经网络的输出。对神经网络的输出与原始信息之间的误差进行比较,以误差最小化作为损失函数进行整体网络的迭代和调整

在此基础上还可以进一步改造,比如对输入添加噪声后进行训练,可以使编码信息具有一定的抗噪能力等。

接下来将使用最常用的k均值聚类和自编码网络来讲解监督学习

 

ppt page 10:

本节小结:本节主要讲解无监督学习、聚类模型和自编码网络模型的概念,本节讲解到这里,谢谢大家

2. 7.2k均值算法

ppt page 1:

大家好,接下来给大家讲解第7章第2节,本节将详细讲解K均值聚类算法

 

ppt page 2:

本节目标是理解K均值聚类算法原理及案例实践过程

 

ppt page 3:

K均值聚类算法简介

K均值算法(K-means算法)是一种常用的聚类算法。过程如下:对给定的样本集D,对其进行划分为K的簇类,使得所有的簇划分C满足最小化平方误差的过程,即计算每个样本点与其所属质心的距离的误差平方和最小化的过程,计算公式如图1所示:

 

我们需要实现的就是最小平方差E,难以计算出最正确的结果。在实际工程计算中,可以通过迭代优化的方法来逼近最优解。

迭代优化的思路是任意选定K个质心,然后将所有样本数据根据选定的k个质心划分为K簇,之后根据划分的每个簇内的样本数据调整质心的位置。最后再次将所有样本根据质心进行簇划分,不断迭代。主要计算过程可以分为以下几步:

主要计算过程可以分为如下几步:

(1)对于给定的数据样本D,任意选择其中的K个点作为初始质心;

(2)将每个点分配到距离最近的质心,形成K个簇;

(3)对于完成分配的K个簇,再次重新计算每个簇的质心;

(4)重复步骤(2),再次将每个点分配到新的最近的簇的质心;

(5)不断迭代步骤(2)、(3),直到簇不发生变化或达到最大迭代次数为止。

在计算过程中需要特别关注的是给K值的选取、初始质心、距离算法和质心的更新等关键点。

对于k的取值,表示需要得到的簇的数目,也就是样本数据的标签数,如果能够明确最终的标签数,就可以直接使用K值,但在进行无监督学习时,我们通常事先无法明确数据的分布情况,也就无法明确知道数据的簇的数目。在K值的选取过程中,一般通过枚举来不断优化调整,不会将K值设置得很大。

对于初始质心的选取,由于具有随机性,因此一般进行随机选取。但在进行随机选举时,需要注意样本数据在每一个维度上的最小值和最大值,随机的质心尽量不要超过样本数据的边界。

对于每个点到质心的距离计算方法有很多种,常用的有欧式距离、余弦相似度等等,在K均值聚类算法中,一般采用欧式距离算法来计算的那个点的距离,欧式距离的公式如力图2所示:

 

对于质心的更新计算,会将簇中所有样本的均值作为该簇的质心,这也是K均值名称的由来。

特别需要说明的是,由于整个过程采用迭代优化的计算思想来进行求解,因此并不能保证收敛到的都是全局的最优解,有很大可能最终收取的结果是局部的最优解。所以在实际工作中为了取得比较好的效果,我们一般会采用不同的初始质心来进行计算,从而得到多个局部的最优解,再通过对比各个结果来分析确定最优解。

 

ppt page 4:

距离计算:

大多数聚类分析是以相似性计算为基础的,同一个聚类中的个体模式相似,不在同一聚类中的个体模式则相异。目前,相似性距离的计算都是基于向量的,也就是计算两个向量的距离,距离越近相似度越大。下面,我们介绍几种常见的距离计算方法。

1、欧氏距离(Euclidean Distance)

欧氏距离最初用于计算欧几里德空间中两个点的距离。假设X(x1,x2,…,xn) Y(y1,y2,y3,…,yn) n 维空间的两个向量,它们之间的欧几里德距离公式如下:

 

n=2 欧几里德距离就是平面上两个点的距离。如果将欧氏距离看作物品相似程度,那么距离越近就越相似,也就是说距离越小,相似度越大。

 

ppt page 5:

2、曼哈顿距离

曼哈顿距离也称为城市街区距离(City Block distance),或绝对距离。即在在欧几里得空间的固定直角坐标系上两点所形成的线段对轴的投影距离总和。坐标(_1,_1 )的点_1与坐标(_2,_2 )的点_2的曼哈顿距离公式如下:

 

ppt page 6:

3、余弦相似度

余弦相似度就是两个向量之间的夹角的余弦值。假设X(x1,x2,…,xn) Y(y1,y2,y3,…,yn)是n 维空间的两个向量,它们之间的余弦相似度公式如下:

 

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度。

夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。

还有其它距离计算方法请大家自行查阅文档。

 

ppt page 7

K均值实践

接下来我们使用K均值算法来对MNIST的训练集中图片进行类型标注,最后与训练集中的正确标签进行对比。主要有如下几个步骤:

1加载数据

加载数据时,我们在无监督学习中,进行训练的样本仅仅是MNIST训练集中的图片数据,而不使用MINST训练集中的标识数据。

 

ppt page 8:

2实现K均值算法

K均值算法是一个循环迭代的过程,重点注意的是明确K值、初始质心、计算距离和更新质心:

Ø K值:最终样本数据的分类数量。MNIST数据的分类值为0-910。

Ø 初始质心:在样本数据的边界内通过随机选取的方式来实现,关键代码如下所示:

Ø 簇分配:对于每个点计算该点到所有簇心的距离,然后使用tf.argmin()方法获取距离最小的簇心作为该点所有区域的簇心,划分到该簇。

Ø 更新质心:完成簇的划分后,对于该簇能所有的样本数据使用方法求和、求平均值,获得簇的新质心。

 

ppt page 9:

3数据训练

接下来进行正式的数据训练

 

4、评估模型

使用K均值训练后,样本数据被划分到了10个簇中。由于是MNIST数据集,因此对于一个对簇中的样本数据,我们可以获取对应的正确标签。我们对每一个簇内数据的正确标签进行统计,显示数量排在前三的标签及对应数量。最后,通过查看簇中前三的正确标签及数量,判断簇划分的正确性。

完整的代码会在实操环节详细讲解。

 

ppt page 10:

小节总结:本节主要讲解K均值聚类算法原理及算法实践过程。本节讲到这里,谢谢大家

3. 7.3自编码网络模型

ppt page 1:

大家好,接下来给大家讲解第7章 无监督学习 第3节,本节将介绍自编码网络算法

 

ppt page 2:

本节目标是理解自编码网络算法及实现过程

 

ppt page 3:

自编码网络是另一种无监督学习方法,可以自动从无标注的数据中学习特征,是一种通过对信息进行”编码-解码来完成信息的恢复重建,从而形成模型它可以给出比原始数据更好的特征描述,具有较强的特征学习能力,在深度学习中常用自编码网络生成的特征来取代原始数据,以取得更好的效果。

那么这种网络有什么实际应用呢?自编码器是当前深度学习研究的热点之一,有很多重要的应用领域,这里仅举一个有趣的例子,大家还记得前一段时间百度推出的上传你的照片,系统帮你找到与你像的明星吗?其实这个功能就可以用自编码器来实现,首先,我们将已经训练好的自编码器的输入层和中间层组成的网络拿出来,将所有明星的脸进行压缩,得到一个人脸向量,保存起来,然后,当普通用户上传了自己的照片后,系统将用户照片输入自编码器的输入层,从中间层得到该用户的人脸向量,最后拿这个用户的人脸向量与明星们的人脸向量进行比较,找出向量距离最近的一个或几个明星,将明星的照片作为与用户最像的明星照片,返回给用户。由于百度这项服务推出的时间较早,应该不是基于自动编码器实现的,但是使用自动编码器,完全可以实现这个功能。

自编码网络是指将自编码的思想应用到神经网络算法,我们将从以下几方面来讲解:

1、自编码器

自编码器就是一个试图还原其原始输入的系统,它由编码器(Encoder)和解码器(Decoder)两部分组成模型如图1所示:

 

编码器将输入信号x变换成编码信号y,在由解码器将编码y转换成输出信号的过程,如图2所示:

 

自编码器的目的是让输出信号x’尽可能复现输入信号x。但是如果f(x)g(x)是恒等映射则,自编码器毫无意义。所以,我们经常对中间信号y做一定的约束,使系统能够学习得到的编码变换f(x)g(x),这两者既不是恒等映射,又尽可能使输出值等于输入值。

需要注意的是,对于自编码器我们往往并不关心输出,而真正关心的是中间层的编码,因此我们使用自编码器的使用编码信号y以一种不同的形式承载了原始数据x的所有信息,也就是对x的一种自学习方式的特征进行提取

 

ppt page 4:

2自编码神经网络

自编码神经网络就是使用神经网络模型将输入样本编码到隐层,然后从隐层中解码到输出层进行样本重建的过程,模型如图1所示。

 

其中,输入层数据x转换到隐层h,再转换到输出层y。整个过程可以表示图2所示:

 

其中,从输入层到隐层是一个编码的过程,再通过去掉输入数据本身存在着不同程度的冗余信息,把有用的特征输入隐层。可以说,隐层是在尽量不损失信息量的情况下,对原始数据的另一种表达,所以我们应对隐层予以特别关注。

为了尽量学到有意义的表达,一般给隐层引入一定的约束条件,常见的约束条件是数据维度和稀疏性。

对于数据维度,一般要求隐层维度小于输入数据维度,也就是说,自编码神经网络试图以更小的维度描述原始数据而尽量不损失数据信息。

对于稀疏性,一般要求隐层维度大于输入数据维度,但同时会约束隐层的神经元活跃程度,希望大部分神经元是抑制的。对于有稀疏性限制的自编码器,称为稀疏自编码器,他们能够有效地找到大量维度中真正重要的若干维。

对于自编码神经网络的损失函数,根据数据的不同形式,一般选择二次误差或交叉熵误差

 

ppt page 5:

接下来给大家介绍自编码网络实践编码过程

使用自编码神经网络来对MNIST的训练集中图片进行类型标注,步骤如下:

1.加载数据

2.自编码网络的构建

3.进行数据训练

4.评估模型

 

1.加载数据

加载数据时,我们在无监督学习中,进行训练的样本仅仅是MNIST训练集中的图片数据,而不使用MINST训练集中的标识数据。

 

ppt page 6:

2自编码网络构建

自编码网络的构建可分为四层,分别是输入层、隐层1隐层2和输出层。

输入层从MNIST数据集中获取输入图片,维度是28 X 28 = 784 

通过隐层1和隐层2对输入数据进行编码和解码。在本例中,使用数据维度限制,使两个隐层的神经元数量都低于输入数据维度,分别设置为256128.

对于损失函数,选择二次误差法。计算原始输入值与经过编码-解码后的输出值之间的平方差,作为损失值。

 

ppt page 7:

3、进行数据训练

4评估模型

从MNIST的测试集中选择10张图片,分别绘制原始图片和经过训练后的自编码神经网络的输出图片,进行对比。如下图所示:

 

上一排是原始输入图片,下一排是经过训练后的自编码网络的输出图片。可以很明显地看出,经过训练后的图片能够识别出对应的数字,但是存在一定的噪点。

 

ppt page 8:

小节总结:本节主要讲解自编码网络结构及mnist数字识别过程,本节讲到这里,谢谢大家