埋め込み・隠れ状態・学習と出力

このページは、単純 RNN を読むうえでよく出る トークン/埋め込み (x_t)/隠れ状態 (h_t)/学習データ/文字列出力 を、初学者向けにまとめた補足です。式の入口は 単純リカレントと誤差逆伝播とは、ChatGPT 的な大規模学習の流れは 事前学習とファインチューニング を参照してください。

ざっくりいうと

  • トークン … 系列を1ステップずつ切った 離散記号(単語・文字・サブワードなど。切り方は設計次第)。
  • (x_t) … トークン ID から取る 埋め込み(意味空間に近い 語のベクトル)。
  • (h_t)ここまで読んだ文脈 を押し込んだ 隠れ状態空間 のベクトル(語彙の1語そのものではない)。
  • 学習 … タスクにより 次トークンラベル入出力列 など;必ずしも「プロンプトと回答のペア」だけではない。
  • ユーザーへの返答 … (h) から直接文が出るのではなく、出力層 → トークン1個ずつ生成 → デコード(EOS や最大長で停止)。

トークンと「左から1つずつ」

1つずつとは、コンピュータが 先頭から順に、各ステップで要素1個だけ を入力として渡すことです(人間が1文字しか読めない、という意味ではない)。

切り方 1ステップの例
単語 「私」「は」「猫」
文字 各文字
サブワード(現代の LLM で多い) 語の一部のまとまり

1980〜90年代の説明では 単語=1ステップ の例が多い。考え方(ID → ベクトル → (h) を更新)は同じで、切る粒度だけ時代で変わる

2種類のベクトル(混同しやすい点)

(x_t)(埋め込み) (h_t)(隠れ状態)
何か いまの 1トークン 1〜(t) まで の要約
どこから 語彙表の行(ID → 取り出し) (h_t = f(W h_{t-1} + U x_t + b)) の 計算結果
空間のイメージ 意味空間(埋め込み空間) 隠れ状態空間(状態空間)
BoW との比較 1語ぶん 文全体を1本にした BoW に 役割は近い が、次元の意味は人間が設計しない

(h_t) は「複合ベクトル」 … 語彙のある単語の点ではなく、過去と今を混ぜた別の表現。1本のベクトルでも 複数トークンの影響が数字の混ざりとして 入る(人間が読める文ではない)。

式の目的((W, U, b) の前に)

[ h_t = f(W h_{t-1} + U x_t + b) ]

目的は、順番付きデータを読みながら、固定長のメモ (h_t) を更新する ことです。

  • (W h_{t-1}) … 過去メモを隠れ層の形に変換
  • (U x_t) … いまのトークンを 同じ長さ に変換してから足す
  • (b) … バイアス(共通のオフセット)
  • (f) … 非線形化(表現力のため)

メモの保管場所 … ファイルではなく、計算中の RAM 上のテンソル。文が変われば多くは (h_0) からやり直す。長く残るのは (W, U, b) などの重み

各ステップで行うこと

  1. トークン ID → 埋め込み (x_t)
  2. (h_{t-1}) を読む(1ステップ目は (h_0)=初期メモ)
  3. 上式で (h_t) を更新
  4. タスクに応じて (h_t) から予測(毎ステップか最後だけかは 設計で決める
  5. (h_t) を次ステップへ渡す

要約 … 人間が段落を書き直すのではなく、有限次元の (h_t) に圧縮し直す 操作。目的は主に 固定長メモで文脈付き計算を続ける こと(データ量削減だけが目的ではない)。遠い過去・細部・タスクに不要な情報は落ちやすい(勾配消失など)。

学習データは「プロンプトと回答」だけか

データ 正解(教師信号)
次トークン予測 文章1本 文中の次のトークン(ペアを別に用意しなくてよい)
系列分類 文 + ラベル ラベル
seq2seq 入力列 + 出力列 出力側のトークン列
指示チューニング(後の LLM) 指示 + 望ましい返答 返答のトークン列

回答のないプロンプトだけ では、「この質問にはこの返答」という 対応は学べない。一方、テキストだけ なら 次トークン予測 で学習できる(正解は文中に含まれる)。このときも学習の中身は 誤差逆伝播(系列なら BPTT) である(単純リカレントと誤差逆伝播とは の「誤差逆伝播はプロンプトと回答ペア専用か」)。

文字列としてユーザーに返すには

(h_t) は 中間メモ。返答文はだいたい次の流れです。

  1. (h_t)(または最後の (h_T))→ 出力層 → 語彙サイズのスコア(softmax)
  2. トークン ID を1個 選ぶ
  3. デトークナイズして文字列の一片にする
  4. 長い回答 は上記を 自己回帰(選んだトークンを次の入力に)で繰り返す

最終 (h) から次トークンを出せる理由 … 学習で 出力層が (h) を語彙スコアに写す 対応が付くから(魔法ではなく学習済みの写像)。

いつ生成を止めるか

方法 内容
EOS(終了トークン) 学習データの 系列の終端 に合わせて学ぶ。多くは文・発話の終わりで出しやすい
最大長 トークン上限で強制停止(途中で切れたように見える 原因のひとつ)
停止文字列など 実装依存

EOS で区切りが良い ≠ ユーザーにとってタスクが完了 … EOS は トークン列の終端 の印であり、「質問に十分答えた」ことの保証ではない(指示・対話とアライメント で振る舞いを別途寄せる)。

関連