zattaにいろいろ書いてきたけど、そろそろ研究で必要な道具がそろってきたので作成。
ニューラルネットによって、微分方程式の解を近似する。物理の支配方程式を損失に組み込むことで実現。今回は逆問題を解く。
PINNsの難点として、非常に収束まで時間がかかること。計算コストが高い。 そのため、似た課題であればメタ学習で解消
MAMLで求めたい勾配について解説。そのために、まずは基本的な設定を導入。
通常の深層学習では、あるタスクが与えられ、そのタスクにおける教師データが与えられることで、入出力関係をニューラルネットワークにより近似する。
一方で、メタ学習では与えられたタスクの教師データが少ない状況下で、より良い近似が可能なニューラルネットワークを学習する。
つまり、メタ学習では、解きたいタスクにおいてはデータが不足しているが、似たタスクについては自由にデータをサンプルできる状況を考える。このために、タスクの分布$p(\tau)$を考える。
MAMLにおいては、タスク$\tau_i \sim p(\tau)$をサンプルして、このタスクを用いてニューラルネットワークの「良い」初期値を更新して求める。このために、一度タスク$\tau_i$について、通常の深層学習のような学習を行い(inner-loop)、その後、inner-loopで求めたパラメタを用いて、初期値の更新(outer-loop)を行う。
最終的に、解きたいタスクは、「良い」初期値から行われ、それによって少データでも高速に収束する。
MAMLにおける「良い」初期値とは、最適化を行なった結果、損失が最小になるようなパラメータである。(このパラメータは、必ずしも最適なパラメータと近い距離にあるとは限らない。)数式として表現する。 ニューラルネットワークのパラメータを$\phi$とし、AdamやSGDといった最適化手法の一回のイテレーションを表す演算子を$U{\tau}$と表記する。すると、求めるパラメータは、 $$ minimize{\phi} \mathbb{E}\tau [L\tau(U\tau(\phi))]$$ MAMLにおける勾配$g{maml}$は、 $$ \begin{aligned} g{maml} &= \frac{d}{d\phi} L\tau(U\tau(\phi)) \ &= U\tau'(\phi) \times L_\tau'(\tilde{\phi}) \end{aligned} $$
inner-loopでk回のパラメータ更新を行うとする。諸々を次のように表記。
この元で、MAMLの勾配を計算する。 $$ \begin{aligned} g_{MAML} &= \frac{d}{d\phi_1}L_k(\phi_k) \ &= L_k'(\phi_k) \frac{d\phi_k}{d\phi_1} \end{aligned} $$ ここで、 $$ \begin{aligned} \phik &= U{k-1}(\phi{k-1}) \ &= U{k-1}(U{k-2}(\phi{k-2}) ) = ... \ &= U{k-1}(U{k-2}( ... U1 (\phi{1})) ) \end{aligned} $$ よって、 $$ \begin{aligned} \frac{d\phi_k}{d\phi_1} &=
\end{aligned}