大学生 → 社会人の雑記

統計学や機械学習について気紛れにメモメモするブログです。ゆるふわな感じでやっています。

統計的学習の基礎を読んだよっていう記録

本当は今年中に読み終わればいいなと思っていた、カステラ本こと『統計的学習の基礎』を読み終えたので、記録しておこうと思います。




カステラ本やるべき?


この記事に辿り着いた人はこれが1番気になるんじゃないですかね?安直に言ってしまえばやるべきだと思います。


何がいいって、まず基本的なことは一通り載っている点です。これは当たり前のようで、とてもありがたいことです。機械学習やりたいんだけど、何やればいいかな?という漠然とした要求に答えてるのこの本ぐらいじゃないかなーと思います。

一通り読んだあとには辞書になるという点も◎です。


また、ストーリー立てがとてもわかりやすいです。基本的に統計学の観点をモチベーションにして話が展開されていくのですが、なんでこの考えに至ったのか、そこからどう話が発展するのか等が綺麗に書いてあります。

例えばAdaboostから勾配boostingに至る流れは鮮やかですし、バギングからランダムフォレストへの展開も「すげえ!」となりました。

さらに各章の後半では、問題提起や疑問をいだきそうな点への考察もされており、読み応えがあります。


ほんでもって参考文献は説明付で列挙されており、とても充実しています。もう少し説明が欲しい時に文献を探す手間を和らげてくれます。


そしてなんと言ってもデータへの適応例がとても詳しく載っています。


他に良い点を挙げるのであれば、教師無し学習が他の本よりもかなり詳しい点ですかね。網羅的な参考書で教師無し学習を詳しく書いてあるものをあまり知らないので。


また、個人的にはアンサンブル学習と正則化、それと汎化性能についてとても詳しい&スムーズな理解がしやすいという印象を受けました。
汎化の話は少し読みづらかったかも。でも詳しかったです。

アンサンブル学習や正則化なんかの基礎を勉強するという目的だけだったとしても、この本はとても役に立つと思います。


一度読んでしまえばあとは辞書のように使っていけます。分析していて気になったところの大抵はこの本に載っていますし、大抵じゃないところは論文かその分野に特化した本にしか載っていないです。


ここからが本編です(私の記録)


基本的には1週間に1章という感じで勉強していきました。

なぜこんなにも早く読み終えたか(想定よりも早いという意味です)というと、1日の勉強時間が思っていたよりも大幅に多くなったからですね。
1日2,3時間と考えていたのですが、だいたい6,7時間は使っていたような...
4年生って素晴らしい!時間がたっぷりある!!

まあ数時間は他のことを勉強していたのでこれが限度でしょうね。研究や授業に影響が出ているわけでもないので善戦したと言っていいでしょう。


さて、各章について具体的に触れることはここでは避けますが、勉強するにあたって良かったことや困ったことをまとめます。




1.なぜ『統計的学習の基礎』で勉強したのか

まず初めに何故『統計的学習の基礎』を選んだかという話をします。特別なことは何もないです。

機械学習を勉強するみなさんは、恐らく私と同じように「機械学習 参考書」や「機械学習 本」等でググると思います。するとどこもかしこも「はじぱた」や「統計的学習の基礎」を取り上げていると思います。そして

mark-n.hatenablog.com

ここでもデータサイエンティストになるために必要な知識を取り上げましたが、やはり統計的学習の基礎が挙げられています。指導教員にも機械学習を何で勉強したらいいか相談したところ、ここでも統計的学習の基礎を勧められました。

そこまでみんなが言うのであれば、ほぼ間違いないだろうということでこの本に手をつけました。





2.必要な数学のレベル

■追記:勉強した時に行間を埋めたものを作りました。カステラ本はPRMLと違ってあまりこういうのがないので、現在読み進めている方の参考になれば幸いです。

sites.google.com


さてさて、これについてはどの程度必要かという問に答えるのは難しいので、読み始めた頃の私のレベルを書きますね。

微積線形代数、確率、統計どれも一般的な理系(非数学科)が1年時に習う程度です。しかも完全に使いこなせているわけではなく、これらの話が出てきた時に何を言っているのかがわかる、そしてある程度の間違いには気が付くレベルです。



このレベルでやってみた感想は、正直言って結構つらかったです。ですが、良い復習になりましたし、何よりツラかったとは言いつつも無理というわけでもありませんでした。頑張れば読めるレベルです。


この本において数式は突然不思議な形に変形しますし、事実は事実だからあああああと言わんばかりに突然登場したりします。もちろんわかる人には簡単な話なのかもしれません。それぐらい知ってろよ、という話なのかもしれません。とはいっても初めて見るとなんじゃこれはああああああとなります。

もちろんページ数に限りがありますし、冗長に書きすぎても理解の妨げになりかねないので、数式の変形や事実の証明などを載せるのは実際問題不可能or不適切だとはわかっています。


そんなこと言っても気になるもんは気になりますし、せっかく勉強しているのだから納得して進めたいですよね。

数学が得意な人であれば、基礎がかなりしっかりとしていると思うので巧みに導出したり、証明したりすることに対してあまり苦労することはないかもしれません。一方で議論が厳密ではないため、数学科好きの人はこの本をあまり好まないかもしれません。まあ私は数学科ではないので、この辺りの感覚のことはよくわかりませんが…

