【書評】Pythonではじめるベイズ機械学習入門
はじめに
講談社サイエンティフィク様より、2022/05/24 発売、森賀新/木田悠歩/須山敦志・著の、『Pythonではじめるベイズ機械学習入門』を御恵投いただきました。ありがとうございます!!
非常に重厚な本なので、隅々まで精読できていないのですが、一通り目を通して、いくつかのコードを実行してみたので、感想を共有したいと思います。
タイトルから明らかなように、本書ではPythonにより、様々なベイズ統計モデリングや機械学習(例えば線形回帰モデル、階層モデル、状態空間モデル、ニューラルネットワーク回帰)を行う事例を紹介しています。シンプルなものはPyMC3というパッケージで、必要に応じて各種分析に適したパッケージを使用しています。
一方僕はこれまで同様の分析では、R言語上でStanを使用してきました。これは僕自身が長らくRユーザであることと、松浦健太郎・著『StanとRでベイズ統計モデリング』で主にベイズ統計モデリングを学習したことによります。
よって以下の書評では、時折これら2冊を比較しながら、本書『Pythonではじめるベイズ機械学習入門』の特長を紹介したいと思います。
本書の概要
上記のように、本書はPython上で確率的プログラミング言語を用いることで、ベイズ統計モデリングや機械学習を行うための、解説書です。
- 線形単/重回帰モデル
- 一般化線形モデル
- 階層ベイズモデル
などから導入し、数式・グラフィカルモデルとともにPyMC3のコード例を丁寧に解説しています。ここまでは『StanとRでベイズ統計モデリング』とも共通していますが、この直後に
- ガウス過程回帰モデル
の紹介が続くところが、面白いと思いました。ここで数学的には難易度が跳ね上がるので、「ええ、ここに書くんだ?!」と驚きました。『StanとRでベイズ統計モデリング』でもガウス過程について言及はありますが、恐らく難易度やコードの長さなどを考慮してか、コード例などは載っていません。
一方本書では、目的に応じて様々な確率的プログラミング言語を使い分ける方針を採用しているので、ガウス過程に特化したGPyTorchというパッケージを用いることで実装を試みています。
このあたりが、類書との違いだと思われます。
また別の章には、
ひいては深層学習モデルとして
- ニューラルネットワーク回帰モデル
- 畳みこみニューラルネットワークを利用したPixcelCNN
- 深層ガウス過程
などもたっぷり紙面が割かれています。これらまで盛り込んだ本は、そうそうないのではないでしょうか。
個人的には、時系列情報を扱う「状態空間モデル」の説明における、
ある時点tにおいて、GPSで車両位置を観測する。ただしこの観測値は真の車両位置から誤差がある
という例がとても分かりやすかったです。
類書との相違点
ベイズ統計モデリングを扱った書籍は色々とありますが、本書はいわゆる教科書のように初学者をゆっくりとスキルアップさせていくことを目的にしているというよりは、ある程度の知識・技術は習得済みであることを前提として、社会的問題にアプローチする際に必要となる可能性がある知識・技術を提供する、という位置づけなのだろうと思います。
実際、Pythonの基本的な書き方は習得済みであることを前提に、本書内では解説がありません。また書籍内で記載されている数式も、読者が線形代数に慣れていることを前提とした書き方で、『StanとRでベイズ統計モデリング』内での表記に比べるとだいぶ「難しそうに見える」と思います。
教育のことを考えると、あれやこれやと道具を使い分けるのは混乱を招きかねないので、例えばStan一本(松浦健太郎・著『StanとRでベイズ統計モデリング』)や、Rのbrmsパッケージ一本(馬場真哉・著『実践Data Scienceシリーズ RとStanではじめる ベイズ統計モデリング』)で解説を貫徹させることは意義が大きいと思います。実際にこれらの本では、非常に簡単な例からはじめ、ベイズ統計モデリングとは、データ生成メカニズムに想像を巡らせることであるということを、言葉を尽くして丁寧に説明しています。
一方で現実的なデータ分析業務を想定すると、効率的に目的を達成させられるツールを活用することも必要となるし、時には数学的にかなり難解な手法を採用するべき状況もあるでしょう。なので本書では、目的に応じてパッケージを使い分けるという立場を採用しているのだと思います。
これは著者らが全員、企業所属の研究者であることも関係しているのだろうと思います。まさに少し前に、著者らが主催する、以下のセミナーに参加したことがありました。
ここで、著者の一人である須山さんがおっしゃっていた
皆さんの中には、「企業は金を稼ぐもの」と思っている人がいるかもしれないが、その考えは古い。今の企業は、「社会的課題を解決しようとするもの」。我々はデータ分析の力を使ってそれに挑む。
という言葉が印象的でした(多少表現が違うかもしれません)。本書を読みながら、この言葉が何度も思い出されました。
なお誤解のないように言葉を補っておきますが、本書では初学者を置き去りにしているというわけではありません。むしろ、MCMCアルゴリズムや種々の確率分布について、数式や乱数発生シミュレーションによって丁寧に解説を行っており、教育的な利用にも適していると思いました。
おわりに
僕自身、勉強中の身であるし、普段はR言語を用いることが多いため、まだまだ本書を時間をかけて精読しなければなりません。特に後半の内容は初めて学ぶことも多く、読了後に改めてブログに追記するかもしれませんが、現時点で僕が読み進めた限りにおいて、上記のように非常に素晴らしい書籍だと思いました。
もちろん上記で引用した、類書である
などもおすすめです。
Enjoy!