ホップフィールドネットワークの記憶容量を改善する試み:リッジ回帰に基づく学習アルゴリズム

はじめに

先日公開した記事では、記憶容量改善の一つのアプローチとして、ロジスティック回帰の枠組みを導入した。そこでは、記憶パタンを {0, 1} の目標値に対応させ、各ニューロンが他のニューロンの状態から自身の状態(0 or 1)を予測する確率をモデル化し、対数尤度を最大化(交差エントロピー損失を最小化)するように学習を行った。

本記事では、別の教師あり学習の枠組みであるリッジ回帰(Ridge Regression)を用いて、Hopfieldモデルの学習を行うアプローチを検討する。ロジスティック回帰が分類問題(確率予測)に適しているのに対して、リッジ回帰は回帰問題(連続値予測)に用いられる。ここでは、各ニューロンが他のニューロンの状態 {-1, +1} から自身の状態 {-1, +1} を直接予測する回帰問題として定式化し、二乗誤差損失に関数にL2正則化項を加えたものを最小化することで、結合重み  \mathbf{W} を学習する。このアプローチにより、特に重み行列の要素が大きくなることを抑制し、汎化性能の向上や容量改善が期待される。

リッジ回帰に基づく学習

準備

ネットワークにおけるニューロンの総数を  n とする。 モデルに記憶させる  m 個のパタンを  \{ \mathbf{x}^{(1)},  \mathbf{x}^{(2)}, \ldots,  \mathbf{x}^{(m)} \} により与える。  \mathbf{x}^{(p)} = [ x^{(p)}_1, x^{(p)}_2, \ldots, x^{(p)}_n ]^\top であり、各要素  x_i^{(p)} \pm 1 の値をとる。

重み行列を  \mathbf{W} = [ w_{ij}] と書く。 \mathbf{W} n \times n 行列であり、 w_{ij}ニューロン  i からニューロン  j への結合の強さを表す。制約として、対称性  w_{ij} = w_{ji} および自己結合の禁止  w_{ii} = 0 を課す。

ロジスティック回帰の場合とは異なり、リッジ回帰では記憶パタンを {0, 1} に変換する必要はない。元の {-1, +1} の値を直接扱う。

モデルと損失関数

ニューロン  i の状態  x_{i}^{(p)} を、同じパタン  p における他の全てのニューロン  j \;(j \neq i) の状態  \{ x_{j}^{(p)} \} を使って予測することを考える。ニューロン  i への総入力(活性化) a_{i}^{(p)} を線形結合で定義する。


\begin{align*}
a_i^{(p)} &\triangleq \sum_{j\neq i} w_{ij} x_{j}^{(p)}
\end{align*}

リッジ回帰では、この活性化の値  a_{i}^{(p)} が、予測値  y_{i}^{(p)} になると考える。つまり  y_{i}^{(p)} = a_{i}^{(p)} であり、ロジスティック回帰のようにシグモイド関数を適用しない。

学習の目標は、全てのパタン  p と全てのニューロン  i について、予測値  y_{i}^{(p)} と真の状態  x_{i}^{(p)} との二乗誤差を最小化することである。さらに、重み行列の要素が大きくなりすぎるのを防ぎつつ、過学習を抑制するために、重み行列のL2ノルム(フロベニウスノルム)の二乗による正則化項を加える。

損失関数は以下のように定義される。


\begin{align*}
\mathcal{L} (\mathbf{W}) &\triangleq \sum_{p=1}^{m}  \sum_{i=1}^{n} (x_{i}^{(p)} - y_{i}^{(p)})^{2}  + \lambda \left\| \mathbf{W} \right\|_{F}^{2} \\
&= \sum_{p=1}^{m}  \sum_{i=1}^{n} \left(  x_{i}^{(p)} - \sum_{j\neq i} w_{ij} x_{j}^{(p)} \right)^{2} + \lambda  \sum_{i=1}^{n}  \sum_{j=1}^{n} w_{ij}^{2}
\end{align*}

 \lambda \; (\lambda \ge 0)正則化の強さを制御するハイパーパラメータである。

勾配計算

損失関数  \mathcal{L} (\mathbf{W}) を 各結合重み  w_{kl}偏微分し、勾配を計算する。


\begin{align*}
\frac{\partial \mathcal{L}}{\partial w_{kl}} = \frac{\partial}{\partial w_{kl}} \left[  \sum_{p=1}^{m}  \sum_{i=1}^{n} \left(  x_{i}^{(p)} - \sum_{j\neq i} w_{ij} x_{j}^{(p)} \right)^{2} \right]
+
\frac{\partial}{\partial w_{kl}} \left[ \sum_{i=1}^{n}  \sum_{j=1}^{n} w_{ij}^{2} \right]
\end{align*}

