実験系化学者が数学に再入門:5ヶ月経過

2018年は数学の苦手意識を取り払うと決心した,実験系化学者による記録です.

モチベーション

面白そうな論文を開いては数式を目の当たりにして,そっとPDFを閉じる.高校時代は数学が得意だったはずなのに,大学に入って以来すっかり苦手意識がしみついてしまった.もう一歩踏み込んだ研究を展開するためには,数学や物理の理解が必要とは長らく実感してはいるが,日々の仕事の忙しさを言い訳になかなか勉強に踏み切れないでいた.
2013年に見よう見まねで始めたGaussianを用いた量子化学計算も,数年を経て「一通りルーチンで研究に使えるレベルにまで到達した」と言えるようになった.Gaussian社のウェブサイトのマニュアルも読み込んで細かいオプション設定にも詳しくなったし,計算途中でエラーが出れば大抵は解決できる.しかし,計算結果のlogファイルを眺めることで計算で今何をしているかがなんとなくはわかっても,具体的な内容はよくわからない.構造最適化してるんだなとか,SCFを回してシュレディンガー方程式を解いているんだな程度の理解を超えられない.
一方で,世間で騒がれている機械学習の雰囲気を掴もうと,2017年秋にオライリーの「Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎」という本を流し読みし,主要な機械学習アルゴリズムの雰囲気を掴んだ.全体的にわかりやすい本だったが,とにかくscikit learnが優れすぎているので,モデル化も一応できるようになったものの背景の数学の理解には全く及ばなかった(そもそもこの本は数理についてはほとんど触れていない).例えばridge回帰やlasso回帰で使われるL2正則化やL1正則化が何を意味するかはよくわかっていない状態であったし,主成分分析が軸の回転に相当するというのはイメージできるものの,その背後にある数式は想像できなかった.
ここでも数学である.このあたりでフラグがたったのだろう.2018年は数学コンプレックスを克服しようと決めた.目標は統計分析・機械学習で使われる数学を理解すること,特に計算化学にも通じる関数の最適化について理解を深めることに設定した.数式が出てきても,くらいついて意味を理解しようとする体力をつけることが目標である.

1,2月

早速,正月に実家に帰った際に学部教養時代に使った数学の教科書・問題集を持ち帰った(解析,線形代数,統計分析).ところが,1月は本業が忙しくてあまり進まなかった.ちょうど十数年ぶりにセンター試験の数学を解いてみて,制限時間内に半分も終わらずショックを受けたと同時に,昔よりも確率・統計の部分が明らかに充実しているのを目の当たりし,「統計分析」は現代人には最早必須スキルになったのだと実感し,やる気を補充した.
勉強としてはまずは確率・統計を復習しようとして,昔に使った東大出版の「統計学入門」(いわゆる赤本)に手をつけた.しかし,鈍った脳みそではあまり理解がすすまなかったので,一旦やめて他の本からはじめることにした.昔の自分はヘラヘラしながらこれを理解していたのかと考えると,軽く絶望を覚えたが現実を受け入れるより仕方がない.
変なプライドは捨てて,より簡単そうな「統計学がわかる」(ハンバーガー統計学)と続編である「統計学がわかる 【回帰分析・因子分析編】」(アイスクリーム統計学)を流し読みして,基礎的な用語と概念を掴んだ後に,白本こと,「入門 統計学 −検定から多変量解析・実験計画法まで−」という本をきちんと読んだ.この本は農業経済の先生が書いているが,自然科学系の人にはとっつきやすいと感じた.やや高度に思えた分散分析のあたりは飛ばしながら2回読んで記述統計学から推定・検定へと続く流れを掴んだ.この辺で2月が終わった様子.
このように統計学の基本的な事柄を習得すると同時にpythonで統計をどのように扱うかに慣れるためにハンバーガー統計学を打ち込んでみたりした.エントリーもいくつか書いた.あとは前年の12月に購入した「Python for Data Analysis: Data Wrangling with Pandas, Numpy, and IPython」2版の写経が終わったようである.pandasは機能がたくさんあってなかなか手に馴染んでこないが,これも練習あるのみであろう.

3,4月

記録によると2月25日から「これなら分かる最適化数学―基礎原理から計算手法まで」を始めた模様.この本は基本的な解析と線形代数の知識を前提にして機械学習に必要な数学をさらっと解説してくれるという素晴らしい本.最適化とはつまるところ関数の最小化に他ならないので,計算化学でほぼ毎回行うエネルギー計算などにも使える知識であり,実際,準ニュートン法や最急降下法等の意味がわかってかなりテンションが上がった.
ところが解析(簡単な関数の微分・偏微分)はともかく,線形代数はすっかり忘れていたので,「キーポイント線形代数」を1回やり直した.ここで10年以上ぶりに行列式の計算などを実際に手を動かすことで理解が深まった.ついでにscipy.linalgでどのように行列を扱うかも勉強して,pythonの理解も深めた.scipyのマニュアルには聞いたこともない「ほにゃらら分解」とか「なんちゃら行列」に関するメソッドがたくさんあるが,こういったものを理解する日はくるのだろうか...
結局「最適化数学」がすごくよかったので,同じ著者の「これなら分かる応用数学教室―最小二乗法からウェーブレットまで」のうち関係が深そうな2次形式や最小二乗法などの章を2回ずつ手を動かしながら読んだ.この辺りで4月前半が終わった.

<

h3>4,5月

ここまでで数式にも大分慣れた気がしたので「赤本」に再チャレンジして,難なくとは言えないまでも突破.分布の数が多すぎてメジャーなやつしか覚えていないけれど,これから何度も出てくるようなら自然に頭に入るでしょう.この辺りでGWが終わった.
いよいよ機械学習の数理を理解しようということで,定評のある「はじめてのパターン認識」を手に取るが,結構,いやかなり難しく挫折.仕方がないので以前に読んだ「Pythonではじめる機械学習」よりは数式が書いてありそうで,かつpythonで動かしながらイメージを深められそうな本ということでオライリーの「Hands-On Machine Learning With Scikit-Learn and Tensorflow: Concepts, Tools, and Techniques to Build Intelligent Systems」を始めた.この本は非常に明快に機械学習のいろはを説明してくれる本で,amazon.comで非常に高評価なのも頷ける良書である(最近翻訳がでた).ほとんど機械学習について知識がない人もわかるように,きちんとコスト関数の形と意味を説明しながら,scikit learnの実装と対応させながら説明してくれるのでかなり理解が深まった気がしている.とりあえず深層学習の手前まで読んだので,これから「最適化数学」と併せて復習していく予定.

今後の予定

以上の内容が2018年最初の5ヶ月でやったことになる.結構心を入れ替えて頑張るつもりだったのだが,仕事を言い訳に1週間以上何もしない期間が何度もあったのでもう少し頑張れたような気もする.しかし,年初と比較して格段に数学の理解度が上がったと実感していて,これから年末まで勉強を継続していくことで,統計モデリング(一般化線型モデルやベイズ統計モデリング周り)と機械学習についてさらに理解を深めていきたい.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする