Closed12

2024 Reading List: Math

inaturam←inaturam←

線形代数

@douro_tachibana
昨日ふと線形従属性がrankを通して基底の選択に結びつき、そこで基本順列と行列式が正則性となってさらに固有値が対角化可能性になり冪の定義が結びつくという流れを把握して、ようやく線形代数の教授が授業の最初から最後まで授業を通して教えたかったことを魂から納得できた
スパース行列の要素の積が行列式を通して基本順列の符号と結びつくことに一番感動した気がする

行列のノルム

https://www.hello-statisticians.com/math_basic/p-norm2.html

inaturam←inaturam←

測度論

機械学習文脈でのルベーグ測度の出現

@matsui_kota
めちゃざっくりとした説明ですが、ベイズ最適化の文脈でエントロピー探索という方策がありまして、まず最適化したい目的関数fの最適解x^に対して事前分布p(x^)を定義します。この事前分布は、p({f | x = argmin_f f(x)}) で定義されます(引数xは固定で関数fが確率変数だと思っている)が、このpが確率分布としてwell-definedであることを示そうと思うと、関数空間での積分が有限であることや積分値の一意性などを言う必要があって、そこでルベーグの知識が必要になったというお話でした
ちなみにエントロピー探索は現在までに観測したデータD_nで条件づけた最適解の条件付き分布p(x^* | D_n)と、新たに観測しようとしている点をさらに加えた条件付き分布 p(x^* | D ∪ {(x, f(x))}) のエントロピーの差 p(x^* | D_n)- E[p(x^* | D ∪ {(x, f(x))}) ] が最大になる点を次にf(x)を観測する点として選ぶという方策なので、最初のpがちゃんと分布になっているかどうかは本質的です

inaturam←inaturam←

微分可能プログラミング

https://qiita.com/lotz/items/39c52f08cc9b5d8439ca

https://qiita.com/lotz/items/f1d4ab1d83dc13a5d81a

https://speakerdeck.com/abap34/julia-tokyo-number-11-toku-juliadebu-kuzi-dong-wei-fen

https://qiita.com/cometscome_phys/items/e1163c3d4c003aa55df7

Google DeepMindによる微分可能プログラミングの理論の本

https://arxiv.org/abs/2403.14606

https://twitter.com/lotz84_/status/1771411341338886532 より書評

@lotz84_
新しいパラダイムである『微分可能プログラミング』の基本概念について Google DeepMind の研究者が383ページに渡るPDFを公開。論文より本という方が正しそう👀
プログラムを微分可能にすることは本質的に確率分布によってその出力の不確実性を定量化すること、とは面白い

1 Introduction
微分可能プログラミングの定義と深層学習や自動微分との違いについて。微分可能プログラミングはプログラムを使った微分というだけではなく、オペレータを微分可能に緩和するなど、意味のある微分可能なプログラムの設計についてという側面を持つ

2 Differentiation
微分に関連する諸概念(導関数, 方向微分, 勾配, フレシェ微分, ヤコビアン, JVP, ヘッシアン, 高階微分, 微分幾何, 接空間, etc)についての章
ベクトルと行列を同時に引数に取る関数の微分や引数のグループ化など機械学習への応用を見越した解説があるのが独特で面白かった

3 Probabilistic learning
確率と推定に関する諸概念(確率質量関数、確率密度関数、KLダイバージェンス、最尤推定、条件付き確率分布、二項分類、多クラス分類、回帰分析、指数型分布族、最大エントロピー原理、一般化線形モデル)がまとめられている章✍

4 Parameterized programs
DAGによってプログラム(純粋関数)を表す方法を解説。またニューラルネットワーク(MLP, ResNet, CNN, RNN)の説明やよく使われる関数とその滑らかな近似関数の対応を紹介している
ReLU ⇔ log(1+e^u)
max ⇔ logsumexp
step ⇔ logistic
argmax ⇔ softargmax

5 Control flows
等号不等号などの述語やif, if-else, for, scan, whileなどの制御構文を滑らかに拡張する方法とそのガウス過程やマルコフ連鎖を使った確率的な解釈について解説
whileは無限評価を避けるために停止時間を設定したり、ifelseで実装する際は遅延評価を行うことが重要になる

6 Finite differences
数値微分(前進差分, 後退差分, 中心差分, 高階差分)についての章
実関数を微小な純虚数だけずらすと
f(x+ih) = f(x) + ihf'(x) + o(h^2)
より
f'(x) ≒ Im(f(x+ih)/h)
と計算できるので差分法と違って差を取る必要がなく、関数の評価回数も減り桁落ちも発生しないのは面白い👀

