这篇paper中心思想很简洁,但是实现起来trick茫茫多。另外Google一如既往的没有公开代码,个人感觉又是一篇看起来很美但是没人能重现的典型G家paper。。。
中心思想一幅图两条公式就总结完了:
简单来说每个E(Expert)是一个网络,G是用softmax算出来的一个类似于attention的gate,每个sample会根据gate被分配给k个Expert,随后再加起来。这样的好处是大大提高了模型参数数量,但是计算量不会提高太多。
可但是,细节里面trick太多了,比如G并不是简单的Softmax算出来的,很丑陋的加了个noise,然后更丑陋的强行取了k个。noise的计算方法也很丑,主要目的是为了防止训练开始的时候收敛到永远用固定的k个Expert。这里应该有不小的研究空间,可以做的更系统更美观一点。。。
这个想法看起来比较像attention,但是我认为首先应该联系最近的Xeption(Google)和ResNext(Facebook)来看。一个很有意思的insight是:跟传统机器学习模型不同,一个DNN的计算量和它含有的参数数量并不一定要是正相关的。通过把一层拆成很多并行的层,可以固定计算量而调整参数的数量。
现有经验看来,parameter数量决定了一个DNN有多容易overfit/underfit(传统VC维分析),但是同样参数数量的情况下计算量对DNN最终建模能力的影响很大,甚至起到决定性作用。于是通过固定计算量,单独改变参数数量可以有效的解决overfitting/underfitting的问题。我认为这个方向上还大有文章可以做,想搞深度学习理论的同学也可以关注一下。