見出し画像

機械学習の理論書をテーマ別で紹介!駆け出し機械学習エンジニアが、機械学習プロフェッショナルシリーズ約30冊を全て速読してみた

機械学習の書籍……機械学習プロフェッショナルシリーズを大量に読んだので、難易度やテーマにわけて、まとめてみました。

機械学習の書籍選びや、今取り組んでる問題がどんな単語で研究されているのか、そして機械学習にはどんな分野があるのかを知ることなどに役立ててもらえたら嬉しいです。

このnoteの構成は以下のようになっています。

1.概要や経緯と、このnoteの読み方
2.難易度やざっくりとしたテーマ順で、書籍を1冊ずつ紹介
3.ジャンル・テーマ毎に、書籍とその本に載っていることの紹介

特定のジャンル等を探している方は、2のテーマ毎に見ていただくか、3から自分の興味を探したあとに2の方の該当の書籍を読んでいただけると探しやすいかと思います。

そうでない方は、ごゆるりと上から全体を眺めていただくのがいいかと思います。

1.経緯・概要・読み方

先日、Amazonにてなんと機械学習プロフェッショナルシリーズの半額セールが行われていました。

機械学習プロフェッショナルシリーズ

こんなチャンスは2度とないかもしれない……と居ても立っても居られなくなり、つい全部購入してしまいました

このシリーズと加えて機械学習スタートアップシリーズも、最新のものを除いて買ってしまい、その数全部で31冊……。

普通に読んだのでは何年経っても読みきれないので、1冊1時間という縛りでとりあえず読み切ろうと思い、1ヶ月にわたり読んでまいりました。

その話についてはまた詳しく後日書きたいと思っているのですが、今回はその読んだ本の備忘録という意味も込めて、それぞれの書籍をご紹介したいと思います。

機械学習プロフェッショナルシリーズとは

そもそも機械学習プロフェッショナルシリーズとは、

高度な数学などで理論建てられている機械学習について、初学者が学びやすくするために、体系的に、網羅的に学ぶことができるようにシリーズ化されたもの

です(勝手な私の解釈です)。ですので、その対象者は

・機械学習について、全くの初学者ではない人
・機械学習の理論を学びたい人
・大学数学や統計などの基礎知識は基本的にもっている人

となっています(これも私の所感です)。そのため、数学や統計の知識が全く無かったり、そもそも機械学習の理論ではなく実装するためのコードを知りたい、という人には、あまりこのシリーズはおすすめできません。

とはいっても、このシリーズの一部の書籍は数式がほとんどなかったり、直感的にわかるような構成になっていたりします。

また、最初から全部読まなくてはいけないわけではなく、書籍毎に、また書籍の中でも独立して読めるような構成になっています。

ですので、数式になれていない方も、気になる分野があったら一度手にとってチャレンジしてみることをおすすめします。細部まではわからずとも、その分野の雰囲気がわかったり、何を目標に勉強していけばいいかなど、きっと得られるものはあると思います。

また、機械学習の(比較的)初学者のために、数式の説明などがより優しく、コードも多かったりするシリーズ、機械学習スタートアップシリーズも出ております。

このnoteの読み方

ということで、そのシリーズのほとんどをさらっとですが読んだので、その紹介をしていきたいと思います。

最初にも書きましたが、まずは書籍毎に紹介、次にテーマや単語別で紹介していきたいと思います。

書籍毎の紹介では、それぞれ以下について書いてあります。

・難易度(独断と偏見)
・概要
・こんな人におすすめ
・キーワード

それぞれの項目を見ながら、書籍選びにご活用ください。

難易度については、以下のような基準で、独断と偏見に基づいてつけています。

難易度
1:数式は結構出てくるが、前提知識はそこまで必要ではない
2:機械学習の理論の基礎など、前提知識がある程度必要
3:大学学部の解析学や統計学をしっかり学んでいないと厳しいレベル

基本的には、大学数学の基礎(解析、線形代数)、大学の統計の基礎については前提知識として書かれています。そうでないものについては概要に書きました。

また、難易度1といっても、機械学習を全く知らない人や、高校数学も危うい人にとっては、ちゃんと理解しながら読むのはかなり難しいかと思いますので、お気をつけください。

ちなみに、ほとんどの書籍にコードは載っていないので、載っている場合だけ「載ってます!」って書いてあります。

キーワードは、ページ内を検索しやすいようにつけました。

2.書籍紹介

それでは、まずは理論初学者におすすめのスタートアップシリーズから。

スタートアップシリーズ

スタートアップシリーズは、それぞれの分野の入門、という感じです。
以下3冊以外に、現在では「ゼロからつくるPython機械学習プログラミング入門」も発売されています。

・これならわかる深層学習入門 機械学習スタートアップシリーズ

難易度:1
概要:
大学1年程度の数学(微積分、線形代数)だけを前提として、深層学習……いわゆるディープラーニングを理解することを目標としています。
統計の基礎から始まり、機械学習の基礎、ニューラルネット、勾配降下法などの基礎を踏まえ、CNN(ディープニューラルネットワーク)、RNN(リカレントニューラルネットワーク)、深層強化学習についても学ぶことができます。
ですので、網羅的に、そして体系的に深層学習の理論について学ぶことができます。
こんな人におすすめ:
・深層学習の実装はしたことがあるけど、その理論について学んでみたいと思っている人
キーワード:
ニューラルネット、勾配降下法、誤差逆伝播法、自己符号化、主成分分析、スパース正則化、CNN、RNN、LSTM、ボルツマンマシン、マルコフ連鎖、深層強化学習

完全に機械学習が初めて、という方にはなかなか抽象的で難しいと思いました。また、統計についても、基本的な部分については付録などにも載っていますが、さすがにそれだけというわけにはいかないレベルだと思います。

定理・証明みたいな形式ではないですし、詳細な数式の説明がない部分も結構あるように感じました。全体の流れを追うように読むのがいいかもしれません。

・ベイズ推論による機械学習入門 機械学習スタートアップシリーズ

