向量嵌入对于许多先进的AI应用程序(包括语义搜索和异常检测)至关重要。本文提供了对嵌入的基本理解,重点是句子嵌入和矢量表示。我们将探索实用技术,例如均值合并和余弦相似性,使用BERT深入研究双重编码器的体系结构,并使用顶点AI在异常检测中检查其应用程序,以进行欺诈检测和内容调节等任务。
*本文是***数据科学博客马拉松的一部分。
目录
了解顶点嵌入
向量嵌入代表定义空间内的单词或句子。这些矢量的接近表示相似性。近距向量表示更大的语义相似性。虽然最初主要用于NLP,但它们的应用程序扩展到图像,视频,音频和图形。剪辑是一种突出的多模式学习模型,同时生成图像和文本嵌入。
向量嵌入的关键应用包括:
让我们检查一下抹布管道中的句子嵌入的重要性。
上图中的检索引擎标识了与用户查询有关的数据库信息。基于变压器的跨编码器可以将查询与所有信息进行比较,从而对相关性进行分类。但是,这很慢。矢量数据库通过存储嵌入并使用相似性搜索提供更快的替代方法,尽管精度可能略低。
了解句子嵌入
句子嵌入是通过将数学操作应用于令牌嵌入而创建的,这通常是由Bert或GPT等预训练的模型生成的。以下代码证明了Bert生成的令牌嵌入的平均汇总以创建句子嵌入:
model_name =“ ./models/bert-base-uncased” tokenizer = berttokenizer.from_pretaining(model_name) 型号= bertmodel.from_pretrataining(model_name) def get_sentence_embedding(句子): encoded_input = tokenizer(句子,padding = true,truncation = true,return_tensors ='pt') activation_mask = encoded_input ['activation_mask'] 使用Torch.no_grad(): 输出=模型(** encoded_input) token_embeddings = output.last_hidden_state input_mask_expanded = activation_mask.unsqueeze(-1).expand(token_embeddings.size())。float() ston_embedding = torch.sum(token_embeddings * input_mask_expanded,1) / torch.clamp(input_mask_expanded.sum(1),min = 1e-9) return stone_embedding.flatten()。tolist()
该代码加载了BERT模型,并定义了使用平均池化计算句子嵌入的函数。
骨骼嵌入的余弦相似性
余弦相似性衡量两个向量之间的相似性,使其适合比较句子嵌入。以下代码实现了余弦的相似性和可视化:
def cosine_similarity_matrix(功能): norms = np.linalg.norm(特征,轴= 1,keepdims = true) 归一化=功能 /规范 samelity_matrix = np.inner(归一化_features,normolized_features) Rounded_similarity_matrix = np.Round(Sameity_matrix,4) 返回rounded_simarility_matrix def plot_simarlity(标签,功能,旋转): sim = cosine_similarity_matrix(功能) sns.set_theme(font_scale = 1.2) g = sns.heatmap(sim,xticklabels =标签,yticklabels =标签,vmin = 0,vmax = 1,cmap =“ ylorrd”) g.set_xticklabels(标签,旋转=旋转) g.set_title(“语义文本相似性”) 返回g 消息= [ # 技术 “我更喜欢使用MacBook进行工作。” “ AI是否接管人类工作?” “我的笔记本电脑电池排出太快了。” # 运动的 “你昨晚看过世界杯决赛吗?” “勒布朗·詹姆斯是一位令人难以置信的篮球运动员。” “我喜欢在周末参加马拉松比赛。” # 旅行 “巴黎是一个美丽的城市。” “夏天最好的旅行场所是什么?” “我喜欢在瑞士阿尔卑斯山远足。” # 娱乐 “最新的漫威电影很棒!” “你听泰勒·斯威夫特的歌吗?” “我对我最喜欢的系列的整个赛季进行了狂欢。” 这是给出的 嵌入= [] 对于消息中的t: EMB = get_sentence_embedding(t) embeddings.append(EMB) plot_simurility(消息,嵌入,90)
该代码定义句子,生成嵌入,并绘制显示其余弦相似性的热图。结果可能会表现出出乎意料的高相似性,激发了对诸如双重编码器之类的更准确方法的探索。
(其余部分以类似的方式继续进行,在维护核心信息并保留图像位置和格式的同时,对原始文本进行解释和重组。)
以上是使用顶点AI探索嵌入模型的详细内容。更多信息请关注PHP中文网其他相关文章!