トークンのベクトルと類似度

トークンのベクトルとは、そのトークンが付き合う相手の記録である。付き合う相手が限られた語ではうまくいき、何の隣にでも現れる語では破綻する。

インタラクティブシミュレーションを読み込んでいます...

ここでのベクトルは付き合いを数えたもの。トランスフォーマーのそれは学習される 🖖

ここにある数はすべて、二つのトークンが互いに4語以内に現れる回数を数え、偶然より頻繁に共起するときに大きくなる値へ変換したものである。これは名前のある実在の手法であり、言語モデルの中身とは別物である。トランスフォーマーの埋め込みはランダムに始まり、次のトークンを予測する助けになるまで訓練で調整される。したがって最終的に符号化されるのは予測を楽にしたものであり、そこには数え上げでは決して見つからないものも含まれる。比較を経て残るのは形のほうである。トークンは方向になり、近さは方向どうしの角度で測られる。

近い隣人は同義語ではない 🖖

␣Earth の隣人は ␣planet・␣Sun・␣Jupiter・␣Moon であり、どれも「地球」を意味してはいない。␣star の隣人は ␣yellow・␣white・␣red であって、これは同義語ではなく性質である。分布的類似度が実際に測っているのはこれである。トークンが何を意味するかではなく、コーパスがそれを使ったとき何について語っていたか。二つのトークンが高い値を取るのは同じ顔ぶれのなかで語られるときであり、一緒に語られることは、同じ意味であることよりずっと広い関係である。

ここに地図はない。それは手抜きではない 🖖

各ベクトルは、隣に現れうる他のトークンごとに1次元を持つ。その数は2742であり、このページはそれを2次元へ落としてはいない。コサインにその必要はない。二つの方向のなす角は次元がいくつであっても定義され、上の格子はすべての角の組をそのまま示している。他所で見かける平らな散布図は投影であり、正確さではなく読みやすさで選ばれている。そこで隣り合って見える二つのトークンが、数値が実際に住む空間では遠く離れていることもある。

全プロセスの詳細解説

  1. 13回の出現にわたる0.299のEarthとSun 6 ステップ

    パネルは␣Earth␣Sunのスコアを 0.299 と表示している。 コーパスにおいて Earth は 230 回、Sun は 150 回出現し、これは 385,078 個のトークン全体で両者合わせて 2,770,646 個の文脈スロットを開く中でのことであり、この 2 つが互いに 4 トークン以内に並ぶ機会は 13 回ある。0.299 のスコアのうち、これら 13 回の共起がどれだけの価値を持つかを求めよ。

    1. 文脈語 1 つにつき 1 つの座標が対応し、比較を行う前にベクトルは長さ 1 にスケーリングされる。このスケーリングこそが、コサイン類似度を単純な内積にするものである。すなわち 0.299 は積の総和であり、2 つのトークンが共有する文脈語 1 つにつき 1 つの項からなる。

    2. 座標は出現回数ではなく驚き比である。つまり、シャッフルしたコーパスでそのペアが共起すると予測される頻度に対し、実際にどれほどの頻度で共起したかを表す。負の驚きは 0 にクリップされるため、ベクトルはトークンが惹きつけられる対象を記録するものの、避ける対象を記録する手段は持たない。

    3. まずは確率から考える。Earth は全 385,078 個の位置のうち 230 個を、Sun は 150 個を占めるため、全 2,770,646 個のスロット全体でこのペアが偶然共起する期待回数は 0.6446 回であり、コーパス全体でも 1 回未満である。

    4. 実際にはこれらは 13 回出現しており、偶然の予測の 20.17 倍にあたる。そして座標はこの比率の対数である 3.004 となる。共起回数と 2 つの出現頻度はどちらの方向から読んでも同じであるため、両方のベクトルが同じ値を得る。

    5. 次にスケーリングを行う。Earth のベクトルには 419 個の正の座標があり、長さは 30.381 である。Sun のベクトルには 302 個があり、長さは 29.144 である。3.004 をそれぞれの長さで割ると、単位ベクトル上の座標は 0.0989 と 0.1031 になる。

    6. 両者の積である 0.0102 が、これら 13 回の共起による貢献のすべてである。Earth と Sun は合計 105 個の文脈語を共有しており、これら 105 個すべての積を足し合わせると 0.2992 となる。ツールはこれを四捨五入して 0.299 と表示している。したがって、直接的な共起という根拠がスコアに占める割合は 3.4% に過ぎない。

    解答

    ツールは 0.299 と表示しているが、これら 2 つの単語が実際に共起した機会が占めるのはそのうちの 0.0102 である。 残りは周りの共起関係によるものである。すなわち、ベクトルが存在する全 2,742 トークンのうち、共有されている 105 個の文脈語である。ここから 2 つの結論が導かれる。クリッピングによって負の座標がすべて除去されるため、105 個の積はそれぞれ正となり、尺度は -1 から 1 ではなく 0 から 1 の範囲となる。共通点をまったく持たないペアのスコアは 0 であり、1 の反対(-1)ではない。角度として読み解くと、0.299 は 72.6° であり、これは Earth と Sun が「何も共有していない状態」から 17.4° 離れていることを意味する。そして、スコアに基づくランキングは、その根拠となるデータよりもきめ細かく振る舞っている。␣planet は 0.307 で Earth の近傍リストの首位に立ち、Sun に 0.008 の差をつけているが、Earth と Sun の単一の共起座標の値自体が 0.0102 である。つまり、文脈語が 1 つ変わるだけで、どのトークンが最も近いと判定されるかが変わり得るのである。

学習の道すじ

LLM はどう次の単語を選ぶか

この次に 温度とサンプリング

参考文献 (2)

例題

  • 同じ話題 - ␣Earth と ␣Sun は0.299。Earth に最も近いのは ␣planet の0.307で、天文の語がまとまるのはコーパスがそれらをまとめて論じているからである。
  • ほぼ同義 - ␣speed と ␣velocity は0.282であり、2742個のトークン全体のなかで ␣speed が ␣velocity の最近傍である。入れ替えて使える語は、入れ替えのきく相手と付き合う。
  • 別の話題 - ␣Earth と ␣velocity は0.122で、Earth–Sun の半分にも満たない。話題が違えば隣人も違う。
  • 頻出語ふたつ - ␣the と ␣is は0.505。ここで最も高い組であり、␣Earth と ␣Sun の0.299を上回る。両者は意味を何ひとつ共有しておらず、ただどちらも何の隣にでも現れるだけである。
  • 星と光 - ␣star と ␣light は0.262。star 自身の隣人は ␣yellow・␣white・␣red であり、コーパスは星を色で語っている。