難易度:2
概要:
ベイズ学習は「モデルを構築」して「推論を導出」する統計的な手法の一つであり、著書の言葉を借りれば「不確実性を伴うシステムの挙動解析」です。
つまり、ベイズ学習を学ぶことで、機械学習の「予測性」の理論的根拠の一つを学ぶことができます。
そんなベイズ推論について、ベイズの考え方の基礎から、機械学習に出てくる様々なモデルの妥当性などを学ぶことができます。
具体的には機械学習、確率分布、そしてベイズ推論の基礎を学んだ後に、ロジスティック回帰やニューラルネットなど機械学習でよく耳にするモデルの紹介を行います。
こんな人におすすめ:
・機械学習の理論を少し勉強して、次はベイズ推論について勉強してみたいという方に
・機械学習の妥当性の根拠を知りたい方に
・データ分析などをしている方に
キーワード:
ベイズ、確率分布、混合モデル、次元削減、ロジスティック回帰、ニューラルネットワーク

ベイズは機械学習を支える理論(のはず)のひとつなので、深く機械学習を理解する上では不可欠なのかなと思います。

・Pythonで学ぶ強化学習 改訂第2版

難易度:1
概要:
機械学習は「教師あり学習」「教師なし学習」「強化学習」という3つに分けられることがよくありますが、この書籍はそのうちの一つ、強化学習を、コードを書きながら学ぼう、という内容になっています。
pythonでコードを書きながら、その理論についても書いてあるので、とてもよい入門になるかと思います。
ちなみに強化学習とは、行動に応じて報酬を受け取る環境を作って、より多くの報酬を得られるように学習させる手法です。
その応用先は「ゲーム関連」「ロボット系」「機械学習の最適化」「対話の応答」など、以外に多岐にわたります。
そんな強化学習について、入門的な内容から深層強化学習、そしてモデルを改善していく手法について学ぶことができます。
こんな人におすすめ:
・強化学習をコードを書きながら勉強してみたい
・他の機械学習は知っているが、強化学習的なアプローチも勉強してみたい
キーワード:
強化学習、動的計画法、Q学習、ニューラルネット、CNN、深層強化学習、模倣学習

この書籍は、今回紹介する31冊の中で唯一ちゃんとコードが載っている本です。

同じスタートアップシリーズの「ゼロからつくるPython機械学習プログラミング入門」にもコードは載っていると思いますが、やはり最初は書いたり動いたりしているところを見ながら勉強するのがいいですよね。

ということで、強化学習初学者にはとてもおすすめな1冊です。

基礎

次は全体を通して必要そうな基礎的な内容のものを紹介します。

・機械学習のための確率と統計

難易度:1
概要:
機械学習に確率と統計の知識は必要不可欠……というか、もはや機械学習は一種の統計的な手法といってもいいくらい、切っても切れない関係にあります。
そんな機械学習に必要な確率と統計について解説されています。
とはいっても、内容としては少し難しく、統計検定2級くらいの知識がある方が読みやすいかもしれません。
一応基本的に統計に関する事前知識は必要としないので、数学が得意な方であれば全く統計が初めてでも読めるかもしれませんが。
内容としては、確率、確率分布の基本的な話をしたあとに、中心極限定理、確率不等式、推定と検定の話まで行います。
こんな人におすすめ:
・機械学習や統計についての簡単な勉強はしたことがあるが、もっとちゃんと機械学習で使う統計の勉強がしたい
キーワード:
確率分布、ベイズ、マルコフ連鎖モンテカルロ法、中心極限定理、最尤推定、最小二乗法、仮説検定

シリーズ内の他の書籍のほとんどは、だいたいこのくらいの統計知識を前提に話している印象でした。

・オンライン機械学習

難易度:1
概要:
オンライン学習とは、全てのデータで一気に学習するのではなく、次々と与えられるデータを順次使って学習していう手法です。
例えばWebデータや、どんどんモデルを改善していくようなものだと、手元に全てのデータがあるわけではないので、必然的にオンライン学習を考えることになります。
また、大量のデータがあってメモリにのらないとか、全部処理するには時間がかかりすぎるとか、そういった効率面でもオンライン学習は優秀なので、全く使わないという人はなかなかいないと思います。

そんなオンライン学習はある意味機械学習の基本分野なので、機械学習そのものについても結構やさしめに解説がされています。
具体的には、数学や機械学習の基礎の確認から始まり、その中でオンライン学習がどのように使われるのかが解説され、最後には実装面でのアルゴリズム……例えば浮動小数点の桁落ちの話がでていたりします。

全部で150ページほどで、結構広範囲のことが書いてあるので、一つ一つについてはあまり詳しく書かれていませんが、全体としてどのようにオンライン学習が使われているかを見るにはいいかと思います。
こんな人におすすめ:
・大量のデータや、徐々に増えていくデータに対し、次々と学習させていくオンライン学習の理論が知りたい
・機械学習の基本的な内容で、オンライン学習がどのように使われているかを知りたい
キーワード:
オンライン学習、パーセプトロン、SVM、ロジスティック回帰、自然言語処理、深層学習、確率的勾配降下法、リグレット解析

機械学習をしている人ならだいたいオンライン学習はしているかな、というのと、機械学習の入門的な内容の全体をさらっている感じがしたので、「基礎」の中に入れました。

・深層学習

難易度:1
概要:
ちゃんと読み込めていないのでわからないのですが(最初に書いたとおり1冊1時間で読んだので)、「これならわかる深層学習」との差がないように感じました。
見落としているだけでしょうか?
むしろ比較的丁寧に解説されている「これならわかる深層学習」の方が、深層強化学習についても触れているので、プロフェッショナルとうたっているシリーズの深層学習より網羅的であるように感じました。
どちらかというと、こちらの深層学習は、一直線に深層学習について学ぶことができるので、その点では読みやすいかもしれません。
こんな人におすすめ:
・深層学習の理論を一直線に勉強したい
・複数の深層学習の本を読んで理解を深めたい
キーワード:
ニューラルネット、勾配降下法、誤差逆伝播法、自己符号化、スパース正則化、CNN、RNN、LSTM、ボルツマンマシン

