人工生命の交配による優秀なAIの探究
知性を宿す機械

Exploring Better AI with Neural Architecture Search 人工生命の交配による優秀なAIの探究

ニューラルネットワークの構造を自動的に探索するNAS(ニューラル構造探索:Neural Architecture Search)。AI研究者の清水亮氏が、人工生命(A-Life)における遺伝的アルゴリズムにおいても、ニューラル構造探索が有効かどうかを検証した。 by Ryo Shimizu2023.01.13

最近、世の中のAI研究の流れが、急激にNAS(Neural Architecture Search)、つまり「ニューラル構造探索」に傾いているように感じる。

これまで、AIの、特にディープラーニングで用いられるニューラルネットの研究と言えば、研究者自らがニューラルネットの構造を設計し、実験しながらその性能や意味を確かめていた。

ディープラーニング以前のAIの画像認識アルゴリズムの場合は、それに加えて、人間の研究者が「特徴量」と呼ばれる量、つまり画像のどの部分を特徴としてとらえるかという「思想」も設計していた。

しかし、ディープラーニングによって、特徴量を人間が設計するよりも、コンピューターに自動的に見つけさせた方が、はるかに効果的だということが証明された。ディープラーニングの存在が世に知られるようになったのは2012年の国際的な画像認識コンテストで、続く2013年の同コンテストでは、上位をすべてディープラーニング系のアルゴリズムが独占。ディープラーニングの有効性が決定的になった。これはわずか10年前の話である。

そして現在では、特徴量の設計に限らず、ニューラルネットワークの構造(アーキテクチャ)全体を自動的に設計した方が効率的であると考えられ始めている。このニューラルネットワークを自動的に設計する手法が、ニューラル構造探索だ。

最近ではより効率的に構造検索をする試み(Liu et al. 2019)も発展しているが、ニューラルネットワークの自動設計には、古くから「遺伝的アルゴリズム」などが用いられてきた(Stanley et al.2002)。

遺伝的アルゴリズムとは、アルゴリズムのパラメーターを「遺伝子」として設定し、生物と同様、その遺伝子を「交差」させて変化させていく中で、最適なアルゴリズムを探索する手法だ。遺伝的アルゴリズムを適用することについて、批判的な立場からの代表的な意見は、「遺伝的アルゴリズムによってとても良い構造を見つけられる可能性があることは否定できないが、実際には良い構造を発見するまでに大量の試行錯誤が必要であり、そもそもうまくいくかどうかは根拠がなく運次第でもあり、計算機リソースを圧迫することを考えると現実的ではない」といったものがある。

興味深いことに、こうした批判はディープラーニングが台頭してきた時に、ディープラーニングに対して行われたものと奇妙に一致している。ディープラーニングもまた、根拠がわからない、運次第で性能が上がったり上がらなかったりする(今もこの性質は持ち続けている)ため、「研究対象にはなり得ない」と切り捨てる学者も少なくなかった。

今では信じられないが、以前はディープラーニングの「微分しながら無数に近いパラメーターを調整したらうまくいく、というのは、あまりにも運任せではないか」と思われていたのである。

このように、かつてディープラーニングが非効率と思われたのと同様、ニューラル構造探索が非効率的に見えるのは、同じ学習データに対して、異なるアーキテクチャで学習プロセスを何度も繰り返さないと、それぞれの構造(アーキテクチャ)の性能が測れないことだ。

最近では、こうした欠点を克服して効率的にニューラル構造を探索(NAS)するために、学習プロセスをほとんど経ずにニューラル構造の性能を推定する技術も出てきた。こうなると興味を惹きつけられるのは、ニューラル構造そのものがどのように作られるのかという部分である。

例えば、筆者の興味分野のもう一方である人工生命(A-Life)では、人工生命であるプログラムに、遺伝的な作用を加えて性能を上げていく探索手法が古くからある。しかし、そういった遺伝的アルゴリズムは、ニューラル構造探索においても有効なのだろうか。もしも有効だとすれば、その有効性はどの程度確からしいのだろうか。そこで筆者は、極めて単純な遺伝的アルゴリズムによるニューラル構造探索(NAS)プログラムを書いて、その結果を観察してみることにした。

読者もプログラムに詳しい人ばかりではないだろうから、具体的なソースコードは別途掲載するし、それ以上難しいことは説明しないつもりだ。そして、遺伝的アルゴリズムによって自動的に設計された人工生命としてのニューラルネットの物語を、図とともに示していく。そこから、このやり方の面白さ、将来性を感じ取っていただければと思う。

最初に断っておかなければならないのは、今回の実験は高い精度や性能を求めるものではないことだ。つまり、人間と張り合うためのニューラルネットを設計するのではなく、あくまでも、遺伝子による自動設計というアプローチが実際にはどのようにニューラルネットの設計に影響を与えうるかということに着目していただきたい。

遺伝的アルゴリズムでバリエーション豊かな6つの個体を選別

