shine-Notes

ゆるふわ思考ダンプ

ポエム:Machine Learning周辺の読書記録(201811~201903)

【サマリ】

  • クソ文系SEがブームに乗り遅れた気がしながら機械学習を勉強している話。読んだ本の感想とか思ったことを残すポエム。

【背景】

元々社外の研究会で軽くWatson APIのハンズオンをやったりはしていたのだが、(諸般の事情で)業務従事も視野に入れつつ、もう少しDeep Learningを真面目に学ぶ必要が出てきた。とはいえ筆者個人は過去記事を見ればわかると思うが、とんとこの辺りには接点がない。2018年中盤時点で、こんな感じ。

  • 「AI」は多分バズワードなんだろ!でも、機械学習、DeepLearningの違い、境目はよくわからん!
  • ニューラルネットワーク?なんでニューロンを模したら性能上がるの???わからん…
  • 教師あり/教師なし学習、分類系/回帰分析系 で分類できるのは何となく分かる。
  • とにかくデータがないと役立たずらしいね。でもデータ与えた後ってAPIの向こうで一体何やってんの?

ちょっと日経の関連記事を読んだだけのオッサンレベルである。ちょっと本腰入れて勉強すっか、と思い立った。

【実際にどんな学習をしたのか(しているのか)】

とにかく開発!実装!というアプローチも有るとは思うが、自分はどちらかというと本のインプットを進めていくほうが好きだ。
(取り敢えず用語や概念を取り込んで、時間をかけて自分なりに理解したい)

という訳で、以下読んだ本の感想ないし紹介。さっさとコード書けや!という気もするが、これはこれで、関連書籍が氾濫しているこの分野では役立つ記録になると思うので、以下読んだ順に記載していく。

① 統計学系の入門本(最初の1ヶ月 〜11月)

データサイエンス界隈の記事を読んでいた頃の直感に従ったのだが、統計学が分かっていないと、おそらくこの界隈の概念はわからん!!!と予想し、以下を勢いよく読んだ。

マンガでわかる統計学 回帰分析編

マンガでわかる統計学 回帰分析編

マンガでわかる統計学 因子分析編

マンガでわかる統計学 因子分析編

表紙の女の子かわいいし行ける行ける!と勇んで読み始めた束の間、次々と飛び出す数式に「ああああああああ!」とトイレの中で耳から煙を出した。1ページ開くたびに「あれ…logってなんだっけ…」とgoogle先生で調べだすレベル。「そうかlogは何も書いてなかったら底数10なんだな…(後々ネイピア数出てきたときに引っかかる)」
正直理解度は50%あれば良いほうである。もう少しドメイン知識を持っている分野のほうがまだ理解できるかもしれない、と思い次の本に手を出した。
[プロ野球でわかる! ]はじめての統計学

[プロ野球でわかる! ]はじめての統計学

これでだいぶ抵抗が薄れた。
乱暴なまとめ方だが、「数学って言うからには公式でかっちり答えだすのかと思ったけど、とにかく仮説立ててから誤差や妥当性を図りに行くアプローチなんだな」というのはなんとなく分かった。

今思うと「機械学習をやる」という目的には多少遠回りな選択だった気はするので必須とは言わないが、機械学習界隈のアプローチや数式に対するアレルギーに覚悟ができるし、無駄ではないチョイスだったと思う。

② 迷走(〜11月)

さて、次は「データサイエンス」と名の付くものに手を出そう。そう思い、kinlde unlimitedにあったこの本に手を出した。

大学4年間のデータサイエンスが10時間でざっと学べる

大学4年間のデータサイエンスが10時間でざっと学べる

訳が分からなかった。
いや、いい。システム周辺は曲がりなりにも専門だ。分散DBだのクラウドだのはわかる。だが数学の話が入った辺りからもう全く意味がわからない。概念もよくわからないし、何より「なぜその概念がデータサイエンスに必要なのか」がまーったく腑に落ちない。俺、この領域無理かもしれない……半泣きになりながらamazonのレビューを見ると低評価も一定数ある。まだ諦めるべきではないのか……?と思い次の本に手を出した。

③ オライリー本行脚(11月〜3月)

そしてこの本に手を出した。結論から言うと、諦める前にこの本に手を出して大正解だった。
既に各所で言われている事の繰り返しになってしまうが、一切パッケージを使わず、スクラッチでDeepLearningのレイヤを書いていく。そしてとにかくストーリーが秀逸で、何故「ニューラル」なのか、何故「層を重ねること」が威力を発揮するのかが体感できる作りになっている。(あと、この本をやってからtensorflowを知って「マジで!?」となるまでがセット)
まずはざっとコードも読み流しながら最後まで読み進め、その後電子版も購入して、コードを写経していくまで一通りやりきった。もちろんすべての概念を理解しているとは言わないが、そもそも数学的素養が欠如している人間にとって、段階を踏んだ説明を受けながら動くものを見ることは、得られる実感が段違いなのである。
あと個人的には、挫折経験があり苦手意識の強かったオライリー本で「きちんと取り組めば自分でも読破できる」と思わせてくれたのも大きかった。この本には感謝以外の何者もない。

仕事ではじめる機械学習

仕事ではじめる機械学習

続いて、前述の本を読んでる時期に、ガチ機械学習をやっている友人に進められた。 こちらは、まだ読むのが早かった……というより、後でもう一度読む本だな、と思わされた。タイトル通り、ビジネスで如何用に機械学習を活用するか、という話で、もしかするとこの本のエッセンスだけで機械学習関連のプロジェクトを回す「だけ」なら可能なのかもしれないが。自分にはまだ未来の予習かな、と思いざっと読むだけに留めた。ただ、知識の俯瞰には役立った。

scikit-learnとTensorFlowによる実践機械学習

scikit-learnとTensorFlowによる実践機械学習

この辺で似たような境遇の方からKaggleを勧められ、その中でscikit-learnを見かけて、「Deep Learningに行く前にMachine Learningも分かっときたいな」と思い、手にとった。
書店で手にとった時、ぶっとさに挫けそうになったが、なんとか読了。とにかく内容の網羅性と、段階的に読者に理解させることを意識した内容展開が有り難い。作中のソースコードもJupyterNotebook形式で全てGitHubに用意されている。
またコードについては極力読みはしたが、全て実行しようと思うと時間がかかりそうだったので、一旦読むだけで終わらせて、実践の段階で気になる所があれば立ち戻ってNotebookを動かす形で利用している。

【サマリ】

以上ダラダラと書いたが、これでなんとか機械学習の基本的な用語、実践の流れはわかるようになった。
(実際、書籍②を今読み返すと、確かにデータサイエンスに必要な概念を全部1からさらっているのが分かり、成る程、少し知識のある人はこれで大学のデータサイエンス授業で出るような内容を俯瞰して復習するのね…と腑に落ちた)
手を動かすところには余り時間を割けていないのだが、KaggleのKernnelを自分で探してFolk、意味を考えて多少編集、実行できるくらいも、何とかできるようになってきた。
あとは自分で見つけた課題に対して、きちんと仮設立てて、コーディングで立ち向かう経験を作っときたいな…と思う次第である。

【余録】

自分を追い込むために、4〜6月のターゲットも書いておく。

  • Kaggleのチュートリアル以外のコンペでKernel書く、Submitする
  • tensorflow、Kerasの基本動作の学習(オライリー本を予定)
  • チュートリアルに毛が生えたもので良いので、自分のニーズで何か学習モデルを作って推論させる