在 W&B 中可视化嵌入

我们将数据上传到 Weights & Biases,并使用 Embedding Projector 来可视化嵌入,使用常见的降维算法,如 PCA、UMAP 和 t-SNE。数据集是在 Get_embeddings_from_dataset Notebook 中创建的。

什么是 Weights & Biases?

Weights & Biases 是一个机器学习平台,由 OpenAI 和其他机器学习团队使用,以更快地构建更好的模型。他们使用它来快速跟踪实验、评估模型性能、复现模型、可视化结果以及与同事分享发现。

1. 将数据记录到 W&B

我们创建一个 W&B Table,其中包含原始数据和嵌入。每个评论都是一个新行,1536 个嵌入浮点数都有自己的列,名为 emb_{i}

import pandas as pd
from sklearn.manifold import TSNE
import numpy as np
from ast import literal_eval

# 加载嵌入
datafile_path = "data/fine_food_reviews_with_embeddings_1k.csv"
df = pd.read_csv(datafile_path)

# 转换为列表的列表的浮点数
matrix = np.array(df.embedding.apply(literal_eval).to_list())
import wandb

original_cols = df.columns[1:-1].tolist()
embedding_cols = ['emb_'+str(idx) for idx in range(len(matrix[0]))]
table_cols = original_cols + embedding_cols

with wandb.init(project='openai_embeddings'):
    table = wandb.Table(columns=table_cols)
    for i, row in enumerate(df.to_dict(orient="records")):
        original_data = [row[col_name] for col_name in original_cols]
        embedding_data = matrix[i].tolist()
        table.add_data(*(original_data + embedding_data))
    wandb.log({'openai_embedding_table': table})

2. 渲染为 2D 投影

导航到 W&B 运行链接后,我们点击 Table 右上角的 ⚙️ 图标,并将“渲染方式:”更改为“组合 2D 投影”。

示例:http://wandb.me/openai_embeddings