LWのサイゼリヤ

ミラノ風ドリア300円

20/10/17 機械学習入門書籍レビュー

機械学習入門書籍レビュー

機械学習書籍を6冊読んだのでメモがてらレビューを書いておく。

f:id:saize_lw:20201017172854j:plain

技術書は人文書に比べて内容が似通りがちなので、きちんと書き残しておかないと細かい内容の差異を忘れてしまう。とはいえ理系界隈では最終的に普遍性のある知見を醸成することが目的であり、解説書それぞれの差異を評価したい気運は薄いような気もするが。
最初に一応前置きしておくと、いつも素人知識を振り回している俺にしては珍しいことに、俺は機械学習に関しては素人ではない(別に玄人でもないが)。というのは分析哲学現代思想に関しては学術的な背景が特にないのに対して、機械学習はあるということだ。動物が表紙に描いてあるタイプの標準的な書籍の内容は既に頭に入っているしフルスクラッチフレームワークでの実装経験もある。

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

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

  • 作者:岡谷 貴之
  • 発売日: 2015/04/08
  • メディア: 単行本(ソフトカバー)
 
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者:斎藤 康毅
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)
 

よって、別に初学者としてわかりやすさを評価しているわけではない。が、次のサイゼミでは多分俺が他の人に機械学習を教えることになるであろう都合で、初学者にとってわかりやすいかどうかを終始気にしている。入門書ばかりを読んでいるのもそのせいだ。ちなみに挙げている本は図書館で目についた本を片っ端から掴んだだけで、選定の理由は特に無い。

1.高校数学でわかるディープラーニングの仕組み

高校数学でわかるディープラーニングのしくみ

高校数学でわかるディープラーニングのしくみ

 

良い意味で非常に平均的な解説をする良著。
ニューロンのモデル化からニューラルネットワークの計算グラフまで手早く辿り着き、学習はとりあえず後回しにして推論の説明のみでCNNやRNNの解説まで進めるスピーディーな構成は初学者でも読みやすいだろう。誤差関数周りで混乱しやすい尤度関数を導入せずに最小二乗のみで戦うのも気が利いている。

データを用いたモデル更新、すなわち学習パートは最終章でようやく出現する。この本に限ったことでもないが、ディープラーニング解説において最大の山場は間違いなく誤差逆伝播法だ。高校数学までには無い最急降下法という逐次更新のアイデアを導入すること自体がまず困難であり、数学的にも全微分偏微分というイメージと数式の結び付きを要求する高度な概念をクリアし、更にはそれを自在に運用して漸化式を得るところまで行かなくては何が逆伝播なのかわからない。

補足343:正直なところ、実装をしないのであれば俺は誤差逆伝播法はディープラーニングの理解に必須ではないと思っている。誤差関数の最小値を取るパラメタなんて大域最適解が求められることにしてしまって、「まあ実際には求められないので本当は誤差逆伝播法を使います」と補足しておけばとりあえずそれで原理を理解したことにしてよいと思う。実装上の限界を本質的なボトルネックと見るかどうかは信仰告白の領域だが、俺は見ない寄りに与する。

この本は誤差逆伝播法をかなりスマートに解説しているが、それでもタイトルにある「高校数学でわかる」という範囲は明らかに超えてしまっている。一応付録に多変数関数や偏微分の教科書的な解説が添付されており、それも込みで「高校数学しかわからなくても付録を読めばわかる」ということではあるのだろう。

2.基礎から学ぶ人工知能の教科書

基礎から学ぶ 人工知能の教科書

基礎から学ぶ 人工知能の教科書

 

タイトル通り、人工知能について広く浅く学べる教科書的な書籍。
とにかく扱っている内容の幅が広く、人工知能については概要・歴史・技術・限界、機械学習については音声・画像・自然言語・ゲーム、具体的な技術についてもGANからQ-leaningまで扱っている。

