编码机

从无监督学习说起算法模型有哪几种人人都

发布时间:2023/7/24 16:29:39   
白癜风能根冶吗 http://www.baidianfeng51.cn/baidianfengluntan/reply_662.html

无监督学习是没有任何的数据标注,只有数据本身。无监督学习解决的主要是“聚类(Clustering)”问题,那它的算法模型有哪几种?

在笔记里我们简单地学习了监督学习的几种算法模型,今天就来学习一下无监督学习的基本概念和相应的几种算法模型。

无监督学习(UnsupervisedLearning)是和监督学习相对的另一种主流机器学习的方法,我们知道监督学习解决的是“分类”和“回归”问题,而无监督学习解决的主要是“聚类(Clustering)”问题。

监督学习通过对数据进行标注,来让机器学习到,比如:小曹多重多高就是胖纸,或者用身高体重等数据,来计算得到小曹的BMI系数;而无监督学习则没有任何的数据标注(超过多高算高,超过多重算胖),只有数据本身。

比如:有一大群人,知道他们的身高体重,但是我们不告诉机器“胖”和“瘦”的评判标准,聚类就是让机器根据数据间的相似度,把这些人分成几个类别。

那它是怎么实现的呢?怎么才能判断哪些数据属于一类呢?

这是几种常见的主要用于无监督学习的算法。

K均值(K-Means)算法;自编码器(Auto-Encoder);主成分分析(PrincipalComponentAnalysis)。

K均值算法

K均值算法有这么几步:

随机的选取K个中心点,代表K个类别;计算N个样本点和K个中心点之间的欧氏距离;将每个样本点划分到最近的(欧氏距离最小的)中心点类别中——迭代1;计算每个类别中样本点的均值,得到K个均值,将K个均值作为新的中心点——迭代2;重复;得到收敛后的K个中心点(中心点不再变化)——迭代4。

上面提到的欧氏距离(EuclideanDistance),又叫欧几里得距离,表示欧几里得空间中两点间的距离。我们初中学过的坐标系,就是二维的欧几里得空间,欧氏距离就是两点间的距离,三维同理,多维空间的计算方式和三维二维相同。

举栗子:

我们现在有三组身高体重数据kg、cm,kg、cm和90kg、cm,提问:这三个人里,哪两个人的身材比较相近呢?

这三组数据可以表示为A(,),B(,)和C(90,),这就是我们很熟悉的平面直角坐标系里的三个点,他们之间的距离大家都知道算。

从结果可以看到Bc间的距离最小,也就是Bc的身材最相似。我们再增加一个维度,腰围,分别是cm、cm和cm(随便编的不要当真),那现在这三组数据可以表示为A(,,),B(,,)和C(90,,),这就变成了我们高中学过的空间直角坐标系里的三个点,要计算它们之间的距离也很简单。

现在还是Bc的身材最相似,如果我们增加N个维度,数据就可以用(X,X,X,…..,Xn)和(Y,Y,Y,…..,Yn)来表示,他们之间的距离就是

K均值算法里样本点到中心点的距离就是这么计算的,这个用空间点,来表示数据的思想,在机器学习领域是非常常见和重要的,以后还会经常见到。值得注意的是:虽然K近邻算法和K均值算法没有什么关系,但是它们的思想有想通之处,并且原始模型实际使用起来计算起来都比较慢。

自编码器

自编码器(Auto-encoder)(其实相当于一个神经网络,但这里不用神经网络的结构来解读)做的事情很有意思,它的基本思想就是对输入(input)编码(encode)后得到一个隐含的表征再解码(decode)并输出(output),这么看起来不是在绕圈圈吗?

如果说我们的自编码器只是为了得到一个和输入一模一样的输出,那我们的行为确实没什么用,但是细心的胖友,你们觉得这张图里什么是关键呢?

对了,是中间的隐含表征(latentrepresentation)!

自编码器的两个主要应用是降噪(denoising)和稀疏化数据(sparse)。

什么叫降噪和降维呢?

让我们用这张图来理解,图中有三层,输入、隐含和输出层,每一层的么一个圈圈代表一个特征。输入层经过编码变成了中间的隐含层,隐含层解码后得到后面的输出层。可以看到,隐含层只有输入层的一半,原本的6个特征变成了3个特征,这意味着什么?

又到了举栗子的时间:

如果要来表示小明的身材,输入的六个特征分别为“肉多”、“体脂率高”、“质量大”、“个子不高”、“总是心情好”、“喜欢笑”而隐含层的三个特征为“肉多”、“体脂率高”、“个子不高”,这个自编码器就是用来降噪的。

噪音(noise)指的是影响我们算法模型的不相关因素;降噪呢,就是用特定的方法去掉这些不相关的因素。

如果要来表示小明的主要特征,输入的六个特征还是“肉多”、“体脂率高”、“质量大”、“个子不高”、“心情好”、“喜欢看剧”而隐含层的特征变成了“胖”、“矮”和“开朗”,这个自编码器就是稀疏自编码器。

稀疏化数据,就是指将密集的浅层含义的数据(比如说:肉多这样的外在表现)表示为稀疏的更抽象的数据(将外在表现提炼为总结性的特征,比如:胖)。

完成上述两个任务,都需要构建合适的损失函数(lossfunction)(了解一下)。

(后面的依据个人兴趣选择是否阅读)

隐含层的层数是可以增加的,每一层都可以作为我们需要的特征,多层的结构能够让自编码器对特征的分析更加准确和稳定,而如果这个层数再增加一些(很多很多很多层)。

(省略了后面的解码步骤)

它就是堆叠/卷积自编码器(Convolutionautoencoder),可以说是一种卷积神经网络(Convolutionalneuralnetwork,CNN),更多的关于神经网络的知识会在后面详细说。

而回到最开始的图,我们刚才一直在说的是隐含层的意义和变化,那最后的输出一点用都没有吗?

这里不得不提一下生成式对抗网络(Generativeadversarialnetworks,GAN)。

生成式对抗网络的精髓就是两个网络,一个网络生成图片,一个网络辨别图片是不是真实的,当生成图片的网络能够“欺骗”识别图片的网络的时候,我们就得到了一个能够生成足够真实图片的网络。

这是一个很有趣的模型,机器根据已有的实物创造了实际中不存在的事物,下图是从真实图片转化为生成图片的过程。

这个思想能够实现一些很神奇的事情,比如:将文字变成图像,用对抗网络来构造药品和疾病的对抗等(

转载请注明:http://www.aideyishus.com/lkzp/5336.html

------分隔线----------------------------