Up トークンベクトル空間の視覚化 作成: 2025-05-28
更新: 2025-05-28


  • 例1: SNEやPCA
      元は100〜1000次元を,2次元に圧縮   「意味の似た語が近くにある」: *king *queen *man *woman *princess *child *mother *apple *banana *fruit

  • 例2:「語の意味的な近さ」(2次元に圧縮)
      以下のコードをGoogle Colab に貼り付けて実行: import torch import torch.nn as nn import matplotlib.pyplot as plt from sklearn.manifold import TSNE # 語彙と対応ID vocab = ['king', 'queen', 'man', 'woman', 'apple', 'banana', 'fruit', 'dog', 'cat', 'animal'] word_to_id = {word: idx for idx, word in enumerate(vocab)} # 埋め込み層を定義 embedding_dim = 16 embedding = nn.Embedding(num_embeddings=len(vocab), embedding_dim=embedding_dim) # ベクトル取得 ids = torch.tensor(list(word_to_id.values())) vectors = embedding(ids).detach().numpy() # 次元圧縮(t-SNEで可視化) tsne = TSNE(n_components=2, random_state=42, perplexity=5) vectors_2d = tsne.fit_transform(vectors) # プロット plt.figure(figsize=(8,6)) for i, word in enumerate(vocab): x, y = vectors_2d[i] plt.scatter(x, y) plt.text(x + 0.01, y + 0.01, word, fontsize=12) plt.title("Embedding space (randomly initialized)") plt.grid(True) plt.show()

      これは「ランダム初期化されたembedding」の視覚化。
      まだ意味に沿って配置されていないが,学習後には「意味の近い語」が近づくようになる。

  • 例3: 実際に文脈で使って意味空間が変わっていく様子を可視化
      Word2VecやBERTなど、事前学習済みモデルの埋め込みを使って「意味空間」を直接見る。 意味空間を操作する: king - man + woman ≈ queen walk - walking + swimming ≈ swim
    これらは、「ベクトル空間が意味論を持ち得る」ことの圧倒的な証明。