ニューラルネットについては近年の人工知能のコア技術ということもあって記述は相対的に充実しており、人工ニューロンから始めてニューラルネットの構築まで数式もきちんと使いながら標準的な説明を加えている。
誤差逆伝播法については偏微分を用いた証明を放棄して更新式を日本語で説明するという荒業によってとりあえずの記述を済ませており、なるほどその手もあるなと膝を打った。本来は数学的な正しさを確認した上で数式を解釈すべきだが(統語論的な正当性を確認してから意味論的な正当性を確認すべきだが)、説明上は逆向きでもまあいいだろう。例えば誤差関数をある重みで偏微分して得た値を「その重みが誤差に対して及ぼす影響力」と言い換えてしまえば、それを「その重みが繋がっているユニットの影響力」×「その重みにかかる入力の大きさ」で表示するのは直感的に理解できる。

強いて欠点を挙げれば、内容が幅広いことに反比例して細部の記述は貧弱なことも多い。
例えばLSTMのゲート制御が「必要に応じて」としか書かれていなかったり、ホップフィールドネットワークや自己組織化マップについても申し訳程度に描かれた計算グラフのイラストの横に解説は数行しかないので俺は全然理解できなかった。とはいえ、全く書かないよりは少しでも触れておいて学習の糸口を作ろうという意図なのだろうし、教科書と名乗る書籍としては正しい選択だ。 

3.機械学習 データを読み解くアルゴリズムの技法

機械学習 ─データを読み解くアルゴリズムの技法─

機械学習 ─データを読み解くアルゴリズムの技法─

 

既にそこそこ詳しい人向けの書籍。
行列や確率のような数学の基本や、なんなら機械学習自体を理解している前提で知識を整理する内容。わりと「わかってると思うけど一応説明しとくね」くらいのスタンスなので、初学者には全くお勧めできない。

第一章が機械学習の大枠を紹介する内容、第二章以降が各論となる。
第二章以降ではニューラルネットを扱っていなかったのでとりあえず一章しか読んでいないが、かなり有益な内容だった。機械学習をタスクとモデルと特徴量の三つに分解した上で、モデル構築の思想を幾何ベース・確率ベース・論理ベースの三種類に分けているのが非常にわかりやすかった。
前から思っていたのだが、機械学習では学習を行うモデルをどう捉えるかは状況によってかなりまちまちだ。二次元平面にデータをプロットして決定境界を引くというわかりやすい方針を取っていたかと思えば、突然条件付き確率P(A|X)が出現して尤度関数を最大化し始めるし、その次には決定木で論理的な分岐をベースにして分類をしましょうなどと言い出す。どれも直感的には正しいことがただちにわかるだけに、結局色々ある手法の違いはどこなのだよと混乱することがよくあった。

こうした違いは現象に対するモデルをどう取るかという違いに過ぎないため、完全に同一のタスクにおいてすら3つのモデルのどれを使っても良いしどれでも機械学習はできると書いてあるのを読んで、なるほどそうなのかと腑に落ちた。
例えば、メールをスパムとハムに分類する典型的なタスクの機械学習を考えよう。幾何モデルを使うならば二次元平面上にメールをプロットして決定境界を引くようなイメージで考えればよいし、確率モデルを使うならば確率過程がメールを生成しているイメージで考えればよいし、論理モデルを使うならば一定の条件式に対するTRUE/FALSEで分岐していく木のイメージで考えればよい。別にどう扱ってもよいのだ。
そしてこの三つは決して排反ではないしむしろ緩やかに連帯するというのが厄介であり面白いところでもある。結局のところどのモデルでも学習されるのはデータが持つクリティカルな要素としての特徴量であり、特徴量を欲して止まない点は共通している。

この書籍にニューラルネットに関する記述は無いが、特徴量ベースで捉えることによって幾何モデル・確率モデル・論理モデルを縦横無尽に横断するのがニューラルネットだというイメージを持つことができた。パーセプトロンのように結果を図示できるレベルの原始的なニューラルネットにおいて決定境界を描くのが幾何モデル的な捉え方、シグモイド関数・softmax関数を用いて出力を確率と見做して最尤推定を行うのが確率モデル的な捉え方、CNNで顕著なように特徴量をよく表現した隠れ層に注目して「耳や鼻があるorない」といったif分岐で解釈するのが論理モデル的な捉え方だろう。
それは数理的なテクニックというよりは思想的なアスペクトであり、ニューラルネットに先立って存在する。それがわかっただけでもかなり良い本だった(第一章しか読んでいないが)。

