本文へ移動

G検定(ジェネラリスト検定)

えるまんねっとわーく

エルマンネットワーク

Elman Network

エルマンネットワークは、ジェフリー・L・エルマン(Jeffrey L. Elman)が1990年の論文で示した再帰型のニューラルネットワークです。入力層と同じ段に文脈ユニットを置き、ある時刻の隠れ層の値をそのまま写しておいて、次の時刻に新しい入力と一緒に隠れ層へ入れます。エルマンはこの構造について、出力層の値を戻すマイケル・I・ジョーダン(Michael I. Jordan)の1986年の構造を修正したものだと説明しています。

詳しい説明

エルマンネットワークとは何か

エルマンネットワークは、ジェフリー・L・エルマン(Jeffrey L. Elman)が1990年に学術誌Cognitive Scienceに発表した論文「Finding Structure in Time」で示したネットワークの構造です。時間の順に1つずつ届く入力を扱うために、ネットワークに記憶を持たせることを狙っています。エルマン自身は論文の図の説明で、この構造を単純再帰型ネットワーク(simple recurrent network)と呼んでいます。

構造の中心は、文脈ユニット(Context Units)と呼ぶ追加のユニットです。ある時刻に隠れ層が持っていた値を文脈ユニットへそのまま写しておき、次の時刻には新しい入力と文脈ユニットの値の両方を隠れ層へ入れます。隠れ層とは、入力層と出力層の間にあって外から直接は見えない層のことで、中間層とも呼ばれます。

時間を入力の並びに置き換える方法の弱点

エルマンは論文の前半で、時間を扱う当時の方法の問題を挙げています。その方法は、順に起きる出来事をベクトルの1番目の要素、2番目の要素と順に並べ、ベクトル全体を一度にネットワークへ入れるものです。時間を空間の位置に置き換えていると言えます。

エルマンが挙げた弱点は3つです。1つ目は、入力をためておいて一度に渡す仕組みが、ネットワークの外側に必要になることです。2つ目は、入力層の大きさで扱える長さの上限が決まってしまい、すべての入力を同じ長さにそろえることを求める点です。長さがまちまちな言語のようなデータでは、これが特に困ります。3つ目は、エルマンが最も深刻だとしたもので、相対的な時間の位置と絶対的な時間の位置を区別しにくいことです。論文は、1が続く同じ形がベクトルの中で位置だけずれている2本のベクトルを例に挙げ、ベクトルとして見ると両者は似ていないと指摘しています。

そこでエルマンは、時間を入力の一部として明示するのでなく、時間が処理に与える影響として表す方向を取りました。論文の言葉では、ネットワークに記憶を与える必要があるということです。

ジョーダンの構造をどう修正したか

エルマンは、ネットワークに記憶を持たせる提案がすでにいくつも出ていたことを述べたうえで、その中で最も有望なものの1つとして、マイケル・I・ジョーダン(Michael I. Jordan)が1986年に示したネットワークを紹介しています。ジョーダンのネットワークは、計画(Plan)と呼ぶ固定の入力パターンと、順序のある出力の列とを結び付けるためのものでした。このネットワークは出力ユニットの値を状態ユニットへ戻す再帰結合を持ち、隠れ層は状態ユニットを通じて1つ前の自分の出力を見ることができます。エルマンは、この再帰結合がネットワークに記憶を与えていると説明しています。

その直後にエルマンは「This approach can be modified in the following way」(この方法は次のように修正できる)と書き、文脈ユニットを導入します。論文の要旨でも、ジョーダン(1986)が最初に述べた提案に沿って発展させたものだと位置づけています。したがってエルマンネットワークは、再帰結合で記憶を持たせるという発想を新しく打ち出したものではありません。エルマン自身の説明に従えば、ジョーダンの構造を修正し、次の時刻へ戻す値を出力層の値から隠れ層の値に変えたものです。

文脈ユニットが働く順序

文脈ユニットは、入力ユニットと同じ段に追加されます。ただし外の世界とはやり取りせず、ネットワークの内部のユニットとだけつながります。エルマンはこの意味で、文脈ユニットも「隠れた」ユニットだと述べています。

入力が1つずつ順に届くとき、処理は次の順で進みます。

1. 時刻 に、入力ユニットが列の最初の入力を受け取ります。文脈ユニットの値は、最初は0.5に設定されています。論文で使った活性化関数は値を0から1の範囲に収めるもので、0.5はその中間です。
2. 入力ユニットと文脈ユニットの両方が隠れ層を活性化し、隠れ層が出力ユニットを活性化します。

3. 隠れ層の値は、文脈ユニットへも送られます。

4. 学習を行う場合は、出力を教師の値と比べ、誤差逆伝播法で結合の強さを少しずつ調整します。

5. 次の時刻 に同じ手順を繰り返します。このとき文脈ユニットには、時刻 の隠れ層の値がそのまま入っています。

時刻 の隠れ層の値を 、時刻 の文脈ユニットの値を と書くと、手順5は次の関係を表しています。

