「1番かんたんな機械学習の教科書を頼む!」な厳選3冊
- <枕詞>
- 「やさしく学ぶ 機械学習を理解するための 数学のきほん」(LINE Fukuoka 株式会社 立石賢吾 著 マイナビ)で学んだこと
- 「自然言語処理シリーズ 1 言語処理のための 機械学習入門」で学んだこと
- 「ゼロから作る Deep Learning Python で学ぶ ディープラーイングの理論と実践」
- (本備忘ログまとめ)
- 余談、Logistic Regressionちゃんについて
<枕詞>
あー、過去にブログ記事を書いてから(2017年の2月から)、6年もたってしまいました。
その間にブログの更新はなく、自分の怠惰っぷりがやばいっすです。人生終わっちゃう。世界の激動の変化もまじやばいっす(コロナとかAIの進歩とか色々ありましたね)。
その間、私はかつて作りたいとか言っていた「文の芥川龍之介度判定器」とか「テキストで記述されている内容が架空のものなのかリアルなのか判定器」とか「テキストの人称視点ズレ検出器」とかを作っていたわけではないのです。何もしてません。
じゃあ何やってたんだよ。生きていた(ような気がします)。本当、何してたんでしょうね。怖いですね。
でも、sevenseasやまほがく(http://www.sssloxia.jp/) という定期更新ゲームは遊んでいましたよ。あと、イバラシティも遊んでましたよ。楽しかったですね。
さて、
<この記事は数学が苦手な人でも読みやすい機械学習の本を紹介します>
それでも、ワタクシはひっそりと機械学習の勉強は続けていたのです。昨今話題の機械学習の仕組みを理解したくて、数学の本も読んでみたのです。機械学習を理解するには数学の理解・知識が必要です。
ですが、ワタクシは数学が苦手なのです。数字で物事を理解できないタイプなのです。2のほうが1よりも2倍も大きいわけですが、1位と2位とですと、1位のほうが価値が大きそうですね。2のほうが1より必ず大きいわけではないのです、不思議だなぁとか思われます。ワタクシは数字とその意味がなかなか頭でスパッと理解できないポンコツなのです。
それゆえにか、いろんな機械学習の本を読みましたが、なかなか理解できませんでした。あの有名な黄色の本(https://www.maruzen-publishing.co.jp/item/?book_no=294524)とか、さっぱりわかりませんでしたよ。
難しい教科書を読もうとしても、「現存!古代生物史 パッキー」で高校数学に挑戦したパッキーさんやスティギーくんみたいな感じに頭にぴよぴよしてしまうのです。
メモ:「現存!古代生物史 パッキー」(レツ先生著、集英社)(https://bookwalker.jp/series/165117/)は現代の竹田家に居候するパキケファロサウルスのパッキーと仲間の古代生物たちが繰り広げる面白日常を描いた漫画なのです。小学生レベルの数学力しかもっていないパッキーさんとスティギーさんが高校数学の授業に果敢にチャレンジしたのだが頭ぴよぴよになってしまうというエピソードがあるのです。勉強はコツコツ積み上げが大事!
難しい機械学習の本をがんばって読んだとしても、自分の頭の数学力がその教科書に達していなければ、書かれている事柄が理解できないものなのです。理解できなければ、プログラムで実装して、実際の世界で役に立てることもできません。教科書は自分の力量にあったものを選ばなければ努力に対するリターンが期待できないものなのです。
「1番かんたんな機械学習の教科書を頼む!」
というわけで、ワタクシ、かんたんな機械学習の教科書を探して読んでみました。この記事では、数学力に自信のないワタクシでも「これならわかるかも!」と感じた機械学習の教科書について、備忘ログを残しておきます。
数学力のないワタクシが求めたという3冊の教科書。
- 「やさしく学ぶ 機械学習を理解するための 数学のきほん」(LINE Fukuoka 株式会社 立石賢吾 著 マイナビ)
- 「自然言語処理シリーズ 1 言語処理のための 機械学習入門」(高村大也 著、奥村 学 監修、コロナ社)
- 「ゼロから作る Deep Learning Python で学ぶ ディープラーイングの理論と実践」(斎藤 康毅 先生著、O’Reilly)
ここからワタクシが何を学んだかをメモ書き程度に書き記しておきます。数学力よわよわ人類が「本を手にとる」参考になればと思います(本の内容の解説はしていません。内容については個々の書籍を直接ご参照ください)。
「やさしく学ぶ 機械学習を理解するための 数学のきほん」(LINE Fukuoka 株式会社 立石賢吾 著 マイナビ)で学んだこと
この本は機械学習の基本ムーブが学べます!
- 何かを予測するモデルの例(まずは多項式から)
- 2次元上にプロットされたデータを線を引いて分ける白黒分けるイメージ(分離曲線)
- 奥義!最小二乗法!
- 後々にもつながる知識
(やさしく学ぶ 機械学習を理解するための 数学のきほん のまとめ)
この本ではアヤノおねーさんとミオおねーさんの会話を通じて機械学習でできることとその理屈を学ぶことができるのです。会話形式だと「何のためにやっていることなのか」というコンテキストがすんなり理解できるような気がします(気がする)。線形モデルやLogistic Regressinといった機械学習や統計学におけるよくよくみる手法について、数式を追いつつ、Pythonでの実装も学ぶことができます。手を動かすのは大事ですね。
「やさしく学ぶ 機械学習を理解するための 数学のきほん」は機械学習を学びたい人の入門本としてはベストの1冊なのではないでしょうか? なお、高校数学程度の微分は出てくるので、その辺が怪しい人は高校の数学の復習をしよう。
「自然言語処理シリーズ 1 言語処理のための 機械学習入門」で学んだこと
この本では、以下のことが学べます。
- 文書をベクトルにする方法(文書を数学で表す方法)
- Support Vector Machine(SVM)の最適化問題を解いてパラメータ更新式を導出する方法
- テキストに対する系列ラベリング
- 言語処理システムの評価についての基礎知識が学べます
- 評価尺度(F値など)のマクロ平均とマイクロ平均の違いについて例が示されている
- 言葉の使い方について
- 系列ラベリング問題ではなく通常の分類問題に対して「CRFを用いた」と述べるのは誤解を招くので「対数線形モデル」まはた「最大エントロピーモデル」を用いたと述べるべきであること(著者の高村先生の言葉の使い方に対する熱い思いを感じられてよかった)
(CRFについてのメモ)
系列ラベリング問題(固有名抽出や品詞の割り当てのなど)には、かつて(90年代〜2010年代)多くの場合でCRFが適用されていました。深層学習やBERTなどの事前学習モデルが流行っている最近(2020年代)ではどうなんでしょうね?
系列ラベリングにおける確率値の計算方法である前向き・後ろ向き(forward-backward)アルゴリズム」の考え方の一般化したものが確率伝搬法(belief propagation)です。確率伝搬は、現在盛んに研究・開発されている、深層学習の基本となる技術だそうでして、技術は連なっているんだなーと思いました。
(言語処理のための 機械学習入門まとめ)
首都大の小町研究室では学生さんはまずこの本で機械学習ベースの自然言語処理の勉強をされるそうです(https://cl.sd.tmu.ac.jp/prospective/prerequisite)。コンパクトながら機械学習の分野で頻出する概念がまとめられていて、類書や論文を読んでいて「あ!『言語処理のための 機械学習入門』で見たやつや!」ということも多いと思います
特にConditional Random Fields(CRF)の解説は、学習時の更新式の導出や推論方法が丁寧に解説されていまして、わかりやすくてオススメです。ここのところ深層学習ベースの論文の方が増えているので、CRFとかのモデルはあまり見かけないかもしれませんが、系列ラベリング問題という考え方、最適化や確率分布や評価方法などの基礎的な知識は腐らないと思います。
全ての例題と演習問題には回答がついてきます。全部とこう! ワタクシも全部解きました! なお、分類モデルの演習問題はちょっと歯ごたえがあり、ワタクシには歯が立ちませんでした。数式の添字の意味が追いきれませんでした(要復習)。
「ゼロから作る Deep Learning Python で学ぶ ディープラーイングの理論と実践」
こちらは深層学習に入門するために読んでみました。この本では以下のことが学べます。
- pythonライブラリnumpyの使い方
- pythonのmatplotlibライブラリでグラフ表示
- ニューラルネットワークの起源:パーセプトロン
- 損失関数とか機械学習の基本
- 奥義!計算グラフで理解する誤差伝搬方!
- 畳み込みニューラルネットワーク(Convolutional neural network :CNN)の仕組み
- 画像の検出や分類でよく使われているCNNでの畳み込みを体感する。(ベクトルの)大きな数字の方眼の四角が小さなな方眼の四角に畳まれて行ったのをみたよ・・・。
- BatchNormalizationの仕組み
- ニューラルネットワークの初期値をうまく設定する方法。学習が早くなり、過学習を抑止する効果がある。深層学習の基礎技術
(ゼロから作る Deep Learning のまとめ)
この本では深層学習の基礎をpythonのプログラムを作ることを通して学べると思います。特に、計算グラフで誤差逆伝播の仕組みを説明する5章に、ワタクシは感動いたしました。「ゼロから作る Deep Learning」シリーズは続刊も発売されてますので、続けて勉強したいと思います。
(本備忘ログまとめ)
この3冊をしっかり学べば、数学がちょい苦手な人でも、(深層学習含む)機械学習の「息吹」「呼吸」を体得できるのではないかと、ワタクシ、確信しているのです。数学とプログラミングや実データの面から学びを深めることができます。3冊ともとっても良い本です。
そして、本で読んだりしたことは、実践しなければ、です。モノを作って自分や他の人の役に立てなければ、です。これこそ技術の基本ムーブ。次の備忘ログでは最近のモダンなライブラリを使ってテキスト分類問題に取り組んでみたいと思います(ライブラリ使うなら数学学んだ意味はあるのだろうか?(自問)。まあいいか。多分ある。)
余談、Logistic Regressionちゃんについて
あと、3冊の本を読んで勉強した気になっていたのですが、備忘ログをまとめるにあたり再読したところ、本の内容は結構忘れていて、知識はなかなか身につかないことを実感いたしました。最近、別の本でLogistic Regressionちゃんのことを勉強していて「こんな方法があったんだ〜、ワタクシ、Logistic Regressionちゃんのこともっと知りたいな」とか思っていたのですが、実はワタクシは「やさしく学ぶ 機械学習を理解するための 数学のきほん」ですでにLogistic Regressionちゃんのことは知っていたのです。すっかり忘れてたよ。
というか、他の統計学の本で学んだのですが、Logistic Regressionちゃんは回帰分析と同じく一般化回帰モデルという一形態みたいな記述があり、ひょっとしてワタクシ、もっと大昔から(統計学の本で読んで)Logistic Regressionちゃんとは知っていたのでは?(そしてきれいに忘れていたのでは?)
これはギャルゲイムでいうところの「そのキャラは幼馴染だったんだけど主人公は忘れてしまっていた」みたいなパターンだなと思いました。ワタクシたちは、幼馴染エンドを迎えるためにも、やはり、教科書は今の自分の実力や理解力にあったものから読んだ方が良いよね?と思いました。
終わり。