深層学習もどの分野でも出てくる基本的な内容になっているので、こちらに入れました。

この本が「これならわかる深層学習」より良い点……簡潔さ以外に見つけたら教えて下さい。

手法・アルゴリズム

次は様々な機械学習や統計的な手法とアルゴリズムについて、それぞれ解説している書籍です。
ちなみにここでの区分けはかなりざっくりとしていて、次の「統計的理論」という区分けとの違いは、なんとなくこっちのが実践的で手法っぽい感じ、という感じです(ふわふわしていてすみません)。
実際、多くの分野がお互いにまたがっているので、区分けがもはや意味をなさない感はあります。

・オンライン予測

難易度:2
概要:
オンライン機械学習とタイトルがほぼ同じですが、こちらはより専門的に書かれているのと、未知のモデルに適応する手法がメインであることに違いがあります。
例えば、書籍の初めの方では、リグレットという「後悔」を表す指標が登場しています。これは「本当だったらこっちの選択のがよかったのに……」という行動の評価を低く設定するものです。
書籍「オンライン機械学習」ではリグレット解析について最後に少し触れていますが、この書籍では最初に触れられ、その他の大きなトピックとしてはオンライン凸最適化、ランダムネスと組合せ論的なオンライン予測について述べられています。
こんな人におすすめ:
・オンライン学習・予測について、専門的に勉強してみたい
キーワード:
オンライン学習、リグレット、エキスパート問題、オンライン凸最適化、FTRL、FPL、

リグレットという指標は他の本でもちょくちょくでてきます。

個人的にはカラテオドリの定理という名前が気になったので、組合せ論的オンライン予測についてちょっと勉強してみたいなと思いました。

・サポートベクトルマシン

難易度:2
概要:
サポートベクトルマシン(SVM)とは、もともとは2値分類問題で2つのクラスの境界を作る手法でした。
それがだんだん、線形でなくなったり、分類ではない予測問題で使われるようになったりと、進化していきました。
SVMはkaggleなどではあまり見ませんが、今でも使われている手法で、どんな状況で活躍できるのか、どうやって様々な問題に適応できるのかということが、この本では理論的に書かれています。
また、どちらかというと実践向けに書かれていて、具体的にはSVMの基礎から始まり、最適化手法の一つである分割法を含む多くの手法や、R言語での実装も最後に書かれています。
こんな人におすすめ:
・SVMについての実装の理論を勉強してみたい方
キーワード:
SVM、分類問題、回帰分析、次元削減、カーネル関数、分割法、逐次学習、構造化SVM、弱ラベル学習

SVMはどんな機械学習の入門書にも書いてあるような基本的な手法の一つですが、それについての専門書ということで、最適化手法など結構詳しく載っている印象でした。

どんな問題にもモデルとの相性があると思いますが、今直面している問題がもしSVMが向いているのであれば、論文等で最新の手法をさらう前に、このような体系的に書かれた本を読むのも良いのかなと思います。

・強化学習

難易度:2
概要:
「Pythonで学ぶ強化学習」は、実装と直感的な理解がメインでしたが、こちらはがっつり理論の話で、序盤からしっかり強化学習の世界について学ぶことができます。
強化学習を理解するためには「マルコフ決定過程」と「動的計画法」についてまずは理解しないといけないそうなのですが、この2つについても必要な分だけしっかり解説しているのが特徴だそうです。
ちなみに「マルコフ性」とは「確率分布が現在の状態にのみ依存するという仮定」のことであり、「動的計画法」とは「帰納的に計算して最適化問題を解くアプローチ」のことです(かなり大雑把ですが)。
それらの基礎を学んだ後に、「Pythonで学ぶ強化学習」でも登場した手法や、マルコフ性をもう少し厳しくした状況での学習などを学ぶことができます。
こんな人におすすめ:
・しっかりと強化学習の入門書を勉強したい
キーワード:
強化学習、マルコフ決定過程、動的計画法、ベルマン作用素、リグレット、オンライン学習、Q学習、深層強化学習、部分観測マルコフ決定過程

強化学習は、イメージ的にロボットとかゲームのAIを強くする手法なのかと思ってしまいますが、活躍の場は結構広いので、いずれしっかり勉強したいと思っています。

・バンディット問題の理論とアルゴリズム

難易度:3
概要:
「バンディット問題」とは、「選択肢から一つを選びその結果によって報酬を得ることを繰り返す時、報酬の合計を最大化する方法についての問題」です。
その本質は「探索と知識利用のバランス」にあり、最適化を目指すなら、より大きい報酬をどれだけ「探索」するか、今までの結果から得た「知識を利用」してどれだけ報酬を得るか、という2つのバランスにかかっています。
そんなバンディット問題について、基礎を固めたあとにどのように応用していくかを学ぶことができます。
こんな人におすすめ:
・バンディット問題について学びたい
・探索と知識利用のバランスの最適化手法を知りたい
キーワード:
バンディット問題、確率的バンディット、敵対的バンディット、大偏差原理、リグレット解析、UCB方策

バンディット問題のような問題設定は結構あるので、知っていると役立つ部分も多いのではないかと思います。

・トピックモデル

難易度:3
概要:
例えば「エンタメ」「学術系」「ニュース」など、文章や画像などのデータをカテゴリー分けする「トピック」について、理論的に書かれている書籍になります。
始めは確率の基礎から始まり、徐々にモデルを拡張して表現できる幅を広げ、最終的に文書以外に適用する方法や、トピック数の推定の話まで学ぶことができます。
モデルの拡張の部分は、まず1つの確率分布にすべての単語が所属する「ユニグラム」から、トピック毎に異なる確率分布をもった「混合ユニグラム」、そして文書が複数のトピックをもつ「トピックモデル」へと拡張されていきます。
こんな人におすすめ:
・トピックモデルの理論を学びたい
・カテゴリー分けをするような問題に興味がある
キーワード:
トピックモデル、確率分布、ユニグラム、混合モデル、最尤推定、ベイズ、変分ベイズ、ギブスサンプリング

