资讯 人工智能开发者
此为临时链接,仅用于文章预览,将在时失效

为什么要用深度学习?

作者:AI研习社
2017/08/04 15:39

雷锋网按:本文原作者 YJango,本文原载于其知乎专栏——超智能体。雷锋网已获得原作者授权。

为何深层学习

深层学习开启了人工智能的新时代。不论任何行业都害怕错过这一时代浪潮,因而大批资金和人才争相涌入。但深层学习却以 “黑箱” 而闻名,不仅调参难,训练难,“新型” 网络结构的论文又如雨后春笋般地涌现,使得对所有结构的掌握变成了不现实。我们缺少一个对深层学习合理的认识。

神经网络并不缺少新结构,但缺少一个该领域的为什么要用深度学习?

很多人在做神经网络的实验时会发现调节某些方式和结构会产生意想不到的结果。但就我个人而言,这些发现并不会让我感到满足。我更关心这些新发现到底告诉我们了什么,造成这些现象的背后原因是什么。我会更想要将新的网络结构归纳到已有的体系当中。这也是我更多思考 “为何深层学习有效” 的原因。下面便是目前 YJango 关于这方面的见解。

深层神经网络相比一般的统计学习拥有从数学的严谨中不会得出的关于物理世界的先验知识(非贝叶斯先验)。该内容也在 Bengio 大神的论文和演讲中多次强调。大神也在 Bay Area Deep Learning School 2016 的 Founda’ons and Challenges of Deep Learning pdf(这里也有视频,需翻墙)中提到的 distributed representations 和 compositionality 两点就是神经网络和深层神经网络高效的原因(若有时间,强烈建议看完演讲再看该文)。虽然与大神的思考起点可能不同,但结论完全一致(看到 Bengio 大神的视频时特别兴奋)。下面就是结合例子分析: 

1. 为什么神经网络高效
2. 学习的本质是什么
3. 为什么深层神经网络比浅层神经网络更高效
4. 神经网络在什么问题上不具备优势

其他推荐读物

YJango 的整个思考流程都围绕减熵二字进行。之前在《熵与生命》和《生物学习》中讨论过,生物要做的是降低环境的熵,将不确定状态变为确定状态。通常机器学习是优化损失函数,并用概率来衡量模型优劣。然而概率正是由于无法确定状态才不得不用的衡量手段。生物真正想要的是没有丝毫不确定性。

为什么要用深度学习?

深层神经网络在自然问题上更具优势,因为它和生物学习一样,是找回使熵增加的 “物理关系”(知识,并非完全一样),将变体(为什么要用深度学习?)转化回因素(为什么要用深度学习?)附带物理关系的形式,从源头消除熵(假设每个因素只有两种可能状态)。这样所有状态间的关系可以被确定,要么肯定发生,要么绝不发生,也就无需用概率来衡量。因此下面定义的学习目标并非单纯降低损失函数,而从确定关系的角度考虑。一个完美训练好的模型就是两个状态空间内所有可能取值间的关系都被确定的模型。

学习目标:是确定(determine)两个状态空间内所有可能取值之间的关系,使得熵尽可能最低。

注:对熵不了解的朋友可以简单记住,事件的状态越确定,熵越小。如绝不发生(概率 0)或肯定发生(概率为 1)的事件熵小。而 50% 可能性事件的熵反而大。

为举例说明,下面就一起考虑用神经网络学习以下两个集合的不同关联(OR gate 和 XOR gate)。看看随着网络结构和关联的改变,会产生什么不同情况。尤其是最后网络变深时与浅层神经网络的区别。

注:选择这种 XOR 这种简单关联的初衷是输入和输出空间状态的个数有限,易于分析变体个数和熵增的关系。

注:用 “变体(variation)” 是指同一类事物的不同形态,比如 10 张狗的图片,虽然外貌各异,但都是狗。

问题描述:集合 A 有 4 个状态,集合 B 有 2 个状态。0 和 1 只是用于表示不同状态的符号,也可以用 0,1,2,3 表示。状态也并不一定表示数字,可以表示任何物理意义。

为什么要用深度学习?为什么要用深度学习?

方式 1:记忆

方式 2:手工特征

方式 3:加入隐藏层

模型的熵为什么要用深度学习?与用一条为什么要用深度学习?所要拟合的关系数量有关。也就是说,

变体(variation)越少,拟合难度越低,熵越低。

讨论:网络既然选择这种方式来更新权重,是否一定程度上说明,用较少的节点就可以表示该关联?并不是,原因在于日常生活中的关联,我们无法获得所有变体的数据。所得数据往往是很小的一部分。较少的节点可以表示这一小部分数据的关联,但却无法涵盖所有变体情况。造成实际应用时效果不理想。

具有一个隐藏层的神经网络可以模拟任何函数,最糟的情况需要为什么要用深度学习?个节点。

也叫 Universal Approximation Theorem。但最糟的情况是输入空间有多少个变体,就需要多少个节点。k 表示独立因素的变体个数,n 表示独立因素的个数。上述的例子中最糟的情况需要为什么要用深度学习?个隐藏节点。而代价也是需要为什么要用深度学习?个不同数据才可以完美拟合。

但有一种不适用的情况:非函数。

方式 4:继续加深

浅层神经网络可以模拟任何函数,但数据量的代价是无法接受的。深层解决了这个问题。相比浅层神经网络,深层神经网络可以用更少的数据量来学到更好的拟合。上面的例子很特殊。因为为什么要用深度学习?为什么要用深度学习?,比较不出来。下面 YJango 就换一个例子,并比较深层神经网络和浅层神经网络的区别。

学习的过程是因素间的关系的拆分,关系的拆分是信息的回卷,信息的回卷是变体的消除,变体的消除是不确定性的缩减。

自然界两个固有的先验知识

并行:新状态是由若干旧状态并行组合形成。

迭代:新状态由已形成的状态再次迭代形成。

为何深层学习:深层学习比浅层学习在解决结构问题上可用更少的数据学习到更好的关联。

随后的三篇文章正是用 tensorflow 实现上述讨论的内容,以此作为零基础实现深层学习的起点。

最后总结一下开篇的问题: 

1. 为什么神经网络高效:并行的先验知识使得模型可用线性级数量的样本学习指数级数量的变体
2. 学习的本质是什么:将变体拆分成因素和知识(Disentangle Factors of Variation)

3. 为什么深层神经网络比浅层神经网络更高效:迭代组成的先验知识使得样本可用于帮助训练其他共用同样底层结构的样本。 

4. 神经网络在什么问题上不具备优势:不满足并行与迭代先验的任务

到此我们讨论完了神经网络最基础的,也是最重要的知识。在实际应用中仍会遇到很多问题(尤其是神经网络对 noise 的克服更加巧妙)。随后 YJango 会再和大家一起分析过深后会产生什么效果,并一步步引出设计神经网络的本质

长按图片保存图片,分享给好友或朋友圈

正在生成分享图...

取消
相关文章