かくいう私の場合は上にも書きましたが、経営システム工学科ということで、数学といえば線形代数と簡単な微積分、いわゆる理系教養程度の数学しか習ったことがありません(確率論や統計学,OR等はやりますが…)。

ということは知らない知識が出てきた場合にそれを新しく勉強する必要があり、体系的に学べているわけでもないので決して良いとはいえない効率の下で基本知識を詰めていくことになります。

これはなかなかキツい作業(?)でしたね。習っていたとしても覚えているとは限りませんしね。例えば行列の微分とかはほとんど扱ったことがなかったので、慣れるまでかなり苦労しました。

しかし、これを読み終えた頃には俗に言う「機械学習に必要な数学」とやらが身に付いていることになると思います。

もちろん体系的に事前知識として学べていればベストなのですが、人それぞれ異なる事情がありますし、まあ使っていく上では問題ないでしょう。





3.勉強していて困ったこと

上にも書きましたが数学的(算数的?)な話がなかなかツラかったです。
必要なことが最小限に書かれているため納得せずにとりあえずで進むと、わからないことが瞬く間に蓄積してすぐに何もわからなくなります。
逆にいえばそこらへんをしっかりと押さえておけば、本のタイトル通り統計的学習の基礎が身につくわけです。


例えば1章だか2章だかで、次元の呪いの話として

原点を中心とするp次元超球内に一様に分布するN個のデータのうち、原点に最も近い点と原点の距離をrとします。このrの中央値は(1-(\frac{1}{2})^{1/N})^\frac{1}{p}

というような話が世の中の常識だといわんばかりに出てくるのですが、常識もなく頭も残念な僕はこれの導出に苦労したりしました。

他にも例えばブースティングの話で「前向き段階的加法的モデリングの損失関数を指数損失にすることでAdaBoost.M1と等価になる」というのがどうもしっくりこなかったため、Friedman(2000)を読んでみたりと常識(?)になかなか時間を食われました。


ところで、Friedman(2000)を読んだと書きましたが、この本に参考文献として取り上げられている論文はどれも非常に読みやすいです。
是非一読してみるといいと思います。論文を読む練習にもなるかも。
(たしかこの論文はFriedman,Hastie,Tibshiraniと有名人のオンパレードだった気がする)

ここで私はその辺にいる大学生となんら変わらないということを忘れないでください。というのもたかが機械学習の本を1冊読むのにやれ論文だのやれ数学がどうだのって偉そうなことを書いていて、如何にもスゴそうなことを書いているような感じがするからです(僕がカステラ本を読むか悩んでる時に見たらちょっとした引くなと思っただけですが…)。

実際私は数学が得意でもなければ英語も得意ではないですし、論文は当然英語で書かれているので読みやすいと言っても、HAHAHAHAHAなんて読みやすいんだ!!というわけではなく他の論文に比べて読みやすいなーというレベルです。

逆にいえば、これから論文を読んでバリバリやっていきたいという人は、まずこの本に挙げられている論文を読んでみると、いい練習になるかもしれません。





4.勉強していてお世話になったもの

まずは卒研生ということで指導教員には大変お世話になりました。(今もなっていますが。)

とはいうものの先生もかなり忙しい方ですので、あまり質問に行く機会は多くなかったです。どうしても自力で解決できないところを質問にいってました。

では自力で勉強する上で何にお世話になったかというと、主に次にあげるものです。


slideshare

→これはとりあえず調べてみると出てきます。おそらく勉強会か何かで使ったものと思われます。
 
 最初の方は非常にたくさんヒットするのですが、章が進むにつれてほとんど出てこなくなります。みんな討ち死にしてしまったのかな...

 また内容を写している物だけというのが多く、良いスライドに巡り合えることはあまり多くないかも(この点はPRMLの方がいい)。



PRML

→正直言って統計的学習の基礎よりも読みやすいと思います(そういう章だけをたまたま読んだからかもしれませんが…)。

PRML読んだ後の追記:カステラ本の方が全然読みやすかった…


 同じ内容のものはこちらにも目を通して理解を深めようと試みました。実際にそれで深まったかは謎です。ただ、PRMLは基本的にはベイベイベイズなのでそこには留意しておく必要があるかも。


・参考文献に挙がっている論文(説明は上に書いたので略)


・その他参考書

→研究室においてある本や自分が持っている本ですね。これも説明は不要でしょう。
 
 



5.感想

全体がなんだかまとまりを失っていっているのでこのあたりで締めます。

いやー実際結構きつかった。1冊目にやる本だったのかとか聞かれるととても複雑な気持ちになります。


でも勉強を一通りやった感想は、やはり機械学習の基礎になる部分は身に付いたのかなという感じです。論文とかもある程度読めるようになったしね。

実際に何を持って基礎と言っているのかよくわかりませんが、後半に行くにつれて勉強のペースが上がっていきましたし、躓くことも減ったので基礎ができてるんじゃないかな~と安直ながらそう感じた次第です。

さて、このあと何を勉強するかまだ決めていませんが何かしらの勉強をすると思います。

巷で言われているほど難書ではなかったしPRMLかなぁ。。。