4.機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

  • 作者:大関真之
  • 発売日: 2016/12/01
  • メディア: 単行本(ソフトカバー)
 

悪書でこそないが、かなり微妙な本のように感じた。
姫と鏡の対話形式でフレンドリーに進んでいくので一見わかりやすそうだが、読み進めていくと暗黙の知識や実装しないとわからない欠点が挿入されたりしてスムーズに進めない。また、レベルが乱高下しがちで「この段階でそのレベルのこと言う!?」と声が出がちだ。しかしAmazonレビューではわかりやすかったという評価が多いので俺が悪いのかもしれない。
サブタイトルは「ボルツマン機械学習から深層学習まで」だが、実際にはその二つしか扱っていない。「何から何まで」的なニュアンスがミスリーディングなので「ボルツマン機械学習と深層学習」に改題してほしい。

この書籍ではニューラルネットのパラメタが「レバー」として表現されており、姫やお手伝いさんがレバーを動かすという人海戦術でパラメタを調整して最適解を探すというイメージが導入されている。それ自体は良い比喩だと思うし、数学的に説明すると割と厄介な最急降下法アルゴリズムをとりあえず直感的にわかりやすく提示できているのはかなり良かった。
ただ、レバーを用いた勾配消失問題の記述には非常に引っかかった。シグモイド関数が原因で発生した超水平面に差し掛かると姫が「レバーが硬くなって引いても動かない」と仰るのだが、正しくは「レバーをどう引いても誤差関数が少しも変わらない、変わらないのでどっちに引けばよいかわからない」のはずだ。

補足344:ここで勾配消失問題について詳説する気はないが、誤差関数のどのパラメタ方向への偏微分値もゼロになってパラメタ更新式が動かなくなるやつのこと。

ここではレバーの比喩とアルゴリズムの実体が噛み合っていない印象を受ける。
レバーの比喩で捉えている限りはパラメタは能動的に動かせるもの、設定者の考えと完全に連動した主体的な動きを行うものだと俺は解釈した。しかしアルゴリズムの実体においては主体的に振る舞うのはアルゴリズムであり、パラメタはアルゴリズムに指定されたように受動的に動くもの、働きかけられる対象となる。
よって、勾配消失した際にアルゴリズム上での受動的なパラメタは動けなくなるが、設計者の思い付きによって任意に指定すること自体は依然として動作可能である。レバーそのものが動かない事態があるとしたらそれは特異点写像先が未定義の点に進もうとしている場合のはずで、かなりミスリーディングな記述のように感じた。

5.やさしく学ぶ機械学習を理解するための数学のきほん

説明がわかりやすい良著だが、別に言うほど優しくはない気はする。
「数学の基本」というよりは「『機械学習の数学』の基本」であり、「数学は既にある程度理解しているが機械学習の数式がよくわからない」という人に向けた本であるような印象を受ける。確かに総和記号シグマの使い方から教えてくれる付録が巻末に付随してはいるが、逆に言えば「数学の基本」は巻末で読んで自分で勉強してねというくらいの扱いと言うことだ。ミオがアヤノに教えるという対話形式を取っているが、アヤノも一応理系プログラマーなので物分かりが良すぎるような印象も受ける。
別に偏微分概念それ自体を優しく説明しているわけではない代わりに本文中では機械学習に頻出する数式を丁寧に微分したりすることに労力が割かれている。その説明は確かに非常に丁寧で、特に式変形を一つ一つ追ってくれるのは嬉しいところだ。数学書や技術書を読んだときに式変形に飛躍があって意味不明になった経験のない理系はこの世に存在しないだろう。その点、この本は合成関数を分解してそれぞれを第一項から微分していくということを丁寧にやってくれるため、躓くことがない。

書籍の後ろ半分は評価と実装についての話題が占めており、機械学習自体の理論的内容は前半分程度に留まる。扱われているトピックは「回帰タスクに対する線形回帰」「分類タスクに対するロジスティック回帰」の二つだ。重み付き線形和であるパーセプトロンシグモイド関数を付けたロジスティック回帰用のユニットとは要するに人工ニューロンであるため、この書籍を完了すれば自動的にニューラルネットの理解も八割がた完了するだろう。