全体を通して、たまに変な名前の定理なんかがでてくるのが癒やしだったのですが、今回はトピック数の推定の話で中華料理店フランチャイズがでてきました。

・関係データ学習

難易度:3
概要:
関係性のデータについて扱うことは多々あるかと思います。
例えば、ネットワークのつながりや、1つ上で紹介している「トピック」を共有しているというのも一種の関係性です。
そんな関係性は、グラフ理論的なグラフによる表現の他に、行列を用いて表現することが有用です。
その関係性の行列表現について学ぶことができるのが、本書になります。

行列表現の方法としては、例えば i と j に関係があるなら、(i j)-成分を1にするといったように表現する方法がありますが、これでは行列が大きくなってしまうので、その本質部分だけを分解するような手法が有用になります。
そんな行列分解の手法を学び関係データを解析していくことが本書のゴールになります。

また、行列の軸を増やしたテンソルについて学ぶことができるのも本書の特徴です。
こんな人におすすめ:
・関係データを解析する手法を学びたい
・関係データを行列で表現した際の扱い方について学びたい
キーワード:
関係データ、行列分解、テンソル分解、クラスタリング、SBM

テンソルについては、その演算などについても載っていて、深層学習などでテンソルはよく出てくるので、そういった理解にも使えるのかなと思いました。

・異常検知と変化検知

難易度:3
概要:
まえがきに書いてあるなのですが、こちらは著者の一人が書いた「入門 機械学習による異常検知ーーRによる実践ガイド」の続編だそうです。
一応この本だけでも完結していますが、そちらを読んだほうが読みやすいのかもしれません。
本書はの流れは、基礎のあとに、外れ値検出、応答異常、変化検知、構造学習と密度費についてそれぞれ学んでいく流れになっています。

異常検知は、それ自体が目的でない場合でも、例えばデータの外れ値を除去する目的で行うデータクレンジングにも適用することができます。
こんな人におすすめ:
・異常検知や変化検知に興味があり、著者の一人が書いた前著や、それ以外の入門書を読んだあとに、より発展的な内容を体系的に学びたい方に
キーワード:
異常検知、変化検知、ホテリングのT^2法、ナイーブベイズ法、近傍法、カーネルトリック、ガウス過程回帰、カルバック・ライブラー密度比推定法

内容とは関係ありませんが、シリーズものなのに前作がシリーズ内になく、かつ別の出版社ということがあるのかと驚きました。

統計的理論

今度はより理論的な内容について書かれた書籍です。難しいものが多いです。

・統計的因果探索

難易度:2
概要:
因果関係と相関関係は大きく違いますが、特に相関関係はわかっていてもそこに因果関係があるかがわからない場合が多いです。
そのような状況で因果があるかを調べることが「因果探索」であり、それについての理論が書かれています。

因果探索には主に3つのアプローチがあり、本書ではそのうちの特にセミパラメトリックアプローチに主眼を置いています。
これは、関数形と外生変数に仮定をおくパラメトリックアプローチと、そのどちらにも仮定をおかないノンパラメトリックアプローチの間みたいなもので、関数形には仮定をおいて外生変数にはおかないものになります。

その中で特にLiNGAMモデルというモデルについて解説されていますが、これは関数形として線形性を、外生変数はほとんど仮定をおかず「非ガウス性」などを仮定しているモデルです。このような条件が合えば因果グラフを推測できるということを示したり、そのLiNGAMモデルについて深く学ぶことができます。
こんな人におすすめ:
・因果探索について理論的に勉強したい
・セミパラメトリックアプローチやLiNGAMモデルについて学びたい
キーワード:
因果推論、セミパラメトリックアプローチ、LiNGAMモデル、非ガウス分布

著者がユーモアのある人のようで、まえがきにはウコンの話が出てきます。

・ガウス過程と機械学習

難易度:3
概要:
ガウス過程とは、とてもざっくりというと、確率の分布がガウス分布になるよ、ということなのですが、それを仮定することで便利な性質が色々と導くことができます。
しかし、ガウス過程の内容は結構難しく、教科書ではたいてい後半からおまけ程度に語られるようなことが多いそうです。
そんな比較的難しい分野なのですが、それを直感的にでも理解して、とりあえず全体像を眺めてから、細かいところを勉強していこう、というような趣旨になっています。

内容としては、はじめに全体の概要を簡単に説明してから、線形回帰モデル、ガウス分布、そしてガウス過程とその適用について話していく流れです。
こんな人におすすめ:
・ベイズ推定のその先の1つの分野について学んでみたい
・ガウス過程について学びたい
・予測問題の統計モデルについて勉強したい
キーワード:
ガウス過程、ガウス分布、線形回帰、ニューラルネット、確率分布、GPVLM

関数の雲という言葉がでてきます。これは、ガウス過程回帰で求めることができる、値のわからなさ具合だそうです。

どれくらいわからないかがわかるかということは、どれくらいわかるかがわかるということで、その有用性はなかなか高いわけです。

・変分ベイズ学習

難易度:3
概要:
ベイズの理論は、推定の精度や、過学習の問題など、機械学習の性能を向上させる上では外せない理論です。
しかし、ベイズ学習的なアプローチをまじめに行うと、解析的にも数値計算的にも難しい場合があります。その問題の解決法の1つが、良い近似を得る手法である変分ベイズ学習です。

変分ベイズ学習は「事後確率分布をある制約を満たす関数の集合から選んで期待値計算を可能にする手法」なのですが、その制約の設計指針について学ぶことができます。
それによって、論文などではあまり説明されないような過程などについても、理解ができるようになるそうです。
こんな人におすすめ:
・ベイズ学習の勉強をして、次はその発展的な内容の1つである変分ベイズについて勉強しようと考えている方に
・他書や論文を読んでいて出てきた変分ベイズの制約条件などの理解をしたい方に
キーワード:
変分ベイズ、ベイズ、共役性、経験ベイズ学習、条件付き共役性

変分ベイズが登場する書籍は多い印象でした。ベイズ的なアプローチを応用する分野では、常套手段なのでしょう。

・ノンパラメトリックベイズ 点過程と統計的機械学習の数理

