Keep Innovating! Blog
![Keep Innovating! Blog](https://www.opst.co.jp/assets/img/common/c-key_img.png)
今回は小ネタである。知っている人には当たり前、でも意外に知らないままの人もいるという、The Matrix Cookbook を紹介したい。
■概要
The Matrix Cookbook (https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf)は行列関連の公式・計算レシピ集だ。インターネット経由で誰でも無料で入手できるPDFファイルである。行列式、逆行列、行列分解、行列の微分、確率統計関連・・・などなど、A4 約70ページに渡って様々な公式や計算法が集められていて、とても役にたつ資料となっている。作者の方に大いに感謝したい。
検索すると分かるように、この Cookbook はネット上のあちこちで公開されているが、幾つかのバージョン違いが存在する。私の知る限りでは、2012年版が最新のようだ。
![](https://www.opst.co.jp/wp/wp-content/uploads/2021/09/2021-03-05_11-33_371.png)
なお、上図のように表紙には matrixcookbook.com というドメインで公開しているとの記載があるが、このドメインは現在(2021年3月時点)は無効になっている。このURLにアクセスしようとすると、妙なフィッシングサイトに飛ばされることがあるようなので、アクセスしないようにしてほしい。
■論文や文献の解読に欠かせない資料
The Matrix Cookbook が一番活躍するのが、論文を読むときだ。
AIや機械学習の技術者には常に最新情報を仕入れておくことが求められる。最新情報の入手先として代表的な情報源が論文である。みなさんご存知の arXiv.org を始めとするインターネット上での情報公開が進んだおかげで、誰でも簡単に論文を入手できるようになった。
論文解読のネックとなるのが英語力と数学力である。英語力の問題は今回は触れない。一方の数学力の問題であるが、こちらは論文に書いている数式を解読できるかどうかという話になる。
AIや機械学習の論文では線形代数が多用され、ベクトルや行列を使ってアルゴリズムやモデルを示すことが多い。そこにはいろんな行列の計算テクニックが使われる。これを解読するには、それらのテクニックを知っておく必要があるが、この分野で使われるテクニックは様々な分野(統計学、情報理論、信号処理など)に由来しているものが混在しているため、以前はなかなかまとまった資料がなかった。
入門書に載っているような基礎的な公式などはあまり問題にならない。この分野の基本から勉強してきた人は大抵知っているからだ。問題なのは「公式というほどではないがイディオム的によく使われる」タイプの計算テクニックである。ことに論文では計算手順の途中の細かな式展開はすっ飛ばしていきなり答えだけ書いてあったりする。慣れている人はすぐそのことに気づくことができるが、不慣れな人は、なぜその式からその答えが出せるのか分からず、そこで立ち往生してしまう。
■具体的利用法
こうした場面で役にたつのが、The Matrix Cookbook である。Cookbookという名前のとおり、分野別に行列の計算法をレシピのように整理してくれている。掲載されている分野は以下の通りである。
- Basics(基礎)
- Derivatives(微分・導関数)
- Inverses(逆行列)
- Complex Matrices(複素数行列)
- Solutions and Decompositions(解と分解)
- Statistics and Probability(統計と確率)
- Multivariate Distributions(多変量分布)
- Gaussians(ガウス分布)
- Special Matrices(特殊な行列)
- Functions and Operatiors(関数と演算)
- One-dimensional Results(1次元にした場合の結果)
- Proofs and Details(証明と詳細)
具体的な使い方は、一般的な公式集や数学辞典と同様である。論文などを読んでいて分からない行列の計算があったら、それと同じ例や類似例がないか Cookbook の中を探す。論文の内容や文脈などから類推して上記の分野の該当先を絞り込めれば探すのが早くなるだろう。
逆に、普段から時間あるときなどに何となく Cookbook 全体に目を通しておくのもオススメである。精読する必要はない。何となくどこに何が書いてあったか「目に覚えさせる」感覚で眺めておけばよい。そうすると、後で探したくなったときに早く見つけられるようになる。
このあたりは、慣れの問題が大きいので、繰り返し利用していけばコツを掴めると思う。
個人的に特に役に立っているのが、微分(derivatives)や2次形式(quadratic forms)関連のレシピである。AI機械学習関連では最適化問題がよく出てくるので、このあたりの計算もよく登場するからである。
![](https://www.opst.co.jp/wp/wp-content/uploads/2021/09/2021-03-05_11-43_439.png)
今回の話は以上である。みなさんの論文解読ライフの参考になれば幸いである。
プロフィール
著者:寺田英雄
株式会社オープンストリームCTO/技術創発推進室 室長/電気通信大学特別研究員
画像処理ソフトウェア開発歴30年以上。最近はディープラーニング応用の研究開発に取り組んでいる。
以前はC++プログラマーだったが、最近はもっぱら Python しか使わなくなった。でも、今でもネィティブコードの感触が好きである。
- テレワーク
- リリースノート
- リネージ管理
- knitfab
- OpeN.lab
- ChatGPT
- 画像生成
- 画像認識
- 書籍紹介
- 対話
- 自然言語処理
- Open Innovation
- アカデミック
- 活動報告
- ビジネス
- ガジェット
- オープンイノベーション
- TIPS
- 線型代数
- 数学
- Airflow
- 論文紹介
- MediaPipe
- 顔認識
- 可視化
- 異常検知
- プラモデル
- イノベーション
- 自動運転
- AI
- MLOps