機械学習理論入門の入門

レッツ数学!

2015年のIT業界の話題は「機械学習」でした。ここ2、3年ほど前からビッグデータの利用でビジネスが躍進すると喧伝され、じゃあ、そもそもビッグデータってどう使ったらいいの?――という素朴な疑問がわき起こりました。そこで、以前から話題にはなるもののイマイチ使いどころがわかってなかったデータマイニング技術を道具としてビッグデータを解析すればいいのではないか?――ということになり、ではデータマイニングを理解するにはどうしたらよいのか?……そもそも、それをビジネスに適用するのは正解のなのか?――と、芋づる的に今の機械学習ブームにいたったように思います。しかし、データマイニングにしろ、機械学習にしろ、その考え方の根底には数学があります。数学的な意味を知らないで、無理にデータをいじっても、その背後にある真意を理解できず、誤った結論を得てしまいます。たしかに統計分析フリーソフト「R」があれば、難しい統計が簡単に処理ができますが、たくさん用意されている関数を分析したいデータにどのように適用したよいのか、それには勉強する時間がどうしても必要です。機械学習の場合、これを理解するためには、確率統計、微分積分、偏微分、重積分、線形代数……など、理系大学の1年から2年程度の数学の基本的知識がどうしても必要です。

ITエンジニアは機械学習を習得できるか?

仕事で使わなければならないから、どうしても知りたい!――というニーズはどうしてもあります。そのためにRもあるし、Apache Mahoutもあるし、GoogleだってTensorFlowを公開しているではないかと。しかし、仮にですが数百万件のデータ(これでもビッグデータではないすね……ペタバイトくらいないと)をいきなり与えられ、この中から、目的に沿った意味を見い出せとか、機械学習の元データにしろ、と言われても、多くの文系ITエンジニア(この表現も何か変ですが)にとって難問になるでしょう。

ではどうしたらよいのか?――スタート地点に戻ればいいのです。ITエンジニアとしてプロとして過ごしてきた皆さんならば、その力をすでに持っています。ソースコードを読み解き、バグの原因を刑事のように探る……日常業務が皆さんの力を作り上げているのです。さらにはPCの操作やプログラミングの力も経験もあります。

レッツ数学トレーニング!

皆さんは数学に向いてないなと感じてやめてしまった方かもしれませんが、大学レベルの数学をいきなり理解するのは、どんな人でもできません。数学はたくさんの式変形をしますが(因数分解とかよくありました⁠⁠、それは計算過程が大事だからです。まずは自分が理解できなかったところに戻って、もう一度教科書を読んでみませんか。そこで、ITエンジニアとして培ってきた観点で数学を復習してみるのです。そうすると新しい発見ができるのではないでしょうか。本書ITエンジニアのための機械学習理論入門は、数式の読み方にもページを割いています。Σ(シグマ)やΠ(パイ⁠⁠、exp(エクスポネンシャル⁠⁠、ln(ログナチュラル⁠⁠、偏微分の∂(デル・ラウンドディー)など読めないがために先に進めないという障壁を少なくするためです。また基本的な算法もあわせて紹介しました。さらに特徴として、数式の変形過程をていねいに載せていることも挙げられます。これで数学参考書を片手に、ノートも開いて筆算しながら読んでいくことができてわかっていくようになります。ある読者の方は数式をすべてノートに書き写し勉強しそうです。余談ですが、本書の参考文献のページには文字通り、筆者お勧めの数学参考書が掲載されております。

レッツPython!

本書の特徴として、スクリプト言語Pythonによるサンプルプログラムがあります。各章で説明した機械学習のアルゴリズムを体感していただくにはもってこいの教材です。ソースコード本体はGitHub上に筆者の中井悦司さんが用意してくれましたので、ぜひ使ってみてください。Pythonの環境構築はITエンジニアの皆さんならば得意中の得意でしょう。

コンピュータ上の技術は、すべて抽象化によって大きく飛躍・発展してきました。同じく数学は抽象化そのものと言えます。抽象化とは物事の本質を抜き出し、モデル化することですが、その視点で『機械学習理論入門』をお読みいただければ、ITエンジニアの皆さんは自分なりの理解ができるようになると――担当編集は期待しています。