本文へ移動

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

せっく

CEC

CEC

Constant Error Carousel

CEC(Constant Error Carousel、定誤差カルーセル)は、恒等関数と重み1.0の自己結合で誤差信号を一定に保つ線形ユニットで、LSTMのメモリセルの中心を担う仕組みです。

詳しい説明

誤差を一定に回し続ける線形ユニット

CEC(Constant Error Carousel、定誤差カルーセル)は、LSTMの原論文で導入された、誤差信号を時間を通じて一定に保つための仕組みです。原論文では constant error carrousel と綴られています。論文はCECを、LSTMの中心的な特徴になるものだと位置づけています。

CECの考え方は、自分自身へ結合を持つユニット j に注目するところから始まります。誤差が時間をさかのぼって流れるときに一定に保たれる条件を導くと、活性化関数 fj が満たすべき形が決まります。論文は、微分方程式を積分した結果として fj(netj(t)) = netj(t)/wjj が任意の netj(t) について成り立つ必要があると示しています。

恒等関数と重み1.0という条件

この条件が意味するのは、fj は線形でなければならず、ユニット j の活性値は一定のまま保たれなければならない、ということです。式で書くと yj(t+1) = fj(netj(t+1)) = fj(wjj yj(t)) = yj(t) となります。

論文の実験では、この条件を次の2つで満たしています。

  • 活性化関数を恒等関数にする。すなわち、すべての x について fj(x) = x とする
  • 自己結合の重みを wjj = 1.0 に固定する

このように設定されたユニットでは、誤差信号が自己結合を回るたびに減衰も増大もせず、同じ大きさのまま保たれます。この性質を持つ仕組みをCECと呼びます。

CECだけでは解決できない2つの重みの衝突

CECによって誤差を一定に流すことはできますが、自己結合を持つ線形ユニットをそのまま使う素朴な方法には欠点があります。論文は次の2つの衝突を挙げています。

入力の重みの衝突

ある入力に応じてユニット j をオンにし、それを長い時間保持すれば全体の誤差を減らせる場面を考えます。このとき、ユニット j への入力の重み wji は、ある入力を記憶するためにも、それ以外の入力を無視するためにも、同じ1つの重みとして使われなければなりません。そのため、この期間中に wji は互いに矛盾する更新の信号を受け取ることがよくあります。

出力の重みの衝突

ユニット j がオンになり、以前の入力を記憶している場面を考えます。ユニット j から別のユニット k への出力の重み wkj は、ある時点では j の内容を取り出すために使われ、別の時点では j が k を乱さないようにするために使われなければなりません。論文は、この衝突が学習を難しくし、出力の重みを通じた読み出しを、文脈に応じて制御するしくみが必要になると述べています。

ゲートを加えてメモリセルへ拡張する

これらの欠点を持たずに、自己結合を持つ特別なユニットを通して誤差を一定に流すため、論文はCECに追加の機能を加えて拡張しました。

  • 乗算的な入力ゲート: 無関係な入力による乱れから、ユニット j に記憶された内容を守る
  • 乗算的な出力ゲート: その時点では関係のない j の記憶内容によって、他のユニットが乱されるのを防ぐ

こうしてできた、より複雑なユニットがメモリセルです。各メモリセルは、固定された自己結合を持つ中心の線形ユニット、つまりCECを核として組み立てられています。

メモリセルの中で誤差がどう扱われるか

メモリセルのCECに閉じ込められた誤差信号は変化しません。一方で、異なる時点に出力ゲートを通ってセルへ流れ込む誤差信号は、重ね合わされることがあります。そのため出力ゲートは、どの誤差をCECに閉じ込めるかを、誤差の大きさを適切に調整することで学習する必要があります。入力ゲートは、いつ誤差を解放するかを学習する必要があります。

まとめると、CECは誤差を一定に保つという役割を担い、入力ゲートと出力ゲートはCECへの書き込みと読み出しを制御する役割を担います。この組み合わせによって、CECの利点を保ちながら、重みの衝突という素朴な方法の欠点を避けるのがメモリセルの設計です。

試験で問われること

G検定

  • CECで誤差信号を一定に保つために、活性化関数と自己結合の重みはそれぞれどのように設定されるか(fj(x)=x、wjj=1.0)を説明できますか。
  • CECがLSTMの中でどのような位置づけの仕組みであり、メモリセルのどこに組み込まれているかを説明できますか。
  • 自己結合を持つ線形ユニットだけを使う素朴な方法で起きる、入力の重みの衝突とはどのような問題かを説明できますか。
  • 出力の重みの衝突とはどのような問題か、またそれを解決するために導入された出力ゲートの役割を説明できますか。
  • CECに乗算的な入力ゲートと出力ゲートを加えてできるユニットの名前と、2つのゲートがそれぞれ何を守るかを説明できますか。

最終更新日: 2026/09/23