難易度:3
概要:
ノンパラメトリックベイズも、変分ベイズと同様ベイズの理論を応用したものの1つです。
こちらは、より柔軟にモデリングを行う手法で、著書の中では「誤解をおそれずにいえば無限次元空間での統計モデル」と表現していました。

内容としては、ベイズを含む基礎知識のあとに、ノンパラメトリックベイズの紹介をし、最後はすでに学習済みの人に対してより深い理論を解説するという流れになっています。
こんな人におすすめ:
・ベイズの理論について学び、その応用分野でより柔軟なモデリングが可能なノンパラメトリックベイズに興味がある方
・因子分析、スパースモデリングへの応用に興味がある方や、より深いノンパラメトリックベイズの理論的な背景に興味がある方
キーワード:
ノンパラメトリックベイズ、ベイズ、確率分布、ギブスサンプリング、ディクレリ過程、因子分析、スパースモデリング、測度論、点推定

無限次元を考えるというのは、より大きな視点からだと観察しやすいみたいな発想だったのでしょうか。

・グラフィカルモデル

難易度:3
概要:
こちらは確率モデルをグラフを用いて記述するという考え方が、グラフィカルモデルになります。。
具体的には確率変数同士を辺でつないだものを考えるもので、ベイズ的な考え方と親和性が高く、書籍の中でもベイズの話が多く出ます。

また、方向付きのグラフで考えて、ベイズの理論を表現するのに適しているベイジアンネットワークとは別に、方向がないグラフを考えることでマルコフ確率場を表現できます。

そのほかにも、与えられた条件のもとで確率を最大にする組み合わせを求める、MAP割り当ての計算などについて学ぶことができます。
こんな人におすすめ:
・グラフィカルモデルについて勉強したい
・ベイジアンネットワーク、マルコフ確率場、MAP推定について勉強したい
・複数の確率変数が影響しあっている問題について考えている
キーワード:
グラフィカルモデル、ベイジアンネットワーク、マルコフ確率場、MAP推定、因子グラフ、確率伝搬法、ボルツマンマシン、隠れマルコフモデル

シリーズの中にベイズに関わる本が多数出ていることからも、機械学習の理論の理解にベイズの理論は不可欠だということがわかります。

・ベイズ深層学習

難易度:3
概要:
深層学習は大量のデータを学習したり、様々な問題に適応させるといった長所がありますが、何故その予測をしたかなどはブラックボックス化してしまう傾向にありました。
一方ベイズ統計は説明能力は高いものの、大量で高次元なデータの解析には比較的不向きでした。
そんな2つの手法の長所と短所を補い合う形で作り出されたのが、ベイズ深層学習という手法です。

本書では、深層学習とベイズの必要な基礎知識について最低限話し、その後でベイズ深層学習について話していく流れになっています。
こんな人におすすめ:
・深層学習やベイズ統計については勉強したことがあって、その2つの(もしくはどちらかの)弱点を補うような手法を探している
・ベイズ深層学習に興味がある
キーワード:
ベイズ深層学習、ベイズ、深層学習、ニューラルネット、線形回帰、グラフィカルモデル、ガウス過程、MAP推定、マルコフ連鎖モンテカルロ法、ギブスサンプリング、変分ベイズ、ノンパラメトリックベイズ

変分ベイズ、ノンパラメトリックベイズ、ガウス過程、グラフィカルモデルなど、上で紹介したものがふんだんに出てきます。

だからといって、上のものより難しいわけではなく、それぞれより深いレベルまで書かれているので、深層学習とベイズの基礎知識があれば本書もおそらく読めると思います。

ちなみにこの書籍にはインド料理過程なるものが出てきます。

・統計的学習理論

難易度:3
概要:
機械学習の統計的性質について、理論的に述べられている本で、主に以下の3つのテーマを扱っています。
・一様大数の法則
・普遍カーネル
・判別適合的損失
数学的な内容については、学部3年までの解析系の科目をしっかりと修得していること、と書いてあるので、なかなか難しいことは想像していただけるかと思います。
それ以外にも、「サポートベクトルマシン」の書籍にはなかった、実装ではなくもっと理論的な部分について載っていたり、ブースティングの有用性についても解説されています。
こんな人におすすめ:
・上記内容の機械学習の理論的な部分をしっかりと勉強したい。
キーワード:
一様大数の法則、普遍カーネル、判別適合的損失、VC次元、カーネル法、SVM、ブースティング、多値判別

全体の中でもトップレベルで難しかった印象です。

モデルの最適化とその理論

次はモデルの最適化手法とその理論についてメインで書かれている書籍になります。

・機械学習のための連続最適化

難易度:3
概要:
連続性を含むいくつかの制約をもった関数と、いくつかの条件を満たす制約条件を表す集合のうえで考える最適化問題を、連続最適化といいます。
本書は特に非線形なものについて注目していて、凸解析などを用いて様々な最適化手法の紹介をしています。
最後にその最適化手法がどのように機械学習で使われているかを見ていくのですが、そこで扱われているスパース学習や行列空間上の最適化が、他の書籍にない特徴だそうです。

また、シリーズ内の他の書籍と比べても比較的ページ数があり、連続的最適化問題について、体系的に、網羅的に紹介されている印象でした。
こんな人におすすめ:
・連続的最適化、非線形最適化について体系的に学びたい
・スパース学習や行列空間上の最適化について体系的に学びたい
キーワード:
連続最適化、非線形最適化、スパース学習、行列空間上の最適化、凸解析、勾配降下法、ニュートン法、共役勾配法、凸最適化問題、ラグランジュ関数、SVM

この書籍は、このシリーズの他の書籍の最適化問題についても軽く触れていて、網羅的な印象でした。

特定のジャンルを学びたいということでなく、最適化問題についてこのシリーズ内から学びたいということであれば、こちらから学ぶのがいいと思います。

・確率的最適化

難易度:3
概要:
確率的最適化とは、データ等を分割して、ランダムにその部分部分を解いていくことで最適化していく手法のことです。
ランダム性を入れることで、汎化性能(未知のデータに対する性能)を上げることなどが期待できます。