結合の細部も論文に書かれています。隠れ層から文脈ユニットへの結合は1対1で、隠れユニット1つに文脈ユニット1つが対応します。そのため、文脈ユニットの数は隠れユニットの数と同じになります。この写しのための再帰結合は重みが1.0に固定されていて、学習では調整されません。文脈ユニットから隠れ層への結合は、1つの文脈ユニットがすべての隠れユニットにつながる形です。

隠れ層が引き受ける2つの仕事

文脈ユニットは、1つ前の内部状態を覚えています。そのため隠れ層は、外からの入力と1つ前の内部状態の両方から、望ましい出力を作る対応づけの役を負います。さらに、隠れ層の値はそのまま次の時刻の文脈として保存されます。隠れ層はこの対応づけをこなしながら、同時に、順に届く入力の時間的な性質をうまく表す表現も作らなければなりません。エルマンは、こうしてできる内部の表現は時間の文脈に敏感になり、時間の影響がその内部状態の中に暗に含まれると説明しています。

エルマンはあわせて、この時間の文脈の表現は文字どおりの記録である必要はなく、課題と刺激に強く左右される記憶だと述べています。文脈ユニットに過去の入力がそのままの形で残るとは限らない点は、誤解しやすいところです。

ジョルダンネットワークとの違い

ジョーダン(1986)の構造は、日本語ではジョルダンネットワークと呼ばれます。2つの構造は、どちらも前の時刻の値を固定の重みで写して次の時刻に使いますが、何を写すかが違います。

比べる点ジョーダン(1986)の構造エルマン(1990)の構造
次の時刻へ戻す値出力ユニットの値隠れ層の値
戻した値を受けるユニット状態ユニット文脈ユニット
戻すための結合出力ユニットから状態ユニットへ1対1、重み1.0に固定隠れ層から文脈ユニットへ1対1、重み1.0に固定
状態ユニット(ジョーダン)・文脈ユニット(エルマン)が持つ値1つ前の出力と、状態ユニット自身の1つ前の値の両方1つ前の隠れ層の値のみ

ジョーダンの構造では、状態ユニットは自分自身への再帰結合も持っています。そのため、ジョーダンの構造の状態は、前の出力と前の状態の両方に依存できます。エルマンの構造では、戻る値は出力として外に出た値ではなく、隠れ層が内部で作った値そのものです。

XORを1ビットずつ読ませた実験

エルマンが論文で最初に示した実験は、排他的論理和(XOR)を時間の問題に置き換えたものです。XORは2ビットを受け取り、2つが違えば1、同じなら0を返す関数です。エルマンは、ランダムに選んだ2ビットの入力を1ビットずつ2回に分けて並べ、その後にXORの答えの1ビットを続けました。これをつなげた3,000ビットの列をネットワークに1ビットずつ読ませ、各時点で次のビットを予測させています。使ったネットワークは、入力ユニット1つ、隠れユニット2つ、出力ユニット1つ、文脈ユニット2つです。

この列では、3ビットの組の1ビット目と2ビット目はランダムなので予測できません。予測できるのは3ビット目だけで、それには直前の2ビットが必要です。隠れ層に入るのは現在の1ビットと、1つ前の隠れ層の値の写しだけなので、1つ前のビットの情報は文脈ユニットを通じて届くことになります。

3,000ビットの列を600回通して学習させると、予測の誤差は、正しく予測できるはずの位置で下がり、それ以外の位置では高いままでした。エルマンはこの結果について、ネットワークが入力の時間的な構造を学び、それまでの文脈と現在の入力を使って次の入力を予測できるようになったことの表れだと解釈しています。2つの隠れユニットのうち、一方は同じ値が続くときに強く活性化し、もう一方は値が交互に変わるときに強く活性化していました。エルマンは、これが入力を一度に与える通常のネットワークでXORを解くときとは違う解き方だと述べています。

一方でエルマンは、この課題は1ビット前までの記憶しか必要としない単純なものだとも書いています。論文はこの後、複数ビットの入力が長い時間にわたって続く、より複雑な列へ課題を広げています。

試験で問われること

G検定

  • エルマンネットワークは、ある時刻の隠れ層の値を文脈ユニットへそのまま写し、次の時刻に新しい入力と一緒に隠れ層へ入れる構造です。時刻 の隠れ層の値を 、時刻 の文脈ユニットの値を とすると、 の関係になります。
  • ジョルダンネットワークとの違いは、次の時刻へ戻す値です。ジョルダンネットワークは出力ユニットの値を状態ユニットへ戻し、エルマンネットワークは隠れ層の値を文脈ユニットへ戻します。どちらの層を戻すかを取り違えないことが基本です。
  • エルマン自身は1990年の論文で、この構造をジョーダン(1986)の構造を修正したものとして提案しています。再帰結合でネットワークに記憶を持たせる発想を最初に示したのがエルマンだ、と理解するのは論文の説明と合いません。
  • 隠れ層から文脈ユニットへの結合は1対1で、重みは1.0に固定され学習では調整されません。このため文脈ユニットの数は隠れユニットの数と同じになります。

最終更新日: 2026/09/23