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


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

  1. トークン
    1.1 S のトークン化
    S を, トークンに分割する:
      [ T(ID_1), ‥‥, T(ID_LEN(S)) ]

    これを,
       [ t_1, ‥‥, t_m ] ( m = LEN(S) ) 
    と簡略表記する。。


    1.2 トークン検索
    学習材の入力テクストから取り出される各トークンに対し,トークン表から,これに対応するトークンベクトルを引く:
      T(ID_i) → TV(ID_i)

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


  2. 入力層の出力
    2.1 S の埋め込み行列
    S に対応するトークンベクトル列
     [ TV(ID_1), TV(ID_2), ..., TV(ID_LEN(S)) ]

       [ x_1, ‥‥, x_m ] ( m = LEN(S) ) 
    と簡略表記する。。

    x_1, ‥‥, x_m を上から下に並べ た LEN(S) × D 行行列を,
        X(S)
    で表す。

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


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

       X(S) ← X(S) + POS(LEN(S))
        x_i ← x_i + pos_i
    で実現する。

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

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

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

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