誤解を恐れずに言えば、ニューラルネットワークのプログラミングは、とても簡単です。
実は以前、知人の会社がAIを理解するために会社で代数幾何学の勉強会を始めたと言ったとき、それは極めてナンセンスだと指摘したことがあります。
なぜなら、ニューラルネットワークを設計するのに代数幾何学の知識などいらないからです。
たしかにニューラルネットワークを数学的に表現しようとすれば、代数幾何学を使う場合があります。ところが、それは本当にごくごく一部に過ぎません。本筋は代数幾何学で表現することではなく、「どう使うか」という別のところにあるのです。人工知能をやろうとする時にはまず代数幾何学を勉強しよう、というのは、まったく木を見て森を見ず、ということになりかねません。
基本的に、ニューラルネットワークで使う数学は高校で習う範囲のもので十分ですし、大事なのは代数幾何学を覚えることではなくニューラルネットワークを使えることです。実際、昔の論文はよく数式が出てきましたが、最近の論文では数式はほとんど見なくなりました。数学的構造よりも図で説明したほうがわかりやすいのです。
このような例はニューラルネットワークに限らず枚挙にいとまがありません。
たとえば、自分の現在位置を知るのに相対性理論を学ばなければならないとしたら、だれがGPSを使えるでしょうか。GPS衛星からの電波を解析するには相対性理論の知識が必要なのは間違い無いですが、大事なのは相対性理論を使うことではなくてGPSを応用してカーナビを作ることです。カーナビの開発者はGPSという部品の詳細について知る必要はありません。
同じように、JPEGを展開するには離散コサイン変換が必要ですが、カメラマンにとってその知識は必要ありません。大事なのはどんな写真を撮るか、ということです。
同じように、ニューラルネットワークを扱うのに代数幾何学の知識は一切必要ありません。ニューラルネットワークのプログラミングでもJPEGを扱いますが、ニューラルネットワークのプログラマーは離散コサイン変換の知識を持っていません。
現代工学というのはそのようにして知識の切り分けと作業の水平分業を行うことで効率化し、それまでできなかったアイデアを実現することに注力できるようになっているのです。
よく、科学と工学と数学が混同されます。この三つは全く異なるものです。
科学者(サイエンティスト)も、工学者(エンジニア)もともに数学を道具として使いますが、目的が違います。
科学者は真実を解明し、原理の「説明」を試みる人々です。その「説明」のための道具として数学が使われることが少なくありません。
一方、工学者は目的を「具現化」する人々です。道具を作り出す人々と呼んでも良いでしょう。工学者は道具を作るために数学という別の道具を使います。
家という道具を作るために大工さんがカンナや金槌を使うのと同じです。
僕の親戚には大工の棟梁が居たのですが、彼は基本的に説明をしません。説明を求めることもまずありません。ただどうすれば家が建つのか具現化する方法を知っているだけなのです。彼は数学は使いませんが、数字は使います。大工たちに古くから伝わるものの数えかたや考え方があり、それを使えば立派な家が作れることは分かっているからです。
数学は科学(自然科学)ではなく、哲学の一種であると言われます。「数とはこうあるはずだ」という信念の塊であり、実際には非常に細かく複雑に分岐しています。「こうあるはずだ」という哲学が変化すれば、数学で扱う事象の根本的な意味が変化してしまうので、一口に「数学」といっても、ひとつの哲学を指すわけではありません。
科学者が自然現象を理解するために、ある種の共通の価値観としての哲学を必要として、伝達のための道具として数学が用いられるに過ぎません。
大工は数学という哲学を使っていませんが、木という自然現象の性質を熟知しているから何百年も崩れない木造建築ができます。建築家は、数学を用いて構造計算をします。
どちらも建物を作るという目的は同じですが、用いる道具が違うだけです。
そして、ニューラルネットワークの設計そのものにおいては、代数幾何学の知識があることはあまり役に立ちません。より良い性能のニューラルネットワークが生まれるケースというのは、ほとんど偶然の産物に近いところから生まれることが良く知られています。
たとえば、これまで主流だった畳み込みという概念は、90年代からあったわけですが、当初は性能を上げるためではなくメモリを節約するための仕組みとして考案されました。
これがあるとき、「実はニューラルネットワークの深層化にとても有効だ」ということがわかって、一気にブームが来たわけです。今の深層学習プロセッサは主に畳み込みを高速化する機能に特化していますが、最近発表されたVisionTransformerという手法では、畳み込みを一切使わずに畳み込みによるニューラルネットワークよりも高い性能を出せることが分かっています。
新しい手法が偶然、または必然的に発見されたとき、「どうしてうまく行くのか」ということについて一応の説明はなされるのですが、その説明はしばしば
間違っていたことがあとでわかる、ということがこの世界にはよくあります。
この現象は、AlphaGoと人間の棋士(イ・セドル九段)の戦いを、人間が解説していた時に似ています。
人間のプロ棋士が、対局の途中で「これはAlphaGoの失着(間違った手)ですね」と断定した手が、実は最後の最後に勝利するための重要な布石だったことが最後の最後に大逆転されてわかるのです。
このように、少なくとも囲碁というゲームにおいては、全ての説明は後付けであり、仮に説明されてわかったような気がしても、それ自体にあまり意味がないことは、AlphaGoやその後継であるAlphaZeroの実験から明らかになりつつあります。
棋士の方の中には異論もありましょうが、少なくともAlphaGoもAlphaZeroも、ロジックなどを一切使わずに、ただ原因と結果だけを機械的に反復し、学習するだけで人間の最高レベルの棋士に勝ててしまうことは厳然たる事実です。そして、「なぜそうなるのか」は誰にも説明できないのです。
ところが「説明できません」ということが、科学の世界では最も嫌われます。
「説明できない」ということは、「わかっていない」と同義だからです。
したがって、どんな論文にも説明が求められます。実験結果と考察は常にセットで求められるので、「なぜこの手法が優れているのか」という説明が必要になるのです。ですが、そうした説明は大抵の場合、間違っていることがあとでわかります。
特に最近のニューラルネットくらい進歩が早いと、去年まで正しいと信じられていたことが、今年からは違うと言われたりすることは日常茶飯事です。時にはおおもとの手法の考案者さえも、考えを何度も改める必要に迫られることがあります。
にもかかわらず、全ての論文は説明が求められ、その説明がその時点で審査員(査読委員)の納得できるものである必要があります。したがって、ある論文が通るかどうかは運次第という要素もあります。ある学会ではけんもほろろだった論文が全く同じまま別の学会で認められることはこの世界ではよくあります。
ただ、いまのところは少なくとも説明できないものは、論文になりません。論文にならないものは、科学者の業績としてカウントされず、学位もとれないことになります。
これが、昔から人工知能を研究している科学者たちが、あまり積極的に深層学習に手を出さなかった理由のひとつです。説明できないことが最初からわかっているからです。
ただ、エンジニアとしては、「わかってないけど使えるものは使う」というのはごく普通の行動様式と言えます。
「原理は解明されていないが、現象から性質はわかっている」ものを組み合わせて社会実装するのがエンジニアリングです。
実はもうひとつ、昔から繰り返し有効性が指摘されているにも関わらず、あまり積極的に語られない事実が、AIの設計そのものを自動化するべきという議論です。
ニューラルネットワークの進歩が単なる偶然の発見の積み重ねに過ぎないという事実を踏まえると、これを設計するのにあれこれ頭を使うのは時間の無駄だとも言えます。もちろん人間の勘も大事ですが、それの実際的な使い道を発見するのは、様々な組み合わせを次々と試していくことが必要になります。
実は筆者の経営するギリア株式会社では、創業当時からそういう時代を構想し、まずは会社の空いている計算資源を自動的に組織化する仕組みを開発しました。この仕組みがあれば、社内の空いているGPU資源を自動的に検索してタスクを割り当て、結果を得ることができる、いわば一種の分散コンピューティング環境です。次に、その仕組みの上で動く遺伝的アルゴリズムによるAIの自動設計システムを構築しました。
遺伝的アルゴリズムとは、ニューラルネットワークとは別の、「よくわからないが、実際にはうまくいく」方法を見つけるための手法です。
ニューラルネットワークを一つの生物として捉え、他のニューラルネットワークとの交配や淘汰、突然変異などを加えながらAIを進化させます。
通常の遺伝的アルゴリズムでは特定のアルゴリズムのパラメータチューニングを行うが、ニューラルネットワークの場合は、ニューラルネットワークの構造全体を交配させることができます。
勘の鋭い人はピンと来たと思いますが、もともと生物の神経回路網を模した人工ニューラルネットワークと、生物の遺伝進化に着想を得た遺伝的アルゴリズムは相性がとても良いのです。
実際、人工知能研究者でシステム生物学者でもある北野宏明(当社の会長でもある)が1990年にAAAIで発表した論文でその可能性について指摘しています。それが30年の時を経てようやく実用段階に至る道筋が見えてきたという手応えを感じ始めています。
当社の技術検証では、ある条件下では人間の設計したものよりも格段に性能が良いニューラルネットワークの設計を短時間に得られることが確認できました。まだごく限定的な画像分類についての技術検証が終わっただけですが、少なくともこれで開発の方向性は間違っていないことが確認できたと言えます。
このニューラルネットワーク自動設計システムを、われわれは「Spectre(スペクター)」と名付けました(2020年10月27日付のプレスリリース)。
通常、顧客に向けたニューラルネットワークの設計は、一つではなく複数パターンを試すのですが、人間の設計者の手間が非常にかかる仕事でした。Spectreの開発が進めば、将来的にはニューラルネットワークの構造を少なくとも一つ以上は自動で見つけることができます。特に安価なマイコンで動作するエッジ端末では、メモリが小さいとか、使えるレイヤーや活性化関数が限定されていることが多く、それに合致したニューラルネットワークの設計が自動的に発見できるとすれば、エンジニアにとってはかなり頼もしい相棒と言えます。
実際に、まだ少ない試行回数ですが、コロナで完全在宅になっていたので、会社に余っていたGPU計算機20台をクラスタ化して100時間ほどの実験を行い、STL-10の画像分類タスクにおいて2016年のSOTAだったCC-GAN^2の性能を上回る性能のニューラルネットワークが、Spectreによって発見されました。しかもCC-GAN^2では3000万個以上あったパラメータ数が、Spectreの発見したニューラルネットワークではわずか78万個で済むことがわかっています。ファイルサイズにして、100MB以上必要だったものが1.8MB程度で良くなったのです。ここまで小さいとRaspberryPiやSpresenceのようなエッジ端末にも載せやすくなります。また、当然ながらパラメータ数が減れば消費電力も計算時間も少なくなります。
Spectreは完全にゼロから設計するのではなく、人間の設計した機能モジュールも貪欲に取り込む仕様になっています。たとえば既に効果が高いと分かっているモジュールやレイヤーは機能ブロックの一部として取り込み、進化の過程に組み込まれます。こうすることで、人間の知見を活かした実験が自動化できます。人間のAI開発者にとっても、ひとつの機能ブロックのアイデアを最も活用できる構造を自動的に発見してくれるとすれば非常にありがたいことです。これはいわば人類とAIの共進化を実現する仕組みと言えます。
まだ走り始めた段階ではありますが、最初の技術検証で一定の成果を得ることができたので、来る11月4日に、この技術について現場で開発を担当したエンジニアが解説するオンラインセミナーを企画しました。もしご興味があればぜひご参加いただければと思います。無料です。
また、本日から幕張メッセで開催されている、AI・人工知能EXPO2020【秋】でもブース展示しています。
30日金曜日のセミナーでも講演する予定です。こちらは残念ながらオフラインのみとなります。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。