加入极市专业CV交流群,与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
当前深度学习已经在计算机视觉,自然语言处理,游戏与机器人等领域取得了突破性进展,可以在特定问题上达到甚至超过人类的水平,比如AlphaGo。然而深度学习面临着严重的Generalization泛化性的问题,这种泛化性无法仅仅通过海量的数据和巨量的计算资源来解决。因为目前深度学习的训练都是在iid独立同分布的假设下进行的,这使得训练出来的深度学习模型仅能适用于同样分布的数据中,一旦数据分布发生变化,模型便不再适用。然而人类智能具备很强的泛化性。比如AlphaGo把围棋的大小改成9x9就很难处理,需要重新训练,而人类可以很容易适应。再比如人类可以想象并理解科幻中的场景,然而这些场景在现实生活中从来没有出现过。
深度学习能否解决Generalization泛化性问题是深度学习能否进一步落地的关键。比如家用机器人,需要能够适应各种各样的家居环境,比如金融领域,工业领域存在很多极小数据的情况。这些应用都需要深度学习能够很好的实现泛化。这也是为什么近几年来Meta Learning,Few Shot Learning,Domain Adaptation/Generalization,Transfer Learning,Sim2Real等研究越来越火,所有这些方向都在朝泛化性努力。
然而,目前最火的Meta Learning是无法真正解决Generalization的。因为Meta Learning是建立在task iid的情况下进行研究的,也就是Meta Learning的模型需要能够学习各种各样不同的task才能学会迁移到新的task。这方面最成功的可能是sim2real采用domain randomization的方式来实现迁移。然而,还有很多情况下,新面对的场景是训练完全无法覆盖到的,也就是所谓的out-of-distribution(ood),比如前面提到的想象科幻场景。面对out-of-distribution的问题,Meta Learning在框架下是无法进行解决而只能作为辅助的工具。
我们得先搞明白为什么人可以实现out-of-distribution Generalization?
一种原因是人通过某种机制能够理解因果关系Causality或者规则Rule。比如我们知道基本的加减乘除规则,我们就很容易通过反复使用这些基本规则拓展到不同长度的数学运算。
另一种原因是人具备很好的compositional generalization即组合泛化的能力。比如我们学会一个新词如奥利给,我们就可以很容易的将这个新词和其他旧词组合产生全新的句子。比如我们学会了心理学除了看单个人,还可以应用到股票交易市场。可以说我们之所以可以ood是将ood转化为iid的组合上如下图所示。
因此,我们可以有两种思路来实现ood generalization,一种是causality通过发现causal structure或者rule来实现。但这是很难的事情。道理上我们人脑是不会显式的定义rule的。我们当然可以针对问题人工设计规则Rule,这也就是以前的专家系统。不过这种纯Rule的方法显然不具备拓展性,这也是以前符号主义失败的根本原因。那么现在,有一种方法是将神经网络和符号结合也就是所谓的Neural-symbolic Reasoning,通过使用神经网络输出的representation作为符号进行一定的操作。这些操作规则可以根据具体问题进行定义。比如前面提到的加减乘除。这样神经网络要学的仅仅是如何组合这些操作。Neural-symbolic reasoning的方法在特定的问题上确实可以取得很好的效果,比如CLEVR visual reasoning问题,比如一些program induction的研究。然而这种方法是不容易拓展的,也就是方法层面存在泛化性问题,还是走的以前专家系统的老路。虽然如此,如果在特定领域使用Neural-symbolic的做法,是比较容易落地的,所以这里我们并不完全排斥使用这种方法。
那么compositional generalization组合泛化呢?
这就终于到了我们要讨论的主题了:Modularity
Modularity模块化可以说是深度学习领域相对冷门或者小众的一个研究方向。不同于计算机视觉,深度强化学习这类研究,Modularity的研究可以应用到CV,NLP,DRL,Robot Learning等不同的方向及应用。
Modularity模块化是人的神经网络存在的一种现象,神经网络分成不同的模块负责不同的功能,模块内的神经紧密连接,而模块之间的神经稀疏连接。
根据神经科学的研究,我们知道Modularity对于人类智能的重要意义:
Modularity是实现compositional generalization的方法。
为什么呢?
当前主流的神经网络结构无法实现compositional generalization!
这可以从Google ICLR 2020的研究中看出:
http://ai.googleblog.com/2020/03/measuring-compositional-generalization.html
Compound divergence vs accuracy for three ML architectures. There is a surprisingly strong negative correlation between compound divergence and accuracy.
随着测试集和训练集的差异越来越大(测试集和训练集有完全相同的单词,但是不同的词汇组合),即使是目前NLP最强的Transformer,准确率也会大幅降低。这意味着Transformer是无法实现compositional generalization的。
**要实现compositional generalization,需要革新当前的神经网络架构及训练方法。而Modularity就是解决办法。**比如上面Google Blog提到的研究
https://arxiv.org/pdf/1904.09708.pdf
就是将language model分解成semantic和syntax两个模块来实现compositional generalization。
下面我们来分析Modularity当前的研究情况。
Modularity的研究可以分成两个部分:
相关分析可以查看前几篇blog。
早期的研究如Neural Modular Network 面向VQA问题,根据Question获取Module structure:
很多机器人学习的研究也沿着这条路子,根据inductive bias设计好module structure,然后训练,取得很好的generalization的效果。对于这类研究,我的评价和neural-symbolic的研究一样,方法论不通用,但是在具体问题上特别是需要落地的问题上效果会比较好。
当然,我们更关心第2个问题如何同时训练module structure和module,或者说如何实现the Emergence of Modularity?
有几种基本的想法:
除此之外,还要考虑如何选择module的问题,分成两种:
对于基本的实现方法,1和2是比较自然的做法,但是其实计算量是比较大的,本质上是通过大量的探索来进行modularity。而3是相对理想的想法,通过一定的训练方法(top-k)来强制modularity。但现有的方法过于硬,也并不是最理想的做法。
这里我们有两种假设:
个人认同以上两种观点,并且更倾向于第二种。因为每一个人学到的知识都是不同的,不可能完全是先天固化的神经网络结构决定的modularity。然而人脑也不可能是top-k的方式。
显然,人脑通过某种很酷的学习训练方法实现了the emergence of modularity!
要通过Modularity实现Compositional Generalization,需要满足以下三点要求:
我们基于以上来设计idea吧。
以上我们对Modularity的研究背景及当前的研究进展做了分析,希望对大家有启发,也希望能够由此产生出新的idea来实现the emergence of modularity!
推荐阅读:
△长按关注极市平台,获取最新CV干货
觉得有用麻烦给个在看啦~