2017.10.17 Tue |
今さら聞けない「機械学習」(後編)
今や誰もが一度は聞いたことがあるであろう言葉「機械学習」。しかし、それが実際に具体的にどのように行われているのかを知っている方は少ないのではないでしょうか?
前回は基本的な機械学習の中身を覗きました。今回はその機械学習の中でも今流行りの「ニューラルネットワーク」、さらにその中の「ディープラーニング」にメスを入れていきたいと思います。
ニューラルネットワークとは何なのか?
ニューラルネットワークは、人間の脳内の神経細胞であるニューロンとそのつながりである神経回路網を参考にして、数学的な構造でそれを表現したものです。前回記述した「モデル」の一種に相当します。端的にいうと、前回述べた人間が用意すべき「関数の型」を複数用意し自由な組み合わせを可能にしたものが、このニューラルネットワークになります。
ではなぜこのようなモデルが必要になるのでしょうか?
それは与えられたデータおよび問題が複雑な場合、単純な数式では対応できなくなるためです。
具体例として平面上にデータが点としてプロットされた散布図を考えてみます。このデータをある領域で分断する境界線を求め、ラベル付けをしたいという問題を考えます。そして新たなデータがプロットされたときに、それがどちらの領域に属するのかを予測したいのです。
もし関数がひとつだけの場合、領域は単純に2つにしか分断できません。データの分散がもっと複雑だったり分断したい領域がもっとたくさんあったりする場合、ひとつの関数だけではうまく境界線を近似することができません。そこでニューラルネットワークのような、関数を複数使用するモデルが必要になります。
この「ニューラルネットワーク」は、様々なデータに対応できなおかつ柔軟性が高い数学的なモデルを探し出そうとする研究者の努力の中で生まれたものです。ニューラルネットワークにより、組み合わせる関数を増やしていけば原理的にはどのような境界線をも描くことができるようになりました。
機械学習の救世主? ディープラーニングとは何か
万能に思えたニューラルネットワークにも問題点がありました。それは関数を増やせば増やすほど、コンピュータがそのパラメータの最適化に費やす処理が膨大なものになり現実的な時間では終わらない、ということ。さらにこの処理速度が解決されたとしても、そもそも最適化するアルゴリズムを作り出せないという問題が残ります。
そこで考えだされたのが「ディープラーニング」と呼ばれる、特別な形をしたニューラルネットワークでした。やみくもに関数を組み合わせるのではなく、個々の関数に特別な役割を与えたりその接続の仕方を工夫したりして、何らかの意図をもって組み上げたのがディープラーニングになります。
具体的には、画像加工アプリのようにデータに特別なバイアスをかけて特徴を抽出する「畳み込みフィルター」や、画像などのデータの解像度を落とし本質的な特徴のみを抽出しようとする「プーリング層」、1つ前の層の出力を入力として扱い時系列データに対応する「RNN (Recurrent Neural Network)」などがあります。
これらの工夫を施した「ディープラーニング」によって、現実の様々な問題を機械学習を用いて解決することができるようになりました。今後もディープラーニングを含む機械学習の研究や利用はますます進んでいくと考えられています。機械学習の普及にともない、人間と機械の関わり方も大きく変わっていくかもしれません。
以上で、2回に渡る機械学習のお話はおしまいです。
【出典】
・「TensorFlowで学ぶディープラーニング入門 畳み込みニューラルネットワーク徹底解説」(マイナビ出版)
・https://www.sbbit.jp/article/cont1/33345
K.M
東京大学大学院 工学系研究科 修士課程1年