揭秘自编码器,一种捕捉数据最重要特征的神经网络(视频+代码)

YouTube网红小哥Siraj Raval系列视频又和大家见面啦!今天要讲的是自编码器Autoencoder。

时长8分钟

有中文字幕

点击观看

揭秘自编码器,一种捕捉数据最重要特征的神经网络(视频+代码)

首先,自编码器是一个神经网络。

如果我们得到的数据是正确标注的,不论是图像或音频或文本,我们就很幸运了。深度学习在有标注数据集上非常有效。这是因为总有一个函数代表了变量之间的关系。

比如如果我们的输入数据是一堆数字,还有定义了输入数据是偶数或者奇数的标签,那么代表这两列数字关系的函数就很简单:如果输入数据能被2整除,则这个数是偶数,不然就是奇数。

揭秘自编码器,一种捕捉数据最重要特征的神经网络(视频+代码)

所有数据类型(视频或文本)均可用数字表示。因此总是有一个函数能映射关系。只不过比我们刚刚讨论过的函数更复杂一点。

所以我们现在可以跟电脑说话,真是太不可思议了。

-OK Google, do you love me?

-Ha ha ha ha, No.

(文摘菌:这段绝对不容错过!1'30''左右,一定要去原视频听听谷歌讽刺的笑声,是个女高音)

语音识别就是深度学习应用在标记数据集的结果。如果一个开发团队想要创建语音识别引擎,他们会使用以其转录本为标签的音频剪辑数据集。音频的每一个字节可以被分解成一系列数字,文字记录也可以。一些运算组合将输入转换成标签,这个组合就是函数。

神经网络可以通过反复的优化过程(也就是训练的过程)来慢慢逼近这个函数,简而言之就是每次迭代都最小化错误值。因此给定一个新的音频剪辑,它可以容易地预测到它的转录本会是什么样。

深度学习本质上是在完成从a到b的映射。更准确地说,它在完成通用函数逼近。

意思是有足够数据的话,神经网络可以逼近任何函数。

揭秘自编码器,一种捕捉数据最重要特征的神经网络(视频+代码)

输入一个贷款申请,输出客户会偿还的可能性;输入电子邮件,输出它是垃圾邮件或非垃圾邮件的概率……

深度学习不仅仅能用来找到未知的函数,还能找到我们是如何发现一个已知函数的。

所有神经网络都是复合函数,也就是函数套函数。网络上的层数越多,其嵌套函数也越多。对于一个三层网络来说,我们要用第一个权重矩阵乘以输入,对它应用一个激活函数,再重复这个过程。

这次我们使用输出作为我们新的输入。输入时间,等待,激活,结果是我们的输出。这可以表示为复合函数,因为我们用第一个函数的输出作为下一个函数的输入。

不过,假设我们的目标不是找到一个标签Y,而是重建原始输入X呢?

如果我们的输入是由几个数字组成的数组,在应用一系列运算之后,我们的网络应该以完全相同的数字输出这些相同的输入。我们将第一部分,可以将压缩输入成更少比特数的网络的,称为编码器。我们可以将第二部分,建立视觉图像的,称为译码器。

我们为什么要关心这个呢?我们不关心输出,因为输出只是复制了输入,我们关心的是隐藏层。如果一个网络能够重建输入,那么隐藏层必须包含足够信息给输出。如果隐藏层比输入层和输出层小,那么它代表的是低密度的相同信息,是从学习中得到的输入数据的集中代表。

揭秘自编码器,一种捕捉数据最重要特征的神经网络(视频+代码)

也有别的更好的办法来压缩数据,不过自编码器在某些领域还是很有用的,例如降维。它也可以被用在分类问题上。如果自编码器能正确地构建示例,这个示例很可能和用于训练的类别属于同一类。另外一个用途是异常检测。我们用正常例进行训练,这样可以很容易发现异常。如果我们训练它检测训练集中的异常,它只会发现那些已经见过的异常,而通常情况下异常值是比较少的。

好啦!更多有关自编码器的分类和代码的内容,可以自行看视频和通过文末的链接下载代码喔。以下是视频的重点总结:

神经网络可以缓慢地逼近各种函数,它可以通过训练(迭代优化过程)从而映射输入为输出。如果我们把输出设置为输入,就可以称这个神经网络为自编码器。自编码器有很多类型,包括最近出现的变分自编码器(VAE)。

最后附上一个视频里有关语音助手的笑话:

贝佐斯:Alexa,买点Whole Food的吃的做晚餐。

Alexa:好的,正在买Whole Food。

(指语音助手误会这位CEO的意思让亚马逊直接收购Whole Food)

揭秘自编码器,一种捕捉数据最重要特征的神经网络(视频+代码)


原文发布时间为:2018-04-21

本文作者:文摘菌

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”。

上一篇:Activiti 5.17.0 发布


下一篇:SpringMVC的异常处理和REST风格的实例应用(十三)上