深度学习工作机制通俗介绍

摘要: 本文是深度学习基础性介绍,以降维的角度分析卷积神经网络模型,并着重说明了目前人工智能存在的不科学性。

在本文之前,写过一些关于人工智能科普性文章,比如人工智能为什么能起作用模型是什么以及如何去创建模型还原论和整体论以及降维过程(需外网)。这些基础性的文章使得我们能够更好地理解机器学习,感兴趣的读者可以阅读一下。本文主要是讨论深度学习的工作原理,这也是人工智能科普性文章系列的最后一篇。

深度学习执行降维过程

考虑到之前的章节,这不是一个令人吃惊的断言。在之前的章节中,我们从几个角度和层次讨论了人工智能是如何地高效工作。此外,也使用TensorFlow及相关API实现的例子演示了二者的性能。可以发现,TensorFlow及API的结合能够在这个系统中实现很多的解决方案,且泛化足够简单。

下图是使用Keras图像理解示意图


首先,将最左边的输入层称作“底部”,将上图旋转九十度后可以发现,可以将其看作是一个从低到高的抽象层次堆栈,随着层数的增多,可以看到数据量和每层的复杂度明显降低,我们能否确定这个系统是否也在执行认知降维过程?它是否减少了一些不重要的东西?如果是这样的话,深度学习是如何做到这一点以及怎样确定哪些是重要的东西?

一般而言,可以通过一些压缩或随机删除等方法来实现原始数据的降维,但这是不可取的。降维的目标是丢掉一些不重要的部分,保留重要的部分。一些人可能不理解基于显著性简化和可逆无损压缩算法作为智能度量的重要性,这些对于机器学习而言都是非常重要的内容。

所以我们可以想象一个关于深度学习的神话,假设我们已经建立了一个从图像中找到人脸的系统,并意图将它作为照相机中的一个功能特性。目前,许多照相机已经具备了这一特性,因此,这也是个常见的例子。我们实现了一个图像理解神经网络模型,并花一些时间给该模型展示许多不同类型的图像,这就是使用监督学习来学习模型,之后就能利用该模型来展示从图像中识别人脸的这一童话。

如上图所示,模型首先将输入图像从RGB彩色值转换为输入数组,然后数组经过许多层的操作处理后,输出的数据比输入的数据更少,这也意味着有些数据被处理掉。每层接收的输入信号都来自上一层的输入,每层的输出传送给下一层。

在一些底层时,一些操作可能只是得到一些相邻的像素并确定方向,提取到一些边角信息。随着层数的加深,可以提取到更加抽象具体的信息,最终得到能够确定为一张人脸的特征信息。

丢弃所有非脸特征信息后,剩下的就是脸。

人为的丢弃某些信息是不可取的,因为无法判断这些丢弃掉的信息是否有用,直到可以确定抽象级别的信息时,才可以进行操作。同理,以一个公园游玩照片为例,模型的一些底层操作不能丢弃草坪的信息,因为它们没有关于草坪或地面的显著线索,而更高层能够得到更加抽象具体的信息,因此能够丢弃一些无用的信息。每一层从前一层接收“低级描述”,并丢弃它认为不相干的信息,并向下一层传送更抽象的信息,直到最终找到人脸。这也是为什么深度学习模型一般层次会比较深的原因。

深度学习这一想法本身并不新颖,早在1959年就被讨论过当时受限于算法、硬件水平及数据量的限制,没有得到很好的发展。近60年,随着硬件水平的不断提升,数据量的爆炸式增长,深度学习再一次焕发出勃勃生机,并展现出优异的性能。

下面讲解池化层操作,如下图所示。在TensorFlow中,有50多种池化操作,下图显示的2x2最大值池化操作,左图到右图需要执行四次池化操作。


