Up 入力データの処理 (入力層) 作成: 2025-05-16
更新: 2025-05-20


    入力されたテクストSは,入力層で以下のように処理される。

  1. トークン
    1.1 S のトークン化
    S を, トークンに分割する。


    1.2 トークン検索
    学習材の入力テクストから取り出される各トークンに対し,トークン表から,これの ID とベクトル表現を引く。

    S から未登録トークン (未知語) が出てきたときは,つぎの「脱構築的トークン化」を処置する:
      サブワードに分割して,既知の小さな単位で表現する。
      (サブワードの例:WordPiece や BPE )

    こうして S は,トークン ID の並び
       ( ID_1, ID_2, ..., ID_LEN(S))
    に表現され,ID_i にはトークンベクトル TV(ID_i) が対応する。


  2. 入力層の出力
    2.1 S の埋め込み行列
    トークンベクトル TV(ID_1), TV(ID_2), ..., TV(ID_LEN(S)) を上から下に並べると,LEN(S) × D 行列の格好になる。
    この行列を,
        E(S)
    で表す。

    また,埋め込みベクトルで構成される行列ということで,この行列に対しては「埋め込み行列」の言い方をしていく。
     比較:重み行列には, 「埋め込み」のことばを使う要素はない。


    2.2 埋め込み行列と位置エンコーディングの合成
    つぎの組を,入力層の出力とする:
      ・S のトークン分割に対応するトークンベクトルの並び
      ・その並びの中の,トークンベクトルの位置
    そしてこれを,2つの 行列 ( LEN(S)×D 行列) の和
       X(S) = E(S) + P(LEN(S))
    で実現する。

    この「加算」は,「トークンベクトルに<文脈の中の位置>を注入」の意味を見ている。
    情報の混ぜ合わせであり,こんなやり方で「文脈」が扱えるのかと思ってしまうが,論より証拠で,これがうまくいくのである。
    ──実験的にも有効(原論文 "Attention is All You Need")

    そしてこの方法は,シンプルで計算効率が良い (位置と意味を分けずに処理できる) <

    2.3 学習ブロックへ
    出力 X(S) = ( x_ij ) は,つぎに学習ブロック (レイヤー構造)の入力になる。

    学習ブロックに入ると,ベクトル x_i がバラバラに (「並列に」) 処理される。
    しかし各 x_i は,「Sのどこにあるトークンのベクトルか」の情報になっているので,S (「文脈」) が保たれる:
      x_i は,つぎの2つのベクトルの和である:
      • S の i 番目のトークンに対応するトークンベクトル
      • 位置エンコーディングの i 行ベクトル (「 i 番目」を表現するベクトル)
    各 x_i が「文脈の中の意味」として実現されているわけである。