1 前言
Modularity模块化是实现generalization泛化性的方法之一。科学家对大脑的研究已经发现大脑的不同区域具备完全不同的功能,以此同时不同区域的大脑又具有相同的网络结构。在以前吴恩达的机器学习课程中就有提到过:
我们大脑通过训练可以使用舌头来实现视觉感知,这很神奇。
为了探索Generalization的奥秘,在这一次paper reading中,我们将分析当前Modularity的相关研究。
https://github.com/floodsung/Deep-Reasoning-Papers github.com相关paper列在git中的Modularity部分。
[1] Adaptive mixtures of local experts (1991)
Introduction:这篇文章来自Hinton,是对Mixture of Experts的改进。核心思想是融合了Competitive Learning。
一般的Mixture of Experts 是这样的:
Motivation:所有不同的expert network 加权输出最后的结果。这样的处理存在一个问题是不同的expert是互相影响的,只要一个expert发生变化,整个梯度就会发生改变,所有的expert也会跟着更新。除了让expert network互相合作,还可以互相竞争Competitive,也就是我们改成希望每次通过gating network只选择一个expert而不是combination:
Methodology:这样,Loss function就发生了变化:
为了更进一步使得神经网络快速收敛到单一的expert上,作者又提出了另一个Loss function:
这个形式等价于混合高斯分布(mixture of gaussian)的negative log likelihood。从梯度上看
更有利于收敛。
Conclusion: Competitive Learning的思想非常重要,关键是可以使不同的module (expert network)相互独立,而具备独立功能的module才能具备强的generalization。
Question: 如果我们希望不同的expert network既合作又竞争,该怎么做呢?(新的paper会告诉我们答案)
[2] Modular neural network and self-decomposition (1996)
Summary:这篇文章比较像综述,主要是分析modular neural network的优势及涉及到的如何分解成子任务subtask的问题。
关于Modularity的优点我们这么不讨论,因为我们关注的核心是通过Modularity来实现generalization,而这一点是显而易见,并且也是接下来很多paper涉及到的。
对于这篇文章,最重要的启发还是Horizontal decomposition及Vertical decomposition。
所谓Horizontal decomposition,是指根据输入的数据选择不同的module,上一篇文章Adaptive mixture of experts就是一个典型的做法。除了采用competitive learning的方法,也可以采用clustering的做法,文章中也提到了相关研究:
而Vertical decomposition,是指将输入的数据本身分解为不同的块,每一块选择不同的module进行处理,如下图所示。在这篇文章中,并没有提到有效处理这个问题的方法。
[3] Neural Module Networks (2016)
这篇文章可以说是现代版Modularity的开山之作。经过了20-30年的沉寂,Modularity的思想又发扬光大了。
Idea: 针对特定问题比如VQA构造多个基本的Module NN,然后基于某种方法构造出一个Parser来针对每一个输入构建对应的网络组合,从而进行训练。训练后的Module就具备了Module的特定功能,从而也实现了很强的compositional generalization。
Analysis:首先我们可以看到,现代的Modularity就真的是模块化,而不是单层的几个expert networks,然后这篇文章选择了VQA这个非常适合实现这个idea的问题。为什么这么说?因为在Module的训练中,最困难的是怎么组装这个网络结构?对于VQA的问题,作者通过预训练一个Parser读入Question然后就直接生成了网络的Layout。
Conclusion: 这篇文章从新引起了大家对Modularity的关注,它确实很强大,能够实现Generalization,但是问题也很显然,怎么构建module?怎么组装module? 如果每一个问题都需要inductive bias来实现的话,就很不通用了,这也是接下来的研究考虑的问题。
[4] Learning to Reason: End-to-End Module Networks for Visual Question Answering (2017)
Motivation:这篇文章是[3]的升级版,在[3]中很明显的一个问题是需要一个Parser来将Question直接转换成神经网络的Layout,那么能不能使用Question直接生成Layout呢?
Methodology: 构造一个RNN作为layout policy来生成这个layout,然后采用imitation learning的方式来训练这个layout policy。
这个显然比前面的进了一步,但是呢因为还要使用专家数据,同时这个layout是离散的不可微,只能使用RL来训,也是显得有点局限。
Conclusion: 作为Modular Neural Network的开山之作,以上两篇文章给我们展现了Modularity的威力,但是非常依赖专家数据,没有在本质上解决Layout 生成和End-to-End 训练的问题。
[5] PathNet: Evolution Channels Gradient Descent in Super Neural Networks (2017)
作为同期的研究,PathNet在游戏领域取得了非常好的效果,而其研究核心同样是如何构建Layout?PathNet面对的是Atari这种游戏的Multi task learning问题,核心是通过调整选择不同的module,实现好的transfer 能力。所以,每一种游戏只要有一个Layout,这个和VQA是比较不一样的。
Methodology:PathNet的核心贡献是采用Path Evolution的方式来训练这个Pathnet,从而自动学出个Layout。简单的讲就是基于Evolution的方式一开始随机生成很多Path,并且对于每一层的module至多选择3到4个,然后训练后选择好的Path,接着训练,从而最终收敛到一个最优的Layout。
Conclusion: 采用Evolution确实是寻找一个好的Layout(Path)的方法,但是Evolution很expensive,对于Multi-Task Learning这种问题尚可以接受,但是对于每一个sample都需要更改layout就不好做了,能否End-to-End的生成Layout依然是个问题。
[6] OUTRAGEOUSLY LARGE NEURAL NETWORKS: THE SPARSELY-GATED MIXTURE-OF-EXPERTS LAYER (2017)
这篇文章就是End-to-End生成Layout了,是Mixture-of-Experts的大规模应用。
Methodology: MoE Layer是这篇paper的核心,如上图所示,全称为a Sparsely-Gated Mixture-of-Experts Layer 。相比于一般的Mixture of Experts,引入sparsity是关键,既每次只选择最前面的K个experts(modules)。这样做对训练效果非常有帮助。当然这篇文章的重点还在于怎么大规模的训练这样的网络,137 billion的参数量,很疯狂。
Question: PathNet 或者前面的VQA的model能够用同样的方式实现吗?这里面还存在topology的问题,VQA构建的Layout是不规则的,而这种End-to-End的结构只能是一层一层。对于PathNet面对的问题,实际上又是不需要gating network来重新分配module的选择,不过用gating network根据task embedding来生成path也是ok的,这个我们发现已经有最新的paper在做。
来源:oschina
链接:https://my.oschina.net/u/4302946/blog/3420891