文、音、センサーの記録、株価は、順序が意味をつくる。1枚ずつ別々に見るニューラルネットワークに「さっき見たもの」を覚えておくループを付けるとRNNになり、その記憶がぼやけないように扉(ゲート)を付けるとLSTMとGRUになる。記憶が実際に残るかを数字で追い、ゲートがあっても学習がひとりでにうまくいくわけではないことまで実験で確かめる。
3-1でショウジョウバエは、影が「近づいてくるか」を見分けた。では、影が写った写真を1枚だけ受け取ったらどうだろうか。
3-2・3-3のニューラルネットワークは、入力を1つ受け取って出力を1つ出したら終わりである。前に何を見たかは覚えていない。このようなネットワークをフィードフォワード(前にだけ流れる)ニューラルネットワークと呼ぶ。同じ大きさの影1枚は、近づいている途中かもしれないし、遠ざかっている途中かもしれない。答えは場面1つではなく場面の順序にある。3-1の実験で場面2枚(最初・後)を一緒に入れたのもこのためである。
数列「100 → 110 → 120」(上昇)と「120 → 110 → 100」(下降)は、同じ3つの数でできている。フィードフォワードニューラルネットワークにこの2つを入れる方法は2通りある。
ht = f(xt, ht−1)同じ重みを時刻ごとに使い回す
セクション2の問題を解くアイデアは簡単だ。1マスを処理するときに、前のマスでつくった要約(隠れ状態)も一緒に受け取る。図に描くと、箱から出た矢印が自分自身に戻ってループになる。このループを時間軸に沿ってずっと展開すると、同じ箱がマスの数だけ連なったフィードフォワードニューラルネットワークのように見える。箱はすべて同じ重みを使う。3-3のCNNが同じフィルタをすべての「位置」に使ったように、RNNは同じ重みをすべての「時点」に使う。だから長さが変わっても重みの数はそのままである。
ht = tanh(wx·xt + wh·ht−1)Elman, 1990
展開した図の上で誤差逆伝播法を行うとBPTT(時間をさかのぼる誤差逆伝播法)になる [R8]。最後の出力の誤差が最初のマスまで届くには、1マスさかのぼるたびに wh × tanhの勾配(1 − h²)を掛ける。この値が1より小さければマスの数だけべき乗されて0に近づき(勾配消失)、1より大きければ爆発しうる。Bengioらは1994年に、このため勾配降下法で長い時間依存を学ぶことが根本的に難しいことを示した [R2]。
whを大きくすると記憶は長く残るが(1.5)、tanhが±1付近に張り付いて勾配 1 − h² が0に近づく。記憶をつかんでおくことと、その記憶を学習で直すことがぶつかり合うのである。3-2の「シグモイドの勾配は最大0.25」と同じ根を持つ問題だ。
ct = ft ⊙ ct−1 + it ⊙ gt · ht = ot ⊙ tanh(ct)Hochreiter & Schmidhuber, 1997 · 忘却ゲート Gersら, 2000
| 記号 | 名前 | 範囲 | 役割 (このセルで決めた重み) |
|---|---|---|---|
| ct | セル状態 | 制限なし | 長い記憶を運ぶベルトコンベア。掛け算1回(f)と足し算1回だけを経て次のマスへ行く |
| ft | 忘却ゲート | 0~1 (σ) | 前の記憶をどれだけ残すか。σ(bf)で常に一定にしておいた |
| it | 入力ゲート | 0~1 (σ) | 新しい値をどれだけ書き込むか。σ(10 × 開始マーク − 5):最初のマスでだけ開く |
| gt | 候補値 | −1~1 (tanh) | 書き込む内容。tanh(3 × xt) |
| ot | 出力ゲート | 0~1 (σ) | 記憶のうちどれだけを出すか。σ(5) ≈ 0.993で常に開けておいた |
| ht | 隠れ状態(出力) | −1~1 | ot ⊙ tanh(ct)。次の層と次のマスのゲートへ行く |
| ⊙ | 要素ごとの積 | ベクトルの同じ位置どうしを掛ける。この例のように数が1つなら、ただの掛け算である |
このセルの重みは説明のために人が決めた。「最初のマスでだけ書き込み、その後はほとんど消さない」という規則である。だから最初の信号を反転すると、20マス後の記憶も正確に反転する。セクション4のRNNは、同じ入力で最初の信号を反転しても、最後の値が小数点以下4桁までまったく同じだった。LSTMが長い記憶を保持できる構造だということである。セル状態が掛け算1回(f ≈ 1)と足し算だけでつながっているので、逆向きに伝わる勾配もほとんど小さくならない [R3]。
2つ補足する。第一に、1997年の元のLSTMには忘却ゲートがなかった。忘却ゲートは、Gersらが終わりなく続く入力でセル状態が大きくなる一方になる問題を解くために加えたもので [R4]、今日「LSTM」といえば普通はこの版を指す。第二に、構造が記憶を保持できるからといって、学習がその重みを見つけ出す保証はない。コード2の実験がその違いを示している(セクション6の下)。
ht = (1 − zt) ⊙ ht−1 + zt ⊙ h̃tChoら, 2014
GRUはLSTMの忘却ゲートと入力ゲートを更新ゲート z 1つにまとめた。前の記憶を (1 − z) だけ残し、その空いた分を新しい候補 h̃ で z だけ埋める。残すほど書き込みが減り、書き込むほど残る分が減る天秤である。これに、前の記憶を候補の計算にどれだけ使うかを決めるリセットゲート rを加えた。セル状態と隠れ状態を分けないので、出力ゲートもない [R5]。
重みのまとまりがLSTMの4つから3つに減り、教科書の式ではパラメータはちょうど3/4になる。KerasのデフォルトのGRUはバイアスをもう1組持つので少し多い(隠れ状態16、入力1のとき912個対1,152個、約0.79倍)。どちらが良いかはタスクによって異なる。
すべてのマスが±1で、正解が最初のマスである数列(後ろのマスはすべて同じ見た目の妨害役)。隠れ状態16、Adam 0.005、30エポック、学習2,000個・テスト1,000個。シード2つの結果を別々に記した。50%付近は当てずっぽうの水準、つまり学習失敗である。
入力を狭い中間層(ボトルネック)に縮めてから、また元どおりに復元するように学習する。正解は要らない。入力そのものが正解である。ショウジョウバエのキノコ体は正反対に広げる。
ボトルネックが狭ければ、最も重要なものだけを残さなければならない。この図の数列は、2種類の正弦波を混ぜてつくった16マスの断片である。活性化関数のない(線形の)オートエンコーダが学習で到達できる最良の結果は主成分分析(PCA)と同じであることが証明されているので [R6]、この図はその最適な結果を直接計算して示している。層を重ねた非線形のオートエンコーダは、PCAよりうまく縮めることができる [R7]。
系列モデルでは、RNNエンコーダが文1つを固定長のベクトルに縮め、RNNデコーダがそれを別の文に展開する構造(エンコーダ–デコーダ)として使われた [R5]。長い文を狭いボトルネック1つにすべて収めるのは難しいという限界が、次の回3-8のアテンションを生む。
本や論文によって図の記号は少しずつ違う。このシリーズの約束事を整理し、系列モデルがどんな問題を解きながら受け継がれてきたかを年代順に見る。
| 記号 | 意味 | フィードフォワード | RNN | LSTM | GRU | オートエンコーダ |
|---|---|---|---|---|---|---|
| 箱 | 層1つ (重みの積 + 活性化関数) | ✓ | ✓ | ✓ | ✓ | ✓ |
| → | 値が流れる方向 | 前にだけ | 前 + 次の時点 | 前 + 次の時点 | 前 + 次の時点 | 前にだけ |
| ↺ ループ | 前の時点の値を再び受け取る | — | h | hとc | h | — (系列型はRNNを使う) |
| σ | 0〜1に押し込む扉(ゲート) | — | — | 3個 (f, i, o) | 2個 (z, r) | — |
| tanh | −1〜1に押し込む活性化関数 | 選択 | ✓ | 候補 gと出力 | 候補 h̃ | 選択 |
| ⊙ · ⊕ | 要素ごとの積 · 足し算 | — | — | ✓ | ✓ | — |
| 砂時計 | 狭くなってから広がる層のサイズ | — | — | — | — | ✓ |
3つの質問に答えると、出発点となるモデルを選ぶ。正解ではなく最初の候補である。最終的な決定は、いつも検証データで比較して行う(3-2 セクション9)。
どちらのコードも、Colabに標準でインストールされているライブラリだけを使う。「ノートブック(.ipynb)をダウンロード」したあと、Colabでファイル → ノートブックをアップロードで開くか、コピーして新しいノートブックのセルに貼り付ける。
セクション4の数1つだけのRNNと、セクション5の手で決めたLSTMを、同じ数列で計算する。隠れ状態、逆向きに伝わる勾配、最初の信号を反転したときの変化が、ページと同じ数字で出てくる。自分のデータに変えるには SEQだけを変える。
すべてのマスが±1で、正解が最初のマスである数列を3つのモデルで学習する。長さ10 · 50 · 100、シード2つ。セクション6の下の表は、この出力からそのままつくられている。
ChatGPT、Qwen、ClaudeのようなAIアシスタントに貼り付けるプロンプトである。「コピー」を押すと、プロンプトのあとに選んだコードが一緒に付く。〔 〕の中を自分の状況に書き換えて使えばよい。
AIの答えは出発点にすぎない。提案された論文・数値・ライブラリ関数は、必ず原文と公式ドキュメントで確認する。コンテストや論文でAIの助けを借りた場合は、主催者や学術誌の規定に従って、使用した事実と範囲を明らかにする。
本文の黄色い点線の下線と同じ辞書である。シリーズ全体で同じ表記を使う。セクション名を押すと最初に出てきた場所へ移動する。
たとえは理解の第一歩だが、誤解の種にもなる。ショウジョウバエ・脳のたとえには強さを示した。直接 実際に同じことをしているという根拠がある · 部分 一部の性質だけが似ている · なし 対応するものが知られていない
| 概念 | 日常のたとえ | ショウジョウバエ・脳のたとえ | たとえが外れるところ |
|---|---|---|---|
| 隠れ状態 | 本を読みながら頭の中に積み上げるあらすじの要約 | 部分的 ニューロン集団の持続的な活動 | 脳の短期記憶がどんな回路で保たれるかは領域ごとに異なり、研究中である |
| 展開・重み共有 | 同じ社員が毎日同じ業務マニュアルで働くこと | なし | 脳は時刻ごとに同じ「コピー」をつくらない。展開は計算のための図である |
| 勾配消失 | 伝言ゲームで最初の言葉がぼやけていくこと | なし 誤差逆伝播法そのものが脳で確認されていない | 伝言ゲームは前へ進む信号がぼやけることだが、勾配消失は逆向きに進む学習信号が小さくなることである |
| セル状態 | 工場のベルトコンベア | なし | ベルトの上の物はそのまま運ばれるが、セル状態は忘却ゲートの分だけ毎マス少しずつ小さくなる |
| ゲート | 蛇口 (どれだけ開くか 0〜1) | 部分的 シナプス伝達を調節する神経調節物質 (例:ショウジョウバエのキノコ体のドーパミン) | ドーパミンは学習(結合の強さの変化)に関わる。LSTMのゲートは毎マスの流れを決める計算であり、それ自体は学習ではない |
| GRUの更新ゲート | 天秤:古い記憶を減らすほど新しい内容を多く入れる | なし | 実際の天秤と違い、マスごと、数ごとに異なる比率を使う |
| オートエンコーダのボトルネック | 長い会議を3行に要約してから、また書き広げること | 部分的 反対の例:キノコ体は狭めずに広げる | 要約と違い、オートエンコーダは「何が重要か」を人が決めず、復元誤差だけで決める |
E-1 著者紹介 · E-2 学術参考文献 · E-3 図の参考資料
講師、実務OJT担当者、チューターのための運営ガイドである。時間は目安なので、実際の授業に合わせて調整する。
| 対象 | 3-2を終えた大学生・社会人。センサー・ログ・文・時系列データを扱う実務者 |
|---|---|
| 前提知識 | 3-2の誤差逆伝播法と勾配消失、シグモイド・tanh。3-3の重み共有を知っているとセクション3がわかりやすい |
| 学習目標 | ① フィードフォワードが順序を扱いにくい理由を2つの方法(平均、つなげる)で説明する ② RNNの隠れ状態と勾配消失を数字で示す ③ LSTM・GRUのゲートが何をするかを説明し、「構造が記憶を保持できる」と「学習がそれを見つける」を区別する |
| 所要時間の目安 | 読む 45〜55分 · アニメーション実演 25分 · Colab実習 30分 (コード1 10分、コード2 実行5分 + 解釈15分) |
導入5分(セクション1の同じ場面)→ セクション2・3 10分 → セクション4 勾配消失 10分 → セクション5 最初の信号の反転 15分 → セクション6の下の実験表の討論 5分 → 確認問題 5分。
セクション9の選択ガイドでチームのデータを分類 15分 → セクション4・5 20分 → コード2の実行・解釈 30分(「シードによって分かれる」をどう報告するか)→ セクション7 異常検知のアイデア 15分 → プロンプトカード 10分。
入門者はセクション1・3・5・9だけ。中級者には、セクション5のcの計算を手で3マス追わせた後でコード1のlstm関数と照らし合わせ、セクション6のパラメータの式を自分で導かせる。
| セクション | 立ち止まって投げかける質問 | 操作のコツ |
|---|---|---|
| 1 1枚ずつ | 「3番目の場面だけを見て、接近かどうかわかるだろうか?」 | 「今の場面1枚」で止めてから「順序」に切り替える |
| 2 フィードフォワード | 「文の長さが毎回違ったら、つなげる方法はどうなるだろうか?」 | 長さ3と5を交互に押して、入力のマス数が変わるのを見る |
| 3 ループと展開 | 「展開した箱5つの重みは何組あるだろうか?」 | 畳んだ図 ↔ 展開した図を交互に押す |
| 4 RNN | 「w_hを大きくすると記憶は長く残るのに、なぜ学習はより難しくなるのだろうか?」 | 0.9 → 1.5に変えて、h12と勾配の数字を比べる |
| 5 LSTM | 「最初の信号を反転すると、20マス後の記憶はどうなるだろうか?」 | b_f = 5で+1/−1を切り替えた後、b_f = 1に変えて違いを見る |
| 6 GRU | 「ゲートのあるLSTM・GRUが、なぜT = 100で失敗したのだろうか?」 | 実験表のシード0と1を並べて読む |
| 7 オートエンコーダ | 「ボトルネックが4のとき誤差が急に小さくなる理由は?」 | ボトルネックを1 → 4に増やしながら緑の曲線を見た後、キノコ体の表示に切り替える |
| 8 図の文法・系譜 | 「1997年のLSTMと今日のLSTMは何が違うだろうか?」 | 年表を押して2000年の忘却ゲートへ進める |
| 9 選択ガイド | 「うちのチームのデータはどれに当たるだろうか?」 | 参加者ごとに答えを選ばせた後、推薦が分かれるポイントを討論する |
| 誤解 | 正しい説明 | 見せる場面 |
|---|---|---|
| LSTMを使えば長い記憶の問題は解決する | LSTMは長い記憶を保持できる構造である。学習がその重みを見つけるかどうかは、タスク・学習時間・初期化次第である | セクション6の下の実験表 (T = 100) |
| SimpleRNNは数マス進めば必ず忘れる | 初期化とタスクによってはかなり長く覚えていることもある。この実験ではT = 50まで両方のシードで成功した | セクション6の下の実験表 (T = 50) |
| LSTMには最初から忘却ゲートがあった | 1997年の元の論文にはなく、2000年にGersらが加えた | セクション8の年表 |
| GRUはLSTMより常に速くて良い | パラメータが約3/4と少ないだけで、性能はタスクによって異なる。この実験のT = 50ではGRUだけが失敗した | セクション6 |
| オートエンコーダは脳の記憶の仕組みをまねた | 狭めて要約する計算手法である。ショウジョウバエのキノコ体はむしろ広げる | セクション7のキノコ体の表示 |
順序が失われる。100 → 110 → 120(上昇)と120 → 110 → 100(下降)はどちらも平均が110なので、ネットワークは区別できない。
h_1 = tanh(1) ≈ 0.762, h_2 = tanh(0.9 × 0.762) = tanh(0.686) ≈ 0.595.
19マスの間掛けられるので、0.9933の19乗 ≈ 0.880倍である。セクション5の実際の値(0.988 → 0.864、約0.875倍)が少し小さいのは、入力ゲートが完全には閉じておらず(0.007)、妨害信号が少しずつ漏れ込んだためである。この数列の妨害信号は−1が10個、+1が9個である。
1組 = 16 × (16 + 1) + 16 = 288。SimpleRNN 288、LSTM 4 × 288 = 1,152、GRU 3 × 288 = 864。KerasのデフォルトのGRUはバイアス48個を加えて912である。
よくない。セクション5のように重みを適切に決めれば、LSTMは長い記憶を保持できる。失敗は、30エポックのうちに勾配降下法がその重みを見つけられなかったという意味である。学習時間、学習率、データ量を変えて再び実験し、複数のシードで繰り返してはじめて結論を出せる。
コード1のlstm関数で、入力ゲートを常に開けておくように(i = σ(5))変える。最初の信号を反転したときに20マス後のセル状態がどうなるかを計算し、入力ゲートの役割を2文で書く。
コード2で、T = 100の失敗を成功に変える方法を1つ以上試す(エポックを増やす、学習率を変える、データを増やすなど)。シード3つ以上で結果を表にして報告し、何が効果的だったかを根拠を挙げて書く。
| 入門者 | セクション4の勾配グラフとセクション7・8は飛ばしても流れは途切れない。セクション5の「最初の信号の反転」1つだけを確実に見せる |
|---|---|
| 発展 | セクション4の勾配の積の式を、隠れ状態のサイズが複数のとき(行列)に一般化し、固有値と勾配消失・爆発の関係を討論する [R2] |
| さらに学ぶ | Sangsun Ahn『ビジネスのためのデータサイエンス』講義案(データサイエンス全般) · STEP [K-デジタル] 人工知能 自然言語処理(3-5・3-8と連動) · STEP [K-デジタル] フィンテックデータ分析の基礎(3-6と連動) |
| 講師用資料 | 確認問題の採点基準と課題の解答例は教育者用解答ページ (3-7)で見られる |
「3-7 系列モデル」の回を最後まで読みました。研究室のメンバーがひと言ずつまとめます。