HNN & CNN


相互結合型ニューラルネットワーク

Hopfield Neural Network

HNNのダイナミクスは次のとおりである.
C\frac{dx_i}{dt} = -\frac{1}{R_i}x_i + \sum_{j \neq i} T_{ij}y_j + I_i,
y_i(t) = g(x(t)) = \frac{1}{1 + exp(-x/\alpha))}
ここに,x_i(t)は時間tにおけるニューロンiの状態である;y_{i,j}(t)はニューロンの出力である;\alphaは入出力関数(シグモイド関数)gのゲインを決定するパラメータである.-\frac{1}{R_i}x_iは状態x_iのダイナミックレンジを制限するため(発散を防ぐため)にある.

HNNをオイラー法によって時間離散化すると発展方程式は次のようになる.
x_{i,j}(t+1) = kx_{i,j}(t) + \Delta t\left( -\frac{1}{R_i}x_i + \sum_{j \neq i} T_{ij}y_j + I_i \right)
ここで
k = 1 - \frac{\Delta t}{\tau}
である.時間離散化したHNNをDiscrete Time Hopfield Neural Network(DT-HNN)という.

HNNのリアプノフ関数は次のとおりである.
E(t) = \sum_i \frac{1}{R_i} \int_0^{y_i} g^{-1}(z)dz - \frac{1}{2} \sum_i \sum_j T_{i,j}y_i y_j + \sum_i I_i y_i
   = \sum_{i} \frac{\alpha}{R_i} [y_i\ln(y_i) + (1-y_i)\ln(1-y_i) ] - \frac{1}{2} \sum_i \sum_j T_{i,j}y_i y_j + \sum_i I_i y_i

−−−−−−これから先は間違えているかも−−−−−−
\alphaが十分ちいさいとき,もしくはR_iが十分おおきいときとき,第1項は無視できる:
E(t) = - \frac{1}{2} \sum_i \sum_j T_{i,j}y_i y_j + \sum_i I_i y_i
特に\alpha \rightarrow 0ならば(R_i \rightarrow \inftyでもそう??),y_i(t) \in \{0,1\}が保証される.この性質を利用すると,2次形式の組合せ最適化問題を解くことができる.ただし,R_iを大きくすると,状態x_iのダイナミックレンジが広がってしまうことに注意すること.
−−−−−−−−−−−−−ここまで−−−−−−−−−−−−−

HNNは,入出力関数が連続値(中間値)を採ることで様々な状態を同時に考慮しているため,最適化問題を解く際に2値状態のみのニューラルネットワークよりも良質な解を導くのだという意見もある.この意見が正しいならば,はじめはゲインを低くとり,時間とともにゲインを上げることで,最終的に2値の出力を得る方が良いのかもしれない(アニーリング?).これに関連して,Hopfieldの論文ではスピングラスの平均場近似とHNNとの類似性についても少し議論している.

Cellular Neural Network

ここではM \times NのCNNを想定する;ij列目のセルをC(i,j)C(i,j)とその近傍のセルとの集合をN_r(i,j) = \{ C(k,l) | \max\{|k-i|,|l-j|\}, 1 \leq k \leq M; 1 \leq l \leq N \}と表現する.CNNのダイナミクスは次のとおりである.
C\frac{dx_{i,j}}{dt} = -\frac{1}{R_x}x_{i,j} + \sum_{C(k,l) \in N_r(i,j)} A(i,j;k,l) y_{i,j}(t) + \sum_{C(k,l) \in N_r(i,j)} B(i,j;k,l) u_{i,j}(t) + I,
y_{i,j}(t) = g(x_{i,j}) = \frac{1}{2}\left( |x_{i,j}(t)+1| - |x_{i,j}(t) - 1| \right)
ここに,u_{i,j}C(i,j)への入力である;x_{i,j}(t)は時間tにおけるセルの状態である;y_{i,j}(t)はセルの出力である.-\frac{1}{R_i}x_{i,j}は状態x_{i,j}のダイナミックレンジを制限するためにある.

CNNをオイラー法によって時間離散化すると発展方程式は次のようになる.
x_{i,j}(t+1) = kx_{i,j}(t) + \Delta t\left( \sum_{C(k,l) \in N_r(i,j)} A(i,j;k,l) y_{i,j}(t) + \sum_{C(k,l) \in N_r(i,j)} B(i,j;k,l) u_{i,j}(t) + I \right)
ここで
k = 1 - \frac{\Delta t}{\tau}
である.時間離散化したCNNをDiscrete Time Cellular Neural Network(DT-CNN)という.

