RNN と LSTM
再帰型ニューラルネットワーク(RNN)は系列を一要素ずつ読み、新しい入力を隠れ状態へ取り込み、各ステップで重みを共有します。LSTM はセル状態を追加し、忘却ゲートで縮小して新しい内容を足します。毎回全体を作り直す経路とは異なります。
区別すべきなのは、順方向に情報を保つことと逆方向に学習信号を届けることです。学習済み RNN が長距離の問題に正解しても、同じ経路の勾配は弱い場合があります。本課では主語の情報は文末へ届きますが、逆方向の典型的な増幅率は約 10 万分の 1 です。
普通の RNN を二方向から見る
各ステップで現在の語 x_t と前の状態 h_(t−1) を使います。
h_t = tanh(W_x x_t + W_h h_(t−1) + b)
W_h は全位置で再利用するため、パラメータ数は文の長さに依存しません。最後に読み出し層が最終状態から答えを出します。この構造では隠れ状態が既読内容の要約を担います。
課題は英語の主語と動詞の数の一致です。the keys to the desk near the door ___ は are、keys を key に変えると is です。ラベルを決めるのは 2 語目で、その後の語は両ラベルで同じ語群から選ぶため手掛かりになりません。主語だけを対にして変え、モデルがその手掛かりを使うか確認します。
時間方向の逆伝播は ∂h_T/∂h_t を求め、次のヤコビ行列を各ステップで掛けます。
∂h_t/∂h_(t−1) = diag(1 − h_t²) · W_h
行列積は方向によって信号を縮小、増幅、保持します。tanh が飽和すると 1 − h² はゼロへ近づきます。本例の学習済みラッチでは、飽和が順方向の値を保つ一方で勾配を弱めます。すべての記憶が飽和を必要とするという意味ではありません。
LSTM のセル状態経路
C_t = f_t ⊙ C_(t−1) + i_t ⊙ g_t
h_t = o_t ⊙ tanh(C_t)
i、f、g、o は (x_t, h_(t−1)) のアフィン計算と対応する活性化から求めます。どれだけ保ち、書き込み、外へ見せるかを学習します。直接のセル状態経路では、古い状態に忘却ゲートを要素ごとに掛けて加算するだけです。逆方向はゲート値の積で、1 に近ければ減衰が緩やかになります。
これは全導関数ではありません。ゲートは前の隠れ状態にも依存し、再帰行列を通る間接経路もあります。表示するのは直接のセル状態経路で、constant error carousel と呼ばれる加算型記憶の考え方です。忘却ゲートがある場合、勾配が自動で一定になるわけではありません。
ステップ実行:文を読んでから逆方向へ
既定の RNN は the keys to the desk near the door ___ を読みます。主語と空欄の間は 6 語、全 9 ステップ、隠れユニットは 12 個で、学習済み重みを使います。
h₀ = 0から始めます。t = 1のtheでは、状態はW_xとバイアスから生まれます。t = 2の keys が答えを決めます。枠付きユニットは主語を切り替えたとき最終値が最も変わるもので、ここから保持状態へ入ります。t = 3…8はto、the、desk、near、the、door。同じW_hを 6 回使い、ラッチは手掛かりを保ち、他の状態は変わります。t = 9の空欄でh₉を読み、areを 100%、isを 0% と丸めて表示します。主語をkeyに変えるとisになるので、単に多数クラスを出しているわけではありません。
正解を表示したまま、7 列前の keys を再点灯して矢印で結びます。もし答えが誤っていたら、修正はその語まで戻れるでしょうか。
下の対数軸は経路の増幅率を示します。∂h_T/∂h_t の Frobenius ノルムを √H で割った値で、方向に関する二乗平均平方根の増幅率です。特定の勾配の大きさでも、通常の算術平均でもありません。答え位置では恒等写像なので 1.000 です。
| 逆向きの段数 | 時刻と語 | 隣接する表示値の比 | 経路の増幅率 |
|---|---|---|---|
| 0 | t = 9、空欄 | — | 1.000 |
| 1 | t = 8、door | ×0.122 | 0.122 |
| 2 | t = 7、the | ×0.075 | 9.2e-3 |
| 3 | t = 6、near | ×0.066 | 6.0e-4 |
| 4 | t = 5、desk | ×0.108 | 6.5e-5 |
| 5 | t = 4、the | ×0.192 | 1.2e-5 |
| 6 | t = 3、to | ×0.542 | 6.8e-6 |
| 7 | t = 2、keys | ×1.312 | 8.9e-6 |
主語では典型的な方向の相対信号が約 10 万分の 1 ですが、順方向の答えは正解です。実際の勾配は誤差方向や他の経路にも依存します。
この二乗平均平方根は上限ではありません。最も保たれる方向は積の最大特異値で、本例では 3.1e-5、約 3.5 倍ですが、それでも約 3 万分の 1 です。全方向が強く減衰していることは分かっても、更新に役立つかは損失の尺度、最適化手法、精度、他の経路にも依存します。
各段の実効倍率は一定の ρ ではなく、状態の飽和に応じ 0.066 から 1.312 まで変わります。最後の段は増幅しても、それまでの減衰を回復できません。7 段の幾何平均は約 ×0.19 です。
同じ文での LSTM 比較
終盤の比較場面で、切り替え操作なしに LSTM の値を同じ列へ表示します。
| 逆向きの段数 | 実効倍率 | 直接セル状態経路の増幅率 |
|---|---|---|
| 1 | ×0.867 | 0.867 |
| 3 | ×0.859 | 0.652 |
| 5 | ×0.898 | 0.524 |
| 7 | ×0.906 | 0.427 |
表示倍率は要素ごとの忘却ゲートから成る経路を要約した値で、複数ユニットを一つのゲートと同一視しません。7 段後は約 0.43、RNN は 0.0000089 で、約 48,000 倍の差です。最大の 12 語間隔では約 400 億倍になります。特定の学習済みモデルの経路指標であり、学習速度の比ではありません。
LSTM に切り替えると、状態の下の通路が f で縮小され、新しい内容を加える順方向の様子も見えます。間隔を動かすと両モデルとも正解しますが、主語への RNN の増幅率はより速く落ちます。
LSTM にも条件がある
直接経路は Π f_t です。各段が f = 0.5 なら 7 段で 0.5⁷ ≈ 7.8e-3、13 段で 1.2e-4 です。保持には 1 に近いゲートが必要で、構造だけで長距離勾配を保証しません。得られるのは、ユニットごとに学習できる保持の判断です。本課はよく使われる設定として忘却ゲートのバイアスを 1 に初期化し、開く側から忘却を学習します。
長距離課題の失敗には、情報を保持できない場合と、保持しても使い方を学びにくい場合があります。前者は容量や入力表現、後者は勾配経路を調べます。経路の測定は診断に役立ちますが、完全なヤコビ行列やそのノルムには複数のベクトル逆伝播が必要な場合があります。一つの方向の探査はその方向しか測りません。
ゲート付き再帰は固定サイズの状態で音声ストリームや制御入力を処理できます。費用が他方式より小さいかは用途と実装次第です。注意機構の許可された接続は、一層で遠い位置を結び、中間の再帰ステップを避けられます。ただしマスク、重み、深さ、他のヤコビ行列は残り、距離の代価がすべて消えるわけではありません。
境界ケース
- 最短の 2 語間隔:逆向き 3 段で RNN は約 7.8%、LSTM は約 61% を保ちます。減衰は距離に依存します。
- 単数主語:両モデルが各間隔で
keyをisと判断します。手掛かりへの依存を調べる対照です。一度の失敗だけでクラス不均衡の利用を証明はできません。 - 増幅する一段:実効倍率が 1 を超えても、全経路の積を確認する必要があります。
- LSTM の他の経路:緩やかな曲線は直接
C経路だけです。o ⊙ tanh(C)と再帰行列を通る隠れ状態経路は縮小・増幅しえます。 - 両モデルともこの課題を学べる:経路の差だけで RNN が学習不能とは言えません。同じ訓練手順、固定間隔、5 個のランダムシードでの結果です。
| 固定間隔 | RNN の収束 | LSTM の収束 | 解けるまでの反復数の中央値 |
|---|---|---|---|
| 20 | 5/5 | 5/5 | RNN 331、LSTM 48 |
| 40 | 2/5 | 2/5 | 成功数が少ないため報告しない |
間隔 20 では LSTM が約 7 倍速く、40 では両方とも安定しません。一つのビットの保持だけなら飽和した tanh もラッチとして働き、Adam や勾配クリッピングも学習を助けます。複雑な長距離の信用割当の強い試験ではありません。正確な読み方は、経路に数桁の差があっても、この小課題は両方が学べるというものです。
よくある間違い
- 正解を健全な勾配の証拠にする。順方向の保持と逆方向の到達性は別の量です。
- 二乗平均平方根の増幅率を上限と読む。上限は最大特異値で、本例は約 3.5 倍です。
- 理論の
ρ^kの境界を一定倍率の実測軌跡と読む。本例は約0.07–1.3で変動します。 - LSTM が掛け算をなくしたと思う。直接経路は各ユニットの忘却ゲートの積で、保持率を学べるようにしています。
tanhを ReLU に替えれば十分と考える。再帰重みは信号を縮小・増幅し続けます。加算状態は経路を変え、クリッピングは爆発を制限します。- 12 ユニット、10 語の語彙、合成文から実際の言語モデルの数値まで一般化する。重み、順伝播、ヤコビ行列はブラウザで実計算しますが、大規模モデルは構造・層数・データが異なります。機構は比較できても数値は移せません。
続けて学ぶ
同じ手法につながるレッスンや、次の概念への入口です。
鍵マークのあるレッスンの操作には有料アクセスが必要です。解説はすべて無料で読めます。
誤りや気になる点を見つけましたか? フィードバックを送る。