はじめに
近年、機械学習の手法および脳神経科学の発展により、それらを駆使して汎用人工知能に取り組もうとする流れが強まっています。そのような流れの中、GoodAIという企業が主体となりGeneral AI Challengeと呼ばれる企画が進行しています。これは汎用人工知能の開発に向けた課題に取り組む誰もが参加可能な世界規模のコンペティションです。本記事でははじめに汎用人工知能の説明も含め、このコンペティションを解説し、後半では、強化学習と呼ばれる手法を用いて課題をある程度クリア可能なサンプルエージェントを実際に実装します。
対象読者
- 汎用人工知能は聞いたことがあるが、漠然とした理解をしていて、もう少し具体的に学びたい方。
- 最近の機械学習の発展に興味があり、自分にも何かできないかとお考えの方。
- 記事後半のエージェント作成には基礎的なPythonの知識が必要です。
汎用人工知能とは
人間と同程度の適応能力をもった人工知能と言われる汎用人工知能とはどのようなものなのか。このパートでは現在の人工知能との比較からはじめ、汎用人工知能に必要なことを議論して、その姿を明らかにしていきます。
現在の人工知能との比較
音声認識や物体識別・検出の性能は深層学習[1]の発展によって劇的に改善しました。数値で表された入出力の対応関係を多層のューラルネットワークを用いて学習する深層学習は、情報を数値で表しさえすれば適用(してみることが)できるという制約の少なさから、新薬発見やゲノム科学など新しい応用も次々と提案されています。さまざまな問題に適用できるという点では、深層学習はある意味で汎用的であると言えます。しかし、音声とテキストの対応関係を学習した音声認識ネットワークに何か命令をしてもテキストが出てくるだけですし、画像中の物体分類を学習した物体識別ネットワークに信号機をいくら見せても赤信号と青信号を区別して警告してくれるようにはなりません。深層学習をふくむ現在の機械学習のアルゴリズムは、あくまでも限られた分野の事前に決められた問題を解くことに主眼が置かれているのです。知能を人工的に作るという視点では、限られた問題を解く能力は知能のごく一部に過ぎず、このような人工知能は厳密には狭い(弱い)人工知能と呼ばれます。
汎用人工知能の定義で述べた人間と同じくらいの適応能力とは、これまでに学習してきた問題以外にも順応していくという、狭い人工知能でカバーしきれない部分を示しています。この対比で汎用人工知能は強い人工知能と呼ばれることもあります。
注
[1] 一般的な解説には、この分野で世界的に有名なY. LeCun, Y. Bengio, G. Hintonらによって書かれたDeep learning. Nature, 521(7553):436-444, 2015.があります。
汎用人工知能に必要な学習の仕組み
それでは汎用人工知能に必要とされる能力とはどのようなものでしょう。未だに議論されている内容であり色々な立場があると思いますが、ここではM.ROSAらのA FRAMEWORK FOR SEARCHING FOR GENERAL ARTIFICIAL INTELLIGENCEを参考にして説明します。
まず、知能という言葉をはっきりさせなければ進めません。これは難しい問題[2]ですが、次のように定義を与えましょう。 併せて、スキルという言葉を少し狭い意味で使うことにします。
- 知能:複雑で移り変わりが激しく不確かな環境の下で問題を解決するための道具
- スキル:探索するべき空間を狭めるための仕組み
これは、「全ての問題は探索して最適化することに置き換えられる」という仮定の下で、知能とはその最適化を行い問題を解く道具、スキルは探索空間を狭める仕組みととらえられます。
例えば、東京に住んでいるA君が、友人に「急用があるから大阪に来てよ」と言われて、新幹線で行ったとしましょう。この場合、A君は「新幹線で移動するスキル」を持っていたので短時間で大阪に着きました。「新幹線で移動するスキル」がなければ地図を見ながら徒歩で移動したかもしれません。「地図を見るスキル」がなければ適当な方向に歩いて行って一生歩き続けるかもしれませんし、「歩いて移動するスキル」がなければそもそも家から出ることもできません。
このように、私たちの活動は莫大な回数の様々なレイヤーの行動選択で成り立っていると考えることができ、目的を達成する(問題を解決する)ためにはスキルという形で行動の一連の流れを獲得しておき、不要な行動は候補から外すという仕組みが不可欠です。
また、「東京から大阪に新幹線で行く」ことを単体のスキルとして獲得する仕組みでは何が起きるでしょうか? この場合「東京から名古屋に新幹線で行く」ことは別のスキルとして獲得する必要がありますし、「東京から大阪に普通列車で行く」ことも別のスキルなってしまい非効率的です。したがって、スキルは使いまわしが効く単位で獲得し、それらを組み合せてより複雑な問題を解決するのが望ましいと分かります。
これらの考察から、現実的に機能する汎用人工知能は「はじめは簡単で汎用的なスキルを学習し、そのスキルを活用して複雑なものを効率的に学習する方法」(Gradual learning=漸進的学習)を備えるべきという仮説が導かれます。また、効率的にスキルを獲得するには「自分で試行錯誤するだけでなく適切なタイミングで適切な指示を聞き学習する方法」(Guided learning)も必要であると考えられます。人間が指示を出す場合、自然言語を用いたコミュニケーションも必要となるでしょう[3]。
2つの学習法のための研究開発者の仕事は、「Gradual Learningが機能するために必要な本質的スキル」と「それを人工知能に落とし込む方法」を見つけ出すことです。タスク、カリキュラムの設計も効率的な学習のために重要です。
注
[2] M. Minskyは
私たちの心には、自分がむずかしいと思う問題を解決できるようにするプロセスが含まれている。《知能》というのは、こうしたプロセスのうち、まだ理解していないものを表すために私たちがつけた呼び名である。
(M. Minsky著、「心の社会」安西祐一郎訳)と、知能が時代とともに変化する言葉であることを指摘しています。
[3] このような汎用人工知能としてFacebook AI ResearchのM. BaroniらがCommunication-based AIを提唱しています(ICLR 2017)。
何のために作るのか
汎用人工知能を作る理由の1つ目には知能を理解するという学術的な意義が上げられるでしょう。このためには知能をできるだけ単純なモデルとして再現する努力が必要だと考えられます。また、汎用人工知能がある程度の水準に達すれば「意図理解+大規模データ処理」の能力を活用した知的行動支援が可能になるはずです。
対話エンジンを扱う企業であるNextremerに在籍する筆者としては、汎用人工知能の研究開発過程で改善されると期待できる、機械に言葉を理解させ行動を制御する技術に大変興味がわきます。