第一項の微分は次のように計算できる。


\begin{align*}
\frac{\partial}{\partial w_{kl}} \left[  \sum_{p=1}^{m}  \sum_{i=1}^{n} \left(  x_{i}^{(p)} - \sum_{j\neq i} w_{ij} x_{j}^{(p)} \right)^{2} \right]
&=  \sum_{p=1}^{m}  \left(  x_{k}^{(p)} - \sum_{j\neq k} w_{kj} x_{j}^{(p)} \right)^{2}  \\
&=   \sum_{p=1}^{m}   2 \left( x_{k}^{(p)} - \sum_{j\neq k} w_{kj} x_{j}^{(p)} \right) \left( - x_{l}^{(p)}\right) \\
&= -2 \sum_{p=1}^{m}  ( x_{k}^{(p)} -  y_{k}^{(p)})  x_{l}^{(p)}
\end{align*}

第二項の微分の計算は容易である。


\begin{align*}
\frac{\partial}{\partial w_{kl}} \left[ \sum_{i=1}^{n}  \sum_{j=1}^{n} w_{ij}^{2} \right] = 2 \lambda w_{kl}
\end{align*}

したがって、損失関数の勾配は以下のようになる。


\begin{align*}
\frac{\partial \mathcal{L}}{\partial w_{kl}} = -2 \sum_{p=1}^{m}  ( x_{k}^{(p)} -  y_{k}^{(p)})  x_{l}^{(p)}  + 2 \lambda w_{kl}
\end{align*}

さらに行列記法に移れば、


\begin{align*}
\frac{\partial \mathcal{L}} { \partial \mathbf{W}} = \left[ \frac{\partial \mathcal{L}} { \partial w_{kl}} \right] = - 2(\mathbf{X} - \mathbf{Y})^{\top} \mathbf{X}
+ 2 \lambda  \mathbf{W}
\end{align*}

となる。ここで、 \mathbf{X} = [\mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \ldots, \mathbf{x}^{(m)}]^{\top} \mathbf{Y} = [\mathbf{y}^{(1)}, \mathbf{y}^{(2)}, \ldots, \mathbf{y}^{(m)}]^{\top} と置いた。

勾配の対称化

ロジスティック回帰の際と同様に、上記の勾配 をそのまま用いて更新すると、更新後の重み行列  \mathbf{W} が対称性を満たさなくなる可能性がある。Hopfieldネットワークの性質(特にエネルギー関数の存在)を保つためには、重み行列の対称性  w_{ij} = w_{ji} が重要である。

そこで、ロジスティック回帰の時と同様に、計算した勾配を対称化する。対称化された勾配  \mathcal{S} (\mathbf{W}) = [\mathcal{S}_{ij}] を次式で定義する。


\begin{align*}
\mathcal{S}_{ij}  &\triangleq  \frac{1}{2} \left( \frac{\partial \mathcal{L}}{\partial w_{ij}} + \frac{\partial \mathcal{L}}{\partial w_{ji}} \right) \\
\mathcal{S}\left( \mathbf{W} \right) &\triangleq \frac{1}{2} \left \{ \left(\frac{\partial \mathcal{L}} { \partial \mathbf{W}}\right) + \left( \frac{\partial \mathcal{L}} { \partial \mathbf{W}} \right)^{\top} \right\}
\end{align*}

これにより、初期値が対称であれば、勾配降下法による更新後も  \mathbf{W} の対称性が保たれる。

勾配降下法

対称化された勾配  \mathcal{S} を用いて、勾配降下法により重み行列  \mathbf{W} を更新する。学習率を  \etaとして、更新則は以下のようになる。


\begin{align*}
\mathbf{W}_{\text{new}} = \mathbf{W}_{\text{old}} - \eta \left.\mathcal{S} (\mathbf{W}) \right|_{\mathbf{W} =  \mathbf{W}_{\text{old}}}
\end{align*}

勾配降下法の各更新ステップの後、Hopfieldモデルの制約  w_{ij} = 0 を満たすために、 \mathbf{W}_{\text{new}} の対角成分を0にする。


\begin{align*}
\mathbf{W}_{\text{new}}^{\prime}  = \mathbf{W}_{\text{new}} - \text{diag} (\mathbf{W}_{\text{new}})
\end{align*}

ここで   \text{diag} ( \cdot ) は行列の対角成分を残し、他の成分を全て0にする演算子を表す。

以上が勾配降下法によるパラメタ更新の1ステップに相当し、これを所定の回数だけ繰り返す。

実装&実験

後日、公開予定。