第3章 理解深度学习架构
本章将着重理解当今深度学习中的各种架构。神经网络的成功在很大程度上取决于精心设计的神经网络体系结构。自20世纪60年代传统的人工神经网络(Artificial Neural Network,ANN)以来,我们已经走了很长一段路。本书内容将覆盖基本的模型架构,如全连接深度神经网络、卷积神经网络、递归神经网络、长短时记忆网络,同时也会包含最新的胶囊网络的相关内容。
本章我们将讨论以下主题:
- 为什么神经网络体系结构设计很重要;
- 各种流行的架构设计和应用。
3.1 神经网络架构
架构这个词指的是神经网络的总体结构,包括它可以有多少层,层中的单元应该如何相互连接(例如跨连续层的神经单元可以全连接、部分连接,或者完全跳过下一层与网络中一个更高层级的层连接)。随着模块化深度学习框架(如Caffe、Torch和TensorFlow框架)的出现,复杂的神经网络设计发生了革命性的变化。我们可以将神经网络设计比作搭建乐高积木,在其中你几乎可以构建任何你能想象到的结构。然而这些设计并不是随机的猜测,其背后的灵感通常是由设计师对问题的领域知识驱动的,同时还要经过一些尝试和试错来对最终的设计进行调优。
为什么需要不同的架构
一个前馈多层神经网络具有学习一个大假设空间和提取每一个非线性隐层复杂特征的能力。那么为什么我们需要不同的架构呢?让我们试着去理解这一点。
特征工程是机器学习的一个重要方面。如果特征太少或不相关,可能会发生欠拟合;如果特征太多,可能会产生过拟合。创建一个良好的、手动制作的特征集是一项单调、耗时和迭代的任务。
深度学习承诺在提供足够数量的数据的情况下,深度学习模型能够自动找出正确的特征集,即一个复杂性递增的特征层次结构。深度学习的承诺是真实的,但也有一点误导性。深度学习确实在许多场景中简化了特征工程,但它肯定没有完全消除对特征工程的需求。随着人工特征工程的减少,神经网络模型体系结构自身也变得越来越复杂,从而特定的架构被设计出来解决特定的问题。架构工程是一种比手动特征工程更通用的方法。与特征工程不同,在架构工程中,领域知识不是硬编码为特定的特征,而是仅在抽象层级中使用。例如如果我们处理图像数据,那么关于数据的一个非常高层级的信息是对象像素的二维局部性,另一个是平移不变性。换言之,将猫的图像移动几个像素仍然可以保持猫的形象。 ...
Get Python迁移学习 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.