機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

二重数

二重数の定義

二重数は、以下のように定義されます。

二重数の定義

\begin{eqnarray}
z=a+b\epsilon\ (a,b\in{\mathbb R},\epsilon\not=0,\epsilon^2=0)\end{eqnarray}

二重数は、複素数における i\epsilon に代わって、i^2=-1 の代わりに \epsilon^2=0 であるという感じです。
別名は、双対数です。英語では、dual numbers です。

二重数の和と積は、以下のように定義されます。

二重数の和と積

\begin{eqnarray}
z_1+z_2&=&(a_1+b_1\epsilon)+(a_2+b_2\epsilon)\\
&=&(a_1+a_2)+(b_1+b_2)\epsilon\\
z_1z_2&=&(a_1+b_1\epsilon)(a_2+b_2\epsilon)\\
&=&a_1a_2+a_1b_2\epsilon+b_1\epsilon a_2+b_1\epsilon b_2\epsilon\\
&=&a_1a_2+(a_1b_2+b_1a_2)\epsilon+\underbrace{b_1b_2\epsilon^2}_{\epsilon^2=0}\\
&=&a_1a_2+(a_1b_2+b_1a_2)\epsilon\\
\end{eqnarray}

共役二重数 z^* は、以下のように定義されます。

共役二重数の定義

z=a+b\epsilon を任意の二重数とする。

\begin{eqnarray}
z^*=a-b\epsilon
\end{eqnarray}
z の共役二重数と呼ぶ。

二重数 z と共役二重数 z^* の積を計算してみます。

共役二重数との積

z=a+b\epsilon を任意の二重数とする。

\begin{eqnarray}
zz^*&=&(a+b\epsilon)(a-b\epsilon)\\
&=&a^2\\
z^*z&=&(a-b\epsilon)(a+b\epsilon)\\
&=&a^2
\end{eqnarray}

二重数には、他にも単位二重数や、逆元などいろいろ定義がありそうですが、Wikipediaに記載がないのでこの辺で辞めます。

二重数による自動微分

二重数による応用としては、「自動微分」があります。
任意の実係数多項式 P(x) = p_0 + p_1x + p_2x^2 + \cdots + p_nx_n が与えられているとします。
この時、以下が成り立ちます。

\begin{eqnarray}
P(a+b\epsilon)&=&p_0+p_1(a+b\epsilon)+p2_(a+b\epsilon)^2+\cdots+p_n(a+b\epsilon)^n\\
&=&p_0+p_1(a+b\epsilon)+p2_(a^2+2ab\epsilon)+\cdots+p_n(a^n+na^{n-1}b\epsilon)\ \ \ (\because (a+b\epsilon)^n=a^n+na^{n-1}b\epsilon)\\
&=&(p_0+p_1a+p_2a^2+\cdots+p_na^n)+(p_1+2p_2a+\cdots+np_na^{n-1})b\epsilon\\
&=&P(a)+P'(a)b\epsilon
\end{eqnarray}

参考リンク

二重数

目次へ戻る