Up 「埋め込み (embedding)」 作成: 2025-05-28
更新: 2025-05-30


    Transformer を語るテクストには,「埋め込み」のことばが頻繁に出てくる。
    その「埋め込み」の意味は?


    「埋め込み」の近くに来ることばに,「ベクトル・行列」 「表」 「テンソル」 がある。
    また,ベクトルの布置として「意味空間」が語られる。
    この場合,「埋め込み」は,つぎがこれの自然な意味にになる:
     「表をテンソル空間に埋め込む──テンソル空間の点にする」

    テンソル空間とは何か?
    Transformer で謂う「テンソル」は,数学のテンソルとは違う。
    これは,「座標空間」 だと思えばよい。

    点の座標をつくるものは,座標軸である。
    要素がn個の1次元表=ベクトルは,n本の座標軸
        x_1, x_2, ‥‥, x_n
    をとることで,点になる。

    要素が m × n 個の2次元表=行列は,m × n本の座標軸
        x_11, ‥‥ , x_1n,
         ‥‥‥‥
        x_m1, ‥‥ , x_mn
    をとることで,点になる。
    座標軸の次元が,テンソル空間の次元である。


    表をテンソル空間の点にするというのは,ふつうやることではない。
    どんな場合にこれをしようとするか?

    Transformer のトークンベクトルの場合が,それである:
    1. 厖大な数
       →「ベクトル空間の点」のイメージがスマート
    2. 値が変動
       →「ベクトル空間の動点」のイメージがスマート
    3. 総体レベルで構造化
       →「ベクトル空間が言語空間に」のイメージがスマート
     ここで「スマート」には,つぎの含蓄がある:
      「処理において,明解で効率的な数学的手法が使える」


    Transformer の場合,「埋め込み=テンソル空間への埋め込み」の意味では,「埋め込み行列」というものは無い。
    扱う行列は,種類も数も少なく,そしてテンソル空間で構造を考えるというものでもないからである。

    「埋め込み」には,別の文脈がある。
    それは,
      「入力層 → 埋め込み層 → 処理層」
    入力を処理できる形に変換するのが「埋め込み」というわけである。
    旧い語用だが,Transformer でもこれが継承されている。

    この語用の継承に一役も二役も買っているのが,基本ツールになっている PyTorch の nn.Embedding。
    実際,これを使えば,そのネーミングにより皆「埋め込み」ということになる。


    「埋め込み」の2つの意味は,「トークンベクトル」のろころで錯交する。
    「トークンベクトル」は,「トークンの処理形式」として語られ,また「ベクトル空間の点」として語られる。

    重み行列は,「埋め込み=埋め込み層への埋め込み」の意味で,「埋め込み行列」になる。
    この埋め込みは,「テンソル空間への埋め込み」の意味はないが,テンソル表現ではある。
    このテンソル表現は,ざっくり言えば,PyTorch を便利なツールとして使うため,ということになる。 ── nn.Embedding は,表がテンソルであることを求める。