追着幸福跑|为什么深度神经网络这么难训练?| 赠书


追着幸福跑|为什么深度神经网络这么难训练?| 赠书
追着幸福跑|为什么深度神经网络这么难训练?| 赠书导读:本文内容节选自《深入浅出神经网络与深度学习》一书 , 由Michael Nielsen所著 , 他是实验媒体研究工作室的联合创始人 , 曾是 YC Research 的 Research Fellow 。。
本书深入了讲解神经网络和深度学习技术 , 侧重于阐释深度学习的核心概念 。 作者以技术原理为导向 , 辅以贯穿全书的 MNIST 手写数字识别项目示例 , 介绍神经网络架构、反向传播算法、过拟合解决方案、卷积神经网络等内容 , 以及如何利用这些知识改进深度学习项目 。 学完本书后 , 读者将能够通过编写 Python 代码来解决复杂的模式识别问题 。
了解关于深度学习的更多干货知识 , 关注AI科技大本营并评论分享你对本文的学习心得或深度学习的见解 , 我们将从中选出5条优质评论 , 各送出《深入浅出神经网络与深度学习》一本 。 活动截止时间为8月29日晚8点 。
假设你是工程师 , 接到一项任务:从头开始设计计算机 。 某天 , 你正在工作室设计逻辑电路 , 例如构建与门、或门等 。 这时 , 老板带着坏消息进来了:客户刚刚提了一个奇怪的设计需求——整个计算机的电路深度限于两层 , 如图5-1所示 。
追着幸福跑|为什么深度神经网络这么难训练?| 赠书你惊呆了 , 跟老板说道:“他们疯了吧!”
老板说:“我也觉得他们疯了 , 但是客户至上 , 只能设法满足他们 。 ”
实际上 , 客户提出的需求并不过分 。 假设你能使用某种特殊的逻辑对任意多的输入执行AND运算 , 还能使用多输入的与非门对多个输入执行AND运算和NOT运算 。 由这类特殊的逻辑门构建出来的双层深度电路就可以计算任何函数 。
理论上成立并不代表这是一个好的想法 。 在实际解决电路设计问题或其他大多数算法问题时 , 通常要考虑如何解决子问题 , 然后逐步集成这些子问题的解 。 换言之 , 要通过多层抽象来得到最终解 。
假设设计一个逻辑电路来对两个数做乘法 , 我们希望基于计算两个数之和的子电路来构建该逻辑电路 。 计算两个数之和的子电路是构建在用于两位相加的子子电路上的 。 电路大致如图5-2所示 。
追着幸福跑|为什么深度神经网络这么难训练?| 赠书最终的电路至少包含3层 。 实际上 , 这个电路很可能超过3层 , 因为可以将子任务分解成更小的单元 , 但基本思想就是这样 。
可见深度电路让设计过程变得更简单 , 但对于设计本身帮助并不大 。 其实用数学可以证明 , 对于某些函数计算 , 浅层电路所需的电路单元要比深度电路多得多 。 例如20世纪80年代初的一些著名的论文已经提出 , 通过浅层电路计算比特集合的奇偶性需要指数级的逻辑门 。 然而 , 如果使用更深的电路 , 那么可以使用规模很小的电路来计算奇偶性:仅仅需要计算比特对的奇偶性 , 然后使用这些结果来计算比特对的对的奇偶性 , 以此类推 , 从而得出整体的奇偶性 。 这样一来 , 深度电路就能在本质上超过浅层电路了 。
前文一直将神经网络看作疯狂的客户 , 几乎讲到的所有神经网络都只包含一层隐藏神经元(另外还有输入层和输出层) , 如图5-3所示 。
追着幸福跑|为什么深度神经网络这么难训练?| 赠书这些简单的神经网络已经非常有用了 , 前面使用这样的神经网络识别手写数字 , 准确率高达98%!而且 , 凭直觉来看 , 拥有更多隐藏层的神经网络会更强大 , 如图5-4所示 。


推荐阅读