本書では一貫して凸解析について扱っていて、その凸解析と機械学習の基礎を学んだあとに、確率的最適化について学ぶという流れになっています。
確率的最適化には「オンライン型確率的最適化」と「バッチ型確率最適化」があって、その使い分けはデータが逐次的に観察されるような場合かどうかが鍵になるのですが、オンライン型確率的最適化からは、確率的勾配降下法の収束レートなどが導かれます。
また、分散処理時の確率的最適化についても書かれています。
こんな人におすすめ:
・確率的最適化について学びたい方
・確率的勾配降下法を含む、凸性とランダム性を用いた最適化手法の理論に興味がある
キーワード:
確率的最適化、凸解析、オンライン型確率的最適化、バッチ型確率最適化、確率的勾配降下法、

凸解析は他の書籍にもよく出てくる印象です。

・劣モジュラ最適化と機械学習

難易度:3
概要:
集合の部分集合から、実数値への関数を集合関数といいます。
この集合関数はもちろん離散的な関数ですが、連続関数の凸製のような性質を持つとき、劣モジュラ性をもつといいます。
そして離散的な問題を考えているときに、この劣モジュラ性を仮定して最適化問題を考えるのが、本書の主なテーマです。

この離散的な問題の最適化のどこにうまみがあるのかというと、例えば特徴量の中から、効果を最大化するような組み合わせを選ぶことは、特徴量の部分集合から効果値への集合関数を考えることに近いです。
つまり、このような特徴選択の問題に劣モジュラ最適化の手法が使えるということです。

そんな可能性を秘めた劣モジュラ最適化について、その基礎から、グラフカットや構造正則化学習について学ぶことができます。
こんな人におすすめ:
・離散的な最適化問題について知りたい
・劣モジュラ最適化について勉強したい
キーワード:
劣モジュラ最適化、集合関数、劣モジュラ性、凸性、離散、文書要約、センサ配置問題、特徴量選択、グラフカット、マルコフ確率場、構造正則化学習

ここでも凸性が鍵になっています。

連続関数の最適化問題に比べると、比較的最近注目され始めた分野だそうです。

・スパース性に基づく機械学習

難易度:3
概要:
スパース性とは「まばらである」という意味です。
機械学習では例えば特徴量のほとんどが0であるとか、関連して特徴量に対してサンプル数が極端に少ないであるとか、特殊なパターンが多くそれらのデータが十分にない状態を、広い意味でスパース性を持っているといいます。
そんなスパース性を利用した最適化手法や、正則化などについて、学ぶことができます。
こんな人におすすめ:
・スパース性やそれを利用した手法について学びたい
・次元がサンプル数より大きい問題を扱っていたり、予測の説明力をあげたりしたい
キーワード:
スパース性、正則化、l1ノルム正則化、トレースノルム、スパース正則化、アトミックノルム

正則化などでスパース性を導くことによって特徴量などを減らし説明力をあげるというのは、直感的には理解できますが、それを数式で表すというのはなかなか簡単には思いつかなさそうだなと思いました。

トピック

次は機械学習を用いる分野によって分かれて書かれている書籍です。

・生命情報処理における機械学習 多重検定と推定量設計

難易度:2
概要:
生命情報処理に利用できる機械学習手法とその応用方法について書かれています。
最初に生命科学において本書で必要な知識は基本的に書かれているので、生命科学の知識に明るくない人でも読めるようになっています。
機械学習については主に2つのトピック、「多重検定」と「推定量の設計」について扱っています。
また、生命科学の方のトピックのメインはDNAとRNAの配列解析です。
こんな人におすすめ:
・機械学習を生命科学の応用したい人
・生命科学の、特にDNAやRNAの配列解析をしていて、機械学習や統計の知識が少しある人
キーワード:
生命科学、生命情報科学、DNA、RNA、配列解析、多重検定、推定量の設計

機械学習でDNAなどを解析できるというのは、なんだかわくわくするなと思いました。

・画像認識

難易度:2
概要:
画像認識について、クラス認識の手順に従った内容から、CNN(畳み込みニューラルネットワーク)、物体検出、インスタンス認識と検索、そしてセマンティックセグメンテーションについて学ぶことができます。
つまり、現在の画像認識の問題の理論を網羅的に抑えることができます。
多くの入門書でCNNまでは扱っていますが、Bag of Words(BoW)から派生したBag of Visual Words(BoVW)を用いたインスタンス認識(対象物体の特定)なども扱っていて、より網羅的に、体系的に学ぶことができます。
こんな人におすすめ:
・画像認識をしている人、これからしようと思っている人
キーワード:
画像認識、クラス分類、物体検出、インスタンス認識、フィルタリング、CNN、主成分分析、白色化、コーディング、プーリング、BoVW、セマンティックセグメンテーション

私事ですが最近画像認識の勉強をしていたので、一番刺さった一冊でした。

・深層学習による自然言語処理

難易度:2
概要:
自然言語処理について、古典的な手法はあえて基本的に載せずに、深層学習に絞って書かれています。
RNNやCNNの基礎を含むニューラルネットや言語処理における深層学習の基礎から、機械翻訳、文書要約、質問応答への応用、そして特徴的なのが実装を意識したGPUの利用やメモリ管理の注意についても述べられています。
応用部分では詳しいアルゴリズムも載っているので、理論だけでなく実践的な内容も学ぶことができます。
こんな人におすすめ:
・自然言語処理について、深層学習を使ったアプローチを、理論と実践的な内容のどちらも体系的に学びたい
キーワード:
自然言語処理、深層学習、RNN、LSTM、CNN、機械翻訳、文書要約、対話、質問応答、GPU、正則化、カリキュラム学習

一つ一つについて詳しく書いてあるという感じではなく、あくまで網羅的に書いてあるので、この書籍を読んだあとに、気になった部分を補っていくような読み方がいいかと思います。

・音声認識

