精华内容
下载资源
问答
  • 你相信神经网络中的自上而下的信息传导旨在帮助你测试如何进行重建。你如何测试并确定它是熊猫而不是鸵鸟? GH: 我认为这至关重要,是的。 NT: 但是脑科学家并不是很赞同这一观点是吗? GH: 脑科学家们...

    https://www.toutiao.com/a6694875591390265860/

     

    Geoffrey Hinton专访:如何解释神经网络的变迁

     

     

    大数据文摘出品

    来源:wired

    编译:蔡婕、顾晨波、张秋玥

    Geoffrey Hinton是深度学习的创始人之一,2019年图灵奖得主,谷歌工程研究员。

    在津南谷歌的I/O开发者大会上,美国科技媒体Wired的Nicholas Thompson和Hinton讨论了他早期对大脑的痴迷,以及计算机可以模仿其神经结构的可能性。他们还讨论了意识这个概念以及Hinton未来的计划。

    以下是对话过程,请欣赏!

    Nicholas Thompson:让我们从你早期的一些极具影响力的论文开始谈起。每个人都说,“这是一个聪明的想法,但实际上我们不可能以这种方式来设计计算机。那么,请解释一下你为什么如此坚持、如此自信地认为自己找到了重要的东西。

    在我看来,大脑必须通过学习“联系”的力量来发挥作用,除此以外没有别的方式。如果你想让一个设备完成一些智能工作,那么有两个选择:一是你可以编程,二是它可以学习。人当然不是被编程的,所以我们必须学习。因此这肯定是正确的道路。

    NT:那么,能解释一下神经网络是什么吗?

    GH:你有相对简单的处理元素,它们是非常松散的神经元模型。这些模型之间有连接,每个连接都有权值,并且可以通过学习改变权值。神经元所做的是,将连接上的活动乘以权值,再把它们全部加起来,然后决定是否发送输出。如果它得到一个足够大的和,就会发送一个输出;如果总和为负数,则不会发送任何内容。仅此而已。你所要做的就是把成千上万的神经元和成千上万的权值的平方连接起来,然后算出如何改变权值,它就能做任何事情。这只是一个你如何改变权值的问题。

    NT:你是什么时候意识到这种模式与大脑运作方式相近的?

    GH:神经网络总是这样设计出来的,被设计成像大脑那样去工作。

    NT:意思就是,在你职业生涯的某个阶段,你开始去了解大脑的工作方式。或许是在你12岁的时候,也或许是在你25岁的时候。所以,你究竟是什么时候决定要模仿大脑来制作电脑模型的?

    GH:基本是在了解大脑原理后。具体想法是:通过改变连接的字符串(就像人们认为的大脑学习方式那样),来制造一个像大脑那样学习的学习设备。这个主意也不是我的首创,图灵也有同样的想法。图灵,尽管他奠定了很多标准计算机科学的基础,他也相信大脑是一个有着随机权值的无组织的“装置”,它会使用强化学习来改变连接,最终学习一切。他还认为这是获得情报的最佳途径。

    NT:所以你遵循图灵的想法——制造机器最好的方法就是模仿人类的大脑。脑子里想着:这就是人脑的工作原理,因此让我们造一个这样的机器吧。

    GH:是的,这不仅仅是图灵的想法,很多人都这么认为。

    NT:最黑暗的时刻是什么时候?还有,什么时候那些同样赞成图灵想法、一直在工作的人退缩时,但你却仍然继续前进?

    GH:总有一群人始终相信它,尤其是在心理学领域。但是对于计算机科学家,90年代时得到的数据集非常小,计算机运行也没有那么快。在小数据集方面,其他的方法比如支持向量机,工作得更好。

    在80年代我们就发展了反向传播,原本以为它能解决所有问题,结果却不行,我们疑惑为什么行不通。现在知道其实是数据规模导致其不能解决所有问题,当时我们都没有意识到。

    NT:那你当时认为为什么行不通呢?

    GH:我们认为这行不通,是因为我们没有完全正确的算法和完全正确的目标函数。很长一段时间以来,我一直认为这是因为我们一直在做监督学习,你必须给数据贴上标签。其实我们应该做的是无监督学习,就是从没有标签的数据中学习。

    NT:有意思。所以问题是你没有足够的数据,而你当时却以为自己拥有适量的数据,但未被正确标记。因此你只是误解了这个问题?

    GH:我认为仅仅使用标签是一个错误。大部分学习过程都没有使用任何标签,只是尝试在数据中对结构建模。我相信这一点。我也认为随着计算机变得越来越快,对于任何给定大小的数据集,只要计算机足够快,都最好做无监督学习。一旦你完成了无监督学习,你就能从更少的标签中进行学习。

    NT:所以在20世纪90年代,你仍然继续身处学术界进行这个研究,也依旧发表论文,但没有解决什么大的问题。你有没有说过,我觉得研究够了,要去试试别的方向?还是你只是坚持要继续研究深度学习?

    GH:是的,我一直在坚持这样的研究一定有用。我的意思是,大脑中的连接正在以某种方式完成学习过程,我们必须弄清它。可能有很多不同的方法来学习连接的强度,大脑正在使用其中一个。当然,你也必须拥有可以学习这些连接强度的东西。我从来没有怀疑过这一点。

    NT:因此你永远不会怀疑。那么,什么时候研究开始可行的?

    GH:80年代最令人沮丧的一件事是,如果你建立的网络有很多隐藏层,你就无法训练它们。这也不完全正确,因为你可以训练一些相当简单的任务,比如识别笔迹。但是大多数深层神经网络,我们是不知道如何训练它们的。大约在2005年,我想出了一种无人监督的深网训练方法。你获取到输入,比如说像素,然后你会得到一堆特征,它们很好地解释为什么像素是这样的。接着你把这些特征当做数据,又学习到另一组特征,所以我们可以解释为什么这些特征有相关性。你不断地进行一层又一层学习,但有趣的是,你可以通过一些数学运算,来证明每次你学习另外一层,你不一定有一个更好的数据模型,但你有一个关于你的模型有多好的波段。这样每次添加另一层时,你都可以获得更好的波段。

    NT:这是什么意思,你有一个关于你的模型有多好的波段?

    GH:一旦有了一个模型,你说,“模型找到这些数据有多令人奇怪?”你向它展示了一些数据然后说:“这是你相信的那种东西吗,还是说这令人惊讶?”而你想要做的是拥有一个模型,一个好的模型是看着数据说,“是的,是的,我知道。这是不足为奇。”

    通常很难准确计算出这个模型发现数据的惊人程度。但是你可以在上面计算一个波段,然后得出结论说这个模型发现的数据没有那个模型那么令人惊讶。你还可以展示,当添加了额外的特征探测器层时,得到一个模型能使得你每次添加一个层,波段就会发现数据变得更好。

    NT:大约在2005年,你取得了这个数学上的突破。那么你又是什么时候开始得到正确答案的?当时你在处理什么数据?你在处理什么数据?语音数据是你的第一个突破,对吧?

    GH:这只是手写的数字,非常简单。而之后大约在同一时间,他们开始开发GPU(图形处理单元)。大约在2007年,做神经网络的人们开始使用GPU。我有一个非常优秀的学生,也开始使用GPU来寻找航拍图像中的道路。他写了一些代码,然后被其他学生用来使用GPU去识别语音中的音素,当时他们正在使用预训练的想法。在他们完成所有这些预训练之后,只要把标签贴在上面然后使用反向传播,你就可以有一个经过预训练的非常深的网。然后你可以继续使用反向传播,它确实有效。它在某种程度上超过了语音识别的基准。

    NT:它击败了最好的商业语音识别?也击败了语音识别方面最好的学术工作?

    GH:在一个名为TIMIT的相对较小的数据集上,它的表现略好于最好的学术作品。还在IBM完成了工作,并且相当迅速。很快,人们就意识到这个东西——因为它打败了花了30年时间开发的标准模型——如果再多开发一点就会做得很好。所以我的研究生们去了微软,IBM和谷歌,谷歌是最快把它变成生产语音识别器的。到2012年,这项2009年首次完成的工作,在Android上出现了。而后Android在语音识别方面突然变得更加擅长。

    NT:自从40年前开始产生这个想法的那一刻,你已经研究了20年,现在你终于比你的同事出色了。这种感觉怎么样?

    GH:我只有30年的想法!

    NT:是的,是的!所以只是一个新想法。新的!

    GH:我感觉很好,它终于找到了真正的问题所在。

    NT:你还记得第一次得到启示性的数据时,你在哪里吗?

    GH:不记得了。

    NT:好的。所以你意识到它适用于语音识别。那又是从什么时候开始将它应用于其他问题?

    GH:就在那之后我们开始把它应用到其他各种问题上。George Dahl是最早从事语音识别研究的人之一,他将其应用于预测一种分子是否会与某种物质结合,并成为一种良好的药物。还有这么有一场比赛,他只把我们设计的语音识别标准技术应用到预测药物的活性上,就赢得了比赛。表明了这些东西的运用范围是相当普遍的。然后我的一个学生说,“Geoff,你知道么,这个东西将用于图像识别,李菲菲已经为它创建了正确的数据集。还有一个公开的竞争,我们也必须这么做。”

    当时是2012年,我们得到的结果比标准的计算机视觉要好得多。

    NT:那么,是什么区分了哪些区域工作最快,哪些区域需要更多间?似乎视觉处理、语音识别,这样类似于用感官知觉来处理的人类核心活动被认为是首先需要清除的障碍,对吗?

    GH:是也不是,因为还有一些比如运动控制这样的其他领域。我们人类非常擅长运动控制,我们的大脑显然就是为此而设计的。而直到现在,神经网络才开始与其他最好的技术竞争。神经网络技术最终会赢,但现在才刚刚开始赢。

    另外,我认为推理——抽象推理,这是我们要学习做的最后一件事,我也认为这将是神经网络学习做的最后一件事。

    NT:所以你一直说神经网络最终会赢得一切。

    GH:嗯,我们都是神经网络。他们可以做任何我们能够做的事情。

    NT:是的,但是人脑并不一定是有史以来最有效的计算机器。

    GH:当然不是了。

    NT:当然不是我这人类的脑袋!难道不存在一种比人脑更有效的机器建模方法吗?

    GH:从哲学的角度来说,我并不反对这样的想法,即可能有一些完全不同的方式来做出(人类能够做到的)这一切。比如它可以是这样的。如果从逻辑开始,你试图将逻辑自动化,然后再做一些看起来很酷炫的定理证明,再做些推理,然后你决定通过推理来做视觉感知——可能最后成功方法就是这个。事实证明它没有。但我对这一事实没有哲学上的反对意见。只是我们知道大脑可以做到这一点。

    NT:但也有一些事情我们的大脑做不好。对于这些事情而言,神经网络会不会也没有什么办法将其做好呢?

    GH:很可能(做不好),是的。

    NT:我这还有个相对独立的问题:我们并不完全知道它们到底是如何运作的,对吧?

    GH:不,我们确实不知道它们如何运作。

    NT:我们不了解自上而下的神经网络是如何工作的。这是我们不理解神经网络运作方式的一个核心要素。麻烦您解释一下这个问题,然后让我再问一下这个显而易见的跟进问题:如果我们不知道这些东西是如何工作的,那它们怎么能起作用呢?

    GH:如果你看一下目前的计算机视觉系统,其中大部分基本上是前馈;他们不使用反馈连接。当前的计算机视觉系统还有一个问题——它们很容易出现对抗性错误。你可以稍微改变一张熊猫照片上的几个像素——现在照片看起来仍然像只熊猫,但系统会突然改口说这其实是一只鸵鸟。显然,你改变像素的方式是经过精心设计的,从而欺骗它认为照片是一只鸵鸟。但重点是,照片对你来说仍然像一只熊猫。

    最初我们认为这些算法非常有效。但是,当我们不得不面对这样一个事实,即他们明明面对着一只熊猫但确信这其实是一只鸵鸟时,你会有点担心。我认为这个问题一部分是由于,这些算法不是试图从概括性表征中重建图像,而是试图进行歧视性学习。在那里你只学习特征探测器的层次,而目标函数只是关于改变权重以便你更好地得到正确的答案。

    最近在多伦多,我们一直在发现,或者Nick Frost一直在发现,如果你引入重建,那么它可以帮助你更好地解决对抗性攻击这一问题。所以我认为在人类的视觉中,我们使用重建来进行学习。并且,因为我们通过重建来进行大量学习,我们更不易于被对抗性攻击蒙蔽双眼。

    NT:你相信神经网络中的自上而下的信息传导旨在帮助你测试如何进行重建。你如何测试并确定它是熊猫而不是鸵鸟?

    GH:我认为这至关重要,是的。

    NT:但是脑科学家并不是很赞同这一观点是吗?

    GH:脑科学家们都同意这一表述——如果你在感知途径中有两个皮质区域,那么一定会有向后的连接。这些科学家们在其用途上怀有不同的观点。有人认为这可能是为了关注,可能是为了学习,也可能是为了重建。或者它可能包括所有这些可能性。

    NT:所以我们并不知道向后沟通是什么。您正在将重构组合进您构建的神经网络(或向后沟通)中,即使我们不能够确定那就是大脑的运作方式?

    GH:是的。

    NT:这不是作弊吗?我的意思是,你是想做一个与大脑一样的东西,但你目前压根不知道大脑是如何运作的。

    GH:并不是。我不是在做计算神经科学。我也不是想模拟大脑的运作方式。我其实是被大脑激发灵感,说“这玩意能用,如果我们想做些什么类似有效的东西,我们应该从这里来找灵感。“。

    所以这是”神经启发“,而不是神经模型。整个模型,包括我们使用的神经元,都是受到神经元有很多层联系并且此联系的强度能够被改变这一事实的启发。

    NT:这很有趣。那么如果我从事计算机科学,而且我正在研究神经网络并想要击败你,那么一种选择就是建立自上而下的沟通机制,并将其建立在其他脑科学模型上。所以是基于学习而不是重建。

    GH:如果他们确实是更好的模型那么你就赢了。就这样。

    NT:那真是非常有趣。让我们转到更一般的话题吧。这么说来,神经网络将能够解决各种问题。那么有没有神经网络无法捕获的人类大脑的奥秘?例如,情绪......

    GH:不。

    NT:那么爱可以通过神经网络重建吗?意识可以重建吗?

    GH:当然。一旦你弄明白这些东西意味着什么。我们是神经网络,对吧?意识是我特别感兴趣的东西。没有它我还是能活下来,但......人们并不真正知道它们的含义。有各种不同的定义。我认为这是一个非常科学的术语。100年前,如果你问人们什么是生活,他们会说,“生物有生命力,当它们死亡时,生命力消失了。这就是活着和死亡之间的区别,即你是否具有生命力。

    “现在我们不再有生命力这一表述了,我们只是认为这是一个科学发展前的伪概念。一旦你学习一些生物化学和分子生物学,你就不再需要生命力这一解释了,你将能够理解它是如何运作的。我认为这与意识相同。我认为意识是一种用某种特殊本质来解释心理现象的尝试。

    而这个特殊的本质,你其实并不需要它。一旦你能够真正解释它,那么你将能够解释我们如何做出那些让人们认为我们具有意识的行为,你也将能够解释所有这些不同的意识含义——完全不需要借助于什么‘意识’这一概念。

    NT:所以没有无法创造的情感?无法创造的思想?一旦我们真正理解了大脑是如何工作的,那么在理论上,人脑所有的功能都能够被一个完整构造的神经网络所执行?

    GH:约翰列侬有一首歌,听起来很像你刚才所说的情况。

    NT:你对此有100%的信心吗?

    GH:不,我是贝叶斯派,所以我有99.9%的自信心。

    NT:好的,那0.1是什么?

    GH:那是说,比如,我们所有人、所有这些都是一个庞大模拟的一部分。

    NT:那倒是不假。那么我们从计算机工作中学到了什么呢?

    GH:所以我认为我们在过去十年中所学到的是,如果你采用一个具有数十亿个参数的系统,以及一个目标函数——就像用文字填补空白一样——它将能够比你预期的更加完美地运行。您可能会想到(传统AI学派中的大多数人也都会这么想),采用具有十亿个参数的系统,用随机值启动它们,测量目标函数的梯度(即对于每个参数,如果你稍微改变一下这个参数,看目标函数将如何变化)——然后在改善目标函数的方向上改变它。

    你可能会觉得这将是一种陷入困境的无望算法。但事实证明,这是一个非常好的算法。你越将其规模扩大,它就越好。这真的只是一个实践上的发现。确实有一些相关理论出现,但它基本上算是一个实践发现。现在,因为我们已经发现了这一点,它使得”大脑计算某些目标函数的梯度,并更新突触强度的权重以遵循该梯度“这一猜想更加合理。我们只需弄清楚它如何进行降级,以及目标函数是什么。

    NT:但我们当时对大脑并不了解吧?我们并不了解重新加权?

    GH:这曾是一个理论。很久以前,人们认为这是一种可能性。但总会有一些传统的计算机科学家说:“这一切都是随机的,你只需通过梯度下降来学习它——这对于十亿个参数来说永远不会有用。你必须掌握很多知识。“我们现在知道这是错的;你可以随便输入起始参数,并学习一切。

    NT:所以让我们把它扩展一下。当我们在模型上运行这些大规模测试时,根据我们对人类大脑功能的理解,我们可能会继续越来越多地了解大脑实际上是如何运作的。你认为这会最终导致这样一种情形吗——我们将人类大脑重新连接成更高效的机器?

    GH:如果我们真的了解现状,我们应该能够让教育工作变得更好。我觉得我们会的。如果你最终能够了解你的大脑中发生了什么并且它如何进行学习,但你却无法为更好进行学习而适应环境,那真的是非常奇怪。

    NT:未来几年内,您认为我们将如何利用我们对大脑的了解以及深度学习改变教育的运作方式?您会怎么改变教学课程?

    GH:几年后,我不确定我们会学到多少东西。我认为改变教育的时间会被拖长。但是你可以看到现在的(机器人)助手正在变得越来越聪明。一旦它们能够真正理解对话,就可以与孩子进行对话并对他们进行教育。

    NT:理论上,当我们更好地理解大脑时,你会根据我们知道他们将要学习的方式,让助手们与孩子们进行更好的对话。

    GH:是的,我对此并没有太多考虑。这不是我的研究内容,但听起来确实很可信。

    NT:我们将能够理解梦是如何运作的吗?

    GH:是的,我对梦超级感兴趣。我至少有四种不同的做梦理论哦。

    NT:让我们听一听呗,一,二,三,四。

    GH:很久以前,有一些叫做Hopfield网络的东西,它们把记忆当做本地吸引子来学习。Hopfield发现,如果你试图把太多的记忆放进去,它们就会感到困惑。它们会把两个本地吸引子同时考虑进来并将其合并为二者之间的某种吸引子。

    然后,Francis Crick 和Graeme Mitchison发现,我们可以通过”忘却“来摆脱这些假极小值。因此我们关闭输入,将神经网络置于随机状态,然后让它稳定下来。我们觉得这很糟糕,改变连接,这样你就不会一直稳定于那个状态。如果你这么做了的话,网络就能够存储更多的记忆了。

    然后我和Terry Sejnowski反应过来:如果我们不仅有帮助储存记忆的神经元(姑且称之为名花有主的神经元),我们还有一些其他富余的神经元(姑且称之为形同单身的神经元),我们是否能够找到一种算法,能让这些富余的神经元也来协助存储记忆?

    最后,我们想出了Boltzmann机器学习算法,它有着非常有趣的属性:输入数据,它在其他节点周围摇摇晃晃,玩到开心为止。一旦完成,它会基于两个单元节点是否处于激活(active)状态来增加所有连接的强度。

    你还必须历经一个阶段:切断神经元的输入,你让它四处游荡并进入一个它满意的状态,当它玩爽了,你说:“把所有的活跃分子(激活的神经元)逮出来不让它们坐一块(减弱连接强度)”。

    所以这里我这里在介绍玻尔兹曼算法的步骤。但实际上,这个算法背后有着深厚的数学背景,你在处理的问题,无非是如何改变连接关系,使得有着这些隐藏单元(hidden unit)的神经网络能够清楚地复现数据。同时,这个算法中,必须还有另一个阶段,我们称之为负面阶段。在网络没有输入的情况下运行时,它会“忘记”之前所有的状态。

    我们每晚都要做好几个小时的梦。如果我随机叫醒你,你可以告诉我你刚刚梦到了什么,因为梦的信息都储存在你的短时记忆力。没错,你做了好几个小时的梦。

    但是当你早上醒来时,你经常只能回忆起一串梦中的最后一梦,别的都想不起来了——这是件多么幸运的事情啊,因为梦的记忆越多,现实的记忆也会越少,你会无法分辨一段模糊的记忆究竟是真实发生的,还是梦里浮现的。那么,为什么我们不能够记得我们梦里发生的所有事情呢?Crick的观点是,梦的全部意义在于忘掉那些事情,这就如同你把所有学过的东西都还给老师了。

    而Terry Sejnowski和我证明,实际上,这便是Boltzmann机器的最大似然的(maximum-likelihood)学习逻辑。这和做梦一样。

    NT:我想谈谈你的其他理论。但是你在设计深度学习算法时,真的基于了梦的模式吗?研究图像数据集一段时间,重置,再次研究,再重置。

    GH:是的,我们有些类似的机器学习算法。最早一些可以学习如何处理隐藏单元的算法都是基于Boltzmann机,但是它们效率很低。不过,我发现了一种对它们进行近似的方法,提高了它们的效率。这个方法才是把深度学习救回正轨的东西。那个方法就是限制性Boltzmann机的有效表述形式,它所做的,就是忘记学习过的一切。但是,这个神经网络不是真的在全程睡觉划水,它只是在运算完每个数据点之后,小小地走神一下。

    NT:好的吧,所以这些机器人会做梦,梦里还在数山羊。我们接着来看看第二,第三和第四条理论吧。

    GH:第二理论被称为睡眠唤醒算法(Wake Sleep Algorithm)。你的目的,是得到一个生成模型。所以你会想到,你想拥有一个可以生成数据的模型,这个网络模型里有着多层的特征检测器,并能够从高到低激活从高级到低级的特征,直到它直接激活了像素数据(输入数据)——像素数据就是图片的基本表述方式。你也当然想反向开车,你想做图像识别。

    因此,你就有了一个由两个阶段组成的算法。在唤醒阶段,数据输入,神经网络做图像识别,不是学习用于识别的连接,而是学习生成连接。 所以数据进来,我激活了隐藏单位。

    然后我学会让那些隐藏的单位善于重构那些数据,因此它正在学习在每一层进行重构。问题在于,你如何学习前向连接?我的想法是,如果你知道前向连接,你可以学习后向连接,因为你可以学习重建。

    现在,事实证明,如果使用后向连接,你可以学习前向连接,因为你可以从顶部开始生成一些数据。由于你生成了数据,你知道了所有隐藏层的激活状态,因此您可以学习前向连接来恢复这些状态——这就是睡眠阶段。当你停止输入时,你只需生成数据,然后尝试重建生成数据的隐藏单位。因此,如果你了解了自上而下的连接,你也将学习自下而上的连接。

    如果你知道自下而上的那些连接,你会学到自上而下的连接。(译者:个人理解,假想模型神经网络前向传播是一套权值,反向传播是另外一套权值,其一可知其二。)那么,如果你从随机的连接开始,并尝试交替使用两者,会发生什么呢?嘿,居然真的还能用。当然,为了更好的效果,你必须做各种调整,但是交替使用确实能用。

    NT:好的吧,那你准备介绍一下另外2个理论吗?我们还有8分钟,是不是也许我们先问其他的问题?

    GH:如果你再给我一个小时,我就能把另外2个家伙搞出来。

    NT:好的吧,那我们还是来谈谈下一个话题吧。你接下来的研究是什么?你现在准备解决什么问题?

    GH:你最终想做的,还是那些你没有完成的事情。我认为我可能会研究我从未完成的事情,我称之为胶囊网络,它是关于如何使用重构进行视觉感知的理论,以及如何将信息规划到正确的位置。在标准神经网络中,信息,网络层的活性,只是自动地存储;你不能决定将它们发送到哪里。胶囊网络的理念是决定在哪里发送信息。

    现在,自从我开始研究胶囊网络以来,谷歌的其他一些非常聪明的人发明了transformer,transformer正在做和胶囊网络同样的事情。transformer决定在哪里路由信息,这是一个巨大的突破。

    推动胶囊网络发展的另一动力是坐标系。当人类使用视觉时,他们是在使用坐标系的。如果它们在对象上使用了错误的坐标系,那么他们甚至无法识别该对象。给你举一个小栗子:想象一个四面体;它有一个三角形底座和三个三角形面,所有等边三角形。容易想象,对吗?现在想象一下用一个平面把它切开——你看到了一个正方形截面。

    这就不容易想到这个对象其实是个四面体了吧,对吧?每次切片时,你通常都会得到一个三角形的截面。如何获得一个正方形的截面,并不好想。不,可能这一点都不好想。好的,但我会帮你得到这个诡异的形状。我需要你的笔。想象一下,如果你拿这样的笔,你会得到这样的形状,另一支像这样的直角笔,你将这支笔上的所有点连接到这支笔上的所有点。那是一个坚实的四面体。

    好的,你看到它其实是另外一套坐标系,四面体的边缘,这两条线和坐标系的标线重合。如果你用那一套坐标系想象一个四面体,很明显,这样,在顶部你有一个长方形,在底部我们也得到一个长方形,中间有一个正方形。所以现在很清楚了,你如何切割它能够得到一个正方形的截面,前提是你参考的是什么坐标系。

    因此很明显,对于人类而言,坐标框架对于感知非常重要。

    NT:但是你是如何在你的模型中加入参考系信息的呢?我的意思是,你是如何改正了你在1990年代犯的错误:尝试把规则带入系统中却使之与系统非监督学习的本质产生矛盾?

    GH:你对这个错误的总结非常到位。我太固执了以致于这变成了一个大错误,我现在就想弥补一点过失。这有点像尼克松总统当年与中国谈判一样。实际上,我在这个事情上,发挥了不好的作用。

    NT:所以你现在的工作主要是针对于视觉识别,还是可以看做提高当前坐标系规则的研究?

    GH:这个技术当然能用在其他领域里,但是我的兴趣主要在于怎么把它用在视觉识别上。

    NT:深度学习曾经是一个独特的东西,我的意思是,深度学习是深度学习,人工智能是人工智能(AI)。现在,深度学习变成了AI的同义词,同时现在AI变成了热门的营销术语,基本上意味着以某些方式驱动机器。作为帮助创建这一术语的人,您是如何看待这个现象的?

    GH:曾几何时,人工智能,意味着逻辑主义/符号主义,研究人员用计算机的符号字符串模拟人类的认知。还有神经网络,就意味着你在使用神经网络进行学习。不同的企业,不同的学派,百家争鸣,大放异彩。这就是我当年成长的环境。而现在我看到好多人一边常年一直在说神经网络就是废物,一边又在说“我是人工智能专业的教授,我需要钱”。这就很烦人。

    NT:嗯,我还有时间,就再问一个问题。在一次采访中,谈到人工智能,你说,好吧,把它想象成一个反铲——一个可以挖坑的机器,用的不好就会伤到自己。解决问题的关键是,当你准备使用反铲作业时,要好好看着准备挖坑的铲子和自己的一亩三分地,不要让铲子碰了脑袋。 对于你的工作而言,你做出的什么选择和这个例子很接近?

    GH:我猜我永远不会主动应用人工智能技术制造武器。我的意思是,你的确可以设计出功于杀戮的反铲。但是我觉得这一定是反铲最差劲的应用了,我永远不会干这事的。

    NT:好的,Geoffrey Hinton。这真是一场令人印象深刻的访谈。满满的都是干货。我们“明年”还会回来的——带着第三和第四的“做梦”理论。(译者:那估计就是没有了。)

    相关报道:

    https://www.wired.com/story/ai-pioneer-explains-evolution-neural-networks/

    展开全文
  • 图像卷积神经网络Source资源 深层学习基础 (DEEP LEARNING BASICS) Aim of this article is to provide an intuitive understanding of the key layers in a convolution neural network. The idea is to go beyond ...

    图像卷积神经网络

    深层学习基础 (DEEP LEARNING BASICS)

    Aim of this article is to provide an intuitive understanding of the key layers in a convolution neural network. The idea is to go beyond simply stating the facts and exploring how image manipulation actually works.

    本文的目的是提供 卷积神经网络中 关键层的直观了解 这个想法 不只是简单地陈述事实 而是 探索 图像处理的实际作用

    目标 (The Objective)

    Suppose our aim is to train a deep learning network to successfully distinguish between cat and dog images like those shown below

    假设我们的目标是训练一个深度学习网络,以成功地区分猫狗图像,如下图所示

    Image for post
    Source资源

    Let us start by thinking about what challenges such an algorithm must overcome. To begin with, it must be able to detect cats and dogs of different color, size, shape, and breed. It must also work when only a certain portion and not the entire dog/cat is visible. The algorithm must be sensitive to the presence of more than one dog/cat in the image and most importantly, it must be spatially invariant — it must not expect the dog/cat to be in a certain part of the image. In the following sections, we explore how different components of a CNN architecture result in all these capabilities.

    让我们首先考虑一下这种算法必须克服的挑战。 首先,它必须能够检测出不同颜色,大小,形状和品种的猫和狗。 当只有一部分而不是整个狗/猫可见时,它也必须起作用。 该算法必须对图像中存在不止一只狗/猫敏感,最重要的是,该算法必须在空间上不变-它不能指望狗/猫在图像的特定部分。 在以下各节中,我们将探索CNN架构的不同组件如何产生所有这些功能。

    计算机如何读取图像。 (How a computer reads images.)

    Images are composed of pixels with values that depict brightness and range from 0–255. 0 means black, 255 is white and everything else is some shade of grey. More the pixels, better the image quality.

    图像由像素组成,其值表示亮度,范围为0-255。 0表示黑色,255表示白色,其他所有内容均为灰色。 像素越多,图像质量越好。

    Image for post
    Image quality improves with pixel count. [made by author]
    图像质量随像素数提高。 [作者制作]

    While a greyscale image is made of a single channel (i.e. a single 2D array of pixels), colored images in the RBG format are composed of three different layers, stacked on top of each other.

    虽然灰度图像是由单个通道(即单个2D像素阵列)组成的,但是RBG格式的彩色图像由三个不同的层组成,彼此堆叠。

    Image for post
    red, ,R编, green, and 颖,和blue.b略。 [made by author] [作者制作]

    多层感知器的局限性。 (Limitations of a multi-layered perceptron.)

    Conventional neural networks are not suitable for deep learning applications like image classification. The contents of each pixel are fed into the perceptron separately in the input layer. For a RGB image of dimensions 600*377*3, the total number of parameters to be learned for the input layer alone will be (600*377*3*2 (two parameters per neuron, weight and bias)) ~1.5 million. This number will scale linearly with the number of layers. This, however, is not the only challenge with MLPs. MLPs have no inbuilt mechanism for being spatially invariant. If a MLP has been trained to detect dogs in the top right corner of the image, it will fail when dogs are located in other locations.

    传统的神经网络不适用于像图像分类这样的深度学习应用。 每个像素的内容分别在输入层中馈送到感知器中。 对于尺寸为600 * 377 * 3的RGB图像,仅输入层要学习的参数总数将为(600 * 377 * 3 * 2(每个神经元两个参数,权重和偏差))约150万。 该数字将与层数成线性比例。 但是,这并不是MLP的唯一挑战。 MLP没有内置的机制来保持空间不变。 如果已训练MLP在图像的右上角检测狗,则当狗位于其他位置时它将失败。

    A convolution neural network aims to ameliorate these drawbacks using a built-in mechanism for (1) extracting different high level features (2) introducing spatial invariance (3) improving networks learning ability.

    卷积神经网络旨在使用一种内置机制来改善这些缺点,该机制用于 (1)提取不同的高级特征(2)引入空间不变性(3)提高网络学习能力。

    图像特征提取。 (Image feature extraction.)

    Convolution (discrete convolution to be specific) is based on use to linear transformations to extract key features from images while preserving the ordering of information. The input is convolved with a kernel to generate the output, similar to the response generated by a network of neurons in the human visual cortex.

    卷积(具体来说是离散卷积)是基于线性变换的使用,可从图像中提取关键特征,同时保留信息的顺序。 输入与 内核 进行 卷积 以生成输出,类似于由人类视觉皮层中的神经元网络生成的响应。

    核心 (Kernel)

    The kernel (also known as a filter or a feature detector) samples the input image matrix with a pre-determined step size (known as stride) in both horizontal and vertical directions. As the kernel slides over the input image, the element-wise product between each element of the kernel and overlapping elements of the input image is calculated to obtain to the output for the current location.

    内核(也称为过滤器或特征检测器 )在水平和垂直方向 上以预定步长(称为 stride ) 对输入图像矩阵进行采样 当内核在输入图像上滑动时,将计算内核的每个元素与输入图像的重叠元素之间的逐元素乘积,以获取当前位置的输出。

    Image for post
    Convolution : The image 卷积 :将表示为张量为7 * 7 * 1的图像I represented as a tensor of dimension 7*7*1 is convolved with a 3*3 filter I与3 * 3滤镜K to result in a 5*5 output image. Shown above is one multiplication step. K卷积,以生成5 * 5的输出图像。 上面显示的是一个乘法步骤。 Source, Image free to share.来源 ,图片免费分享。

    When the input image is composed of multiple channels (which is almost always the case), the kernel has the same depth as the number of channels in the input image. The dot product in such cases is added to achieve the final feature map composed of a single channel. If you are new to matrix multiplication, check out this youtube video for a detailed explanation.

    当输入图像由多个通道组成时(几乎总是这样),内核的深度与输入图像中通道的数量相同。 在这种情况下,点积被添加以获得由单个通道组成的最终特征图。 如果您不熟悉矩阵乘法,请 观看 youtube视频以获取详细说明。

    Image for post
    Single Stride Convolution: This animation shows how a kernel (shown as a 3*3 moving square) scans through an input image from left to right and from top to bottom to result in an output image on the right. For a stride one convolution, the kernel moves a unit distance in each direction during every step. 单步卷积(Single Stride Convolution) :此动画显示了内核(显示为3 * 3移动正方形)如何从左到右以及从上到下扫描输入图像,从而在右边产生输出图像。 对于跨步一次卷积,内核在每个步骤中沿每个方向移动单位距离。 Source, Image free to share.来源 ,图片免费分享。

    Each convolution layer is composed of many different filters, each of which extracts different features. And while a CNN made of a single convolution layer will only extract/learn low level features, adding successive convolution layers significantly improves the ability to learn high level features.

    每个卷积层由许多不同的滤镜组成,每个滤镜提取不同的特征。 而且,虽然由单个卷积层组成的CNN仅会提取/学习低层特征,但添加连续的卷积层会大大提高学习高层特征的能力。

    Image for post
    Feature Extraction: A 600*377 greyscale image convolved with 4 different 3*3 filters results in different image features being extracted to a different extent. [made by author]特征提取:将600 * 377灰度图像与4个不同的3 * 3滤镜进行卷积会导致不同程度的图像特征被提取。 [作者制作]

    整流器 (Rectifier)

    To introduce non-linearity into the system and improve the learning capacity, the output from the convolution operation is passed through a non-saturating activation function like sigmoid or rectified linear unit (ReLU). Check out this excellent article about these and several other commonly used activation functions. The most commonly used activation function ReLU essentially preserves positive values and replaces negative values with a zero.

    为了将非线性引入系统并提高学习能力,卷积运算的输出将通过非饱和激活函数(如S型或整流线性单元(ReLU))传递。 查看 关于这些以及其他几个常用激活功能的 出色文章 最常用的激活函数ReLU本质上保留正值并将负值替换为零。

    Image for post
    Rectifier: The two most widely used rectifier functions, sigmoid and ReLU. [made by author]
    整流器:最广泛使用的两种整流器功能:S型和ReLU。 [作者制作]

    填充 (Padding)

    The feature map resulting from convolution is smaller in size compared to the input image. For an input image of I*I that is convolved with a kernel of size K*K with a stride S, the output will be [(I-F)/S + 1]* [(I-F)/S + 1]. This can result in a substantial reduction in image size in CovNets made of several convolution layers. A zero padding of [(F-1)/2] all around the output image can be used to preserve the convolution output.

    与输入图像相比,由卷积产生的特征图的大小较小。 对于 I * I 的输入图像,该图像 与大小为 K * K 且步幅为 S 的内核卷积 ,输出将为 [(IF)/ S +1] * [(IF)/ S +1] 这可能会导致由多个卷积层构成的CovNets中的图像大小大大减小。 输出图像周围的 [[F-1)/ 2] 零填充 可用于保留卷积输出。

    For the most general case where an input image of size I*I is convolved with a filter of size K*K with a stride S and padding P, the output will have the dimension [(I+2P-K)/S +1]*[(I+2P-K)/S +1].

    对于最常见的情况,输入大小为 I * I 的输入图像与大小 K * K 的滤镜( 具有步幅 S 和填充 P )进行卷积时 ,输出的尺寸为 [(I + 2P-K)/ S +1 ] * [(I + 2P-K)/ S +1]

    Image for post
    Padding: When a 5*5 image is convolved with a 3*3 kernel without padding, the resultant image is 3*3. A single layer of padding changes the input image dimensions to 7*7. This when convolved with a 3*3 filter results in a 5*5 output, the same as the size of the original input. 填充 :当5 * 5图像与3 * 3内核卷积而没有填充时,所得图像为3 * 3。 单层填充将输入图像的尺寸更改为7 * 7。 与3 * 3过滤器卷积时,将得到5 * 5的输出,与原始输入的大小相同。 Source, Image free to share.来源 ,图片免费分享。

    汇集 (Pooling)

    The convolution output is pooled so as to introduce spatial invariance i.e the ability to detect the same feature in different images. The idea here is to retain key information corresponding to important features that the CNN must learn and at the same time reduce image size by getting rid of insignificant information. While there are several variations, max pooling is the most commonly used strategy. The convolution product is split into non-overlapping patches of size K*K and only the maximum value of each patch is recorded in the output.

    合并卷积输出以引入空间不变性,即在不同图像中检测相同特征的能力。 这里的想法是保留与CNN必须学习的重要功能相对应的关键信息,同时通过消除无关紧要的信息来减小图像尺寸。 尽管存在多种变体,但最大池化是最常用的策略。 卷积积被拆分为大小为 K * K的 非重叠面片, 并且仅每个面片的最大值记录在输出中。

    Image for post
    Max-Pooling: A 4*4 input image is max-pooled with a 2*2 kernel resulting in a 2*2 output. 最大池化 :将4 * 4输入图像最大池化为2 * 2内核,从而产生2 * 2输出。 Source, Image free to share.来源 ,图片免费分享。

    Other less frequently used pooling strategies include average pooling, ‘mixed’ max-average pooling, stochastic pooling, and spatial pyramid pooling.

    其他不常用的合并策略包括平均合并,“混合”最大平均合并,随机合并和空间金字塔合并。

    Image for post
    MaxPooling: While the image size is substantially reduced, pooled images still contain all key features needed for training an image classification network. Notice that the reduction in image quality for a stride 2 maxpooling operation is minimal. [made by author]MaxPooling :虽然图像尺寸大大减小,但是合并的图像仍然包含训练图像分类网络所需的所有关键功能。 请注意,第2步最大合并操作的图像质量降低是最小的。 [作者制作]

    The two key elements of CNN discussed so far: the convolution layer (defined by kernels, stride, activation function) and the pooling layer are combined in predetermined patterns to define the CNN architecture. While I won’t get into the architectural details, in the next section we discuss some general features of image processing by these neural networks.

    到目前为止,我们讨论了CNN的两个关键元素:卷积层(由内核,步幅,激活函数定义)和池化层以预定模式组合在一起,以定义CNN体系结构。 虽然我不会深入探讨体系结构的细节,但在下一部分中,我们将讨论这些神经网络进行图像处理的一些常规功能。

    可视化内层 (Visualizing the inner layers)

    I used a publicly available dataset of labelled cat & dog images and trained a binary classifier (inceptionv3). Using this trained network we can get a feel of how a CNN actually processes an image.

    我使用了 公开的 带有 标签的猫和狗图像的数据集,并训练了二进制分类器(inceptionv3)。 使用这个训练有素的网络,我们可以了解CNN实际如何处理图像。

    First, we take a sample image and pass it through this trained network. The output of 3 convolution and associated activation layers (I used ReLU)are visualized below. What is immediately evident is that as we move down the network, the output becomes increasingly incomprehensible. By the time we are in layer 25, it is difficult to tell if the image fed into the network was a dog or a cat. It is worth noting that the overall architecture of this network is rather complex (and not included here) and layer 25 is not even half way down the network. So what are these layers actually learning? It is not obvious by merely looking at the image below.

    首先,我们获取样本图像,并将其通过这个经过训练的网络。 下面显示了3个卷积和相关激活层(我使用ReLU)的输出。 显而易见的是,随着我们向下移动网络,输出变得越来越难以理解。 到我们进入第25层时,很难分辨馈入网络的图像是狗还是猫。 值得注意的是,该网络的总体架构相当复杂(此处未包括在内),而第25层甚至不在网络的中间。 那么这些层实际上在学习什么呢? 仅看下面的图像并不清楚。

    Image for post
    The convolution and associated activation layers of a trained CNN when fed a dog image. [made by author]
    当喂给狗图像时,训练的CNN的卷积和相关的激活层。 [作者制作]

    The image above merely visualizes the output of each layer for an input image. What we need is to visualize the different kernels of each convolution layer. This will tell us what each of these filters is detecting. We start with an image made of random noise and optimize it for every kernel in a layer. In other words, we take a bunch of filters in a trained network and ask “ what kind of input image will activate this particular kernel’. Knowing this image will tell us more about what that particular filter is detecting. A more detailed explanation of this logic and associated code can be found here and here.

    上面的图像仅可视化了输入图像每一层的输出。 我们需要的是可视化每个卷积层的不同内核。 这将告诉我们每个过滤器正在检测什么。 我们从随机噪声制成的图像开始,然后针对层中的每个内核对其进行优化。 换句话说,我们在训练有素的网络中使用了一堆过滤器,并询问“什么样的输入图像将激活此特定内核”。 了解此图像将告诉我们有关该特定过滤器正在检测的内容的更多信息。 有关此逻辑和相关代码的详细说明,请参见 此处 此处

    Image for post
    Feature visualization of selected layers. [made by author]
    选定图层的特征可视化。 [作者制作]

    Visualized above are some of the filter activation patterns for the same layers as above. Different layers are activated by different parts of the image. Layer 1 is essentially an edge detector that is activated by horizontal and vertical edges. As we go deeper into the network, patterns recognized by convolution kernels become complex and sparse as more abstract image features are extracted in these stages.

    上面可视化的是与上述相同层的一些过滤器激活模式。 图像的不同部分会激活不同的图层。 层1本质上是一个边缘检测器,由水平和垂直边缘激活。 随着我们深入网络,在这些阶段提取更多抽象图像特征时,卷积核识别的模式变得复杂而稀疏。

    结论。 (Conclusion.)

    In this article, I have attempted to explain the design and inner workings of different convolution layers. Please do leave a comment or write to me at aseem.kash@gmail.com if you have any suggestions.

    在本文中,我尝试解释了不同卷积层的设计和内部工作原理。 如果您有任何建议,请发表评论或写信至aseem.kash@gmail.com。

    翻译自: https://towardsdatascience.com/how-convolution-neural-networks-interpret-images-1f99913070b2

    图像卷积神经网络

    展开全文
  • 本文的目的是提供对卷积神经网络中关键层内部工作的直观了解。 这个想法不只是简单地陈述事实 , 而是探索图像处理的实际作用 。 目标 (The Objective) Out aim is to design a deep learning framework capable of...

    深层学习基础 (DEEP LEARNING BASICS)

    Aim of this article is to provide an intuitive understanding behind the inner working of key layers in a convolution neural network. The idea is to go beyond simply stating the facts and exploring how image manipulation actually works.

    本文的目的是提供对卷积神经网络中关键层内部工作的直观了解。 这个想法不只是简单地陈述事实而是探索图像处理的实际作用

    目标 (The Objective)

    Out aim is to design a deep learning framework capable of classify cat and dog images like those shown below. Let us start by thinking about what challenges such an algorithm must overcome.

    最终目的是设计一个能够对猫和狗图像进行分类的深度学习框架,如下所示。 让我们首先考虑一下这种算法必须克服的挑战。

    Image for post

    It should be able to detect cats and dogs of different color, size, shape, and breed. It must be able to detect and classify animals even from pictures where the dog or the cat is not entirely visible. It must be sensitive to presence of more than one dog in the image. Most importantly, the algorithm must be spatially invariant — it must be able to recognise dogs physically located in any corner of the image.

    它应该能够检测出不同颜色,大小,形状和品种的猫和狗。 即使从狗或猫不完全可见的图片中,它也必须能够对动物进行检测和分类。 它必须对图像中有不止一只狗的情况敏感。 最重要的是,该算法必须在空间上不变-它必须能够识别物理上位于图像任何角落的狗。

    计算机如何读取图像。 (How computer reads images.)

    Image for post
    Image quality improves with pixel count
    图像质量随像素数提高

    Images are composed of pixels that have values ranging from 0–255 that depict brightness. 0 means black, 255 is white and everything else is some shade of grey. More the pixels, better the image quality.

    图像由像素组成,其值在0-255之间,表示亮度。 0表示黑色,255表示白色,其他所有内容均为灰色。 像素越多,图像质量越好。

    Image for post
    Three channels of a RGB image
    RGB图像的三个通道

    While a greyscale image is made of a single channel (i.e. a 2D array). A color image in the RBG format is composed of three different layers, stacked on top of each other

    灰度图像由单个通道(即2D阵列)组成。 RBG格式的彩色图像由三个不同的层组成,彼此堆叠

    多层感知器的局限性。 (Limitations of a multi-layered perceptron.)

    The contents of each pixel are fed into the perceptron separately. Each neuron processes a pixel in the input layer. For a image of dimensions 350*720, the total number of parameters to be learned for the input layer alone will be (350*720*3 (three channels for each pixel)*2 (two parameters per neuron, weight and bias)) 1.5 million. This number will scale linearly with number of layers, making the MLP an incredibly computationally intensive to learn. This however is not the only challeng with MLPs.

    每个像素的内容分别送入感知器。 每个神经元处理输入层中的一个像素。 对于尺寸为350 * 720的图像,仅输入层要学习的参数总数将为(350 * 720 * 3(每个像素三个通道)* 2(每个神经元两个参数,权重和偏差) 150万。 该数目将随层数线性增长,这使得MLP的计算量大到难以学习。 但是,这并不是MLP的唯一挑战。

    Image for post

    MLPs have no inbuilt mechanism for being spatially invariant. If a MLP has been trained to detect dogs in the top right corner of the image, it will fail when dogs are located in other positions. This is a serious drawback and in the subsequent sections we will discuss how to overcome this challenge.

    MLP没有内置的机制来保持空间不变。 如果已训练MLP在图像的右上角检测狗,则当狗位于其他位置时,它将失败。 这是一个严重的缺陷,在接下来的部分中,我们将讨论如何克服这一挑战。

    A convolution neural network aims to ameliorate these drawbacks using built-in mechanism for (1) extracting different high level features (2) introducing spatial invariance (3) improving networks learning ability.

    卷积神经网络旨在使用内置机制来缓解这些缺点,该机制用于 (1)提取不同的高级特征(2)引入空间不变性(3)改善网络学习能力。

    图像特征提取。 (Image feature extraction.)

    Convolution (discrete convolution to be specific) is based on use to linear transformations to extract the key features of input images while preserving the ordering of information. The input is convolved with a kernel to generate the output, similar to the response generated by a network of neurons in the visual cortex.

    卷积(具体来说是离散卷积)基于线性变换的使用,以在保持信息有序的同时提取输入图像的关键特征。 输入与内核进行卷积以生成输出,类似于视觉皮层中神经元网络生成的响应。

    Kernel

    核心

    The kernel (also known as a filter or a feature detector) samples the input image matrix with a pre-determined step size (known as stride) in both horizontal and vertical directions. As the kernel slides over the input image, the element-wise product between each element of the kernel and overlapping elements of the input image is calculated to obtain to the output for the current location. When the input image is composed of multiple channels (which is almost always the case), the kernel has the same depth as the number of channels in the input image. The dot product in such cases is added to arrive at a feature map composed of a single channel.

    内核(也称为过滤器或特征检测器)在水平和垂直方向上以预定步长(称为步幅)对输入图像矩阵进行采样。 当内核在输入图像上滑动时,将计算内核的每个元素与输入图像的重叠元素之间的逐元素乘积,以获取当前位置的输出。 当输入图像由多个通道组成时(几乎总是这样),内核的深度与输入图像中通道的数量相同。 在这种情况下,将点积相加即可得出由单个通道组成的特征图。

    Convolution : The image image I represented as a tensor of size 7*7*1 is convolved with a 3* filter to result in a 5*5 output
    Convolution : The image 卷积 :将表示为张量为7 * 7 * 1的图像I represented as a tensor of dimension 7*7*1 is convolved with a 3*3 filter I与3 * 3滤镜K to result in a 5*5 output image. Shown above is one such step of the matrix multiplication process. K卷积,以生成5 * 5的输出图像。 上面显示的是矩阵乘法过程中的一个这样的步骤。 Source资源

    If you are new to matrix multiplication, check out this youtube video for a more detailed explanation.

    如果您不熟悉矩阵乘法,请 观看 youtube视频以获取更详细的说明。

    Image for post
    Single Stride Convolution : This animation shows how a kernel scans through a input image from left to right and from top to bottom to result in a output image. For a stride one convolution, the kernel moves a unit distance in each direction during very step. 单步卷积(Single Stride Convolution) :此动画显示了内核如何从左到右,从上到下扫描输入图像以生成输出图像。 对于跨步一次卷积,内核在非常大的一步中沿每个方向移动单位距离。 Source资源

    While a CNN made of a single convolution layer would only be able to extract/learn low level features of the input image, adding successive convolution layers significantly improves the ability of the CNN to learn high level features.

    尽管由单个卷积层构成的CNN仅能够提取/学习输入图像的低级特征,但是添加连续的卷积层会显着提高CNN学习高级特征的能力。

    Image for post
    Double Stride Convolution : This animation shows how a kernel scans through a input image from left to right and from top to bottom to result in a output image. For a stride two convolution, the kernel moves two units distance in each direction during very step. Double Stride Convolution :此动画显示了内核如何从左到右以及从上到下扫描输入图像以生成输出图像。 对于大步两次卷积,内核在非常大的一步中沿每个方向移动了两个单位距离。 Source资源

    Rectifier

    整流器

    To introduce non-linearity into the system and improve the learning capacity, the output from the convolution operation is passed through a non-saturating activation function like sigmoid or rectified linear unit (ReLU). Check out this excellent article about these and several other commonly used activation functions.

    为了将非线性引入系统并提高学习能力,卷积运算的输出将通过非饱和激活函数(如S型或整流线性单元(ReLU))传递。 查看 关于这些以及其他几个常用激活功能的 出色文章

    Image for post
    Rectifer : The two most widely used rectifier functions, sigmoid and ReLU.整流器 :最广泛使用的两个整流器功能,S型和ReLU。

    Padding

    填充

    The feature map resulting from convolution is smaller in size compared to the input image. For an input image of I*I that is convolved with a kernel of size K*K with a stride S, the output will be [(I-F)/S + 1]* [(I-F)/S + 1]. This can result in substantial reduction in image size in large CovNets made of several convolution layers. A zero padding of [(F-1)/2] all around the output image can be used to preserve the convolution output. Alternatively, the padding size itself can be turned into one of the hyperparameters that is learned during the training of the CNN.

    与输入图像相比,由卷积产生的特征图的大小较小。 对于 I * I 的输入图像, 与步长为 S 的大小为 K * K 的内核卷积 ,输出将为 [(IF)/ S + 1] * [(IF)/ S +1] 在由多个卷积层组成的大型CovNet中,这可能会导致图像大小的显着减小。 输出图像周围的 [[F-1)/ 2] 零填充 可用于保留卷积输出。 备选地,填充大小本身可以变成在CNN的训练期间学习的超参数之一。

    For the most general case where an input image of size I*I is convolved with a filter of size K*K with a stride S and padding P, the output will have the dimension [(I+2P-K)/S +1]*[(I+2P-K)/S +1].

    对于最一般的情况,其中输入大小为 I * I的 图像与大小 K * K 且步幅为 S 且填充为 P 的滤波器进行卷积时 ,输出将具有 [[I + 2P-K)/ S +1 ] * [(I + 2P-K)/ S +1]

    Image for post
    Padding : When a 5*5 image is convolved with a 3*3 kernel without padding, the resultant image is 3*3. A single layer of padding changes the input image dimensions to 7*7. This when convolved with a 3*3 filter results in a 5*5 output. 填充 :将5 * 5图像与3 * 3内核卷积而不填充时,所得图像为3 * 3。 单层填充将输入图像的尺寸更改为7 * 7。 与3 * 3过滤器卷积时,将产生5 * 5的输出。 Source资源

    Pooling

    汇集

    The convolution output is pooled so as to introduce spatial invariance i.e the ability to detect the same feature in different images. The idea here is to retain key information corresponding to important features that the CNN must learn and at the same time reduce image size by getting rid of insignificant information. While there are several variation, max pooling is the most commonly used strategy. The convolution product is split into non-overlapping patches of size K*K and only the maximum value of each patch is recorded in the output.

    合并卷积输出以引入空间不变性,即在不同图像中检测相同特征的能力。 这里的想法是保留与CNN必须学习的重要功能相对应的关键信息,同时通过摆脱无关紧要的信息来减小图像尺寸。 尽管存在多种变体,但最大池化是最常用的策略。 卷积积被拆分为大小为 K * K的 非重叠面片, 并且仅每个面片的最大值记录在输出中。

    Image for post
    Max-Pooling : A 4*4 input image is max-pooled with a 2*2 kernel resulting in a 2*2 output.最大池化 :将4 * 4输入图像最大池化为2 * 2内核,从而产生2 * 2输出。

    Other less frequently used pooling strategies include average pooling, ‘mixed’ max-average pooling, stochastic pooling, spatial pyramid pooling etc.

    其他不常用的合并策略包括平均合并,“混合”最大平均合并,随机合并,空间金字塔合并等。

    Let us summarise the concepts discussed so far as they apply to the VGGNet 16 architecture. Show below are the convolution layers of this network.

    让我们总结一下所讨论的概念,直到它们适用于VGGNet 16架构。 下面显示的是该网络的卷积层。

    Image for post
    VGGNet 16 : The 13 convolution layers of VGGNet16. VGGNet 16:VGGNet16的13个卷积层。 Source资源

    This network excepts a image made of 224*224 pixels and 3 channels (corresponding to red, green and blue) as input. It is then processes through a series of convolution layers (shown in black), not all of which are followed by a max pooling step. Five distinct convolution blocks are depicted in the image above. All convolution steps use 3*3 kernels and all max pooling steps use a 2*2 kernel. The number of kernels used in each convolution block gradually increases, from 64 in first to 512 in the fourth and fifth convolution block. Initially two and later three convolution layers are used per block. This is important for increasing the receptive field since the kernel size is mantained constant throughout this architecture. The output of block five is passed through a maxpooling layer at the end, resulting in a 7*7*512 output. The output from the last convolution block is then fed into the fully connected layer discussed in the subsequent section. For a more detailed understanding of VGGNet, read the original paper.

    该网络不包括由224 * 224像素和3个通道(分别对应于红色,绿色和蓝色)作为输入的图像。 然后,它通过一系列卷积层(以黑色显示)进行处理,并非所有卷积层之后都是最大池化步骤。 上图中描绘了五个不同的卷积块。 所有卷积步骤都使用3 * 3内核,所有最大池化步骤都使用2 * 2内核。 每个卷积块中使用的内核数量逐渐增加,从最初的64个增加到第四个和第五个卷积块中的512个。 最初,每个块使用两个和后来的三个卷积层。 这对于增加接收场很重要,因为在整个体系结构中内核大小保持恒定。 块5的输出最后通过maxpooling层,产生7 * 7 * 512的输出。 然后,最后一个卷积块的输出将馈送到下一节中讨论的完全连接的层中。 为了更详细地了解VGGNet,请阅读 原始文章

    翻译自: https://medium.com/@aseem.kash/a-comprehensive-guide-to-convolution-neural-networks-4bc10584cbac

    展开全文
  • 万字长文|如何直观解释卷积神经网络的工作原理? 2017-07-23 专注报道AI 量子位 作者:YJango 日本会津大学|人机交互实验室博士生 量子位 已获授权编辑发布 该文是对卷积神经网络的介绍,并假设你...

    原文地址:https://mp.weixin.qq.com/s/1y5WD_vRfoSmGPbJ2-e86Q


    万字长文|如何直观解释卷积神经网络的工作原理?

    2017-07-23 专注报道AI 量子位
    作者:YJango
    日本会津大学|人机交互实验室博士生
    量子位 已获授权编辑发布

    该文是对卷积神经网络的介绍,并假设你理解前馈神经网络。

    如果不是,强烈建议读完《如何简单形象又有趣地讲解神经网络是什么?》这篇文章后后再来读该篇。

    推荐文章链接:

    https://www.zhihu.com/question/22553761/answer/126474394

    下面进入正题,开始我们的卷积神经网络之旅——

    目录

    • 视觉感知

      • 画面识别是什么

      • 识别结果取决于什么

    • 图像表达

      • 画面识别的输入

      • 画面不变形

    • 前馈神经网络做画面识别的不足

    • 卷积神经网络做画面识别

      • 局部连接

      • 空间共享

      • 输出空间表达

      • Depth维的处理

      • Zero padding

      • 形状、概念抓取

      • 多filters

      • 非线性

      • 输出尺寸控制

      • 矩阵乘法执行卷积

      • Max pooling

      • 全连接层

      • 结构发展

    • 画面不变性的满足

      • 平移不变性

      • 旋转和视角不变性

      • 尺寸不变性

      • Inception的理解

      • 1x1卷积核理解

      • 跳层连接ResNet

    视觉感知

    一. 画面识别是什么任务?

    学习知识的第一步就是明确任务,清楚该知识的输入输出。卷积神经网络最初是服务于画面识别的,所以我们先来看看画面识别的实质是什么。

    先观看几组动物与人类视觉的差异对比图。

    1. 苍蝇的视觉和人的视觉的差异


    2. 蛇的视觉和人的视觉的差异


     更多对比图请参考http://chuansong.me/n/2656056

    通过上面的两组对比图可以知道,即便是相同的图片经过不同的视觉系统,也会得到不同的感知。

    这里引出一条知识:生物所看到的景象并非世界的原貌,而是长期进化出来的适合自己生存环境的一种感知方式。蛇的猎物一般是夜间行动,所以它就进化出了一种可以在夜间也能很好观察的感知系统,感热。

    任何视觉系统都是将图像反光与脑中所看到的概念进行关联。

    所以画面识别实际上并非识别这个东西客观上是什么,而是寻找人类的视觉关联方式,并再次应用。如果我们不是人类,而是蛇类,那么画面识别所寻找的f就和现在的不一样。

    画面识别实际上是寻找(学习)人类的视觉关联方式

    展开全文
  • 过去11年中用于解释神经网络的最新方法是如何发展的呢? 本文在 Inception 网络图像分类器上尝试使用引导反向传播进行解释演示。 为什么「解释」很重要? 使用机器学习(ML)算法(尤其是现代深度学习)进行...
  • 该项目演示了如何使用神经网络和计算机视觉来创建用于解释巴西手语的分类器。 目前,该项目仅解释字母表的前6个字母。 使用卷积神经网络来训练和测试网络,以便通过网络摄像头可以识别用户手部发出的信号。 数据预测...
  • 从任务到可视化,如何理解LSTM网络中的神经元 By 机器之心2017年7月03日 14...因此,我们从转写任务开始进一步从可视化的角度解释神经网络中的单个神经元实际上都学到了什么,以及它们到底是如何决策的。 目录:
  • 本文作者基于论文阅读及实测,以尝试欺骗神经网络的方式,从...最近我阅读了一篇论文,“ExplainingandHarnessingAdversarialExamples(对抗样本的解释和利用)”,进一步削弱了我对神经网络的神秘感。这篇论文介绍了
  • 如何向5岁小朋友解释神经网络? Reddit有位叫做kouhoutek的大咖给出了一个超棒的答案,获得了200+条评论,6700+点赞,还吸引来了各种技术大牛的互相讨论! 答案:谁叫得响,谁说了算 想象这样一个场景: 你当教练的...
  • 一个高尔夫球手练习高尔夫球时会花绝大多数时间练习...这章中我会解释一些用来提升BP算法的技术,以提高神经网络的学习。 本章介绍的技术包括:1,新的cost函数,cross-enropy cost函数;2,regularization方法(L1...
  • 我们探索如何将数百个学习图像中低级特征的神经元堆叠成几层。 视觉,源于自然 哺乳动物视觉皮层中的神经元被组织成一层一层地处理图像,其中一些神经元在识别线和边等局部特征方面具有特殊的功能;当位置和方向改变...
  • yolov3源码中对于yolov3-voc.cfg文件如何读入到神经网络进行解释 查看load_network函数的定义: 继续调用parse_network_cfg(cfg),这个输入的是yolov3-voc.cfg的路径,继续查看parse_network_cfg的函数定义: 定位...
  • 深度学习与计算机视觉 声明:仅做学术分享,侵删 时域卷积=频域乘积,卷积神经网络大部分的计算也在卷积部分,如何从频域的角度思考卷积神经网络如何从频域的角度解释ResNet。 作者:若羽 ...
  • 由于PINE内部的损失函数,在经过训练过程的每次传播之后,解释器都会学习更多有关如何基于Main Model的输入来生成准确解释的信息。 →松→ 入门指南 安慰 1.在终端中使用以下代码来下载PINE存储库并重定向到其...
  • 首先,LFP 模型用一个简单的微分方程有效地刻画了神经网络这样一个参数极多的系统其训练过程的关键特征,并且能够精确地预测神经网络的学习结果。因此该模型从一个新的角度建立了微分方程和神经网络的关系。由于微分...
  • 前面讲解了线性神经网络的原理与算法流程,是不是发现很简单? 其中有一个关键点就是在学习的过程中,我们更新权值使用了LMS算法,算法本身并不复杂,但是有一个关于学习率应该如何选择的问题。 首先我们要知道的...
  • 本文没有描述一个工作系统。相反,它提出了一个关于表示的单一想法,允许几个不同群体的进步被组合成一个虚构的系统,称为GLOM。这些进展包括transformers、神经域、对比表示学习、蒸馏和胶囊。
  • 神经网络教程,我将分别使用Keras和TensorFlow来构建全连接网络和卷积神经网络(正在进行中)。 我说明了使用Inception V3深层神经网络模型进行转移学习的情况。 联系信息 随时联系我: 电子邮件: GitHub上的 :...
  • 这种新的解释适用于量子人工神经网络,示例在 IBM 的五量子比特 transmon bowtie 芯片上通过实验实现,使用 IBM Q Experience 通过云访问,说明如何在实际的量子计算机上实现量子神经计算。 还介绍了一种新形式的...
  • 转载 ...商业转载请联系作者获得授权,非商业转载请注明...一般都是用链式法则解释比如如下的神经网络 前向传播 对于节点来说,的净输入如下:接着对做一个sigmoid函数得到节点的输出:类...
  • 简单神经网络教程 这是我对“简单神经网络教程”的看法。 该教程帮助我学习了有关神经网络的更多信息。 讲师在解释这一主题方面做得很好。 去做: 实施保存功能,以保存经过训练的模型 加载功能,加载保存的模型 ...
  • 查看全部 35 个回答 ...该文是卷积神经网络--介绍,并假设你理解前馈神经网络。...如果不是,强烈建议你读完如何简单形象又有趣地讲解神经网络是什么? 后再来读该篇。 目录 视觉感知 画面识别是什么识
  • 神经编码器-解释器之前,就有很多论文阐述如何学习加法的机器学习算法,如:神经图灵机(Neural Turing Machine),等等,还有最近Facebook发表的用强化学习来训练机器学习简单算法。  下面根据论文来叙述该...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 710
精华内容 284
关键字:

如何解释神经网络