機械学習を勉強する際にぶつかる最大の壁は数学です。
機械学習に必要な数学をリストアップし、いつでも参照できるようにまとめておきたいと思います。
数学の必要性と手順
数学は世界共通の言語
冒頭で述べた通り、機械学習で何をやっているのか分からない!となるのは大抵数学がわからないからです。もちろん数学が分かっていても、機械学習でわからないことは出てきますが、ちょっと数学が分かってさえいれば殆どの手法が見通しよく理解できます。それは非常に単純な理由で、数学は世界共通の言語だからです。
先人たちは、ものを数えるために数字を編み出し、その数字や図形を取り扱うために数学を構築してきました。何かを日本語で表現したいと思ったとき、数学ならばそれを本当に短い文章で表すことができる場合があります。数字を取り扱うことに最適化された言語なので、当然機械学習でも有効に働きます。
機械学習をやる上で厳密な数学は必要なし
数学を使えば、日本語を使うよりも圧倒的に誤解を少なくできます(それは数学が非常に厳密な言語だから)。
しかし、何も厳密に数学を学ばなければいけないということではありません。
先人たちが厳密に作り上げてきた数学の体系は、新たな数学の分野を切り開こうと思わない限り正しい保証があるので、今から数学を適用しようという範囲内においての数学の役割さえ認識できればいいのです。
言ってしまえば数学の使い方さえ学んでしまえば十分です。
また機械学習に出てくる数学の勉強を完全に終えてから、機械学習の更なるレベルアップに進むというわけではなく、機械学習を学びながら、目標レベルに応じて、理解しなければならない数学に立ち返るという方法が良いと思います。
レベル別、必要な数学
機械学習の処理が具体的にどんな計算をしているのかが分かる
機械学習のアルゴリズムを擬似コードとしてどの程度までプログラミング言語に寄せて、どの程度まで数学を使うのかは人によってマチマチですが、大抵は更新式だとかの計算式は数学を使った状態で書かれています。これらの処理が具体的にどんな計算をしているのかを知るには当然ある程度の数学の知識が必要になります。
そしてそこに出てくる数学は偏微分と線形代数です。集合の記号も分かっていると良いでしょう。
集合の記号は、和の計算において、どの要素を計算に含むのかを指定するのに使われます。
最も大事なのは線形代数です。
多次元データを複数持っている場合には、そのデータは行列のように扱うことができ、複数の多次元データから何か値を(例えば分散など)を得たいときは、線形代数の表記を使えば本当に単純に表現できてしまいます。多次元データと線形代数は非常に相性が良いため、最も最初にやるべきはこれです。
目標は
・線形代数の計算ができる(ベクトルと行列、行列と行列、traceやdetなど)
・偏微分の計算ができる
・集合の記号が分かる(∈が分かればとりあえずは大丈夫)
参考図書は特にありません。以下でほんの少しですが、機械学習で現れる数学に関する基本的な計算を紹介しています。
具体的には最小二乗法(線形回帰)や、線形SVM、パーセプトロンの具体的な計算ができれば良いかと思います。線形回帰や線形識別の場合にはそれほど難しい数学は出てこないです。
以下は線形識別モデルの最も単純なモデルについて説明した記事です。まずはこのレベルの数式が具体的にどのように計算するのか分かるようになりたいです。SVMに関しても線形のモデルまでならば簡単ですから是非確認してみてください。
機械学習アルゴリズムの導出は追えなくとも、その手法の狙いが分かる
そもそもこの機械学習アルゴリズムは一体どういう場面で有効なのだろうか?その疑問を解決するには単に線形代数や偏微分の計算が出来るだけでは難しいかもしれません。
大抵の機械学習アルゴリズムの正当性を担保しているのは、確率・統計です。
単なる最小二乗法でしたら計算の方法は勉強すればすぐ分かるでしょう。そして、直感的にも意味を理解できます。しかし最小二乗法が正当だと言えるのは、誤差がガウス分布に由来している時のみです。ガウス分布は本当に広い範囲で出てきますから、大抵の場合誤差をガウス分布と思ってしまっても上手くいくことが多いのです。
また、線形代数に対する理解を少し深めなければなりません。単に計算ができるのではなく、その計算が意味しているものを把握できるようになりたいところです。
目標は
・最尤推定の概念が分かる
・代表的な分布のパラメータの意味が分かる(ガウス分布の平均、分散など)
・行列と線形写像の対応が分かる
参考図書として
サンプルコードを交えて、具体的な計算を見れます。
数学的な知識の前提としては、理系の大学で数学を学んできてなくともついていくことのできるレベルです。ですからこれから少しずつ数学に触れながら機械学習をやろうという場合の入門書になります。
また、これ出てくる例題を解いて、やっていることが具体的にどういうものであるかを体感するのもいいでしょう。この教科書は実際にはもう少しレベルが高く、ここに出てくるアルゴリズムの導出過程も追えるようになれば次のレベルに行けます。(機械学習を専門にする上での入門書レベル)
以下の2つ、フィッシャーの線形判別と主成分分析は、分散や平均を上手く使った次元削減の手法です。これらがすんなりと分かるようになるところを目指しましょう。
機械学習のアルゴリズムの導出を追い、アルゴリズムの理屈を理解する
この段階になれば、ほとんど自力で勉強しながらいろいろな文献を読んでいけば良いということになります。PRMLなどのような教科書をなんとか読み進めたい、論文を見て理解したいというのがこのレベルになります。
最適化数学、線形代数、偏微分(ベクトルでの微分や行列での微分なども)、確率・統計、ベイズ統計などを幅広く知っている必要があります。それぞれ完璧にしてからではなく、基本を抑えたら機械学習の勉強に進めば良いかと思います。
目標は
・機械学習のある手法の導出を実際に行い、それを説明することができる
というところです。これは対象とする機械学習手法に応じて数学のレベルが変わるので、どこまで数学をやれとは言えません。従って学びたい手法を学びながら、適宜、素直に数学の本を参考にしたほうがいいです。
参考図書は
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/04/05
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 33回
- この商品を含むブログ (18件) を見る
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/02/29
- メディア: 単行本
- 購入: 6人 クリック: 14回
- この商品を含むブログを見る
未だ読破とはいかず、必要に応じて必要なところを学習しています。
とりあえずこれを所持していれば、機械学習の基本的な分野を網羅することができます。これより発展した話題に関しては、当然それぞれの専門書を参考にしなければなりません。
ディープラーニングは一切取り扱っていませんので(CNNは少し触れられてますが)、ディープラーニング一本で行きたい人はディープラーニングの本の方がいいでしょう。
上記2冊は非常に高価なのですが、同レベルの深さと詳しさであり、もう少し話題を絞ったものとして以下の書籍がオススメできます。
東京大学では学部生向けに使われているようです。
基本的にこのレベルまでを理解できるのであれば、ディープラーニングなど、新たに出てくる手法に関して数学的な部分で躓くことはそうそうないでしょう。
その後考えられる壁としては、経験的に知られている知見を利用して、様々なハイパーパラメータを調整する部分です。この部分は実際にプログラムを動かして試してみる、実験と考察を繰り返す他ありません。しかし最近はパラメータの調節の仕方によって、学習の進み具合が変わることから、学習の進み具合などを評価することでハイパーパラメータの良し悪しを決定する方法も研究されています。これはベイズ最適化の枠組みが必要となり、当然使う数学はベイズ理論や最適化の数学となってきます。
カーネル法などはSVMや主成分分析などを非線形へ拡張した深層学習以前の機械学習を支えた手法です。カーネルマジックと呼ばれる非線形変換を意識しない手法がどのように生まれているのか、以下は簡単な説明の記事です。これらを理解していけるレベルになりたいです。(PRMLはこれより遥かに難しいです)
行列の計算公式をまとめてあるpdf
においてある行列の公式集pdf(以下)
今まで見たどの公式集よりも充実しています。
http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3274/pdf/imm3274.pdf
数学の本に関して
以下の記事で数学の本を紹介しました。
私が実際に所持しているものです。所詮手にとった本が限られていますから、探せば合うものはいくらでもあるでしょう。また、ネットも普及しているので必ずしも本は必要ではありませんが参考程度に。