難易度:2
概要:
まだまだ発展を続けている音声認識と分野の論文が読めるようになることを目標とした、音声認識全般を体系的に学べる書籍です。
そもそも「音とは」というところから始まるので、機械学習の基礎がわかっていれば、本書を読むことができると思います。
内容としては主に、音の前処理的な部分、古典的な音声認識、隠れマルコフモデル、言語モデルについて、雑音の処理、そして深層学習となります。
こんな人におすすめ:
・音声認識について学びたくて、論文を読めるレベルまで体系的に学びたい人
キーワード:
音声認識、深層学習、隠れマルコフモデル、確率的言語モデル、形態素解析、耐雑音音声認識、話者適応、LSTM

音声認識は画像や言語処理に比べると扱いづらい印象がありますが、だからこそ学ぶことの価値があるとも思います。

周辺知識

最後に機械学習の周辺知識的な内容の書籍についてです。

・ヒューマンコンピュテーションとクラウドソーシング

難易度:2
概要:
本書は他のホントはかなり内容が違っていて、機械学習をとりまく環境についての話になります。
ヒューマンコンピュテーションとは、コンピュータのみでは解決が難しい問題に、人間の能力を合わせて解決していくという考え方のことです。
この考え方が機械学習とどう関係があるのかというと、例えばクラス分類における学習データの「ラベル付け」は、基本的に人間によって行われています。
これを機械ができるようになったら、それはもうラベルを学習できるようになっているので、学習する意味がないわけですが、極端にいうとこういった形で少なくとも人間も機械学習の過程の一部になっています。

そんなヒューマンコンピュテーションについて、クラウドソーシングをすることで人手を補うことも考えられますが、それをどのように効率よく行うか、その他にもお金をかけずに行う手法や、もっと能動的に手伝ってもらう手法などについて紹介されています。
また、そういった方法論だけではなく、その妥当性や、働くものの能力の推定などを、数式を用いて解説しています。
こんな人におすすめ:
・実務で機械学習を行う上で人手が欲しくなり、より効率的にデータ収集等を行いたいと考えている方
・機械学習をとりまくヒューマンコンピュテーションについて研究をしたり、コンテストを開催して大規模なモデルの募集を行ったり、そういったイベントの効果を定量的にはかりたいと考えている方

例えば、ログイン画面などで、へにょへにょになった文字を当てさせて人間かどうか試す……みたいな方法がありますが、このへにょへにょ文字を2パターン答えてもらい、片方は本当にチェック用に、片方はラベル付けをしてもらう目的で行えば、人手を使わずともラベル付けを行うことができます。

機械学習はモデル作成が花形ではありますが、実際は泥臭いデータ集めやデータの整形などが作業時間のほとんどだったりするので、こういった本を一度さらって眺めておくものおもしろいかもしれません。

・ウェブデータの機械学習

難易度:2
概要:
本書はWebデータを機械学習でどのように扱うことができるか、ということについて書かれた本です。
主な内容としては、最初にWebデータの特徴、バースト検出(盛り上がりの検出)、評判分類、意味表現、グラフデータの処理、順序学習となります。

Webデータはオンライン学習的な手法との相性がよかったり、基本はデータがテキストですが画像や音声などもデータとして含まれていたり、またリンクの関係をグラフにすることができたり、検索の順序を考えたりと、機械学習の対象や利用できるものは多くあります。
そんなWebデータと機械学習の繋がっている部分を網羅的に学ぶことができます。
こんな人におすすめ:
・現在抱えている機械学習の問題とWebデータに接点がある
・Webデータを使って何かを機械学習をしたいと考えている
キーワード:
Webデータ、バースト検出、評判分類、素性抽出、ロジスティック回帰、意味表現、データマイニング、ページランク、グラフデータ、順序学習

機械学習の発展に寄与したものは、ハードの改良による計算量の向上だけではなく、ビッグデータによって学習データを得やすくなったことが大きく、そのデータが集まったのはまさにWebのおかげなので、このあたりの知識はとても大事なものになっていくのかなと思いました。

・データ解析におけるプライバシー保護

難易度:2
概要:
本書はデータ分析をする上で気をつけなければならないプライバシー保護の問題について、以下の3つの観点で扱われています。
・仮名化/匿名化
・差分プライバシー
・秘密計算
仮名化/匿名化は、データから個人を特定されないようにするための技術で、仮名化はデータの名前をIDなど別のものに、匿名化は年齢や性別などから個人を特定できないようにすることです。
差分プライバシーは、統計量から個人を推測できる状況を防ぐものなのですが、例えば、とても極端な例ですが「このクラスのテストの最低点は25点で、赤点は一人だった」と教師が言い、「うわー俺赤点だー」といった生徒がいたら、その生徒の点数がわかってしまいます。そういったことを防ぐ技術が差分プライバシーです。
秘密計算は、情報を秘密にしたまま計算する技術で、例えばサーバーごとにデータがあったときに、そのデータを全て結合するのではなく、暗号化されたまま計算することで、プライバシーを保護することができます。
これらについての理論を、基礎から体系的に学ぶことができます。
こんな人におすすめ:
・プライバシー保護の理論について知りたい
・大規模なデータを管理していて、そのプライバシー保護の技術を理論も含めて知りたい

プライバシー保護はデータを扱うものとして気をつけなければならないなと思います。

この本とは関係がないのですが、データをとりまく著作権事情もなかなか気になるところではあります。

3.ジャンル・テーマ毎の書籍紹介

ここまでで一通りの書籍紹介は終わりました。

次からはジャンルやテーマ毎に、独断と偏見で上記のおすすめ書籍を紹介していきます。

とりあえず理論の勉強をしたい!

目的があった方が学びやすいとは思いますが、「とりあえず理論の勉強をしたい!」という方に、どんな機械学習でも必要そうなものという観点で、どの順番で読んでいけばいいかを私なりにまとめました。

1.これならわかる深層学習入門
2.機械学習のための確率と統計
3.ベイズ推論による機械学習入門
4.オンライン機械学習
5.ウェブデータの機械学習
6.ベイズ深層学習

まずは入門的な内容が多く載っていて、かつどこでも使いそうな深層学習について学べる「これならわかる深層学習入門」から始めるのがいいと思います。

