ニューラルネットワーク
入力信号と出力信号が複素数(2次元)であるため、複素数で表現された信号はもとより、2次元情報を自然に表現可能。また特に波動情報(複素振幅)を扱うのに適した汎化能力(回転と拡大縮小)を持ち、エレクトロニクスや量子計算の分野に好適である。四元数ニューラルネットワークは3次元の回転の扱いに優れるなど、高次複素数ニューラルネットワークの利用も進む。
ニューラルネットワークの推論を高速化する様々なハードウェアアクセラレーションAPIが提案・実装されている。GPUにおけるCUDA、WindowsにおけるDirectML、NVIDIAにおけるTensorRTなどが挙げられる。
∂ E ∂ W 1 = ( ( ( Y − T ) T W 2 ) T ∘ ψ ′ ( W 1 X + B 1 ) ) X T ∂ E ∂ B 1 = ( ( Y − T ) T W 2 ) T ∘ ψ ′ ( W 1 X + B 1 ) ∂ E ∂ W 2 = ( Y − T ) ψ ( W 1 X + B 1 ) T ∂ E ∂ B 2 = Y − T {\displaystyle {\begin{aligned}{\frac {\partial E}{\partial W_{1}}}&=\left(\left((Y-T)^{\mathrm {T} }W_{2}\right)^{\mathrm {T} }\circ \psi '(W_{1}X+B_{1})\right)X^{\mathrm {T} }\\{\frac {\partial E}{\partial B_{1}}}&=\left((Y-T)^{\mathrm {T} }W_{2}\right)^{\mathrm {T} }\circ \psi '(W_{1}X+B_{1})\\{\frac {\partial E}{\partial W_{2}}}&=(Y-T)\psi (W_{1}X+B_{1})^{\mathrm {T} }\\{\frac {\partial E}{\partial B_{2}}}&=Y-T\end{aligned}}}
Python 3.5 によるソースコード。Python において、@ は行列の乗法の演算子、** は冪乗の演算子、行列同士の * はアダマール積。
ニューラルネットワークは「線形変換 + 非線形活性化; y = σ ( w x ) {\displaystyle y=\sigma ({\boldsymbol {w}}{\boldsymbol {x}})} 」を基本単位とするため、実装の基礎はドット積ひいては積和演算になる。またレイヤー概念によりスカラ出力を束ねた出力ベクトルとなり( y = σ ( W x ) {\displaystyle {\boldsymbol {y}}=\sigma (W{\boldsymbol {x}})} )、Level 2 BLAS すなわち行列ベクトル積が基礎となる。入力のバッチ化は入出力の行列化と同義であり( Y = σ ( W X ) {\displaystyle Y=\sigma (WX)} )、Level 3 BLAS すなわち行列積が基礎となる。
人工ニューラルネットワークを理解するには、そもそもそれがどのようなものを模倣しようとしているの知っておく必要があるので説明する。ヒトの神経系にはニューロンという細胞があり、ニューロン同士は互いに軸索 (axon) と樹状突起 (dendrite) を介して繋がっている。ニューロンは樹状突起で他の神経細胞から情報を受け取り、細胞内で情報処理してから、軸索で他のニューロンに情報を伝達する。そして、軸索と樹状突起が結合する部分をシナプス(synapse)という(右図も参照。クリックして拡大して見ていただきたい。紫色の部分がひとつのニューロンであり、Dendrite, Axonなどが示されている。)。 このシナプスの結合強度というのは、外的な刺激に反応してちょくちょく変化する。このシナプス結合強度の変化こそが生物における「学習」のメカニズムである。
ヒトの神経網を模した人工ニューラルネットワークでは、計算ユニットが《重み》を介して繋がり、この《重み》がヒトの神経網のシナプス結合の「強度」と似た役割を担っている。各ユニットへの入力は《重み》によって強さが変化するように作られており、ユニットにおける関数計算に影響を与える。ニューラルネットワークというのは、入力用ニューロンから出力用ニューロンへと向かって計算値を伝播させてゆくが、その過程で《重み》をパラメータとして利用し、入力の関 数を計算する。(ただし計算値が出力用ニューロンへと伝播されてゆくというだけでは入力パターンからある決まった出力パターンが出るだけなので、さほど有益というわけではない。