本格的な機械学習の本を読むための「架け橋の本」
――『Pythonで動かして学ぶ! あたらしい機械学習の教科書』はコードだけでなく必要な数学の基礎も押さえた入門書です。そんな本書を伊藤さんが執筆するに至るまでの経歴を教えていただきたいです。
伊藤:大学では工学部で応用物理学を専攻し、4年生でニューラルネットワークも研究していた研究室に所属しました。博士課程を経て研究者となってからは、運よく実験の道にも進むことができ、リアルな脳に触れることができました。
特に、2004年からは沖縄科学技術大学院大学の銅谷賢治研究室に研究員として所属し、実に14年もの間、ラットの様々な脳部位の活動を測定してきました。強化学習をしていると言われている大脳基底核や、地図が表現されていると言われている海馬などの神経活動の測定と解析にはとても興奮しました。
銅谷研究室では、ロボットの研究グループ、数理モデルの研究グループ、そして私の所属していた動物実験グループがあり、幅広い研究が行われていますが、グループに関係なく、いろいろな教科書を読み合う有志の輪読会がありました。
この輪読会では機械学習、強化学習、制御理論などを中心に勉強しましたが、とても楽しく有意義なものでした。ここで得られた知見は脳のデータの解析にふんだんに使うことができましたし、まさしくここでの経験が、本書を書くきっかけにもなりました。
2017年4月からはアカデミックの世界を卒業し、東京のプログレス・テクノロジーズに入社しました。ここでは機械学習の技術をカメラ画像解析やロボットアーム制御に応用し、産業に利用するという仕事を始めています。
――まさしく研究者の立場で本書を執筆されたということで、本書の狙いはどう設定されたのでしょうか。
伊藤:機械学習をしっかり勉強するなら、『Pattern Recognition and Machine Learning』(Christopher M. Bishop、Springer、2010年)がお勧めです。輪読会でいろいろな本を読んできましたが、きちんと解説されているという点で一番の良書でした。この本は、日本語訳として、『パターン認識と機械学習 上』『パターン認識と機械学習 下 (ベイズ理論による統計的予測)』(共に村田昇、 他監訳、丸善出版、2012年)も出版されています。
しかし、このような教科書を読もうとしても数学が難しくて挫折してしまったという話は本当によく聞きます。機械学習の教科書を理解するには、ある程度のレベルの数学の知識が要求されますが、残念ながらその数学から説明している教科書はほとんどありません。
そして、たとえ数学の知識があったとしても、書かれた数式を噛み砕いて理解するのは容易ではありません。そこで本書は、初学者でも機械学習の世界に本格的に進めるように、必要な最小限の数学を整理し、機械学習の問題や数式をできるだけ単純に噛み砕いて説明しました。
本書の内容だけでも実践で使えるレベルまで解説していますが、さらに本格的な機械学習の本を読むための「架け橋の本」になることも意識しました。
そして本書では、導き出された数式をPythonのプログラムで実装して動作を確かめるところまで解説しています。数式でアルゴリズムを理解したつもりでも、プログラムで実装しようとしたときに、はたと困ってしまうことはよくあることです。しかし、プログラムの例が前もって用意されていれば、確実な理解を早く得ることができるでしょう。
プログラム言語はたくさんありますが、Pythonを使うと、行列の演算など機械学習で使う数式を比較的簡単に実装できます。また、機械学習の強力なライブラリーも使うことができます。そして、機械学習の新しいアルゴリズムはPythonで発表されることが多いという強みもあります。そしてなんとPythonは無料です。機械学習を始めるならPythonが最適だと思います。
教師あり学習の考え方と方法をじっくり説明
――では、本書はどんな読者を想定していますか?
伊藤:本書は数式で機械学習を理解したいと思っている方を対象としています。そういった方は、機械学習のライブラリーを使うだけでなく、その中身をきちんと理解して、自分でも研究や開発ができるようになりたいという志のある方なのではと思います。
また、機械学習の本を読んでみたけれども、数学が難しくて挫折してしまったという方にもぴったりの本です。そのときのやる気をもう一度思い出して本書を読んでみてください。
前提知識としては、本書では高校卒業程度(理系クラス)の数学知識を想定しました。プログラムに関しては、Pythonは初めてという方を想定しましたが、なんらかのプログラムの経験があると読みやすいですね。
――本書の内容についても教えてください。
伊藤:本書ではPythonのインストールとその使い方から始めています。そして機械学習の実装に必要となるコマンドと、グラフを描くためのコマンドを中心に解説します。ベクトル、微分、行列、指数関数と対数関数など、機械学習を理解するのに必要な数学も、Pythonを使いながら説明しています。
こうしてプログラムと基本の数学の準備が整ったら、いよいよ機械学習の内容に入ります。機械学習には主に「教師あり学習」の問題と「教師なし学習」の問題がありますが、本書では、教師あり学習を重点的に解説しました。
まず、16個の人工データを使って、教師あり学習の考え方と方法をじっくり説明します。ここが本書の最も重要なポイントです。この考え方をしっかり理解することで、新しいモデルも作れるようになります。
後半では、今やブームとなっているニューラルネットワークの解説を丁寧に行い、学習則も導出します。最終的には、手書き数字の画像データをディープラーニングで認識させるモデルを作ります。本書の最後の章では、教師なし学習も解説します。具体的には、クラス分類する重要な二つのアルゴリズムを解説しPythonで実装してみます。
――本書の主題に教師あり学習を選んだのはなぜでしょうか。
伊藤:教師あり学習は入力に対する適切な出力を求める問題です。例えば、外気温からアイクリームの販売量を予測したり、カメラ画像から不良品を判定したりするような応用が考えられます。
一方、教師なし学習は入力した情報の特徴を見つける問題です。例えば、顧客データ(消費金額や来店の時間帯)などから、どのようなタイプ(男性サラリーマンや女子高生など)が存在するかを抽出するという応用が考えられます。
両者を比較すると教師あり学習のほうが問題設定が分かりやすく、実践の現場でより多く使われています。ですから、機械学習を網羅的に勉強するのなら、教師あり学習から入れば間違いないと思います。
機械学習のディープな世界への第一歩として
――お話をうかがうと、Pythonで機械学習をちょっと扱ってみるだけではなく、かなりがっちりした内容になっていると感じます。具体的にはどういった知識が身につくのでしょうか。
伊藤:機械学習の基礎、特に教師あり学習の基礎を数式からプログラム実装まで、しっかりと理解することができます。本書では、基本の直線モデルから、オリジナルのモデルを提案して検証するところまで解説していますので、単純な問題であれば実践でも役に立つ力が身につきます。
さらに、本書ではKerasというディープラーニング用のライブラリーを使って手書き数字認識モデルの構築を解説しますので、オリジナルのディープラーニングモデルの構築もできるようになるでしょう。
また、教師なし学習の問題であるクラスタリングの基本アルゴリズム、K-means法と混合ガウスモデルの仕組みとその実装を学ぶことができます。
本書の全体を通して、数式はできるだけデータの次元数を落として考えていきます。これが難しい数式を簡単にするコツです。このコツを掴むことで、本格的な機械学習の本を読む力がぐっとつくでしょう。本書を読み終えたら、ぜひ先ほど挙げたビショップ本などにチャレンジしてみてはいかがでしょう。
――最後に、長らくこの分野の研究に身を投じてきた伊藤さんから、これから機械学習を学んでみたいと興味を持った読者にアドバイスをいただけますか?
伊藤:近年、社会での機械学習の需要がますます拡大しています。ディープラーニングも含めて様々な機械学習の無料のライブラリーが発表されており、機械学習の技術者はこのようなライブラリーを使いこなし、迅速に問題を解決することが求められています。
しかし、理論をきちんと押さえずにやみくもにモデルを使うと、不適切なモデルを選んでしまいます。うまくモデルが動かないときも適切な対策を取りにくくなるでしょう。ライブラリーが簡単に使えるようになっても、背後にある理論をしっかり理解することはとても重要です。
そしてなによりも、機械学習の世界の先人たちの知恵を理解することは純粋に楽しいものです。機械学習の進む先は、脳の高次機能の理解にもつながっていると私は考えています。ぜひ本書を読んでいただき、それが皆さんの機械学習のディープな世界への第一歩となりえたら、とても嬉しく思います。