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

简介: YouTube网红小哥Siraj Raval系列视频又和大家见面啦!今天要讲的是自编码器Autoencoder。 时长8分钟 有中文字幕 点击观看 ▼ 首先,自编码器是一个神经网络。 如果我们得到的数据是正确标注的,不论是图像或音频或文本,我们就很幸运了。

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

时长8分钟

有中文字幕

点击观看

4fac3fd7814b418a7bbb4d650c4a1603525de7f3

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

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

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

a1db5ddd0034fb2ef7ee0b91bf14a0684f0c2fb3

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

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

-OK Google, do you love me?

-Ha ha ha ha, No.

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

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

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

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

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

170a519f0c32bfc406b22720f484e1d95c17c1fe

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

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

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

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

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

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

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

f8024c2ba6939cd56ae0de8584b23401db4cdc18

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

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

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

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

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

Alexa:好的,正在买Whole Food。

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

1afa40d7f939ad1999c2b77fdbb617b820d78fea


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

本文作者:文摘菌

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

相关文章
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
384 0
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
244 2
|
2月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
335 0
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
159 0
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
3月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
449 1
|
3月前
|
机器学习/深度学习 传感器 算法
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
237 7
|
3月前
|
机器学习/深度学习 传感器 分布式计算
基于模糊RBF神经网络轨迹跟踪研究(Matlab代码实现)
基于模糊RBF神经网络轨迹跟踪研究(Matlab代码实现)
212 1
|
3月前
|
机器学习/深度学习 移动开发 编解码
基于人工神经网络的类噪声环境声音声学识别(Matlab代码实现)
基于人工神经网络的类噪声环境声音声学识别(Matlab代码实现)
126 1
|
3月前
|
机器学习/深度学习 算法 数据可视化
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题研究(Matlab代码实现)
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题研究(Matlab代码实现)
332 6

热门文章

最新文章