2x2最大值池化操作就是从2x2矩形框中挑选出其中的最大值,并将其作为输出。输入层四个相邻的像素值可能表示RGB通道中的亮度,因此数值更大的值能够更能代表其亮度信息。在2x2最大值池化操作中,舍去了75%的输入数据,只保存并传播其中的最大值。

就像素值而言,它可能意味着最亮的颜色值,但就草叶而言,这可能意味着“这里至少有一片草叶”。每层提取特征,并丢弃一些特征,这也意味着进行降维操作。

可以清楚地看到,深层神经网络中最重要的思想之一就是:必须在多个抽象层上进行降维。只有在适当的层才能决定哪些信息可能是相关的,哪些信息可能是需要丢弃的。这也是一种简化过程,只有在学习中取得好的结果时,才会以这种方式作出决定。

下面讲解卷积过程,根据TensorFlow手册:

“请注意,虽然这些操作被称为卷积,严格上来讲,应该被称作‘互相关’”。

卷积层发现各种类型的交叉相关与共生性,图像内部存在空间关系,就像Geoff Hinton最近举例子一样,通常在鼻子下面发现嘴巴。更明显的是,在有监督学习情况中,模式与可用元信息(标签)之间存在关联。

网络模型中的更高层次的信息描述了这些相关性,不相关信息被视为非显著信息而被丢弃。从之前的模型图中可以看到,卷积层与ReLU激活函数层后接着最大值池化层。其中ReLU是一种新型激活函数,能够舍去负值,该非线性函数对深度学习而言是非常重要的,相较于传统的Sigmoid等激活函数而言,ReLU激活函数表现更加优异。

由卷积层-ReLU层-池化层这三层组成的这种模式是相当流行且实用的,这是由于这种组合方式执行一个可靠的降维过程,绝大多数的卷积神经网络模型都参考这种结构模式来建模。随着模型的加深,特征逐渐被减少,直到最终得到能够完成相关任务的正确特征。

这也是为什么深度学习模型是深层的原因,因为如果你明白在不同抽象层中哪些是相关和不相干信息,那么你只能通过丢弃无关的信息来降维。

深度学习是科学的吗?

尽管深度学习过程可以用数学符号描述(大多数是采用线性代数的形式),但这个过程本身是不科学的。深度学习就像一个黑匣子,我们无法理解这个系统是如何理解处理特征并完成相关任务的。

就拿卷积操作举例,正如TensorFlow手册中所说,卷积层发现相关性。许多草叶通常代表一个草坪,在TensorFlow中,系统会花费大量时间来发现这些相关性。一旦发现了某些相关性,这种关联会导致模型中某些权重的调整,从而使得特征提取正确。但从本质上来说,所有的相关性开始时对于模型来说都被遗忘了,必须在每次前向传播和梯度下降的过程中来重新发现。这种系统实际上是从错误中吸取教训,即模型输出与理想输出之间的误差。

前向和反向传播过程对图像理解有一定的意义,有些人在文本上使用了相同的算法。幸运的是,针对于文本任务而言,有更加高效的算法。首先,我们可以使用大脑突触或编程语言中的常规指针或对象引用显式地表示所发现的相关性,神经元与神经元之间有关联。

无论是深度学习算法,还是有机学习,都不是科学的。它们在缺乏证据并信任相关性的前提下得出结论,而不坚持可证明的因果关系。大多数深层神经网络编程很难得到理想结果并存在一定的误差,只能通过从实验结果中发现线索来改进模型。增加网络层数不总是有效的,对于大多数深度神经网络从业者而言,根据实验结果来调整改进网络就是他们的日常工作。没有先验模型,就没有先验估计。任何深层神经网络可靠性和正确性的最佳估计,都是经过大量的实验得到。

为什么我们会使用不能保证得到正确答案的工程系统呢?因为我们别无选择,使用整体方法当作可靠的降维方法是不可用的。与此类似,当任务需要有能力自主地执行上下文切片简化时,模型需要具有理解能力。

