書評

須山敦志 著「Juliaで作って学ぶベイズ統計学」(講談社, 2021)

2022年04月22日

大滝 啓介

おおたき けいすけ

株式会社豊田中央研究所

本書は近年注目されているJuliaを用いて、ベイズ統計学の基本的な考え方を実装を追いながら学ぶことができる書籍である。

Juliaは、主に計算科学や数値計算向けの高速な言語として注目を集め、使われ始めた。2018年にバージョン1.0が公開されてからは、様々な分野に適用できる汎用的な言語として利用されるようになった。日本でも2020年以降利用者が増えつつあり、機械学習で使われることの多いPythonによる愚直な実装よりも高速に動作することが多いため、プログラム実装を専門としない研究者であっても高効率な実装が期待できる。またPythonだけではなく、MatlabやFortranの利用経験があれば、比較的容易にJuliaを使い始めることができる。もしモダンなプログラミング言語を用いた数値実験などに興味がある場合には、一度利用を検討する価値のある言語である。

著者の須山氏はこれまで、機械学習の専門書として「機械学習スタートアップシリーズ ベイズ推論による機械学習入門」や「機械学習プロフェッショナルシリーズ ベイズ深層学習」を執筆している。特に「ベイズ推論による機械学習入門」ではサンプルコードをJulia (バージョン0.6想定) で提供するなど、Juliaを用いた機械学習・データサイエンスに関する情報発信を積極的に行っている。過去の2冊の書籍が、それぞれ初学習者と専門家向けの数式ベースの書籍であったことと比較すると、本書はベイズ統計の考え方は説明しつつ、Juliaで書かれたプログラムを追っていく実装中心の構成となっている。そのため、まずは手法を動かしてみたい読者や、動作によって数式のイメージを獲得したい読者には受け入れやすいだろう。

本書は7章から構成されている。1章ではJuliaの基本的な使い方と、本書で用いているパッケージやグラフ描画機能の使い方を習得する。なおJuliaはPythonと比較してグラフ描画のスタンダードな方法が1つには定まっていないため、本書ではPythonのMatplotlibを借用するPyPlot.jlというパッケージを利用している。そのため、PythonとMatplotlibの経験がある読者は、Juliaを用いた計算・グラフ描画がより簡単に理解できると期待される。

第2章ではデータ解析で利用する基本的な数値計算について学ぶ。具体的には線形代数に必要なベクトル・行列演算、データの統計量計算、数値微分や数値積分、自動微分を用いた勾配法・最適化・最小二乗法などの基本的な科学計算をコードとグラフを見ながらすばやく学んでいく。

第3章と第4章では、確率分布や確率計算の基礎を扱う。高校数学で見る「袋から赤色の球・白色の球を取り出す」という確率的試行をJuliaで実装することからはじまり、表から周辺分布や同時分布を計算する。このような簡単なプログラムを拡張し、様々な確率分布を扱えるJuliaのパッケージであるDistributions.jlを用いることで、様々な確率的計算やシミュレーションのやり方を習得していく。様々な分布をコードで扱えるようになった後には、本書のテーマである統計的モデリングの基本的な考え方をつかめるようになる。

第5章では、第3章と第4章で習得した統計モデリングの基本的な考え方について、ベイズ推論の観点から動作例と共に学んでいく。まずはじめに、ゆがんだコインのモデルとしてベルヌーイ分布を用いたモデルを作成し、データから推論を行うアプローチを身につけ、次に事前分布と事後分布・共役事前分布の関係性を学ぶ。より複雑なモデルとして、機械学習の基本的な手法である「線形回帰」と「ロジスティック回帰」を対象として、コード例と共に推論方法を習得する。

第6章と第7章では、より高度な推論手法を学習する。これらの章で扱うモデルや手法の動作を理解するために本誌のコードが役に立つだろう。また前章からのつながりから、本章でもまず「線形回帰」と「ロジスティック回帰」に対して高度な推論手法を適用していくため、6章で扱う推論手法(ラプラス近似、ハミルトニアンモンテカルロ法)がどのように動作し、賢い推論を行っているかのエッセンスを素早く体感することができるだろう。また7章で扱う高度なモデル(ポアソン回帰、階層ベイズモデル、状態空間モデル)まで含め、Juliaが提供する機能やライブラリが、多様なモデル・推論手法の実装を強力にサポートしてくれることが実感できるだろう。

先にも述べたとおり、本書はコードを中心にデータ処理を学んでいくため、本書だけで手法を深く理解することは難しい箇所もある。その際には著者の前作や他の機械学習本を紐解く必要があるが、まずは本書とJuliaを用いてデータを生成し、ベイズ統計学・ベイズ推論に触れてみることからはじめてもいいのではないか。本書を通じてJuliaの国内ユーザや研究者が更に増え、より広い応用例や実装が世の中に共有されることで、各分野の研究や学習が加速することを期待したい。