7 Automatic differentiation
自動微分のフォワードモードとリバースモードについてJVPとVJPを使って抽象的に議論。自動微分の計算量が元の関数の計算量の定数倍で抑えられるというBaur-Strassenの定理は強力。計算量と空間計算量のトレードオフをチェックポイントを使って制御する戦略についても解説

8 Second-order automatic differentiation
ヘッシアンは2回微分するので4通りの組み合わせが存在するがリバースモードからのフォワードモードによる自動微分が僅かにメモリ効率が良く一般にはオススメとのこと。ヘッシアンを近似するガウスニュートン行列とフィッシャー情報行列の関係についても言及

9 Inference in graphical models as differentiation
グラフィカルモデル(マルコフ連鎖、マルコフ確率場、ベイジアンネットワーク)の章。前向き後ろ向きアルゴリズムとビタビアルゴリズムは同じアルゴリズムの異なる半環による実装であり、指数型分布族では対数分配関数の誤差逆伝播法と対応する

10 Differentiating through optimization
出力が最適化 (argmax/argmin) で表されているような関数や陰関数を微分する方法について。最適化を含む場合は包絡線定理によって微分を計算できるパターンが存在する。リバースモード自動微分の計算が随伴変数法と後退代入として解釈できるのは面白い

11 Differentiating through integration
積分を含む関数の微分。期待値を微分する場合、パラメータがサンプリングする確率分布にあるとREINFORCEや押し出し測度(再パラメータ化トリック)を使うなど工夫が必要になる。微分方程式の解の微分は連続随伴法によりそれを解に持つ微分方程式が構成できる

12 Smoothing by optimization
強凸性と平滑性の双対から、関数のルジャンドル=フェンシェル変換に強凸な正則化を加えて逆変換することで元の関数を微分可能に平滑化した関数が得られる。この方法で
ReLU ⇒ log(1+e^x)
max ⇒ logsumexp
step ⇒ logistic
argmax ⇒ softargmax
の緩和が理解できる

13 Smoothing by integration
畳み込みによる平滑化は関数の各点で摂動による期待値を取る操作とみなせる。そのため平滑化した関数の勾配は再パラメータ化やSFEを使って求めることができる。後半では特にガンベル分布を使った比較演算子, max, argmax などの平滑化のテクニックがまとめられている

14 Optimization basics
最適化に関する基本的な概念がまとめられている章
リプシッツ連続な関数は、関数の変化が引数の変化の定数倍で抑えられる関数
|f(x) - f(y)| ≦ α |x - y|
β-smooth な関数は、関数の勾配の変化が引数の変化の定数倍で抑えられる関数
|∇f(x) - ∇f(y) ≦ β |x - y|

15 First-order optimization
勾配の情報のみを用いた最適化手法について。勾配降下法, Nesterovの加速勾配法, Adam, SGD, 射影勾配法, 近接勾配法について近接点法の観点を絡めて説明されている✍

16 Second-order optimization
勾配とヘッセ行列のみを用いた最適化手法について。ニュートン法、ガウス・ニュートン法、自然勾配法、準ニュートン法について近接点法の観点を絡めて説明されている。例えば自然勾配法は近接項としてKLダイバージェンスを用いた近接勾配法と解釈できる

17 Duality
最適化の双対問題についての章。フェンシェルの双対性定理、Bregmanダイバージェンスを使った近接点法など。Fenchel-Young誤差関数はBregmanダイバージェンスを始めとする広範な誤差関数のクラスと考えることができる

"The Elements of Differentiable Programming" 読了✨
最低限の導入はありつつもチュートリアルや入門書ではなくタイトルにある通り微分可能プログラミングに共通して使われる要素を並べて解説されているイメージ👀
個人的には応用の話も読みたかったけどそれを言い出すとキリがないのはそれはそう

inaturam←inaturam←

線形代数の数値計算

https://nhigham.com/2022/10/11/seven-sins-of-numerical-linear-algebra/

線形代数の数値計算における7つの罪

  1. 逆行列を計算する
  2. A^TAで行列積を計算する
  3. 複数の行列積を効率の悪い順番で計算する
  4. 行列が正定値だと想定する
  5. 行列のブロック構造を利用しない
  6. 非正則行列の判定に行列式を利用する
  7. 条件数の推計に固有値を利用する
inaturam←inaturam←

ラグランジュの未定乗数法

https://x.com/taketo1024/status/1814115682218549385?s=46

@taketo1024
束縛条件を与える写像 g を座標関数として採用すれば(余次元の分は適切に補完する)、未定乗数 λ とはこの方向の関数 f の傾きのことで、対応する線形関数を f から引けば拘束条件なしの極値問題にできるってことですね?

このスクラップは2024/12/31にクローズされました