今回、学習に使用したのは、さまざまな服や靴の画像が28×28ドットの白黒画像として6万枚集められた「Fashion-MNIST」というデータセットだ。手書き数字を分類するデータセットでは簡単すぎると思われるときによく使われる。

筆者が今回用意した実験環境では、それぞれの人工生命(ここではニューラルネットをひとつひとつ人工生命に見立てている)に、遺伝子として10個の数字の列を与えている。このうち、前半5つがニューラルネットに用意されている畳み込みレイヤーの種類を意味し、後半5つがそれぞれの層のつながり方を指示する遺伝子とする。

それぞれの遺伝子は「0000011111」のような10桁の数字として表現される。

今回用意したプログラムでは、遺伝子の前半5桁に「0」があったら、それは“カーネルサイズ5の畳み込みレイヤー”であることを意味する。この畳み込みレイヤーにはそれぞれチャンネル数が割り当てられるが、チャンネル数は遺伝子の数字を2で割って切り捨てたものに1を足して10倍した数、例えば遺伝子が0ならチャンネル数は10、4ならチャンネル数は30になる。

一方、後半5桁に0とあれば、そのレイヤーは前のレイヤーとただ直線的に接続されるシンプルな構造となる。しかし1なら、ひとつ前のレイヤーをスキップする接続が追加され、2なら二つ前、3なら三つ前、4なら、入力されたレイヤーを直接、5なら1番目のレイヤーを直接、という感じで接続される。

具体的にどんな遺伝子の時にどのような構造に変化するのかを下図に示す。

この話の大事なところは、あくまでも例として「とある記号列(遺伝子)」から「実際のニューラルネットワークの構造」が出現しているところだ。遺伝子が同じなら、まったく同じ構造のニューラルネットが現れる。ここが重要である。すべての生物も同じように、遺伝子が同じならまったく同じ構造の肉体が現れるというのが大前提にある。

まず、ランダムな文字列を用いて遺伝子同士を「交配」させた。この「交配」というのは、簡単に言えば、遺伝子同士をランダムに混ぜることだ。

ここでは簡素化のため、50%の確率で両親の遺伝子をシャッフルすることにした。今回は突然変異を用いず、純粋に交配のみでどのようなことが起きるか観察してみた。と言うのも、生物の突然変異が起きる確率は実際には非常に低いからだ。数百回程度の実験で、突然変異体が生まれるという想定そのものに無理があるのである。

実験では、小さな学習を走らせて、それぞれの遺伝子から生まれた人工生命の特徴によって分類した。そして、分類した人工生命の、以下の6つのタイプに分けた。

1つ目はチャンピオン。文句なしに一番良い成績を短時間に残した個体である。この個体には「イザナギ」と名付けた。

次に、成績ではイザナギには及ばなかったものの、着実に成績を上げて伸び代がありそうな秀才タイプの個体を見つけ、これにイザナミと名付けた。

通常の遺伝的アルゴリズムでは、自動的にこうして上位二つの個体の遺伝子がピックアップされ、突然変異を含むさまざまな兄弟姉妹を産んで競わせる。

しかし筆者は、生まれついてはかなり成績が低かったものの、爆発的な伸び率を持っている個体を発見し、スサノオと名付けた。

また、コツコツ努力をするが、残念ながら才能に恵まれておらず短時間には微々たる成長しかできなかったニニギ、同じく才能に恵まれていないが努力型の資質を感じるサクヤ、そして初回から好成績をマークしたものの伸び代が少なかった圧倒的才能を感じる天才的個体にオモイカネと名付けた。

こうして、バリエーション豊かな6つの個体を選別した。普通、遺伝的アルゴリズムで人間がこういう主観を持って個体を選別することはあまりないが、筆者の興味が、「果たしてどういう親からどういう才能を持った子供が生まれるか」という点にあったため、あえて癖の強い個体を残すことにしたのである。

せっかくなので、それぞれの個体の姿を下図に示す。

さて、こうして生まれた6つの人工生命だが、説明と一緒に見ると、一見して味気なさそうなニューラルネットに、なにか親近感が湧いてこないだろうか。チャンピオンのイザナギとイザナミは、非常にシンプルで素直な構造をしている。これが好成績を残せるのはある意味で「当たり前」のように見える。

しかし、構造だけで言えば、イザナギとサクヤはかなり似ている。そして「変わっているから面白そう」という理由で選んだスサノオと、「圧倒的に才能を感じる神童」たるオモイカネが、むしろちょっと似た構造になっているのは面白い。

人工生命には性別がないので、この6つの第一世代を自分自身以外のすべてと交配させて、第二世代を作った。そして生まれた第二世代も、また同じように少ない学習回数で性能をテストして、性能順にランク分けする。

同じ親を持っていても必ずしも良い結果が最初から得られるとは限らないため、全部で15組の親の組み合わせのそれぞれについて、5個体の子の人工生命を生み出して(つまり全部で75個体)テストした結果、なんと第1位はイザナミとイザナギ、つまり前世代のチャンピオンと第2位の個体を親とする第四子だった。筆者は彼を「イズモ」と名づけることにした。

