前編では延々とニューラルネットワークの説明が続いてしまいましたが、今度はそのニューラルネットワークでどのようにしてディープラーニングを行っているのかについてご説明してこうと思います。
ディープラーニングというのは、基本的には「物事を理解するための手法」に過ぎません。その際に、ニューラルネットワークが使われると言うのはご説明のとおりです。
では、一体それはどのようにして使われているのでしょうか?
情報の繋がり、人が学んできた道を辿る機械
ニューラルネットワークの強みは、この小さな計算装置(パーセプトロン)の繋がりを自在にコントロールできることに有ります。
前編で使った「哺乳類判定器」の例で言えば、「哺乳類の選定」と「卵を生むかどうか」の繋がりは非常に重要だったため、より重点的な太い繋がりを作りました。しかし、「魚の選定」においては、「卵を生むかどうか」よりも、「足があるかどうか」の方が重要だと考えられます。それは、卵を生まない動物は哺乳類ぐらいで、足がない動物の大半が海棲生物だからです。
では、どうやって繋がりの太さや情報の重要性を決めるのでしょう?
それは「人が教える知識として学ぶ」か「経験則から徐々に学ぶ」かのどちらかです。
人が教える場合は「教師あり学習」と呼ばれ、正解と不正解をいちいち機械に教えます。この場合、情報の正確度や重要性は人間を通して機械は簡単に理解できるということです。つまり、人が「哺乳類は卵を生まない、恒温動物だ」と教え、さらに「クジラのような海棲哺乳類もいるから気をつけてね」とわざわざ教えるのです。
こうすれば、機械は哺乳類→恒温動物、哺乳類→非卵生生物、と関連付けて情報を整理することが出来ます。
しかし、「経験則から学ぶ」場合、これは「教師なし学習」と呼ばれ、正解か不正解かは教えません。これだと何も理解できないのではないかと思いますが、そうでもないのです。
例えば、クジラやイルカのようなややイレギュラーな海棲哺乳類の存在は、「教師あり」の場合には人が教えましたが、「教師なし」の場合には「恒温・肺呼吸・胎生・足なし」の動物がイルカやクジラしかおらず、魚類とも全く違うことに気付いて初めて理解します。
きちんと、「哺乳類」と分類するかどうかは分かりませんが、少なくとも「彼らが魚より哺乳類に近い生き物である」というのは、いろいろな生物を見ていく上で気付くはずです。色々な生物を見ていく内に、今まで魚だと思っていたイルカがエラ呼吸をしていないことに気づき、卵を生まずに胎児をそのまま生み出す事に気づきます。そして、哺乳類以外の動物の殆どが「卵生」であることに気付くので、「卵生ではなく胎生である」というのが哺乳類の判断において重要であると考えるようになります。
結果として、イルカやクジラは哺乳類と言える存在であり、単に陸で足を使って生活するかヒレを使って海で生活するかの違いしか無いのだと理解することになります。
これは人が哺乳類や魚類を分類してきたのと殆ど同じ過程です。
人も「教師なし学習」型の機械と同じように、誰も教師のいない世界で動物の事を学び、自ら動物を分類し、哺乳類という種族で分ける事を思いついたのです。もしかすると、機械は全く別の理解をして、人とは違った解釈で彼らを分類するかもしれません。もしそれが、人にも理解できる客観的な解釈だった場合、それは「機械が新たに発見した哺乳類の分類方法」ということになります。
人工知能にとって本当に必要なことは、この「教師なし学習」です。というのも、機械が処理できる情報量に対して、人間の処理できる情報量は遥かに少ないのです。人が寝ている間も、食事をしている間も、機械は考え続けます。そして、人の代わりに物を理解するようになり、人の代わりに人に近い判断ができるようになるのです。
ディープラーニングとは?
機械がどのような過程で物を学び、情報を関連づけながら理解していくのかについては理解出来ました。しかし、ディープラーニングの説明がまだ始まっていません。
実は、ここまで来るとかなりゴールに近づいてきています。というのも、上述のニューラルネットワークが物を理解する過程というのはあくまで理想論であり、厳密にはこの域に達していないからです。ある意味、説明するべき段階を説明し終え、余計に説明したようなもの。
実は、ディープラーニングと言うのは小さなまとまりとして構成したニューラルネットワークの一つ一つに役割を与え、理解するべき内容を出来る限りシンプルにしてから理解させようという試みに過ぎないからです。
言わば、ニューラルネットワークで多数の班を作り、班ごとにシンプルな役割を与え、各班に順番にタスクをこなさせる学習方法がディープラーニングということです。
ただ、これの凄いところは、その役割の分担や理解すべき内容の単純化を機械自身が行えるという点にあります。
少し抽象的ですが具体的に言えば、
「写真を見たらとりあえず映像を小分けにして解析する」
「Wikipediaを読んだら段落ごとに分けて解析する」
みたいなものです。
そして、小分けにして解析したものに優先順位をつけつつ、情報の関連性を探っていきます。
写真が犬なら、観察担当(入力層)の人たちは
「牙とか耳とか口とか特徴的だよな。とりあえず、動物っしょ」
「牙尖ってんじゃん。肉食だな」
「耳が立ってる?狼とか?」
「いや、猫系にも居るじゃん。とりま、絞れたっしょ」
「後は模様とか色とか特徴的なのピックアップしようぜ」
とまあ、こんな感じ。ノリが軽いですが、一人で全てを判断するわけではないので、かなりアバウトな判断で止めています。
こうして、特徴的な部分を勝手に抽出してきた最初の分割チームは、次のチームに情報を渡します。
次のチームは、
「動物、肉食らしい尖った牙、耳が立っている、模様と色はコレらしいけど、どう思う?」
「あ、肉食なら俺得意だぜ」
「耳尖っている動物好きだから見せて」
「模様なら俺に任せろ」
のように、得意分野毎に割り振っていきます。
そうして、一人一人の得意分野が、いくつかの動物の例までピックアップしてくれました。「ライオン」「三毛猫」「狼」「柴犬」などなど、合ってるものから違うものまで様々です。
最後に判断を下す幹部的なポジション(出力層)の人たちはこれらの情報を糧に、
「本当に似ているか」
「とりあえず、ライオンはない」
「一番近いのは狼だろう」
と、やっと判決が下ります。
「役割分担して判断って、当たり前にやってることなんだけど」と思ったら、そのとおりです。人間に近い考え方が出来るようになったことが、ディープラーニングで注目されている進歩の一つなのです。
特に、今まではこの役割分担については人が教えながらやって来ました。しかし、このディープラーニングの学習方式は、人工知能が自ら役割分担してチームを作るので、人間のやり方にかなり近いものになります。
今までの機械は、はっきり言って色や文字の並びを片っ端からデータベースと比較して、一番似ているっぽいものを探して答えてました。正確な答えが欲しければ時間が掛かりますし、すぐに回答が欲しければ、本当に部分的に似ているだけの答えが出てきます。
言語の翻訳などもそれに近く、辞書的に文法や単語を見て、単語を並べ替えているだけでした。それがようやく、ディープラーニングを駆使することで、人間に近い思考回路を持って、なんとなくだけれども「理解」した上で答えを出すようになったのです。
参考資料:
ニューラルネットワークと深層学習(http://nnadl-ja.github.io/nnadl_site_ja/index.html)
はじめるDeep learning(http://qiita.com/icoxfog417/items/65e800c3a2094457c3a0)
PR:人工知能をまとめて解説!