LoginSignup
1
2

More than 1 year has passed since last update.

二重数と自動微分

Posted at

本記事について

二重数について

  • 二乗して$0$になるような 抽象代数 と呼ばれる分野で登場する値: $$\epsilon^2=0,\epsilon\neq 0.$$

  • こちらの$\epsilon$は 実数$\mathbb{R}$上の多項式環$\mathbb{R}[X]$の、不定元$X$の二乗$X^2$によって生成される主イデアル $\langle X^2 \rangle$による剰余環 $$\mathbb{R}[X]/\langle X^2 \rangle$$によって定義される.

  • 行列を用いて $a,b\in\mathbb{R}$に対して$a+\epsilon b$は以下のように表せる.

\begin{pmatrix}
a & b \\
0 & a \\
\end{pmatrix}

実解析関数と二重数

実解析関数 $f:\mathbb{R}^d\rightarrow \mathbb{R}$に対してテーラー展開を考えると,$x,y\in\mathbb{R^d}$に対して次が成立する:

$$
f(x+\epsilon y)=f(x)+\epsilon y^{\rm T}\left.\frac{\partial f(t)}{\partial t}\right|_{t=y}
$$

  • ここで,右辺は微分があり複雑であるが左辺は, 三角関数や対数関数, 指数関数や 積・商などの公式を導くことができるため 右辺を直接計算することなく これを計算することができる.

  • これは Googleが提供する機械学習ライブラリの JAXにおいても実装されている.

応用先

上記より 関数 $f$ が どれだけ深い神経回路学習機であって,どれだけ複雑であっても,解析関数である限り,二重数を用いることで伝幡のみで微分の情報を抽出することが可能であることがわかった.

しかし, 微分情報を直接取り出せないため 神経回路学習機の学習アルゴリズムに直接用いることができないことに注意する.

ただし, 論文(1)では $v$を平均$\mathbf{0}$分散$I$に従う確率変数とすると

\left(v^{\rm T}\left.\frac{\partial f(t)}{\partial t}\right|_{t=w} \right)v \in\mathbb{R^d}

\left.\frac{\partial f(t)}{\partial t}\right|_{t=w}

の不偏推定量であることを導き, 独立同分布に従うように$v$を発生させることで,その有用性を確かめた.

あとがき

  • 数学的に細かいことは追っていませんが, 二重数という不思議な値には 実用的な応用先があるとわかりました.
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2