我们没有别的办法来处理这些不靠谱的机器吗?当然可以,因为地球上有几十亿的人类已经掌握了处理这项复杂任务的技能,所以你可以取代表现良好但理论上未经证实的玩意儿——一个通过深层神经网络建立的机器。比比你和机器谁每小时能挣更多的钱?这看起来不太像是科技的进步,这类机器不能被证明是正确的,因为它不能像普通计算机那样运行。

我最喜欢的一句话是由McCarthy和Hayes所断言的,“你看到了它,你将再次看到它”,深度学习是人工智能认识论其中一部分内容,尽管目前大多数智能是不科学的,但在几年后,我们将对智能定义达成一致意见,最终实现智能化的世界

作者信息

Monica Anderson,Syntience公司研究总监。

文章原标题《Why Deep Learning Works》,作者:Monica Anderson,译者:海棠,审阅:袁虎。

原文链接

干货好文,请关注扫描以下二维码:



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结合Apache Kafka生态系统,谈谈2018年机器学习5大趋势

摘要: 让我们来研究下Uber和Netflix上的KSQL,ONNX,AutoML和机器学习平台,看看它们之间是如何相互关联的。在2018慕尼黑OOP会议上,我展示了使用Apache Kafka生态系统和深度学习框架(如TensorFlow&#xff0c…

设计一段代码,判断在内存中是小端存储还是大端存储

大端存储:数据中的低位保存在内存中的高地址中,数据中的高位保存在内存中的低地址中。 小端存储:数据中的高位保存在内存中的高地址中,数据中的低位保存在内存中的低地址中。 假设int a1; 则a在存储中的存储是 00 00 00 01&#…

51单片机雾化片自动扫频程序_单片机简介

单片机简介数字电路简介在一个控制系统中, 单片机是电路的一部分, 单片机中的程序是针对其所在的电路编写的。因此,要对单片机编程并实现一定的功能,必须了解整个系统的电路图。单片机编程是针对某个特定的电路进行的单片机编程是…

IT公司老板落水,各部门员工怎么救??

戳蓝字“CSDN云计算”关注我们哦!公司高层公司副总A:咱们开个会研究一下这个事情怎么处理。公司副总B:如果老板没有救成功,下任是谁呢?会不会影响公司的上市?公司副总C:我认为咱们开会应该讨论两…

使用 MaxCompute(原ODPS) java sdk 运行安全相关命令

摘要: 使用 odps console 的同学,可能都使用过 odps 安全相关的命令。 转自zhenhong 使用 MaxCompute console 的同学,可能都使用过 odps 安全相关的命令。官方文档上有详细的 odps 安全指南,并给出了安全相关命令列表。 简而言之…

苹果笔记本能不能用python_“苹”除了苹果还能组哪些词?苹组词,释义及造句汇总!...

“苹”字组词,很多人第一反应就是苹果。那么除了苹果,苹还能组哪些词?苹组词都有哪些?下面,浙江秦学教育小编为大家带来苹组词,释义及造句汇总!来更新我们的组词大全,大家一定要多积累&#xff…

历史回顾——NLP问题解决方案的演变史

摘要: 回顾NLP问题的解决方案,探寻当下最流行的NLP技术,激发NLP问题新的解决方案!NLP-深度学习时代之前:在深度学习来临之前的日子里,在自然语言处理算法(NLP)领域出乎意料地有许多相…

关于signed和unsigned进行整形提升所出现的问题

看如下代码: int main() {char a -1;signed char b -1;unsigned char c -1;printf("a%d,b%d,c%d", a, b, c);return 0; }输出结果如下图所示 为什么会出现这种结果呢,现在我来分析一下 内存中存储这些变量都是以补码的方式进行存储&#x…

flowable BPMN的组件汉化

1.背景: 现在flowable流程设计器已经部分做了汉化,但是bpmn的组件还是没有汉化的,这样对我们中国 人来说就不是很方便。 2.效果:如何实现这一效果呢? 3.实现 3.1. stencilset_bpmn.json拷贝这个json文件到我们的资源…

华为确认与三家EDA公司停止合作;开源安卓恶意软件窃取用户隐私信息;三星高通回应7纳米EUV工艺问题……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 速腾聚创与英国 Aidrivers达…

MaxCompute Console 实用小命令

摘要: MaxCompute Console 可以从 这里 下载。在阿里云官网可以查看 帮助文档。 这里跟大家分享一些 MaxCompute Console 中实用的小命令。 MaxCompute Console 可以从 这里 下载。在阿里云官网可以查看 帮助文档。 这里跟大家分享一些 MaxCompute Console 中实用的…

一个form 如何做两次提交_如何做一个优秀的家长

如何做一个优秀的家长文|潍坊坊子崇文中学父母对待孩子无外乎三种情况:一是事事管、时时管,做了很多事,效果却不好;二是什么都不管,什么都不做,放任自流,不闻不问,结果更不好&#x…

动态执行shell脚本

文章目录一、linux动态执行指定脚本二、需求思路分析①我要做什么?②先手动执行一遍流程③ 把执行命令记录下来三、动态执行脚本①手动制作脚本②脚本升级③ 脚本截图一、linux动态执行指定脚本 脚本目录 /app/CodeQualityScan/gblfy_cx/脚本名 sonar-scanner.sh用…

关于机器学习,你需要知道的三件事!

摘要: MATLAB开发运营团队深度解析何为机器学习,什么时候使用机器学习,如何选择机器学习算法,MATLAB到底能为机器学习提供怎样的便利?机器学习是一种数据分析技术,让计算机执行人和动物与生俱来的活动&…

京东云的区块链“经”

戳蓝字“CSDN云计算”关注我们哦!就在不久前,京东云在北京国家会议中心召开“区块链京东云 大有可为”战略合作媒体沟通会。会上,京东云与京东数科宣布了在区块链技术服务领域深度合作,重磅发布了智臻链“云”建设规划&#xff0c…

MaxCompute Tunnel SDK数据上传利器——BufferedWriter使用指南

摘要: MaxCompute 的数据上传接口(Tunnel)定义了数据 block 的概念:一个 block 对应一个 http request,多个 block 的上传可以并发而且是原子的,一次同步请求要么成功要么失败,不会污染其他的 b…

库函数strlen的模拟实现

1、对于strlen这个库函数来说&#xff0c;主要就是求字符串的长度的&#xff0c;无论何时&#xff0c;只要遇到‘\0’,求得的长度都会戛然而止&#xff0c;可以看一下例子 #include<stdio.h> #include<string.h> int main(){char* str1[]"abcdef";char*…

MaxCompute 中的Code Generation技术简介

摘要&#xff1a; 前言 在《数据库系统中的Code Generation技术介绍》中&#xff0c;我们简单介绍了一下Code Generation技术及其在大规模OLAP系统&#xff0c;特别是大规模分布式OLAP系统中的重要性。MaxCompute采用了Code Generation技术来提高计算效率。在MaxCompute 前言 …

java调用python_Python教程:17个冷门但实用的小技巧

Python是机器学习的主流语言&#xff0c;没有之一。今年5月&#xff0c;它首次在PYPL排行榜上超越JAVA&#xff0c;成为全球第一大编程语言。而一个月后&#xff0c;Stack Overflow也分享了最新的编程语言浏览量统计数字&#xff0c;结果显示&#xff0c;Python的月活历史性地超…

Hadoop精华问答 | NameNode的工作特点

我们很荣幸能够见证Hadoop十年从无到有&#xff0c;再到称王。感动于技术的日新月异时&#xff0c;让我们再来看看关于Hadoop的精华问答。1Q&#xff1a;NameNode的工作特点A&#xff1a;NameNode始终在内存中保存metedata&#xff0c;用于处理“读请求”&#xff0c;到有“写请…