Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer

2017
google
rnn
iclr
iclr2017

(Curtis Kim) #1

Essence

Contribution

  • 매우 큰 네트워크를 통해 NLP 몇가지 문제에서 #sota 갱신
  • Sparsely-Gated Mixture-of-Experts Layer (MOE) 제안함
  • MOE를 통해 실제 사용된 연산양 자체는 많이 줄임
  • 매우 큰 네트워크를 분산 노드에서 처리하기 위한 방법을 소개함

Key Ideas

Introduction

Training Data가 커짐에 따라 Capacity가 높은 Deep Learning 모델들이 성공한 것은 사실입니다. 그런데, 계속해서 Data를 키운다면, Model Capacity(Parameters) 도 같이 키워줘야하므로, 쉽게 생각하면 이 부분에 대한 고민이 필요하다는 것입니다.

기존 연구들에서, Example 별로 네트워크의 특정 부분만 사용하여 효율을 높이도록 하는 연구가 있었는데, 여기에서 아이디어를 가져왔습니다.

MOE : Mixture-Of-Experts Layer

MOE 는 2가지로 이루어져 있습니다.

  • n개의 Expert Networks
  • Gating Network G : output이 n 차원 벡터

즉, Gating Network G 가 각 Expert를 어느정도의 Weight로 사용할지를 결정하고는 구조입니다.

위 처럼, MOE의 Output은 각 Expert들의 Output을 Gating Weight로 Linear combination한 것입니다.

특히, Hierachical MoE는 이를 확장해서 첫번재 Gating Network에서는 Expert의 Set을 고르게 하고, 그 다음에 Second Gating Network을 통해서 실제 Output을 얻어내도록 설계한 것으로, 더 큰 네트워크 확장을 위한 것입니다.

Gating Network

앞서 소개한 Gating Network에 대한 소개입니다.

Softmax Gating

아주 심플한 방식은 Softmax Gating입니다.

즉, 주어진 input x 에 Weight W_g 를 곱한 후 단순히 Softmax를 취한 것입니다.

Noisy Top-K Gating

위에서 소개한 Softmax Gating에 2가지를 추가합니다.

  • TopK Selection : 이를 통해 Sparsity를 확보합니다. 대부분이 0으로 바뀌므로, 사용되는 Expert의 수가 줄어들게 됩니다.
  • Gaussian Noise : Expert가 고루 사용되도록 도와준다고 합니다.

Multi-Node Model & Training Techniques

이렇게 설계된 MoE Network들이 한 머신에 올라가게 되면, 메모리 제약의 이슈로 인해서 매우 적은 크기의 Batchsize를 가져야될 것입니다. 따라서 논문에서는 모델을 Distributed Nodes들에 분산하도록 하는데, MoE는 각 노드에 1 카피씩만 존재하도록하고, MoE 외의 부분은 Shared 되도록 했다고 합니다.

d개의 device로 분산하게되면 그만큼 대략 d배만큼 배치사이즈가 커질 것이라는 점을 설명합니다.

특히 이 때, MoE는 부분은 이전 스텝에 영향을 받지 않으므로(RNN구조가 아니므로) 여러 time step들에 대해 batch 처리를 할 수 있어 효율성을 늘릴 수 있다고 설명합니다.

Balancing Expert Utilization

아주 소수의 Expert들에만 weight가 몰리는 현상이 있고, 학습 과정에서 초반에 선호되었던 expert들이 더 빠르게 학습되는 문제점으로 이 현상을 설명합니다. 따라서 추가적인 Loss Term을 넣어서 밸런스에 도움을 주려고 합니다.

CV는 Coefficient of Variation으로, 이는 각 Expert들이 유사한 수준으로 Weight를 갖도록 강제합니다. 다만, 이 때, 적은 example에 큰 weight를 갖는 것과 많은 example에 적은 weight를 갖는 것 사이에 차이가 없으므로 새로운 텀을 하나 추가했다고 하며, 이는 appendix에 소개되어 있습니다.

Results

1 Billion Word Language Modeling Benchmark

Expert의 수가 늘수록 Test Perplexity가 떨어지는 것을 볼 수 있습니다. (x축 스케일에 유의)

파라미터수는 정말 엄청나게 늘어나지만, operation수는 생각보다는 적은 걸 확인할 수 있습니다. sparsity가 높다는 뜻.

100 Billion Word Google News Corpus

앞선 실험에서 capacity를 늘림에따라 계속해서 성능이 향상되지만, 향상 정도가 점점 degrade되는 것을 볼 수 있습니다. 이 부분을 논문에서는, 데이터의 사이즈가 작아서라고 가설을 세우고, 직접 100배 더 큰 데이터셋을 만들어서 새로 실험을 합니다.

첫번째로 해석할 수 있는 점은, 적은 데이터보다는 많은 데이터를 사용할 때 훨씬 성능이 좋다는 점입니다.

두번째는 기존보다 더욱 커진 네트워크 사이즈에서도 성능이 계속해서 향상된다는 점인데, 일정 이후에 역시 성능 향상이 없습니다. 성능 향상이 없는 점에 대해서는 sparsity가 너무 높아 생기는 문제(expert 개수가 너무 높아, sparsity가 지나치게 높아짐)로 해석하고 있습니다.

Machine Translation (Single Language Pair)

1개 랭기지에 대해 학습시킨 경우 여러 pair 모두에서 가장 좋은 성능을 보입니다.

Multilingual Machine Translation

GNMT 라는 모델과 비교했습니다.

  • GNMT-Mono : GNMT 모델을 각 Language Pair에 따로따로 학습시킨 버전
  • GNMT-Multi : 여러 Language Pair를 한번에 학습시킨 모델.

당연히 기존 실험에서는 GNMT-Mono가 GNMT-Multi에 비해 성능이 더 좋은데, 이는 각 Language 별로 12배 많은 네트워크 capacity를 가진데다, training도 각 example별로 더 많이 이루어졌기 때문으로 설명합니다.

다만 MoE를 이용해서 트레이닝하면, 대다수의 경우에 GNMT-Multi보다 훨씬 좋은 성능을 보이며, 많은 경우 GNMT-Mono보다도 좋은 성능을 보여줍니다. (이는 여러 Language 간에 서로 공유할 만한 Shared Knowledge가 있음을 시사한다고 개인적으로 해석합니다)