Contenu connexe
Similaire à [DL輪読会]Neural Ordinary Differential Equations (20)
Plus de Deep Learning JP (20)
[DL輪読会]Neural Ordinary Differential Equations
- 1. 1
DEEP LEARNING JP
[DL Papers]
http://deeplearning.jp/
Neural Ordinary Differential Equations
Joji Toyama, DeepX, Matsuo-lab
- 2. 2
本資料で紹介する論文
• Neural Ordinary Differential Equations
– NeurIPS2018 Best paper
– Ricky T.Q. Chen*, Yulia Rubanova*, Jesse Bettencourt*, David Duvenand
– Vector Institute, Toronto Univ
• FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative
Models
– ICLR2019 Oral
– Will Grathwohl*, Rickey T.Q. Chen*, Jesse Bettencourt, Ilya Sutskever, David Duvenand
– Vector Institute, Toronto Univ
• 1本目が、ニューラルネットワークを微分方程式として見る、という新しい概念を提案。
2本目は、それをflow-basedな生成モデルに応用した論文。
• めっちゃ面白い(と思ってくれると発表者冥利に尽きる)
- 3. 3
事前知識:常微分方程式(ODE: Ordinary Differential Equations)
• 未知関数の導関数を含む関数方程式を微分方程式と呼ぶ。
• その中で、独立変数が1つだけのものを常微分方程式と呼ぶ。
• 例1:
𝑑𝑥(𝑡)
𝑑𝑡
= −𝑐𝑥(𝑡)
– 独立変数はtのみ
– この解は、初期値𝑋0として、 𝑥(𝑡) = 𝑥0exp(−𝑐𝑡)と一意に定まる。
– 放射性物質の崩壊式
• 例2:
𝑑2 𝑥(𝑡)
𝑑𝑡2 = −𝑐2
𝑥(𝑡)
– 独立変数はtのみ
– 任意定数AとBを用いて、 𝑥 𝑡 = A ∗ sin ct + B ∗ cos(ct)と一意に定まる。
– 単振動の式
- 5. 5
事前知識:オイラー法
• 最も簡単なODE Solver
•
𝑑𝑦
𝑑𝑡
= 𝑓 𝑡, 𝑦 , 𝑦 𝑡0 = 𝑦0であるとき、 𝑓 𝑡, 𝑦 はyの微分なので、ステップ幅h後のyの
値は、 𝑦 𝑡0 + ℎ = 𝑦0 + 𝑓 𝑡0, 𝑦0 ∗ ℎと近似できる
• これを繰り返すことで、任意のステップ後の𝑦(𝑡)を求めることができる。
– 下の図では𝑡ではなく𝑥が変数になっていることに注意
https://guide.freecodecamp.org/mathematics/differential-equations/eulers-method/
- 8. 8
ResNetとオイラー法
• ResNetは差分を学習させることによって、従来のDeepNetより精度向上
• なんかよく見るとオイラー法っぽい
– “These iterative updates can be seen as an Euler discretization of a continuous
transformation (Lu et al., 2017; Haber and Ruthotto, 2017; Ruthotto and Haber, 2018)”
– 筆者はここから着想を得たとのこと。
h1 = f1(x)
h2 = f2(h1)
h3 = f3(h2)
h4 = f4(h3)
y = f5(h4)
h1 = f1(x)+x
h2 = f2(h1)+h1
h3 = f3(h2)+h2
h4 = f4(h3)+h3
y = f5(h4)+h4
ResNetDeepNet
- 10. 10
ResNet vs ODENet
• ResNetは変換が層においてのみ行われる。一方で、ODENetは層を連続値として
扱って入力に用いるので、連続的な変換が行われる。
• 丸い点は値の評価がされていることを示す。ResNetは各層ごとに値が出力されるが、
ODENetはいかなる点でも値を評価することができる。
– 実際には、評価の回数と場所はあらかじめ適当に決めたり、ODE Solverによって自動的に
決まる
- 11. 11
ODENetの嬉しいこと
• Memory efficiency
– 計算グラフを保持する必要なしに勾配を求めることができるようになる
• Adaptive computation
– ResNetは最も簡単なODE Solverである、オイラー法を用いていると見ることができる。
ODENetではもう少し賢いODE solverを使う(e.g. Runge-kutta 4)ことにより、数値解の許容
誤差と推論速度のトレードオフを取ったり、ステップ幅の適応制御を可能にする。
• Parameter efficiency
– 各層に異なるパラメータを持たないので、パラメータ効率が良い
• Scalable and invertible normalizing flows
– Normalizing flowの計算上のボトルネックである行列式計算が、トレース計算で済む様になる。
• Continuous time-series models
– RNNにおけるタイムステップが連続になるため、より自然に時間をモデリングできる。
- 12. 12
ODENetの順伝播と逆伝播
• Given
– ODENetのパラメータ𝜃,開始時刻𝑡0,終了時刻𝑡1, ODE Solver
• 順伝播
𝑧(𝑡1) = 𝑡0
𝑡1
𝑓 𝑧 𝑡 , 𝑡, 𝜃 𝑑𝑡 = 𝑂𝐷𝐸𝑆𝑜𝑙𝑣𝑒𝑟(𝑧 𝑡0, 𝑓, 𝑡0, 𝑡1, 𝜃 )
– ODE Solverによってちまちま𝑧(𝑡1)まで計算していくだけ。
• 逆伝播
– 素直にやろうとすると、ODESolverの各ステップで毎回微分をする必要があり、forward時の
計算グラフの保持に大量のメモリを必要とする。
– そこで、adjoint method(Pontryagin et al., 1962)という賢い方法を用いて、ODEをブラックボッ
クスとして扱いながら、計算グラフの保持なしに、各変数についての勾配を求める。
- 13. 13
Adjoint methodを用いた逆伝播
• 𝐿(𝑧(𝑡1)) = 𝐿 𝑡0
𝑡1
𝑓 𝑧 𝑡 , 𝑡, 𝜃 𝑑𝑡 = 𝐿 𝑂𝐷𝐸𝑆𝑜𝑙𝑣𝑒𝑟 𝑧 𝑡0), 𝑓, 𝑡0, 𝑡1, 𝜃
– Lを最適化するため、 𝑧 𝑡0 , 𝑡0, 𝑡1, 𝜃に関する勾配を求めたい
• ある状態𝑧 𝑡 の、損失に関する勾配をadjointと呼び、
• このadjointは、以下の微分方程式に従う。
– 未知の関数が𝑎 𝑡 で、独立変数がtのみであるため、これも常微分方程式であり、初期値を
𝑎 𝑡1 = −𝜕𝐿/𝜕𝑧(𝑡1)とすることで、 𝑎 𝑡0 = −𝜕𝐿/𝜕𝑧(𝑡0) をODE Solverによって解くことができる。
• 同様のことを、𝑎 𝜃 𝑡 = −𝜕𝐿/𝜕𝜃 𝑡 、 𝑎 𝑡 𝑡 = −𝜕𝐿/𝜕𝑡 𝑡 とおくことで、 𝑡0, 𝑡1, 𝜃についての
勾配もODE Solverによって求めることができる。
– ※細かい導出は本論文のappendixをみてください(そんなに難しくないです)
𝑎 𝑡 = −𝜕𝐿/𝜕𝑧(𝑡)
𝑑𝑎 𝑡
𝑑𝑡
= −𝑎 𝑡 𝑇
𝜕𝑓 𝑧 𝑡 , 𝑡, 𝜃
𝜕𝑧
- 15. 15
実験1:ODENetによる教師あり学習 ーMNIST 定量評価ー
• 1-Layer MLP, ResNet, RK-Net(ODE-Netの時のソルバとしてルンゲクッタを用い、普
通に誤差逆伝播させるモデル)と,ODE-Net(adjoint methodで勾配計算)をMNISTで
比較
– Lはレイヤー数、 𝐿はODE Solverが要したステップ回数(=関数評価回数)
• 𝐿 はODENetにおける層の数と解釈もできる
• ResNetと同じ精度ながら、パラメータ数が少なくメモリ使用量も少ない
- 16. 16
実験1:ODENetによる教師あり学習 ーMNIST 定性分析ー
• 関数評価回数を増やすと数値誤差は減少する(当たり前)
• 関数評価回数を増やすと時間がかかる(当たり前)
– 数値誤差とフォワード時の推論時間のトレードオフを取れる。例えば、テスト時だけ許容数値誤差
を大きくすることで、関数評価回数が減り、短時間での推論が可能になる。
• バックワード時のODE Solverの関数評価回数は、フォワード時の関数評価回数の約半分
– 素直にやったらバックワード時の関数評価回数はフォワード時と同じ。つまり、Adjoint methodはメ
モリ効率がいいだけでなく、計算効率も良い!
• 訓練が進むにつれ、関数評価回数は増えていく
– 訓練が進むにつれ、ダイナミクスの複雑さが増していくことを示唆。
- 17. 17
Normalizing FlowをNODEとして見る
• Normalizing Flowの変数変換
– ただし𝑓は全単射な関数
– ヤコビアンの行列式を求めるのにO(𝐷3
)かかるため、 𝑓に様々な工夫を必要としていた。
• Normalizing Flowの更新も、NODEとして見ることができる。
• すると、なんと
• となる(証明が気になる人は論文のAppendixを読んでください)
– また、ODEは解の一意性が担保されているため、 𝑓に何を選ぼうとも、変換は全単射。
𝑧1 = 𝑓 𝑧0 => log 𝑝(𝑧1) = log 𝑝 𝑧0 − log | det
𝜕𝑓
𝜕𝑧0
|
𝑑𝑧
𝑑𝑡
= 𝑓(𝑧 𝑡 , 𝑡)
𝜕 log 𝑝(𝑧 𝑡 )
𝜕𝑡
= −𝑡𝑟 (
𝑑𝑓
𝑑𝑧 𝑡
)
- 18. 18
Continuous normalizing flow
• planar normalizing flowを改良したContinuous normalizing flow(CNF)を提案
– Planar normalizing flow
– Continuous normalizing flow
• トレースは線形性を持つため、 𝑓を関数の和として表現した場合、log densityもトレースの
和として計算できる。
– つまり、CNFは隠れユニットを増やしても計算量がO(M)のオーダでしか増えないため、wideな
Planar NFが構築可能!
𝑧 𝑡 + 1 = 𝑧 𝑡 + 𝑢ℎ 𝑤 𝑇
𝑧 𝑡 + 𝑏
𝑢, 𝑤 ∈ 𝑅 𝐷, 𝑏 ∈ 𝑅, ℎ 𝑖𝑠 𝑛𝑜𝑛𝑙𝑖𝑛𝑖𝑎𝑟𝑖𝑡𝑦 𝑎𝑐𝑡𝑖𝑣𝑎𝑡𝑖𝑜𝑛
𝑑𝑧 𝑡
𝑑𝑡
= 𝑓 𝑧 𝑡 = 𝑢ℎ 𝑤 𝑇 𝑧 𝑡 + 𝑏 ,
𝜕 log 𝑝 𝑧 𝑡
𝜕𝑡
= −𝑢 𝑇
𝜕ℎ
𝜕𝑧 𝑡
𝑑𝑧 𝑡
𝑑𝑡
=
𝑛=1
𝑀
𝑓𝑛(𝑧 𝑡 ) ,
𝑑 log 𝑝 𝑧 𝑡
𝑑𝑡
=
𝑛=1
𝑀
𝑡𝑟(
𝜕𝑓𝑛
𝜕𝑧
)
- 25. 25
FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative
Models
• 先の論文で、変数変換を常微分方程式の形
で表すことで、NFのレイヤーの幅を増やすこ
とが可能になったことを見たが、あくまで
planar normalizing flowの形に限定されてい
た。
• 本論文では、Reversible generative models
のアーキテクチャの制約を完全に外すことを
目指す。
– FFJORD(Free-form Jacobian of Reversible
Dynamics)と名付ける(もう少しいい名前を考え
られなかったものか)
• ODEなので、右みたいに連続的なダイナミク
スが学習されます。
- 26. 26
Flow-based Generative Models
• Flow-based generative models
– 変数変換によって、単純な分布(e.g. ガウス分布)からデータへの変換を直接学習する生成モデル
• 変数変換時にヤコビアンの行列式を求める際の工夫の仕方で、Flow-based generative
modelsは以下の3クラスに分類できる(筆者談)
– Normalizing Flow
• 普通に変数変換するモデルのことを言っている。関数𝑓の形を限定することで行列式を計算しやすくする。た
だ 𝑓−1
は求められないため、reversibleではなく、データ点𝑋のみから学習はできない。
– Planar NF, Radial NF
– Autoregressive Transformations
• 変数変換を自己回帰的に行うことで、ヤコビアンが三角行列になり行列式を計算しやすくする。
– MAF, IAF
– Partitioned Transformations
• データの特定の次元を不変にし、他の残った次元を、不変にしたデータを入力として出力されるパラメータに
よって変換をするように変数変換をすることで、ヤコビアンが三角行列になる。
– NICE, RealNVP, Glow
• ここらへんよくわからない人はこちらを読むことをお勧め
– https://lilianweng.github.io/lil-log/2018/10/13/flow-based-deep-generative-models.html#realnvp
- 27. 27
Reversible generative models
• この論文で定義された生成モデルクラスであり、以下を満たす。
– 変数変換を行う
– 効率よく密度推定ができる
– 効率よくサンプリングができる(One-pass)
– (表で言うと、下から二列目から下がreversible generative modelsになる)
• FFJORDはReversible generative modelsで、かつ、ヤコビアン行列式計算困難問題による諸々の制約
を解消
- 28. 28
CNF振り返り
• Continuous Normalizing Flowでは変数変換の行列式をトレースに置き換えられる
• Flow後のlog-densityは次のようになる
• 通常𝑇𝑟
𝜕𝑓
𝜕𝑧 𝑡
の計算コストは𝑂(𝐷2)だが、これを𝑂(𝐷)にするため、以下の二つの工
夫を用いる
– 自動微分
– Hutchinson’s Trace Estimator
𝑑𝑧
𝑑𝑡
= 𝑓 𝑧 𝑡 , 𝑡 ,
𝜕 log 𝑝(𝑧 𝑡 )
𝜕𝑡
= −𝑇𝑟 (
𝑑𝑓
𝑑𝑧 𝑡
)
log 𝑝 𝑧 𝑡1 = log 𝑝 𝑧 𝑡0 −
𝑡0
𝑡1
𝑇𝑟
𝜕𝑓
𝜕𝑧 𝑡
𝑑𝑡
- 29. 29
Unbiased Linear-time log-density estimation
• 𝑣 𝑇 𝜕𝑓
𝜕𝑧
は、自動微分によってフォワード計算と同コストで計算可能。
• 𝐸 𝜖 = 0, 𝐶𝑜𝑣 𝜖 = 𝐼に従う𝜖を用いて、トレースは以下を満たす(Hutchinson Trace
Estimator)
• ODE solverの間は同じ𝜖を用いても大丈夫
𝑇𝑟 𝐴 = 𝐸 𝑝(𝜖)[𝜖 𝑇
𝐴𝜖]
- 31. 31
実験1:Toy dataでの密度推定
• Glow, Planar CNFとFFJORDを比較。
• Glowは密度の境目をうまくモデリングで
きていない
• CNFは1レイヤーしかないため、複雑な
ダイナミクスをモデリングしきれない
• 一方FFJORDは多層に積めるので、表
現力が高く、すべてのデータの密度をう
まく推定できている。
– ODE Solverの評価回数は70~100回だった
- 32. 32
実験2:Real dataでの密度推定
• UCI Datasetsから5つと、MNIST,CIFAR10で実験
• Reversible generative modelsの中では、CIFAR10を除きFFJORDが最も良い結果
• 最新の自己回帰モデルにはちょいちょい負ける
• GlowやReal NVPは複数のフローを必要とするが、FFJORDは単一のフローでもそこそこい
いモデリングができる
• Glowと比べ、モデルのパラメータ数は2%以下
– 本気出せばGlowに勝てそうだけど、あえて研究の余地を残してる感がある。
- 40. 40
感想
• 結局、
𝑑ℎ 𝑡
𝑑𝑡
= 𝑓(ℎ 𝑡 , 𝑡, 𝜃)というアイディアが全て
• 高次元データに適用するには計算時間の課題があるが、それも来年あたりには解
決されてそう
• Optical flowや、流体シミュレータとかに応用できないかな。
• 読んでてとても楽しかった。
• 実装も上がってる(ODE solverの勾配計算をGPUでやるところも含め)ので、すぐ試
せる。