後藤弘茂のWeekly海外ニュース

人間の脳から産まれたディープラーニングのプルーニング

プルーニングとは進化した脊椎動物の脳の生来の仕組み

 ディープラーニング向けのプロセッサの間で進む「プルーニング(刈り込み)」。だが、そもそも、プルーニング自体は新しいテクニックではなく、人間の生体脳で自然に行なわれている現象だ。

 脳の場合は、神経細胞(ニューロン)同士の結合部分であるシナプスが、刈り込まれて減少する。脳のなかでは、ニューロンがシナプスで結合され、信号が伝達されることで、思考や記憶が形作られるが、脳内の神経ネットワークを最適化するためにシナプス刈り込み(Synaptic pruning)が行なわれる。シナプス刈り込みは、脳科学ではよく知られた現象で、英語版Wikipediaにも項目がある。

 人間を初めとする多くの動物の脳では、産まれた時はニューロン同士のシナプス結合はあまり形成されていない。しかし、産まれた直後から爆発的なニューロン同士の結合が始まり、幼児期までに非常に密なシナプス結合が形成されるという。シナプス生成のペースが低下する時期についてはいくつか説があるが、生後8カ月から2~3歳までのあいだにピークを迎えると言われている。ちなみにニューロン自体は生まれた時がもっとも多く、増えることがないと言われていた(最近の研究では生後もニューロン産生される証拠が出されている)。

 幼児期初期に最も密に結合された脳内のニューロン群は、その後、結合シナプスが減少へと向かう。シナプスのうち信号が通り強化されたシナプスが残されるが、信号が来ない不要なシナプスは刈り込まれて消えて行く。使われないシナプスは消え(use it or lose it)、シナプスが淘汰されるので、ニューロンのダーウィン主義とも言われる。10歳頃までには、シナプスは半減し、その後は一定を保たれるという。

人間の脳のニューロンは、フル接続されているわけではなく、限定された接続へと刈り込まれている。「S9389 Structural Sparsity Speeding up Training and Inference of Neural Networks by linear Algorithms」(A. Keller, Nvidia, GTC 2019)

 つまり、脳の中では、幼児期初期までにフル結合に近い神経回路が形成されるが、学習するにつれて、不必要な配線が除去され、必要な配線だけが残される。それによって、無駄のない機能的な脳回路が作られると見られている。子供の脳は学習しやすいがエネルギー効率が悪く、成人の脳は学習しにくいが効率は高い、といった仕組みだ。

 ちなみに、いくつかの脳発達障害は、シナプス刈り込みがうまく行なわれないためだという説もある。脳の機能にとって、シナプスのプルーニングは重要な仕組みであるようだ。

脳内のシナプスが半減している成人の脳

 下は、VLSI Symposia 2017のショートコースでQualcommが、脳科学でのシナプス刈り込みを説明した図だ。左端は生後すぐの人間の脳でシナプスが極めて少ない、中央が6歳の脳で、かなり密にシナプスが結合している、右は14歳の脳でシナプスがかなり刈り込まれて、配線の少ない効率的な脳に変わっている。

人間の脳におけるプルーニング。「Deep Learning for Mobile and Embedded Devices」(Mickey Aleksic, Qualcomm, VLSI Symposium, 2017)

 NVIDIAとスタンフォード大学などの共同研究のスライドでは、人類は出生時にシナプス結合は約50兆しかないが、1歳で1,000兆にまでいったん増える、その後、プルーニングなどで500兆に半減すると説明している。数字は研究によってばらつきがあるが、プルーニングによってシナプスが大幅に減ることは確かだ。

GTC 2016でのスタンフォード大学の発表「S6561 Deep Compression and EIE: ——Deep Neural Network Model Compression and Efficient Inference Engine」(S. Han, Stanford University, GTC 2016)
1歳で1,000兆にまでいったん増えたシナプスは、プルーニングなどで500兆に半減する。2018年のプロセッサ学会Hot Chipsのチュートリアル2018年のプロセッサ学会Hot Chipsのチュートリアル「Accelerating Inference at the Edge」(S. Han, Hot Chips 2018)
脳科学では1979年頃からプルーニングが知られていた

 ニューラルネットワークでのプルーニングも、脳のシナプスプルーニングとまったく同様に、使われないシナプスに当たるウェイト(重み)データとそれに対する演算を削る。必要なウェイトだけを残して効率的なネットワークにする。ニューラルネットワーク自体が、脳神経の仕組みをソフトウェアでエミュレートしたものだが、プルーニングについても生体脳とよく似た仕組みをエミュレートする。