次に、理論の勉強をするのであれば確率と統計は重要なので、「機械学習のための確率と統計」(とはいっても、ある程度難しいです)。

確率と統計が終わったら、その知識を使って、機械学習の理論を支えているベイズを勉強するために「ベイズ推論による機械学習入門」がいいと思います。

ここまでで専門的な内容にいっても十分だと思いますが、まだ特定の興味がないのであれば、どの分野でも必要な「オンライン学習」を勉強するのがいいと思います。

そして、データを収集するために必要になってくるであろうWebを扱うために、オンライン学習とのつながりも意識しながら「ウェブデータの機械学習」を学ぶのがいいと思います。ここで、言語処理についても少しだけ学ぶことができます。

最後に「ベイズ深層学習」を選んだのは、ベイズ系の知識が網羅的に載っていて、かつ流行りの深層学習との交わりが学べるので、全体を俯瞰して見ることができるのではないかと思ったからです。

強化学習を勉強したい!

次は、強化学習に興味がある!という方に向けた順番です。

1.Pythonで学ぶ強化学習
2.強化学習
3.バンディット問題の理論とアルゴリズム
4.グラフィカルモデル

強化学習という1つの目的があるなら、まずがコードを動かしながら学べる「Pythonで学ぶ強化学習」で外観をつかみ、「強化学習」でしっかりと理解をするのがいいと思います。

さらに勉強したい!という方にあげるとしたら、次は「バンディット問題の理論とアルゴリズム」かなと思いました。バンディット問題とは報酬の合計を最大化する問題のことなので、強化学習とは相性が良いと思います。

また、基礎的な内容で不足している部分があると感じたら、「とりあえず理論の勉強をしたい!」から必要なものを選んで読むのがいいと思います。

最後の「グラフィカルモデル」については、強化学習でも出てくるマルコフ過程についてや、何かと必要になってくるであろうベイズについても触れていて、相性が良いかなと思いあげました。

株でひと儲けしたい!

次は、株価予測などの、時系列データの予測等に興味がある方向けにおすすめの書籍です。

1.オンライン機械学習
2.オンライン予測
3.ウェブデータの機械学習
4.異常検知と変化検知
5.これならわかる深層学習入門

株価のような時系列データであれば、オンライン学習との相性がいいと思うので、まずはここから勉強するのがいいと思います。

次にバースト検出……つまり株価の盛り上がりなどを検出する技術についても学ぶことができる「ウェブデータの機械学習」を学ぶのがいいと思います。

そして、異常値などに反応して売り買いを行うと思うので「異常検知と変化検知」。

最後に、まぁ結局なんだかんだ深層学習が優秀なので、「これならわかる深層学習入門」を勉強するのがいいと思います。

とりあえず結果を出したい、という意味で深層学習を実装するのはいいと思うのですが、その結果を理解する説明力みたいなものは深層学習は低いので、より結果を伸ばしたくて理論を勉強したい人が読むのであれば、深層学習はとりあえず後回しかなと思いこの順番にしました。

データ分析をしたい!

データ分析といっても色々あると思うのですが、色々なパターンを想像してまとめてみました。

・機械学習のための確率と統計
・ベイズ推論による機械学習入門
・統計的因果探索
・これならわかる深層学習入門
・サポートベクトルマシン
・劣モジュラ最適化と機械学習
・スパース性に基づく機械学習
・データ解析におけるプライバシー保護

確率と統計は一番重要だと思います。分析してもその結果を解釈できないですからね。

ベイズの話は、しっかりと統計をやっていくうえではついてくる問題なので「ベイズ推論による機械学習入門」を載せました。

「統計的因果探索」は、データが相関関係があるだけなのか、それとも因果関係があるのかということが重要になってくると思うので、重要な議論だと思います。

「これならわかる深層学習入門」、「サポートベクトルマシン」はデータ分析で使う手法として有名なので載せました。

「劣モジュラ最適化と機械学習」は、組合せ論的な問題に役立つ最適化手法が載っているので、データによってはそのまま理論が使えますし、そうでなくとも特徴量選択に役立たせることができます。

「スパース性に基づく機械学習」は、正則化の話などが載っていて、特徴量が多いデータなどにも有効な話が載っています。

最後の「データ解析におけるプライバシー保護」は、データそのものや結果の公開によって、トラブルが起きないようにするために、触りだけでも知っておく必要があると思って載せました。この本は専門的な内容になっているので、データ分析が専門の人でこの本ほどの知識を必要としている人は少ないと思いますが。

分類問題をやりたい!

分類問題も、何を分類するかなどによって変わるとは思いますが、共通して必要そうな部分をあげました。

・これならわかる深層学習入門
・画像認識、深層学習による自然言語処理、音声認識
・トピックモデル
・関係データ学習
・サポートベクトルマシン
・統計的学習理論

分類問題でもやはり深層学習は活躍するので「これならわかる深層学習入門」を入れました。

また、分類するコンテンツによって当てはまるのであれば「画像認識」「深層学習による自然言語処理」「音声認識」から選んで読むのがいいと思います。

「トピックモデル」はまさに分類問題について扱っているのでうってつけだとは思うのですが、やや難しい印象でした。

「関係データ学習」もまた関係性の話なので、分類問題とは近い部分があります。

「サポートベクトルマシン」「統計的学習理論」は、前者がSVMの実践的な内容、後者が理論的な内容になっているので、まずは「サポートベクトルマシン」を読んで、さらに詳しくSVMについて知りたいと思った方は「統計的学習理論」を読むとより理解が深まると思います。

おわりに

ということでなんだかんだ超大作になってしまいました。

最後まで目を通していただいてありがとうございます。

選書目的で見ていただいた方には、気になる1冊が見つかっていれば嬉しいなと思います。

そうでない方には、機械学習の理論の世界を楽しんでいただけていれば嬉しいなと思います。

また、冒頭にも述べましたが、あくまで1冊1時間で読んだ感想なので、もし間違っている部分や、こここうした方がいいんじゃない?という部分があったら、遠慮なく言っていただけると嬉しいです。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?