補足345:この本ではパーセプトロンは単なる重み付き線形和と定義されているのでそれを尊重して上のように書いたが、一般的には重み付き線形和にシグモイド関数を付けたところまで込みでパーセプトロンと呼ぶような気がする(単純パーセプトロンはロジスティック回帰と等価では?)。

補足346:また、ロジスティック回帰の「回帰」とは確率に対する回帰であって、機械学習タスクとしては回帰ではなくむしろ分類をこなすというズレを説明しないとかなりミスリーディングな気がした。

難点を強いて言えばタスクやモデルがそこそこシームレスに(明確に違いを提示することなく)変わりゆくため、細部の解説が詳細であることも込みで今何のために何をやっているのかが途中でわからなくなりそうだなと少し思った。
例えばタスクが回帰から分類に変わったときに誤差関数を最小二乗から最尤推定に切り替える(幾何モデルから確率モデルへのモデルチェンジ)というそこそこ高度なことをやっているし、どこかでタスクとモデルの表でも書いて整理するようなページがあってもよいような気もする。また、パーセプトロンを図示する割にはシグモイド関数を描き加えて人工ニューロンにしたイラストが一枚もないが、それが一枚あればパーセプトロンからロジスティック回帰への接続を明示してニューラルネットへの橋渡しまで出来るのに勿体ない。

ちなみにこの本にはディープラーニングバージョンもあり、こっちも読んでみたい気持ちはあるが、図書館に無いし買うほどではないので多分読まない。

6.最短コースでわかるディープラーニングの数学

これすごい本。似たようなタイトルの入門書籍とは一線を画しており、タイトルに偽りが無い。本当に最短コースでわかるディープラーニングの数学について書かれている。

知識の積み上げ過程を整理したスキルツリーが付属しており、この流れ通りに学んでいけば必ず最後にはディープラーニングを理解させられるようにデザインされている。こういう論理的な整合性を突き詰めた偏執的な内容を書くタイプの著者は絶対東大か京大だろと思って著者情報を見たら俺と同じ学科の出身だった。

f:id:saize_lw:20201017173243j:plain

このスキルツリーを点灯させていくために中身は大きく理論編と実践編に分かれており、理論編では教科書的な内容が次々に紹介されていく。
全く妥協がないため100ページ強が理論編に費やされており、何に使うかわからない数学知識をまず叩き込むというのはかなり苦行のような気もする。とはいえ、本当に基礎の基礎なので俺なら20分で読み終わる内容ではある。解説そのものというよりは、ディープラーニングに必要な知識だけを精選して詰め込んだという取捨選択にこそ価値があるのだ。数学の教科書を学び直そうとしたらもっと時間がかかるところ、必要部分だけを拾い上げる作業を行ってくれているのがこの書籍だ。

補足347:ただ、飛躍があるか無いかと言われれば、高学歴の人間に特有の、読者を過大評価しているような記述は稀にある。例えばかなり早い段階で「座標値の平均を原点とするような新しい座標系で考えると値を0にできます」とだけ述べて座標変換を行っているが、この書籍で想定しているような常微分から学ばなければならない読者にとって、その操作はかなり高度なことのように思われる。

特に狂気を感じるのは、ディープラーニングの入門書としては珍しいことに神経細胞ニューロンのモデル化を一度も行っていないことだ。モデル化から入った方が色々手間が省けて楽な気がするのだが、生物学的な知見から天下り的にモデルを輸入することは数学的な論理展開にとってはむしろ不純物だという判断があるのだろう。全て数学で説明し尽くせるという自信と、実際にそれを遂行するパワープレイぶりはすさまじい。他の本では割と難儀する誤差逆伝播法も正面から突破して終われる。

中学レベルの数学知識とやる気があるならこれ一冊で戦えるのは間違いない(そういう風に作られているから)。ただ、全く妥協が無いので対価に正当な労力を要求するというタイプの入門書だ。やる気があるならお勧めできる。