深度学习架构可以被描述为建立机器学习系统的新方法或风格。深度学习更有可能导致更先进的人工智能形式。这方面的证据是自十年来以来发生的巨大突破。在新的乐观的氛围中,我们现在又在一个新的AI春天。不幸的是,目前的深度学习状态似乎有太多的类似于炼金术的方式。每个人似乎都有自己的黑魔法设计架构的方法。因此,该领域需要向前迈进,争取化学,或者甚至可以进行深度学习的周期表。虽然深入学习仍处于发展初期阶段,但本书力求在深入学习中形成一些统一的思想。它利用称为模式语言的描述方法。
模式语言是从称为模式的实体衍生而来的语言,当组合形式解决复杂问题时。每个模式描述一个问题并提供替代解决方案。模式语言是表达从经验中得出的复杂解决方案的一种方法。改进语言表达的好处是,其他从业人员能够更好地了解复杂主题以及更好地表达解决问题的方法。
大多数计算机科学领域的文学,使用短语“设计模式”而不是“模式语言”。我们故意使用“模式语言”来反映深度学习领域是一个新兴而又快速发展的领域,并不像计算机科学中的其他主题那样成熟。我们描述的模式实际上不是模式,而是可能是根本的。我们决不会确定哪个是真正的根本,只有进一步的探索和澄清才能在这个领域达成共识。也许在将来,一个真正的设计模式书会出现,反映了这个领域的成熟度。
模式语言最初由克里斯托弗·亚历山大(Christopher Alexander)推出,用于描述企业和城镇的建筑。这些想法后来被面向对象编程(OOP)从业者采用来描述OOP程序的设计。 GoF的开创性书“设计模式”证明了这种方法的有效性。模式语言进一步扩展到其他领域,如用户界面,交互设计,企业集成,SOA和可扩展性设计。
在机器学习领域(ML)中,出现了一种称为“深度学习”的新兴实践。在ML中,有许多新的术语,如人造神经网络(ANN),随机森林,支持向量机(SVM)和非负矩阵因式分解(NMF)。然而这些通常指的是特定类型的机器学习算法。相比之下,深度学习(DL)并不是一种算法,而是一类倾向于表现出类似特征的算法。 DL系统是由多层(有时称为多级感知器)构成的ANN。这个想法并不是全新的,因为它是在20世纪60年代首次提出的。然而,在推进计算技术(即GPU)和更大的培训数据源的帮助下,对该领域的兴趣已经爆发。自2011年以来,DL系统在机器学习领域取得了令人印象深刻的成果。
当DL意识到实际上有很多算法,而不仅仅是一种类型时,与DL的混淆就会出现。我们发现传统的前馈网络也被称为全连接网络(FCN),卷积网络(ConvNet),循环神经网络(RNN)和较少使用的限制玻尔兹曼机器(RBM)。它们都具有共同的特征,因为这些网络是使用层次结构构建的。例如,一个常见的模式是使用可分层,对DL系统的构建的这种约束导致将机器演变成学习分类的一种增量方式。最近有许多模式被发现,对于从业者来说,这些模式的汇编将是富有成效的。
模式语言是描述和理解深度学习的理想工具。人们想相信深度学习有基于先进数学的坚实基础。大多数学术研究论文将会引发高阶数学,如路径积分,张量,希尔伯特空间,测量理论等,但不要让数学分散自己的实际,使我们的集体认识仍然很小。你看到的数学有其固有的局限性。物理科学家已经知道了这个世纪。我们以这样的方式制定理论,使得表达在数学上是方便的。数学上的便利意味着我们使用的数学表达式可以方便地被操纵到其他表达式中。例如,高斯分布是普遍存在的,不是因为它的一些神奇的结构,现实已经给了我们。它是普遍存在的,因为它在数学上是方便的。
模式语言已被许多模糊领域所利用。原始模式语言围绕着建筑(即建筑物和城镇)的讨论。有模式语言专注于用户界面,可用性,交互设计和软件过程。这些都没有简明的数学基础,但我们从这些模式语言中提取真正的价值。事实上,模式语言的规范与数学中新的代数或类别理论的创造并不是太远。代数是严格一致的,但它们纯粹是抽象的,可能不需要与现实有任何联系。然而,模式语言与现实有关,它们的一致性规则比代数更加轻松。在我们试图理解机器学习的复杂世界(或一般学习)中,我们不能总是将青蛙跳入数学。现实可能是这样的,我们目前的数学是无法描述正在发生的事情。
许多机器学习从业者在首次呈现“模式”这个想法时会遇到的另一个混乱是,他们错误地将其与在自己的领域中通常使用“模式”一词相关联。机器学习涉及开发执行模式识别的算法。所以当你用模式深入学习google的时候,你会发现涵盖模式识别主题的文学。这本书不是常规机器学习意义上的模式识别。
介绍
涵盖这本书的动机。为什么深入学习?涵盖这本书的结构。这本书的中心主题是,通过了解我们在深度学习实践中发现的许多模式及其相互关系,我们开始理解我们如何最好地撰写解决方案。
模式语言
模式语言是从称为模式的实体衍生而来的语言,当组合形式解决复杂问题时。每个模式描述一个问题并提供解决方案。模式语言是表达从经验中衍生出的复杂解决方案的一种方式,使得其他人可以更好地了解解决方案。本章将介绍“模式语言”的概念以及本书“模式”的结构。
理论
本章涵盖了对理解框架至关重要的一些基础数学。它提供了一些常用的术语和符号,将在整本书中使用。这本书不包括线性代数或概率的数学介绍材料。这已经在“深度学习”书中得到很好的涵盖。然而,本书将提出一个数学框架,作为如何推理神经网络的指导框架。这个框架是从类别理论,动力系统,信息理论,信息几何和博弈理论的构想。
方法
从其他软件开发方法(如敏捷开发和精简方法)获得灵感,并将其应用于深度学习领域。深度学习是一种新型的架构,其创建的学习机器类似于软件开发。然而,DL是不同的,因为系统能够发展自己。有足够的复杂性成为覆盖其上的一种结构所必需的,以帮助指导实践者的实践者。
规范模式
本章是阅读其他模式章节的推荐先决条件。在这里,我们讨论出现基本的模式,并了解其他DL模式的基础。
模型模式
本章涵盖实践中发现的各种模型。
复合模型模式
本章介绍了模型及其行为的集合。
内存模式
以前的模型章节探讨了普遍功能的培训。在本章中,我们将探讨如何集成内存以构建更强大的解决方案。
特征模式
本章将介绍用于表示输入和隐藏数据的各种方法。
学习模式
这一章在实践中发现了迭代学习方法。
集体学习模式
本章介绍了多种神经网络组合方法,以解决超出分类的问题。
解释模式
本章介绍网络可以向用户提供结果和反馈的不同方式。
服务模式
本章介绍了在现场部署神经网络时发现的操作模式。
应用
深度学习数据集
常问问题
停车场
TensorFlow实践
教程
黑魔法
块链
自行车自动化设计模式
观众和覆盖面
这种模式语言的观众是先前接触人工神经网络(ANN)的读者。对ANN的介绍或大学水平数学的介绍没有涵盖。为了一个很好的介绍,请阅读Ian Goodfellow,Yoshua Bengio和Aaron Courville的综合文字“深度学习”。这本图书书的覆盖范围比“深度学习”更为狭窄。本书着重于实践中运作良好的技术。因此,作为一个例子,尽管从历史的角度来看,我们并不重视限制玻尔兹曼机器。我们也忽略了本书涵盖的几个主题,如结构概率模型和蒙特卡罗方法,尽管它们在其他机器学习方法中的重要性。古典统计是一个重要的观点,但是在这本书中,我们认为这些古典概念在高度维度的领域中不能很好地转化。我们希望这个文本足够集中和紧凑,读者将会对如何应用这种新兴技术有一个坚实的看法。
我们也将严格避免对生物学可信性的讨论。这个话题超出了本书的范围,我们也认为,考虑到从原来的感知器提案以来已经过去了60年,这种讨论是不屑一顾的。半个世纪前提出的模式,最多只能说明一个实际的生物神经元如何运作的卡通形象。在许多神经网络文学中,我们发现这是一种荒谬的浪费纸,这种文学在基于生物灵感的手波波动下进行了一次尝试。
呈现人造神经网络(ANN)或深度学习(DL)的典型方法是采取历史观点,从1957年感知器建议开始。通过研究历史和思想如何随着时间的推移而有所了解。 ANN和DL研究的历史确实很有趣,并且解释了为什么DL成为过去几年的热门话题,但是从研究历史中获得的洞察力只能最小程度地提高对这一复杂主题的理解。
我们采用非常简单的逻辑方法对DL做出了很少的假设。我们做出的主要假设是,我们有一个学习机是一个动态系统,目的是找出最适合的模型,给出它所观察到的数据。所以我们只关心我们如何定义这个目标,我们将它定义为系统的熵。一个学习系统可以最大程度地减少它所观察到的内在模型与其内部模型之间的相对熵。我们从几个世纪的物理学知道的是,我们可以通过其测量的能量描述一个动力学系统,并且我们有关于控制系统演变的这种能量定义的方程式。以类似的方式,我们采取相对熵并定义内部机器模型的进化(也称为学习)方程。如果方程是不受约束的,则模型可以演化成许多不同的方式。因此,我们扔了一大堆约束,使机器不仅可以在合理的时间内学习,而且可以在内部模型中学习抽象。这些抽象是实现泛化所必需的,并允许机器准确地对先前从未遇到过的观察结果进行预测。
本书不涵盖性能优化的主题。还有其他的文本可以探索更快的算法以及分布式算法。理想情况下,可以使用已经支持优化GPU算法的最新框架以及并行计算的不同选项。例如TensorFlow已经支持Nvdia的最新的CuDNN库。此外,TensorFlow支持跨多个计算节点的分布式计算。有替代框架支持的分布式计算的替代实现,但这超出了本书的范围。
注意:这是一个进步的工作。像https://www.facebook.com/deeplearningpatterns一样接收更新。或者,按照媒体:https://medium.com/intuitionmachine