人工ニューラルネットワークでのプルーニング研究の歴史

 自然界では、哺乳類(単弓類)とは虫類(双弓類)が分化する3億年以上前から行なわれていたとも言われるシナプスのプルーニングだが、人工ニューラルネットワークの世界で、プルーニングがプロセッサハードウェアでサポートされ始めたのはつい最近だ。しかし、人工ニューラルネットワークへのプルーニング適用のアイデア自体は以前からあった。プルーニングの大元のアイデアとして知られる論文は「Optimal Brain Damage」(Y. LeCun, et al., NIPS 1989)だ。

 ディープラーニングに詳しいなら、この論文の著者名に気がついただろう。ディープラーニングの父3人のうちの一人、Yann LeCun(ヤン・ルカン)氏(Facebook AI Research and New York University)の論文だ。ディープラーニング系の論文は、引用を見てルーツを辿って行くと、Geoffrey Hinton(ジェフリー・ヒントン)氏とYoshua Bengio(ヨシュア・ベンジオ)氏、そしてYann LeCun氏の3人のうちの誰かの論文に辿りつくことが多い。プルーニングもその1つだ。ちなみに、ディープラーニングの父3人は、2018年のA.M.チューリング賞を受賞している。

Yann LeCun(ヤン・ルカン)氏(Facebook AI Research and New York University)

 下はNVIDIAのGTC 2020のスライドで、プルーニング/スパースネットワークについての研究の動向を、論文数で示している。最初のOptimal Brain Damageから始まり、プルーニングについての研究は、一定の水準で継続されて来た。ディープラーニングブームのきっかけとなった2012年のHinton氏らの論文が出たあとも、プルーニングへの関心はそれほど増えなかった。

 ところが、NVIDIAなどがDeep Compressionの論文を出した時期の前後から、爆発的に論文が増えている。ネットワークモデルの肥大とともに、NVIDIAの論文が引き金となって、ホットな研究エリアになっている。また、以前のプルーニングの研究は、対応をハードウェアで実装して加速するという研究ではなかったが、現在はハードウェア実装の実例が多数登場している。

プルーニングの研究の論文数の推移。「S22085 Accelerating Sparsity in the NVIDIA Ampere Architecture」(J. Pool, et al., GTC 2020)

CNNからスタートして現在はNLPが重要なテーマ

 プルーニングの研究は、2012年にCNN(Convolutional Neural Network)がディープラーニングに火を付ける前から始まっていた。そのため、初期の研究は、CNNにフォーカスしたものが多かった。CNNの場合、コンボリューションレイヤで膨大なGEMM(General Matrix Multiply)がある上に、FC(フーリーコネクテッド)レイヤもある。それらの部分にスパース性が強かったので、プルーニングは効果を上げやすかった。

 しかし、最近は、画像以外の、音声や自然言語などの認識ではどうなのかが重要なテーマとなっている。なぜなら、この1年半ほどの間に、ディープラーニングの最先端の戦場は、すっかり自然言語処理(NLP:Natural Language Processing)へと移ってしまったからだ。

 音声や言語処理のような時系列データを扱う認識処理では、従来は、再帰型の「RNN(Recurrent Neural Network)」や、RNNの発展形である「LSTM(Long short-term memory)」や「Gated recurrent unit(GRU)」が応用されて来た。しかし、自然言語処理では、重要な部分に注目する「Attention」が導入され、さらに、Self-Attention機構を用い、RNN系の再帰構造を用いない「Transformer」アーキテクチャが現れて状況が一変した。

Transformerが出てくる前の2016年のGTCでは、プルーニングがLSTMで有効であることが示されている
Transformerのネットワークアーキテクチャ。「Attention Is All You Need」(A. Vaswani, et al., NIPS 2017)
Transformerはエンコーダ-デコーダ型の構造で、Self-Attentionがそれぞれに組み込まれる。再帰型の構成は持っていない。GTC 2020のNVIDIAの講演から。「Rethinking Impact Factor_an NLP-Driven Metric and Pipeline Using Generalized Autoregressive Pretraining on Medical Journals」(L. Tam, et al., GTC 2020)

 Googleが発表したTransformerを使った学習済みモデル(Pre-trained model)「BERT(Bidirectional Encoder Representations from Transformers)」が2018年10月に発表され、自然言語処理(NLP:Natural Language Processing)の認識精度が一気に向上。一部のベンチマークでは、人間を超える(superhuman)性能を達成した。また、BERTは事前学習ではラベルなしデータを使う(unsupervised:教師なし)ため、大量のトレーニングデータの準備が容易でもある。(「BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding」(J. Devlin, et al., 2018))。