CNNのリアプノフ関数は
E(t) = \frac{1}{2R_x}\sum_{(i,j)}y_{i,j}^2 - \frac{1}{2}\sum_{(i,j)}\sum_{(k.l)}A(i,j;k,l)y_{i,j}(t)y_{k,l}(t) - \sum_{(i,j)}\sum_{(k.l)}B(i,j;k,l) y_{i,j}u_{k,l} - \sum_{(i,j)}Iy_{i,j}(t)
で表される.R_iが十分大きいときとき,第1項は無視できる.ただし,上記の関数がリアプノフ関数として成立するのは,Aテンプレートが対称性:
A(i,j;k,l) = A(k,l;i,j)
を満たすときのみである.

リアプノフ関数を見るとわかるように,CNNは上下限制約つきの2次関数を最小化するように状態を変化させていく.
そのため,リアプノフ関数が上に凸:
A(i,j;k,l) > \frac{1}{R_x}
ならば,CNNの出力y_{i,j}は,時間∞で-1か1に収束する:
y_{i,j}(\infty) \in \{-1, 1\}

CNNを用いても二次形式の組合せ最適化問題を解くことができる.CNNはHNNとは違って2通りの方法が考えられる.
  1. HNNと同様に,R_iを十分大きくして,リアプノフ関数の第1項を無視する.この場合,x_{i,j}のダイナミックレンジが広がってしまうという問題も残る.
  2. CNNのリアプノフ関数は2次関数であるため,リアプノフ関数自体を目的関数とみなす.この方法ならば,R_iを無理に大きくする必要がないため,ダイナミックレンジが小さくて済む.
2番目の方法をとれることが,HNNに対するCNNの利点である.

HNNとCNNとの相違点

  1. 出力関数
    • HNN:g(x) = 1/(1 + exp(-x/\alpha))
    • CNN:g(x) = \frac{1}{2}(|z+1| - |z-1|)
      ↑ 難しい非線形演算が含まれていないため,集積回路として実現しやすい.
  2. リアプノフ関数
    • HNN:E(t) = \sum_i \frac{1}{R_i} \int_0^{y_i} g^{-1}(z)dz - \frac{1}{2} \sum_i \sum_j T_{i,j}y_i y_j + \sum_i I_i y_i
    • CNN:E(t) = \frac{1}{2R_x}\sum{(i,j)}y_{i,j}^2 - \frac{1}{2}\sum_{(i,j)}\sum_{(k.l)}A(i,j;k,l)y_{i,j}(t)y_{k,l}(t) - \sum_{(i,j)}\sum_{(k.l)}B(i,j;k,l) y_{i,j}u_{k,l} - \sum_{(i,j)}Iy_{i,j}(t)
      ↑ リアプノフ関数が2次形式なので,リアプノフ関数自体を目的関数にできる.(リアプノフ関数の第1項を無視するために,x_{i,j}のダイナミックレンジを広げなければならないという問題を気にする必要がない.)
  3. y_{i,j}(\infty) \in \{0, 1\} or \{-1, 1\}を保証する条件
    • HNN:シグモイド関数1/(1 + exp(-x/\alpha))\alpha \rightarrow 0のとき,y_{i,j} \in \{0, 1\}R_iも関係ある??)
    • CNN:1次関数が上に凸であること.A(i,j;k,l) > \frac{1}{R_x}のとき,y_{i,j}(\infty) \in \{-1, 1\}
  4. セルフフィードバックの有無
    • HNN:セルフフィードバックなし.
    • CNN:セルフフィードバックあり.(CNNでy_{i,j}(\infty) \in \{-1, 1\}を保証するためには,セルフフィードバックが必要.)
  5. セルの結合範囲
    • HNN:すべてのセル.
    • CNN:近傍のセルの集合N_r(i,j) = \{ C(k,l) | \max\{|k-i|,|l-j|\}, 1 \leq k \leq M; 1 \leq l \leq N \}
  6. 入力信号の有無
    • HNN:入力信号としきい値信号は区別されておらず,どちらも入力電流Iによって表現する.
    • CNN:入力信号u_{i,j}としきい値信号Iが区別されている.u_{i,j}Bテンプレートによって近傍セルにも影響を与える.
※1〜4までには一連の繋がりがある.

HNNやCNNの利点

  • アナログ回路で構成すれば,A/D変換器が要らない.(HNNやCNNがA/D変換と情報処理を兼ねている.)
  • HNNやCNNは,すべてのセルが並列で計算されるため,NN単体で高い処理能力をもっている.

HNNやCNNの応用例

(ブラケット内はNN-UMに求められる機能)
  • MRFを利用した二値化処理 [大域的な解の探索]
    • 二値の領域分割
    • 多値の領域分割 [位置可変なテンプレート]
  • 巡回セールスマン問題 [大域的な解の探索]
  • スピングラス [大域的な解の探索]
  • 既知の関数で定式化できる最適化問題
  • 論理演算
  • エッジ検出
  • 膨張
