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

简介: 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

本文作者:文摘菌

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

相关文章
|
1天前
|
机器学习/深度学习 算法 算法框架/工具
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
|
1天前
|
机器学习/深度学习 传感器 数据可视化
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
13 1
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
|
6天前
|
机器学习/深度学习 数据可视化 测试技术
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
19 0
|
7天前
|
机器学习/深度学习 API 算法框架/工具
R语言深度学习:用keras神经网络回归模型预测时间序列数据
R语言深度学习:用keras神经网络回归模型预测时间序列数据
16 0
|
7天前
|
机器学习/深度学习 数据采集 TensorFlow
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
23 0
|
7天前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
28 0
|
7天前
|
机器学习/深度学习 数据可视化 网络架构
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
12 0
|
8天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android's AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
9 0
|
8天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
9 0
|
10天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:保护数据的关键策略
【4月更文挑战第14天】在数字化时代,网络安全与信息安全已成为维护个人隐私和企业资产的重要组成部分。本文深入探讨了网络安全漏洞的概念、加密技术的应用以及提升安全意识的重要性。通过分析当前网络威胁的常见形式,文章提供了防御策略,旨在帮助读者构建一个更加安全的网络环境。

热门文章

最新文章