SEQUENCE / LESSON 17

長めの流れを覚えるLSTM

残す・入れる・出すを選び、時系列の手掛かりを追おう。

図から学ぶ
長めの流れを覚えるLSTMを表すキャラクターと学習内容のイラスト
TODAY'S GOAL

この回でつかむこと

LSTMの記憶セルと3つのゲートの役割を言える。

ことばの窓
01 / SEE THE IDEA

長めの流れを覚えるLSTMって何だろう?

LSTM(Long Short-Term Memory、長・短期記憶)はRNNの一種です。忘却・入力・出力のゲートで情報の流れを調整し、長めの依存関係を扱いやすくします。ただし、どんな長さも必ず覚えられるわけではありません。

あおい

RNNは、ずっと前のことを忘れてしまうことがあるの?

AI先生

そうなんだよ。LSTMは情報を残す道を用意し、何を忘れるかも調整するんだ。

はる

ゲートという仕組みで、情報の通し方を決めるのですね。

残す情報を調整する。忘れる・加える・取り出す。ゲートが情報の流れを調整。大切な手掛かりを次へ。
図17 残す情報を調整する。忘れる・加える・取り出す。ゲートが情報の流れを調整。大切な手掛かりを次へ。

AI先生 すべてを覚えるのでなく、残す情報を調整するんだよ。

図を読むと

LSTMはLong Short-Term Memory。記憶セルをゲートで調整する。 LSTM(Long Short-Term Memory、長・短期記憶)はRNNの一種です。忘却・入力・出力のゲートで情報の流れを調整し、長めの依存関係を扱いやすくします。ただし、どんな長さも必ず覚えられるわけではありません。

小さなコードで確かめるまず結果を予想しよう
import torch
from torch import nn
lstm = nn.LSTM(input_size=1,hidden_size=4,batch_first=True)
x = torch.tensor([[[0.0],[0.5],[1.0]]])
out,(hidden,cell) = lstm(x)
print(out.shape,hidden.shape,cell.shape)
実行結果(1,3,4)、(1,1,4)、(1,1,4)

なぜそうなる? 時刻ごとの出力に加え、最後のhiddenと記憶セルcellが返ります。

02 / GO ONE STEP FURTHER

RNNと同じ窓を使える

データの切り出し方はRNNと共通です。変わるのは内部の計算と、記憶セルの扱いです。

values = torch.sin(torch.linspace(0,3.14,12))
windows = torch.stack([values[i:i+4] for i in range(8)]).unsqueeze(-1)
print(windows.shape)
実行結果torch.Size([8, 4, 1])

ここに注目 8件・4時刻・1特徴の形です。次の値を正解にして学習できます。

03 / YOUR TURN

予想して、理由を話そう

答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。

LSTMの記憶セルを調整するものは?

答えを選ぶと理由が表示されます。

04 / TRY ON COLAB

Colabで試してみよう

コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。

保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。

COFFEE BREAK

身近な技術とつなげてみよう

AI先生

AI先生:長い会話では、聞いたことを全部同じように覚え続けなくてもいいよね。大切な話題を残す考え方に似ているんだ。

KEY TERMS

この回の重要な用語

本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。

LSTM
Long Short-Term Memory。記憶セルとゲートを持つRNNの一種です。
記憶セル
前の時刻から情報を持ち越す内部の通り道です。
ゲート
情報をどれだけ残し、加え、出すかを調整する仕組みです。