※複雑な条件を取り入れたラベリングをしたい場合は,入力u_{i,j}を画像の濃度値p_{i,j}の関数u_{i,j}(p_{i,j})としなければならない(HNNでも同様).そのための計算ユニットがNN-UMに必要となる.

カオスアニーリング

:Transiently Chaos Neural Network (TC-NN)
|Chen, Aiharaが提案している相互結合型のニューラルネットワークがTransiently Chaos Neural Networkである.TC-NNの土台はDiscrete Time Hopfield Neural Networkである.HNNに負のセルフフィードバックを加えることで,ネットワークの振る舞いをカオス的に動作させ,この項を少しずつ小さくすることで,解の候補に収束させる.得られる解は,フィードバックを加えない場合よりも良い可能性が高い.良い解の得られる理由は未だ解明されていないが,多くの研究者は負のフィードバックによって引き起こされるカオス的な状態遷移が,大域的な解の探索に役立っているのではないかと考えている.TC-NNの欠点は,カオス的な動作をさせるためのパラメーターの設定が難しいことである.
:Chaotic Simulated Annealing with Decaying Chaotic Noise
|Heの提案している,相互結合型のニューラルネットワークがChaotic Simulated Annealing with Decaying Chaotic Noiseである.k = 0のDiscrete Time Hopfield Neural Networkにロジスティック写像から生成したカオスノイズを加えることで,大域的な解の探索を可能にしている.
:On Chaotic Simulated Annealing
|Wangらが提案した,大域的な最適化のできる相互結合型ニューラルネットワークがOn Chaotic Simulated Annealingである.DT-HNNの刻み時間を大きくすることで,カオス的な状態変化を引き起こし,大域的な最適解の探索をおこなう.TC-CNNと同じ欠点を持ち,パラメーターの設定は難しい.
:Noisy Chaotic Neural Network
|同じくWangらが提案した,大域的な最適化を可能にしたHNNである.TC-NNと同様に負のセルフフィードバックに加え,さらにランダムノイズを各セルに供給することで,大域的な最適化を可能としている.TC-NNのパラメーター依存性を低減したモデル(??)
:Cellular Neural Networks with Transient Chaos(CNN-TC)
|同じくWangらが提案している,大域的な最適化が可能なニューラルネットワークである.CNN-TCは,CNNを基礎にし,TC-NNと同様に負のセルフフィードバックを加えることでカオス的な状態遷移を引き起こしている.TC-NNのCNNバージョンともいえる.

階層型ニューラルネットワーク

パーセプトロン

標準デルタ則

パーセプトロンでは,中間層のニューロン(n個)と出力層のニューロン(1個)の間のシナプス結合荷重\bf{\omega} = ( \omega_1, \cdots, \omega_n )が学習の対象となる.
\omega_iは,中間層のi番目のニューロンと出力層のニューロンとの結合荷重を表している.
中間層のニューロンの出力を\bf{x} = ( x_1, \cdots, x_n ), \forall i(x_i =  0,1 )とすると,出力層のニューロンの出力はo = f(\bf{\omega x})で計算される.
f(\cdot)は出力関数と呼ばれ,標準デルタ則ではステップ関数である.
f(u) = \left\{ \begin{array}{ll}0 & (u < 0) \\ 1 & (u \geq 0) \end{array} \right\.

標準デルタ則では,次式を用いて,シナプス結合荷重の修正量\Delta \bf{\omega}を計算する.
標準デルタ則
 \Delta \bf{\omega} = \eta \left( t-o \right) \bf{x}_t
\bf{x}_ttは,それぞれ学習用データセットとその教師信号である.
\etaは学習効率と呼ばれ,大きいほど学習は速く進むが,発散や振動してしまう恐れもある.

標準デルタ則の意味を考えてみよう.
時間ステップkにおけるシナプス結合荷重\bf{\omega}_kが,学習データセット\bf{x}_tにて誤識別を生じさせたとする.
このとき,正しい識別をおこなうためには,\bf{\omega}_kを超平面\{\bf{\omega} | \bf{\omega x}_k = 0\}の向こう側に移動させると良い.
(∵超平面上に\bf{\omega}_kをとると,\bf{\omega}_k \bf{x}_t = 0となる.)
\bf{\omega}_kを超平面の向こう側に移動させる場合,修正の方向としては超平面に垂直な向き,つまり\bf{x}_tとすべきである.
これが,標準デルタ則の一番右の項\bf{x}_tの意味である.
真ん中の項(t-o)は,学習が,ニューラルネットワークの出力oと教師信号tがずれたとき,つまりニューラルネットワークが誤った答えを出力した場合に進められることを表している.

一般化デルタ則(B. Widrow)

パーセプトロンの限界


多層型ニューラルネットワーク

誤差逆伝搬法



最終更新:2008年12月16日 13:37
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。