前回機械学習を学ぶなら数学が必要だという話をしました。
それと同時に、数学を極めてから機械学習をやるのではなく、機械学習をやりながら必要に応じて数学を学んでいくというスタイルをオススメしました。しかし、今から機械学習を学んでいこうという人にとって、機械学習の数式がわからないとき、果たしてどの数学を学べば改善が見込めるのかを判断するのは難しい問題かと思います。
そこで機械学習に現れる数式を実際に取り上げ、ケースごとにどの数学分野を補強すべきかの指針をまとめてみたいと思います。また、少しの定性的な理解を深める解説も載せておきます。今後のヒントになれば嬉しいです。
パーセプトロンでのケース
全て同じ意味、式変形が分からない人へ
入力ベクトルに対して、
という数式が現れます。この数式を大抵の本は以下のように変形します。
最初の式と、この式が全く同じ計算式であることがわからない場合は、高校数学でのΣの計算になれる必要があります。
おそらく大丈夫だろうと思われますが、これはのインデックスを使って式を簡略化するためのテクニックで、というダミー変数を使っているのが肝です。この手の式変形は頻出なので必ず慣れておく必要があります。更に通常は以下の表現へと変える場合が多いです。(そうでない本もありますが)
とと置き
この数式も最初の数式と全く同じです。全部同じことを表しています。
これがわからない場合は、線形代数の表記に慣れていないことになります。
ベクトルや行列を使うと、非常にスッキリ数式を表せるため、慣れてくると断然コッチのほうがわかりやすくなります。と置くことをしなくなったのは、を使うときのようにインデックスを準備する必要もないからです。
当然、全く同じ式なのですから、どれで機械学習を勉強しても得られるアルゴリズムは全て同じになります。だから線形代数が苦手なら、ここを避けて勉強をすることもできるかもしれません。しかし表現は簡潔な方が楽ですし、今後微分などの操作を数式に施す際にも線形代数の表記の恩恵を強く感じるはずです。私は線形代数の表記で勉強をすることを強くオススメします。
更新式の意味がわからない
パーセプトロンの識別に関しては、誤りが少なくなる方へを更新していきます。
損失関数として更新のアルゴリズムは以下の通りです。
1.入力データとそのラベルをセットで選びます。
2.入力データに対して現在の重みを用いて出力を計算します。
3.出力の結果に応じてを更新します。
if 判定が正しかった場合
(なにも変更しない)
else(判定が正しくない場合)
4.「1.」に戻ってデータを選び直すか、終了します。
この際数式の理解ができない部分があるとしたら、「3.」の判定が正しくなかった場合の更新式です。通常、損失関数を準備して、その損失関数を小さくする方向に更新しますが、この数式はそれをそのまま直接表現しています。本によってはではなくを使う場合もありますが同じ意味です。
この数式の意味するところがわからない場合は、微分や偏微分、あるいはベクトルでの微分などの計算を理解する必要があります。
損失関数の取り方自体は、本によって様々ですし、判別を間違えるということを表現できるものであれば本来何でも良いものでここでは気にしません。
ある関数をベクトルで微分したのならば、それは関数の最も変化の大きい勾配方向を示しており(等高線の法線ベクトル)、その方向は関数の山を登る方向を向いています。従って、符号を負に取り、適当な倍率(通常学習率と呼ばれる)を用いて移動すれば、損失関数を最も減少させる方向に僅かに進むことができるのです。フレーズとしては最適化数学の勾配法などを理解するといいでしょう。
このような更新方法は、機械学習の最適化でよく用いられている確率的勾配降下法の基礎になります(というよりこれが理解できれば、あとは殆ど作業の問題です)。
確率・統計にまつわる数式
条件付き確率、同時確率、周辺確率の意味
機械学習で確率の分野に入ると、突如として
という形の式が出てきて、真ん中の棒は一体なんだという経験はないでしょうか。
その後、続々と
などが出現して、頭はパニック状態ということになる人も少なくないはずです。結構な人が機械学習の確率的なアプローチにすんなりと入れない状況かと思います。大抵の機械学習の本は、ここらへんの数式の処理は知ってて当たり前くらいの調子で書いています。
全く意味がわからないという状況でしたら素直に簡単な確率の本を手に取ってください。
ちなみにそれぞれの簡単な解説を書いておきます。
1.条件付き確率分布
確率変数の値が定まったときの、確率変数の確率分布
例:は今日の傘が売れる本数、は今日の夕方からの天気
この場合は天気が雨か晴れか曇りか決定したときの、傘が売れる本数の分布となります。どう考えてもがどの値に定まるかでの値がどうなるかの分布は変わりますね。雨の場合にはこの条件付き確率分布はきっとが大きな値の方に偏っているでしょう。
2.同時確率分布
確率変数と確率変数が同時に定まる際の確率分布
例:相席居酒屋を訪れる男性客数と女性客数
この場合は確率分布の形は、とが同じくらいの値であるところで高い数値を取っていることを願いたいですね。きっと実際にはの領域の方に少しずれていそうですかね(女性無料な分女性が多いことの方が確率高いのかな?)。
3.周辺確率分布
おそらく一番難解だと感じるものでしょう。これは条件付き確率を完全に理解しているのが前提でしか説明できません。今回は割愛します。
簡単に言えば、条件付き確率分布の条件の全てのパターンを網羅して確率分布を足し合わせれば、に無関係の式になるということです。あるいは条件付き確率分布がいろいろなの値によって複数考えられるわけですから、その色々なを取る確率を重みとしたの重み付き平均がになるとも言えます。
確率変数とは?
確率変数とは事象から数値への写像(関数)です。
これのどこが関数なのかというと、例えばジャンケンに勝てたら300円もらえる。ジャンケンに負けたら300円取られる。どちらかが勝つまでやる。という場合には、事象(勝ち,負け)を獲得できるお金という確率変数(300,-300)へ変換しているのです。
という関数なのです。関数の引数として実現象を取れる便利な関数が確率変数というわけです。そして、数学では数値を取り扱うのが得意ですから、今後メンドウな事象のことは置いといて、確率変数が{300,-300}の値を確率的に取るという設定で話を進めます。当然このときの確率分布はという確率分布になります(グラフでは日本の棒が立っている状態です)。
確率変数が確率分布と事象を結びつけてくれるわけですね。
少し機械学習の話に移り、例えば身長と体重、体脂肪率などの数値データから男か女かという事象を判定したい場合、通常、クラスを表す確率変数を用いて、
というふうに数値の写像を決めておき、データが定まったとき(要するに手に入ったとき)のそのデータが表すクラスの確率
を使って判定を行います。当然、判定が正しくなるようにこの条件付き確率分布を求める必要があり、これが確率的アプローチによる機械学習になります。
ベイズの定理は何のために?
機械学習の確率的なアプローチの中でも最も強力なのがベイズ的アプローチです。
前提知識である事前確率分布は、そもそもクラスってのが全体的にどれくらい存在するのかなどを直感や経験、あるいはデータから適当に決めることができます。
また、クラス毎に手持ちのデータが整理されていれば、クラスからどのようなデータがどのように分布するのかを表す条件付き確率分布は従来の伝統的方法で求められます。
ベイズの定理は、人間が持つ事前知識と、伝統的な手法で得られる尤度を両方考慮した確率分布を得ることの出来る方法です。
また、一方で条件付き分布の条件と結果が左辺と右辺で反対になっていますから、数学的に一報が求めづらい場合にこの変形を行うという場合もあります。
パラメータと確率変数の違い
歪んだコインを回投げるとき、表が回が出る確率分布関数は、1回コインを投げたときの表が出る確率をとしておくことで、
と表せます。このとき、確率変数は表が出る回数であって、パラメータがになります。すぐに分かるでしょうか?通常、このパラメータを推定することを統計学では行います。例えば100回投げれば表が何回出たかを数えておけば、確率変数の値は観測できます。例えば60回表が出たとき、パラメータは幾つであると言うのが妥当でしょうか。こういうことを考えるのが統計学です。
ダーツを投げて刺さる位置の、中心からの左右へのズレを(右を正として)確率変数で表しましょう。この際、複数回投げた際の平均的な位置と、平均からのバラつき具合を分散で表現しておくと、中心からのズレの確率分布は
となります。確率変数は中心からのズレでパラメータは平均と分散です。これは有名なガウス分布なので、平均と分散と聞いた時点で何となく思い浮かんだかもしれません。
当然これも、1000回くらい投げてみて、平均的にどのへんであり、分散はどれくらいであると言うのが妥当かを推定するのが統計学になります。
機械学習の確率分布の表現と、ベイズ的考え方
機械学習では通常パラメータを使って表される確率変数の確率分布は
と表現されています。を一度推定したら、今後データがどんなふう生じるかの推定に役立つからです。もしかしたらこのが何のことかよくわからないと感じている人もいるかもしれませんが、簡単に説明するとパラメータが決まったときのの確率分布ですから、パラメータが推定し終わっているならば、何も気にすることなくと同じです。
と書くのも
も別に右辺の内容が変わるわけではありません。
しかし思想的に大きな違いがあるのです。
機械学習のある分野では、求めるべきパラメータは一意に真の解を持っているのではなく、手持ちのデータ(確率変数)から得られるため同様に確率変数だと見なします。当然、学習の際に使うデータが変われば推定されるパラメータも変わるわけですから、確率変数という考えも一理あるでしょう。
一方で、本来その事象を説明するためのパラメータは真の解が存在するはずである。つまり確率パラメータではないという考え方もあります。むしろこちらが伝統的な考え方で、前者はベイズ統計学の考え方です。
機械学習ではベイズ統計の方が多い(はず)ですから、ベイズ統計学を少し学んでみると、機械学習の式変形も見慣れたものになると思います。
また機械学習ではパラメータを推定した分布を使って、今度は確率変数の予測を行うということまでを一貫して行います。すなわち、どんなパラメータを具体的に使っているのかを明確にしておきたい意図があるのです。しかもそのパラメータは確率変数であるという考えに基づいて、今後変更される可能性もあるため、なおさらです。
ベイズの定理再び
ベイズの定理をパラメータと確率変数に基づいて考えると
と表せます。ここまで来ると、パラメータが確率変数であるという考えが一層明確になっています。パラメータは、手持ちのデータで確率分布によって表示されるのです。そして、この式を使い、更新によって逐次的に推定を行うこともできます(ベイズ更新)。
多次元の確率分布
多次元正規分布の式
m次元正規分布の平均ベクトル、分散共分散行列とすると、
(wikipedia) (数式辛いので画像で)
という形になります。 さて、一次元と似た形ですが、意味は分かりますでしょうか。似た形というより、同じ形なのですが、これは線形代数と確率統計いずれも理解がないと厳しいでしょう。
確率統計は一次元から勉強を進めていき、基本を抑える必要があります。そして、多次元に行く際には必ず線形代数を勉強してください。特にの中身は二次形式と呼ばれる、線形代数でのいわゆる2次関数の表現のようなものです。
ここらへんを恐らく、ここらへんからはかなり苦しく感じるかと思います。
PRMLでも2章に入って早速この調子で、挫折感を味わう人は多いはずです(しかもPRMLには数学の詳しい解説はないです。)。