BERT以降はNLPで塗りつぶされたディープラーニングのトレンド

 BERTのインパクトは巨大で、2019年はNLPの年となった。2019年から、次々にTransformerを使ったモデルが発表され、自然言語の認識率はぐいぐい上がった。しかし、難点もあった。BERTはかなり大きなモデルであり、コンピューティングリソースが必要となる。

 基本のBERT base(12層)ですら、トレーニングに16個のTPUで4日かかるとされた。BERTは大きく重いため、ディープラーニング系のコンペティションプラットフォームであるKaggleで、BERT系のチューニングがテーマになった。ちなみに、BERTでは、TPUに対してGPUが不利であると話題になって、NVIDIAがBERTチューニングに注力した経緯がある。

 BERTが登場してから、続々と登場したBERT改良版も、多くが必要な演算やメモリ量を増大させるモデルだった。現在、ディープラーニングの大波となっているNLP(Natural Language Processing:自然言語処理)は、画像認識系よりもずっと大変な処理で、ハードウェアに対する要求も高い。それが、精度の向上とともに、より大きく重くなる方向にある。

 そして、重いのはトレーニング(Training:学習)だけでなく、インファレンス(Inference:推論)も同様だ。そのため、インファレンスのためのプルーニングの話題では、BERT以降のNLPが重要なターゲットとなっている。実際、プルーニングに絡んだ最近の論文や発表では、Transformerでのスパースネットワーク結果が示されている。

BERTからわずかな間にプリトレインのモデルはどんどん膨れ上がった。GTC 2020でのスタンフォード大学の講演。ALBERTでは、パラメータは共有化で減っているはずだが、コンピュテーション量は上がっているという。「S22294 Natural Language Understanding and Conversational AI」(C. Manning, et al., GTC 2020)
NVIDIAが示すNLPにおけるコンピュテーション量の増大。Megatron-LMとT-NLGでさらに跳ね上がっている

NLPでのプルーニングの効果

 突然のNLP(自然言語処理)ブームのなか、プルーニングの論文発表も、必ず、BERTなどTransformer系のネットワークモデルでの性能が示されるようになっている。下のスライドは、NVIDIAのAmpereアーキテクチャのA100での、BERT-Largeのエンドツーエンドのインファレンス(推論)のアクセラレート率だ。トータルでも、1.3~1.5倍の性能になるとされている。

BERTとResNeXtでのインファレンスの性能向上。「S22085 Accelerating Sparsity in the NVIDIA Ampere Architecture」(J. Pool, et al., GTC 2020)
BERT内のエンコーダアーキテクチャで、スパース(疎)化できる部分の図。赤い部分がスパース化できる

 プルーニングでは、パフォーマンスアップだけでなく、モデル精度の維持も重要だ。スパースネットワークでは、再トレーニングで精度を上げる。その結果も示されている。NVIDIAのレポートでは、画像認識系では、スパース化と量子化を組み合わせてもほぼ精度は維持されている。NLPについても同様で、精度の低下は見られない。

NVIDIAが発表したAmpereでのスパースネットワークでの画像認識系の精度
NVIDIAが発表したAmpereでのスパースネットワークでのNLP系の精度

 NVIDIAのAmpereのプルーニングは、独特の「2:4」アーキテクチャで、50%の低減率と比較的大人しい。

プルーニングのトレーニングの自動化

 プルーニングは、浸透させることが難しい。個々のハードウェアの対応で、対応できるプルーニングの手法が異なる。これまでは、スタンダードがないため、ほとんどのネットワークモデルはデンス(密)のまま実行されている。データセンター側でシェアを握るNVIDIAがAmpereで対応したことは、大きな意味を持つ。今後、プルーニングへのハードウェア対応がさらに浸透すると、プルーニングしたスパースネットワークが当たり前になって行く可能性がある。

 NVIDIAは、Ampereアーキテクチャの投入にあたって、Ampere向けのプルーニングを3行のコードで実現できるようにする自動化ライブラリ「ASP:Automatic SParsity」を準備した。今後は、こうしたプルーニングの支援が重要になる。強化学習によって自動的に最適なプルーニングを行なうアプローチなども登場している。

強化学習エージェントによるプルーニングを行なうAMC(AutoML for Model Compression)「Accelerating Inference at the Edge」(S. Han, Hot Chips 2018)
NVIDIAのAmpere向けプルーニング自動化