機械学習のまとめ
天馬「今まで説明した機械学習を、用途別にして代表的なアルゴリズムを表にまとめてみた。情報圧縮だけは説明を省いてしまったが、最近はそれほど使わないので問題ないと思うが」
猿田くん「え~!アルゴリズムって、いっぱいあるなあ。面倒だから、これひとつあれば何でも解決できる、万能アルゴリズムってないですか?」
天馬「若いくせに、ものぐさだな。機械学習の分野では、No Free Lunch定理という有名な定理がある。これは、どんな問題やどんなデータに対しても最高の精度を出せる万能なアルゴリズムは存在しないという定理だ。
機械学習には、とても長い研究の歴史がある。そのなかで、用途ごとに様々なアルゴリズムが考えられ、先人たちの多大な苦労によって、少しずつ改良され精度が向上してきたのだ。だからここに記載したアルゴリズム以外にも、さらに数多くの手法がある」
伴くん「先生、それでは実際に僕たちが機械学習を利用する時は、どうすればよいのですか?」
天馬「今回の講義は座学なので、実際に手を動かす体験はできないな。まあ現場で機械学習を利用する場合には、対象となる問題の構造が不明の場合、様々なアルゴリズムで実際に実験をするしかない。この実証実験はPoC(Proof of Concept)と呼ばれているが、要するに汗をかいてあれこれやってみなければ果実は得られない、ということだな」
丸暗記するのが過学習
天馬「では次に移ろう。しかしマリリンは、私が何も指示しなくても、適切な図を出せるようになったな。学習効果が高いもんだ」
愛さん「だって、この講義は何度もやっているからではないのですか?」
天馬「いや、この講義は今回が初めてだ。まあとにかく、この図は機械学習を実際に利用する際の問題を、単純化して説明したものだ。
最初に説明した線形回帰の話は、まだ覚えていると思う。この図の丸い点は教師データをプロットしたもので、線は教師データを基に誤差が最小になるように引いた線だ。左のグラフは、変数が1個つまり直線で近似しようとしたものだ。見たとおりに直線では誤差が大きすぎて使い物にならない。逆に右の図は、変数を7個も用いて複雑な予測曲線を作りだし、可能な限り教師データに、予測を近づけようとした図だ。これでは逆にデータがない箇所が大きく外れている。このように、教師データに合わせ過ぎた状態を過学習 over-fittingと呼び、注意が必要だ。もっとも教師データの件数が膨大にあれば、このような過学習は解消するのだがね。しかし実際の利用現場では、入手可能な教師データの数は限られている場合が大半だ。したがって、その制約条件の中でいかに精度の良い予測モデルを得るのかを、試行錯誤しながら考えなければならないのだよ」
伴くん「この過学習が生じたかどうかは、どうすれば分かるのですか?」
天馬「正解付きの教師データを、すべて学習に使わずに、例えば7対3に分ける。教師データの70%で学習させて、残り30%のデータで検証すれば、そこで用いたアルゴリズムとパラメータでの正解率が判明するだろう。このような検証方法をホールドアウト法と呼び、このような検証方法を用いれば精度の良いモデルを作れる」
愛さん「では、この過学習が生じていたら、どうすればよいのですか?」
天馬「まずは予測に必要な変数を加えたり、逆に減らしたりしてみる。もしくはパラメータを調整してみるんだ。それでもダメだったら、アルゴリズムそのものを変えて、再度実験をするしかないな。この過学習の問題は、後で話すニューラルネットワークでも、よく問題になる現象だ」
猿田くん「でも教師データが大量にあればいいんですねよ」
天馬「まあそうなんだが、この過学習というやつは、言ってみれば試験前に徹夜で教科書の試験範囲を丸暗記する学生みたいなもんだ。教科書に載っていることは答えられるが、ちょっとヒネられると答えられなくなるだろ。ちょうどそれと似たようなものだな。猿田くんもそうだったろう」
猿田くん「ボクは、そんな丸暗記なんて時間の無駄なことはしませんよ。真面目だからキチンと応用問題まで勉強しましたよ」
愛さん「あら、伴さんなら分かるけど、猿ちゃんが真面目に勉強する姿は想像できないわ」
天馬「まあ本人が言っているんだから、そういうことにしておこう。とにかく教師データが大量にあると言う意味は、あらゆるパターンがそこに含まれているので、応用問題でも解けると解釈ができるな」
天馬「これで機械学習の話はお終いだ。機械学習の主要なところは話したつもりだ。要するに機械学習とは、統計学で発達してきた様々なアルゴリズムを応用したものだと思えばよい」
伴くん「そうですね。僕が昔大学生の時に習った統計学と使っていた考え方は、同じように思えました。それがなんで機械学習という名前になったのでしょうか?」
天馬「統計学は、あくまでも何らかの事象を、数式で説明するための学問だったろう。しかし機械学習では、同じ数式を用いても『予測』や『分類』などに利用している。違いはそんなところかな」
愛さん「え?それじゃ人工知能の話とは、関係なさそうに思えますけど」
天馬「いやいや、これがちゃんと人工知能に繋がるんだよ」
猿田くん「じゃあ統計学が進化して、人工知能になるんですか?」
天馬「まあ、そういう考え方もある。後で説明するから先走りしないでくれ。では話を元に戻して、次からはいよいよニューラルネットワークの原理に移るぞ」