そしてネットワークの構造を見ると、当然だが確かに両親の特徴をそれぞれ引き継いでいるのである。

遺伝子の掛け合わせが、ある程度有効なのは本当らしい。しかしそれだけでは面白くないので、他にもこの第二世代から特徴的な個体を選抜した。

すると特徴的な個体も、優秀な個体も、両方がイザナギかイザナミ、つまり前世代のチャンピオンか準チャンピオンの血を引いていることがわかる。

それぞれ、イザナギとスサノオの第一子をアシナヅチ、イザナギとニニギの第二子をアキビメ、第四子をアハナギ、イザナミとスサノオの第三子をアサマと名付けた。

しかし、上位個体も個性ある個体も両方が、基本的にはイザナギかイザナミの子供であり、広い意味ではすべて異母/異父兄弟であるということに驚いた。

第二世代になると、第一世代にあったような、全く見込みのない個体というのは現れないようになり、良くも悪くも凡庸な成績を残す個体が多くなった。

この目につく個体がすべて兄弟であるということに違和感を覚えて、さらに一週間をかけて第三世代を育てた。その結果は、驚くべきものだった。

まず、最も成績が良かったのは、イズモとアサマの第二子。

アサマはスサノオの血を引く個体なので、2層目から4層目へのバイパス回路が特徴のひとつだったが、イズモの持つ1層目から5層目までのバイパスと、アサマがスサノオから引き継いだ2層目から4層目までのバイパスが融合することがうまくいく秘訣だったらしい。

第2位の成績となった個体も、やはりイズモの子だった。

アハナギはイザナギとニニギの第三子で、イズモの持つストレートな構造をほんのすこしだけ変化させたところに特徴が見える。具体的には、入力層から二層目へのバイパスが追加され、チャンネル数が変化しただけだが、これが結果的にイズモ、アハナギの両親よりも好成績を残す原因となったようだ。

第3位の個体の親も、やはりイズモの嫡流だった。アハナギとアキビメは、どちらもイザナギとニニギの間に生まれた兄弟である。なお、第4位以降もイズモの血統は強くかった。

量子構造探索(QAS)の可能性

このことからどのようなことがわかるだろうか。

第一に言えるのは、ある一定の基準、この場合は「正解率の高さ」を置いた場合、確実に淘汰圧が作用するということだ。

第二に言えるのは、構造の違いや遺伝は、思ったよりもわかりやすく可視化されることだ。

どの親のどの特徴を受け継いでいるのか、筆者も実験では結果を知っていたものの、改めて構造を可視化して比較したのは初めてだったため、意外なほど特徴が受け継がれていることに改めて驚いた。

第三に言えるのは、「親が優秀ならば子はもっと優秀になる可能性が高い、しかし、親のどの特徴が引き継がれると子が優秀になるのかまではわからない」ということだ。

これが、これまで多くの人工知能と人工生命の研究者たちが「遺伝的アルゴリズムによる設計は研究対象にしにくい」と考えてきた根拠の一つだろう。

遺伝的アルゴリズムによって実際にどのように遺伝子が人工生命(この場合はニューラルネット)の形態を変化させ、それが性能にどのように結びつくか丁寧に観察していくことで、これまで発見されていなかったような新しく効果的な構造が発見される可能性はある。例えば、人類はこれまで自力で「残差モジュール」や「セルフアテンション」といった構造を発見してきたが、こういう構造の発見も機械が自動的に行ってくれることは十分考えられる。

ディープラーニングも効果があるとはっきり認識されてから、それがどうして効果的なのか理論的に確認されるまでに、かなりの時間がかかった。それ以上に、ディープラーニングの生み出す結果が圧倒的に効果的だということを、人々(特に研究者)が認めるまでには時間を必要とした。

遺伝的アルゴリズムも、経験則からうまくいくらしいことはわかっているのだが、「どうしてうまくいくのか」「どうすればうまくいくのか」といったことは、まだ手探りの状態である。しかし、遺伝的アルゴリズムによるニューラル探索も、ディープラーニングと同様に、近々その効果が広く認識されるようになるのではないか。

そして、このニューラル構造探索の先に待ち構えているのは、量子構造探索(QAS:Quantum Architecture Search)であると筆者は考える。、現状のニューラルネットと量子アルゴリズムは、よく似た性質を持っているからだ。

どちらも、情報がある方向から別の方向に流れるという共通点があり、どちらも人間が自分でアルゴリズムを作るには難しすぎるという問題がある。また、どちらも確率的な振る舞いに基づいている。

量子構造探索については、まだ少ないが、いくつか論文が出始めている。量子プログラミングはあまりにも従来のプログラミングと異質なため、ニューラル構造探索の応用として量子構造探索がうまく活用できれば、ニューラルネットを扱うのと同じように量子コンピューターを扱える時代が到来するかもしれない。