連想記憶の四元数化

はじめに

前回の記事 ニューラルネットワークの四元数化 では四元数の MLP を構成しました。MLP を高次元化することは比較的容易で、連想記憶を高次元化する場合は難易度が上がります。それは安定性を保証する必要があるからです。実数の場合では安定性を保証するために結合の対称性が必要です。複素数に拡張する際には、実数の場合と若干異なり結合の共役性が必要です。複素数化を模倣することで四元数に拡張しますが、それなりに困難が生じます。

結合荷重

ニューロン \( a \) の状態を \( z_a \)、ニューロン \(b\) から \(a\) の結合荷重を \(w_{ab} \) と表すことにします。 どちらも四元数で表現されます。複素数の場合と同様に、安定性の条件として共役性 \( w_{ab}=\overline{w_{ba}} \) が要求されます。複素数の場合と同じく \( w_{aa}=0 \) も仮定します。入力和は \( \sum_b w_{ab} z_b \) で定義されますが、 \( \sum_b z_b w_{ab} \) で定義する場合もあります。四元数の積は非可換ですから両者は異なります。

他の構成法も紹介だけしておきます。四元数は3次元の回転変換にしばしば用いられます。[1] では四元数を使って3次元ニューロンを構成しています。この構成では2つの大きな問題が残っています。1つは学習則をどうするかです。プロジェクションルールはおろかヘブ則も使えないため、この論文ではシミュレーションをしていません。もう1つは連想記憶としての利用法です。これはデータを格納するために3次元の活性化関数をどう構成するかにも関わります。勾配降下学習は利用可能ですので、活性化関数を定義してシミュレーションをすることは今後の研究として考えられます。

[2] では四元数の非可換性を利用して dual connection という2重の結合を提案しています。別の機会に詳しく解説したいと思いますが、大成功のモデルだと思います。まだあまり研究されていないモデルですので、今後の進展が期待されます。

[1] M. Kobayashi: “Three-Dimensional Quaternionic Hopfield Neural Networks”, IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, Vol.E100-A, No.7, pp.1575-1577 (2017)
[2] M. Kobayashi: “Quaternion-Valued Twin-Multistate Hopfield Neural Networks with Dual Connections”, IEEE Transactions on Neural Networks and Learning Systems, Vol.32, No.2, pp.892-899 (2021)

エネルギー関数と安定性

ニューロンが取れる状態数は有限として、状態の集合を \(V\) とします。\(V\) は活性化関数の値域となります。\(V\) を定めると活性化関数は次の定義により自動的に定まります。

\( f(S) = \mathop{\rm arg~max}\limits_{v\in V} \mathrm{Re}(\overline{v}S)\)

\(S\) は入力和です。\(V\) は有限なので、最大化する要素は存在します。ただし、最大化する候補が複数ある場合は、現在の値を維持するとしておきましょう。更新によりニューロン \(a\) の状態が \(z_a\) から \(z_a’\) に変化したとします。ニューロン \(a\) への入力和は更新の前後で変化しません。これを \(S_a\) とします。活性化関数の定義より、\( \mathrm{Re}(\overline{z_a’}S_a) > \mathrm{Re}(\overline{z_a}S_a)\) が成り立ちます。エネルギー関数を次式で定義します。

\( \displaystyle E = – \frac{1}{2} \sum_{b,c} \mathrm{Re}(\overline{z_b}w_{bc}z_c) \)

実は \( \mathrm{Re} \) がなくても \(E\) は実数になりますので定義の \( \mathrm{Re} \) は不要ですが、後の計算が分かりやすいので残しておきます。上で示した活性化関数の性質を使ってエネルギーが減少することを示します。連想記憶の状態は有限ですので、いつかは安定状態に到達することが分かります。ニューロン \(a\) の更新前後のエネルギー変化量 \(\Delta E\) を計算します。

\( \begin{eqnarray}
\Delta E &=& – \frac{1}{2} \sum_{b} \mathrm{Re}(\overline{z_a’}w_{ab}z_b) \,-\, \frac{1}{2} \sum_{b} \mathrm{Re}(\overline{z_b}w_{ba}z_a’) \\
&& + \,\frac{1}{2} \sum_{b} \mathrm{Re}(\overline{z_a}w_{ab}z_b) + \frac{1}{2} \sum_{b} \mathrm{Re}(\overline{z_b}w_{ba}z_a)
\end{eqnarray} \)

\( w_{ab}=\overline{w_{ba}} \) に注意すると \( \mathrm{Re}(\overline{z_b}w_{ba}z_a) = \overline{\mathrm{Re}(\overline{z_b}w_{ba}z_a)} = \mathrm{Re}(\overline{z_a}w_{ab}z_b) \) だから

\( \begin{eqnarray}
\Delta E &=& – \sum_{b} \mathrm{Re}(\overline{z_a’}w_{ab}z_b) + \sum_{b} \mathrm{Re}(\overline{z_a}w_{ab}z_b) \\
&=& – \mathrm{Re}(\overline{z_a’}S_a) +\mathrm{Re}(\overline{z_a}S_a) < 0
\end{eqnarray} \)

これでエネルギーが単調減少と分かり、連想記憶は安定状態に到達することが示されました。

具体的な活性化関数

本記事の構成では状態数を有限にすれば安定性は保証されますので、かなり自由に活性化関数を設定できます。しかし、連想記憶として利用するためにはデータを格納しやすいように定義するべきです。複素連想記憶で使われる多値活性化関数は非常によくできた例です。split 活性化関数はもっとも単純な構成ですが、実際のデータには適していません。

多値の3つ組を1つのニューロンで表そうとしたのが兵庫県立大のモデルです[3,4]。4次元空間内の単位球を四元数の極座標表示を用いて3つの角度パラメータで表し、各パラメータが1つの成分となります。3つのパラメータは範囲が異なり対等ではありません。そのため3成分を平等に扱えないのが問題点です。

四元数を複素ニューロンを1まとめにしたのが twin-multistate 活性化関数です[5]。2つの複素ニューロンのままと何が違うのかというと必要なパラメータ数が半分になります。必要な資源が半減する代わりに性能は下がります。性能を下げてパラメータ数を減らす意味があるのかという否定的な意見をいただくこともあります。逆にパラメータを増やして性能を上げた場合はどう思うでしょうか。パラメータを有効に追加したことは評価されるべきだとは思いますが、比較することは公正ではないとも言えます。同じパラメータ数の下で性能は比較されるべきで、性能が下がったとしてもパラメータ数を減らす意味はあると個人的には思います。

[3] T. Minemoto, T. Isokawa, M. Kobayashi, H. Nishimura, N. Matsui: “Pattern Retrieval by Quaternionic Associative Memory with Dual Connections”, International Conference on Neural Information Processing (ICONIP 2016), pp.317-325 (2016)
[4] T. Minemoto, T. Isokawa, M. Kobayashi, H. Nishimura, N. Matsui: “On the Performance of Quaternionic Bidirectional Auto-Associative Memory”, International Joint Conference on Neural Networks (IJCNN 2015), pp.2910-2915 (2015)
[5] M. Kobayashi: “Quaternionic Hopfield Neural Networks with Twin-Multistate Activation Function”, Neurocomputing, Vol.267, pp.304-310 (2017)