embedding中的normalize_embeddings参数

文章讨论了在使用SentenceTransformer等工具进行句子嵌入时,设置normalize_embeddings参数为True的益处,如增强余弦相似度的可解释性、提高训练稳定性及防止过拟合。它强调了归一化在NLP任务中的实用性,但建议根据具体场景进行实验评估。
摘要由CSDN通过智能技术生成
if 1:
	from sentence_transformers import SentenceTransformer
    encode_kwargs = {'normalize_embeddings': True}
    model_embedding = SentenceTransformer(model_name, device="cpu")
    data_embedding = model_embedding.encode(data_list,**encode_kwargs)
else: ## 需要安装langchain,不推荐该路子
	from langchain.embeddings import HuggingFaceBgeEmbeddings
    model_kwargs = {'device': 'cpu'}
    encode_kwargs = {'normalize_embeddings': True}  # set True to compute cosine similarity
    model_embedding = HuggingFaceBgeEmbeddings(
        model_name=model_name,
        model_kwargs=model_kwargs,
        encode_kwargs=encode_kwargs,
        query_instruction=""
    )
    data_embedding = model_embedding.embed_documents(data_list)

核心知识:
关于normalize_embeddings参数,将其设置为True会对模型生成的嵌入进行归一化处理。归一化嵌入意味着将它们缩放到具有单位范数(长度为1)的尺度。这可以有几个好处:

余弦相似度可解释性: 当嵌入进行归一化时,两个向量之间的余弦相似度等同于它们的点积。这使得余弦相似度更具解释性,因为它的取值范围从-1(完全不相似)到1(完全相似)。

提高训练稳定性: 归一化嵌入可以提高训练的稳定性,特别是在模型对输入特征的尺度敏感的情况下。它可以防止模型过于敏感于大幅度的值。

正则化效果: 归一化充当正则化的一种形式,通过约束嵌入的幅度可以帮助防止过拟合,特别是在训练数据有限的情况下。

在句子嵌入的背景下,将它们归一化可以在使用余弦相似度作为衡量句子或文档相似性的度量时特别有用。它使得余弦相似度分数更一致和可解释,这在自然语言处理任务中通常是可取的。然而,归一化的影响可能会因特定用例而异,因此始终建议进行实验和评估性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值