较浅层/较早层中的神经元如何能够做出更复杂的决策?

Posted

技术标签:

【中文标题】较浅层/较早层中的神经元如何能够做出更复杂的决策?【英文标题】:How are neurons in deeper layers capable of making more complex decisions than neurons in shallower/earlier layers? 【发布时间】:2016-07-19 13:06:06 【问题描述】:

我是 ML 的新手,正在阅读 http://neuralnetworksanddeeplearning.com 的在线书籍。

在first chapter 中,作者使用 Cheese Festival 示例描述了单个感知器。基本上,他举例说明了一个感知器试图决定是否在即将到来的周末去参加奶酪节的例子。感知器有 3 个输入(天气因素、社会因素和交通因素)。虽然我 100% 完全理解作者关于 单个感知器 的“奶酪节”示例,但我不明白他得出的下一个(看似不合逻辑的)结论,他将示例演变为包含组织成 2 层的多个感知器:

“那么第二层的感知器呢?这些感知器中的每一个都通过权衡第一层决策的结果来做出决策。这样,第二层中的感知器可以在比第一层的感知器更复杂、更抽象……这样,多层感知器网络可以参与复杂的决策制定。”

我不明白的是:为什么第二层的感知器比第一层的感知器能够“在更复杂和更抽象的层次上做出决定”? p>

有人可以提供一个例子吗,也许使用这个作者已经开始的奶酪节例子?第 2 层中的感知器可以做出更复杂/抽象的决策的示例是什么?


示例

图的顶部(上图)显示了作者奶酪节示例背后的决策感知器。单独的感知器接受 3 个输入/因素:天气、社会和交通因素。根据这些计算/确定一个人是否应该去奶酪节。

上图的底部(即水平线下方)完美地说明了我的心理障碍在哪里。在这里,我们在第 1 层有 3 个神经元馈送到单个第 2 层节点:

一个“我应该去奶酪节吗”节点:这与图表上半部分的节点相同;和 一个“我应该去牛奶节”节点:为了简单/简洁,图中省略了 “我应该去培根节”节点:为了简单/简洁,也省略了

这 3 个感知器的输出(是/否决定)作为输入馈送到单独的第 2 层节点。 在我这里举个例子,第 2 层节点决策的例子是什么,它说明了“特征层次”的概念和/或作者关于更深层次可以做出更复杂/抽象决策的声明? p>

【问题讨论】:

你应该看看这个well written blog post by Christopher Olah 图层只能变形(拉伸/挤压)搜索空间。添加到网络中的层越多,可以完成的空间变形就越复杂。空间变形越复杂,决策就越“复杂”。以他帖子的“简单示例”部分为例。非线性决策边界不能用单层网络建模。 没有图层比其他图层更“智能”。他们只是合并成一个企业集团,根据下层的内部表示做出决策。我宁愿说最终层是做出最复杂决策的层——因为这些决策是基于后续网络层识别的模式。 @smeeb 所以如果我们使用你的 Cheese Festival 示例,初始感知器可以接受,比如说,三个变量来确定它是否应该去节日。一是天气,但是什么样的天气呢?比如说,如果下雨,会整天下雨,还是稍后会晴?我们宁愿在阳光明媚的时候去,还是在雨中参加奶酪节更有趣?这些是感知器做出更复杂决策的示例。 第二层接受第一层的结果,并且可以在这些上建模自己。所以第一层感知器对第二层说:“嘿,整体天气晴朗”。它不能做更多的事情,因为它只是一个感知器。但是第二个感知器(实际上在现实世界的情况下可能更多)可以接受该评估并说:“整体天气晴朗,但根据 x 将在当天晚些时候变为下雨”。因此网络继续运行,能够做得越深入 【参考方案1】:

多层网络的基本思想是每一层都增加了一些抽象。第 2 层本身具有与第 1 层相同的结构,因此它不能真正自己做出更复杂的决策。但它可以建立在第一层创建的抽象(输出)之上。

我想补充一点,这个说法有点理想化了。在实践中,通常很难理解内层究竟做了什么。

在您的示例中,第 2 层节点做出的决定可能是“我应该去参加一个节日吗?”

【讨论】:

感谢@Frank Puffer (+1) - 我很欣赏这个答案。请参阅上面 BHouwens 的最后一条评论,他/她在其中声明“在这一点上,比较原始 4 个决定中每一个的推理“线”或“链”,获胜者是我们要去的节日到”。对我来说,这与您在这里所说的相矛盾,即第 2 层的决定是是否参加 any 音乐节。你能在这里为我澄清一下吗?第 2 层做出哪个决定(我知道这是一个假设/任意示例):(a) 去哪个节日,或者 (b) 是否去有什么节日吗? @smeeb:原则上 (a) 和 (b) 都可以,但一个单元格通常只有一个输出。所以对于 (a),不同的节日必须以某种方式编码在输出值中,例如 x cheese, 1/3 Milk, x>=2/3 =>培根,假设输出范围在 0 到 1 之间。【参考方案2】:

在深度网络之间有层的可视化。 http://blog.keras.io/how-convolutional-neural-networks-see-the-world.html

简而言之,每个新层都可以通过在前一层中查找模式来识别更复杂的模式,最后一个具有许多所需类别的形状(蚂蚁、花朵、汽车等)。 示例:

    第一层检测边缘、纹理 - 可以使用 Photoshop 滤镜完成的工作 second 可以检测基于边缘(正方形、圆形、线条等)的简单形状和更复杂的纹理。 基于第 2 步中的形状的更复杂的图形 检测最接近目标类的形状

这也解释了为什么使用相关模型(VGG16/18、AlexNet 等)和切换顶层是有意义的。而不是花费数周时间来训练完整的网络。

【讨论】:

以上是关于较浅层/较早层中的神经元如何能够做出更复杂的决策?的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何分类器能够非常快速地做出决策?

业务/服务层中的 ASP.NET 复杂验证

在 Eclipse IDE 中的 EGit 中提交时选择较早的提交消息?

动手学pytorch-Batch Norm

MLDS笔记:浅层结构 vs 深层结构

SQL 选择较早的日期(包括 NULL)