本文翻译至Carlos E. Perez 深度学习模块化

    与其他机器学习方法相比,深度学习具有显著的模块化特点。这种模块化赋予了它前所未有的能力,使深度学习超过任何其他传统的机器学习方法。然而,最近的研究表明,模块化程度比以前更高。很可能很快,单一的深度学习系统将成为过去。
    在讨论未来的发展之前,让我先讨论一下模块化的概念。这是软件工程所熟悉的一个概念,但在机器学习中并不常见。
    在计算机科学中,我们用模块建立复杂的系统。一个由更简单的模块构建的模块。正是它使我们能够建立基于NAND或NOR门的数字世界。通用布尔运算符是必要的,但它们不足以构建复杂的系统。复杂的计算系统需要模块化,这样我们就有了一种管理复杂性的简便方法。
    以下是模块化系统中需要支持的六个核心设计因子:

    • 拆分-模块可以独立。
    • 替换-模块可以替换和交换。
    • 扩充-可以添加新模块来创建新的解决方案。
    • 反转-可以重新排列模块之间的层次依赖关系。
    • 移植-模块可以应用于不同的上下文。
    • 排除-可以删除现有模块以构建可用的解决方案。

    这些运算符具有一般性质,并且在任何模块化设计中都是固有的。它们允许以明确的方式将现有结构修改为新结构。在应用于软件的上下文中,这可能意味着在源代码级别重构操作符,在规范时构造语言,或者在配置时意味着组件模型。这些运算符是完整的,因为它们能够在计算机设计中生成任何结构。
    六算子定义着重于设计变换存在时的函数不变性。更明确地说,我们可以应用这些运算符而不影响整个函数。
    在深入学习的背景下,模块化运算符的启用如下:

    • 分割-预先训练的自动编码器可以分割,并在另一个网络中作为层重用。
    • 代课-通过迁移学习,学生网络可以替代教师网络(GAN中的专业词汇(学生网络-教师网络))。
    • 增强-以后可以添加新的网络以提高精度。你可以联合训练网络来提高泛化能力。此外,神经网络的输出可以用作神经嵌入,也可以用作其他神经网络的表示。
    • 移植-神经网络可以通过替换顶层“移植”到不同的上下文。这部作品的情况是,这些领域是足够相似的。为了更好地理解该方法的边界,在领域自适应方面还需要更多的研究。

    剩下的两个模块化运算符不可用于当前的单片DL系统。

    • 反向-网络中的层不能重新排列,否则会造成灾难性后果。单片DL系统的各层耦合太紧密,无法实现这一点。
    • 排除-没有机制可以“忘记”或从一个单一的DL系统中排除功能。

    尽管如此,尽管存在这两个缺点,与竞争对手的机器学习技术相比,DL系统具有无与伦比的优势。
    整体DL系统层间紧密耦合的原因之一可以追溯到随机梯度下降(SGD)。SGD通过训练以锁步模式工作。它是一种高度同步的机制,需要跨所有层的行为协调。
    然而,这种单片结构正被一个更加模块化的系统所取代。以下是与此相关的两个有趣的发展。
    DeepMind研究了一种称为“合成梯度”的方法,它展示了一种通向更松散耦合层的方法。该方法本质上是在层之间插入一个代理神经网络来近似梯度下降:

    1*H6wrhQFDSsBAdwINd5_5mQ.png

    第二个可能导致更大模块化的发展是生成性对抗网络(GANs)的概念。典型的神经网络有两个相互竞争的神经网络,它们本质上是分离的,但有助于实现全局目标函数。然而,我们现在在研究中看到出现了更复杂的配置,如:
    1*ziQCn7pVHuwHDy1rg6BuSA.png

    这里有一个由分离编码器、生成器和鉴别器组成的梯形网络。这里流行的模式是神经网络中的每一个常规函数也被神经网络所取代。更具体地说,SGD算法和目标函数本身已经被神经网络所取代。任何分析函数都不存在了!当你有很深的元学习时就会发生这种情况。
    最近发表的另一个非常令人印象深刻的结果也是同名的(即StackGAN),它显示了多重解耦GANs的有效性:

    1*MC9PopzPG7fBT9olwWhLNA.png

    这里的任务是将文本描述作为输入,并生成与描述对应的图像。在这里我们有两个GANs一个接一个训练。第二个GAN能够将模糊图像细化为一个更高的分辨率。模块化网络具有分解能力,否则这些能力将被纠缠在端到端网络中。
    在软件工程中,我们有api的概念。也就是说,一种在不同模块之间进行通信的限制性语言。在上面的场景中,“学习交流”神经网络充当模块之间的桥梁api。更普遍地说,我们有“学习如何连接”的网络。从“学习与深度多智能体强化学习沟通”开始:
    我们考虑多个代理在环境中感知和行为的问题,目的是最大化它们的共享效用。在这些环境中,代理必须学习通信协议,以便共享解决任务所需的信息。通过采用深度神经网络,我们能够在复杂环境中演示协议的端到端学习,这些环境受到通信谜题和具有部分可观测性的多智能体计算机视觉问题的启发。
    最近另一篇题为“生成对抗平衡性”的论文进一步探讨了这一点与GANs的关系。在这项工作中,作者试图通过将通常的两人生成性对抗游戏扩展为多人游戏来解决训练GANs的困难。它们并行地训练许多类GAN变体,同时,它们周期性地交换鉴别器和生成器对。这里的动机是为了更好地实现两人之间的脱钩。要确定网络之间的分离接口是否能更好地泛化,还有很多工作要做。
    我们认为这(交换)减少了发生器和鉴别器之间的紧密耦合,并从经验上证明这对模式覆盖率、收敛性和模型质量都有有益的影响。
    要开始了解如何为DL模块构建api,还有大量的研究要做。然而,现在我们有了元学习技术的好处,它将自动学习接口规范。这确实是一个非常有趣的研究课题。解耦网络如何学习如何接口化?

    参考: 分层神经网络的模块化表示