首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习的关键:无监督深度学习简介

作者|FaizanShaikh译者|马卓奇编辑|VincentAI前线导读:在这篇文章中,我们用一个直观的案例研究概述了无监督深度学习的概念。并且详解了在MNIST数据集上进行无监督学习的代码,包括K-Means、自编码器以及DEC算法。

无监督深度学习范例研究在这篇文章中,我们将介绍一个基于非结构化数据的无监督学习的范例研究。深度学习技术通常在处理非结构化数据时能力最强。因此,我们以深度学习在图像处理领域的应用为例,来理解这个概念。定义问题——如何整理照片库现在,我的手机里有2000张照片。如果我是一个自拍狂,照片的数量很可能是这个数字的10倍。挑选这些照片是一场噩梦,因为基本上每三张照片中就有一张对我来说是无用的。

我个人也会收集一些在Reddit上看到的有趣的回答或分享。

至少有200张照片,是我在著名的DataHackSummit会议上,和随后去喀拉拉的旅行中拍摄的,也有一些是同事分享给我的。

也有一些照片记录了会议期间的白板讨论内容。

还有一些截图记录了代码错误,需要内部团队讨论。使用后必须清除它们。

我还发现了一些“个人隐私”图像,如自拍、合影和几个特殊场景。它们数量不多,但它们是我珍贵的财产。

最后,有无数张“早上好”、“生日快乐”和“幸福的排灯节”的海报,我想方设法把它们从照片库中删除。但是不管我怎么删除它们,它们还是会出现!

在下面的章节中,我们将讨论一些我想出的解决这个问题的方法。方法一:基于时间分类最简单的方法是按照时间来整理照片。每一天都可以有不同的文件夹。大多数照片浏览应用程序均使用这种方法(如谷歌照片应用程序)。

这样做的好处是,当天发生的所有事件都会被存储在一起。这种方法的缺点是它太普通了。每一天,我都可能拍摄郊游的照片,同时把有意思的回答截图下来,等等。它们会混在一起,这完全没有达到我的目的。方法二:基于位置分类一个相对较好的方法是根据拍摄地点整理照片。例如,每次照相,我们都可以记录照片拍摄的地方。然后,我们可以根据这些位置——无论是国家、城市还是地区,按照我们想要的区域粒度来制作文件夹。

这种方法的缺点在于它的想法过于简单。我们如何定义一张搞笑图片,或者一张卡通图的位置?而它们在我的照片库中占有相当大的份额。所以这种方法也不够巧妙。方法三:提取照片的语义信息,并用它来定义我的照片库到目前为止,我们所看到的方法大多依赖于和照片同时获得的元数据。整理照片的一种更好的方法是从图像本身中提取语义信息并智能地使用这些信息。让我们把这个想法分成几个部分。假设我们有多样性类似(如上所述)的照片。

这种方法就是以“无监督的方式”来解决问题。我们没有直接定义我们想要的结果。相反,我们训练一个算法为我们找到这些结果。我们的算法以智能的方式对数据进行了总结,然后在这些推论的基础上尝试解决这个问题。很酷,对吧?现在你可能想知道,我们该如何利用深度学习来处理无监督的学习问题?正如我们在上面的案例研究中看到的,通过从图像中提取语义信息,我们可以更好地了解图像的相似性。

一个自动编码器从逻辑上可以分为两个部分:编码器和解码器。编码器的任务是将输入转化成一个低维表示,而解码器的任务是从低维表示重构输入。这是对自编码器的高度概括,下一篇文章中我们将仔细解读自编码器的算法。虽然这一领域的研究正在蓬勃发展,但目前最先进的方法也无法轻松解决工业层面的问题,我们的算法想真正“投入工业使用”还需几年时间。

你可以打开一个JupyterNotebook,跟着下面的代码一起操作。首先我们需要导入所有必需的模块。

下面我们将种子的值设为一个受限随机数。

现在设置数据的工作路径,方便后续访问。

读入训练和测试文件。

在这个数据库中,每个图片都有类标,这在非监督学习中并不常见,这里,我们用这些类标来评估无监督学习模型的表现。现在让我们把数据显示成一张图片:

随后我们读入所有图片,将它们存储成一个numpy矩阵,创建训练和测试文件。

我们将训练数据分成训练集和测试集。K-Means我们首先直接对图像使用K-Means聚类,将其聚成10类。

我们将使用归一化互信息(NMI)分数来评估我们的模型。互信息是聚类结果和人工分类之间依赖程度的对称性度量。它基于聚类纯度PI的概念,通过将Ci与M中的所有手动分类进行比较,衡量单个聚类Ci的质量,即Ci与Mj中相同目标的最大数量。因为NMI是归一化的,所以我们可以使用它来比较聚类个数不同的聚类结果。NMI公式如下:

K-Means+AutoEncoder现在,我们不直接使用K-Means,我们首先用自编码器降低数据维度,提取有用信息,再将这些信息传递给K-Means算法。

现在训练自编码器模型:

从结果可以看到,将自编码器与K-Means结合起来,算法效果比仅使用K-Means的效果要好。DEC最后,我们看一下DEC算法的实现。DEC算法将聚类和自编码器放在一起训练以取得更好的效果。

DEC算法与上述两种方法相比,效果最好。研究人员发现,进一步训练DEC模型可以达到更高的性能(NMI高达87)。查看英文原文:https://www.analyticsvidhya.com/blog/2018/05/essentials-of-deep-learning-trudging-into-unsupervised-deep-learning/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180718A0372T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券