首页 > 其他分享 >Word2Vec模型之CBOW

Word2Vec模型之CBOW

时间:2024-08-11 21:39:16浏览次数:11  
标签:dim 中心词 Word2Vec 模型 CBOW 上下文 向量

CBOW(Continuous Bag of Words)是一种常用于自然语言处理的词嵌入模型,属于Word2Vec的一部分。CBOW模型的目标是通过上下文词来预测中心词。它通过在大规模语料库中学习词汇之间的共现关系,生成词向量表示。

CBOW模型的工作原理

  1. 上下文窗口:CBOW模型的核心思想是利用上下文窗口中的词来预测中心词。假设我们有一个句子,比如“我喜欢学习自然语言处理”,如果我们选择“学习”作为中心词,那么它的上下文可能是“我”、“喜欢”和“自然”、“语言”、“处理”。

  2. 输入和输出:对于CBOW模型,输入是上下文词的集合(通常用词的词向量表示),输出是中心词的词向量。模型的目标是最大化这些上下文词组合预测出中心词的概率。

  3. 实现步骤

    • 词嵌入矩阵:首先,每个词被表示为一个固定维度的向量,这些向量通常是随机初始化的。词汇表中每个词都有对应的词嵌入向量。

    • 输入层:将上下文词映射为词嵌入向量。假设上下文窗口有2n个词(即中心词的左右两边各有n个词),每个词被映射为一个向量,这些向量会被平均(或求和)以生成一个固定大小的上下文表示。

    • 隐藏层:上下文表示被传递到隐藏层(可以看作一个线性层),产生一个隐藏表示。

    • 输出层:隐藏表示被传递到输出层,输出层是一个softmax层,用来预测中心词的概率分布。

    • 损失函数:模型的目标是最大化正确预测的中心词的概率,即最小化负对数似然损失函数。

    • 训练:通过反向传播和梯度下降优化模型参数。随着训练的进行,词嵌入矩阵中的向量逐渐调整,使得语义相近的词在向量空间中的距离更近。

CBOW的优缺点

  • 优点

    • 计算效率高:相比于另一种Word2Vec模型——Skip-gram,CBOW的计算效率更高,适合在大规模语料上训练。
    • 捕捉语境信息:CBOW通过上下文词来预测中心词,能较好地捕捉词汇的语境信息。
  • 缺点

    • 信息丢失:由于对上下文词进行平均操作,可能会丢失一些词序信息。
    • 不适合稀有词:CBOW对于频率较低的词的效果可能不如Skip-gram。

代码实现(简要)

以下是一个简化的CBOW模型的PyTorch实现:

import torch
import torch.nn as nn
import torch.optim as optim

class CBOW(nn.Module):
    def __init__(self, vocab_size, embedding_dim):
        super(CBOW, self).__init__()
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)
        self.linear = nn.Linear(embedding_dim, vocab_size)

    def forward(self, context_words):
        embeds = self.embeddings(context_words)
        combined = torch.mean(embeds, dim=1)
        out = self.linear(combined)
        log_probs = torch.log_softmax(out, dim=1)
        return log_probs

# 示例初始化
vocab_size = 10000  # 假设词汇表大小
embedding_dim = 300  # 词向量维度
model = CBOW(vocab_size, embedding_dim)

# 输入是上下文词的索引列表
context_words = torch.tensor([[2, 3, 4, 5]], dtype=torch.long)  # 假设4个上下文词
output = model(context_words)

这个实现演示了CBOW模型的基本架构:从上下文词嵌入,到生成中心词的概率分布。实际应用中会需要更多的细节处理和优化。

标签:dim,中心词,Word2Vec,模型,CBOW,上下文,向量
From: https://www.cnblogs.com/chentiao/p/18353948

相关文章

  • 基于Python的大模型学习手册(入门级)
    前言大模型(全称为大语言模型,英文名称:LargeLanguageModel),这个2023年刷爆了互联网圈的“现象级明星”,几乎以前所未有的姿态,席卷了各行各业,世人一时为之惊叹。同时,也开辟了各大厂商投入AI研发的新赛道。乘着这波“西风”,国内大模型开启了雨后春笋般的神奇发育,简直是“一浪......
  • 一步一步微调小模型
    本文记录一下,使用自顶向下的编程法一步步编写微调小语言模型的代码。微调一个语言模型,本质上是把一个已经预训练过的语言模型在一个新的数据集上继续训练。那么一次微调模型的任务,可以分为下面三个大个步骤(不包含evaluation):加载已经预训练好的模型和新的数据集预处理模型和......
  • AI Native应用中的模型微调
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • MLM掩码语言模型在实际应用中有哪些常见的挑战和解决方案
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 如何评估分类任务的模型性能
    二分类&多分类任务的评估指标对比多分类任务和二分类任务的评估指标在概念上有一些相似性,但由于多分类任务涉及三个或更多类别,因此在评估方法和指标上存在一些差异:二分类任务的评估指标:准确率(Accuracy):正确预测的样本数占总样本数的比例。精确度(Precision):预测为......
  • 大模型agent开发之prompt提示词模板
    提示词工程的建模在大模型对话agent的开发中有着重要的地位,好的提示词模板可以辅助大模型做出更加准确的预测,得到更加准确的答案。本文使用langchain进行agnent开发,langchain中封装了很多工具和方法其中就包括不同的prompt模板,接下来本文将详细介绍几种不同风格的prompt模板的使用......
  • 7-3FM模型
    FM算法全称为因子分解机(FactorizationMachine)。它是广告和推荐领域非常著名的算法,在线性回归模型上考虑了特征的二阶交互。适合捕捉大规模稀疏特征(类别特征)当中的特征交互。FM及其衍生的一些较有名的算法的简要介绍如下:FM(FactorizationMachine):在LR基础上用隐向量点......
  • (2-2)多模态模型与框架:多模态模型
    2.2 多模态模型多模态模型是一类能够处理和融合来自不同模态(如文本、图像、音频等)数据的机器学习模型,它们通过联合学习不同模态的特征,实现更丰富和准确的理解和生成任务。多模态模型在诸如视觉问答(VQA)、图文生成和跨模态检索等应用中表现出色,它们能够同时理解和关联图像和文......
  • (2-3)多模态模型与框架:预训练模型
    2.3 预训练模型预训练模型是通过在大规模未标记数据上进行学习而生成的模型,它们能够捕捉数据中的统计特性和语义信息。这些模型通常在通用任务上进行预训练,如语言模型的掩码语言建模或图像模型的自监督学习,然后在特定任务上进行微调,以提高性能和泛化能力。例如本章前面介绍......
  • 基于腾讯云高性能应用服务 HAI 搭建并使用 AI 模型 StableDiffusion 进行文生图
    基于腾讯云高性能应用服务HAI搭建并使用AI模型StableDiffusion进行文生图HAI是什么高性能应用服务HAI与传统GPU云服务器区别使用高性能应用服务HAI一键部署StableDiffusionAIGC创建高性能应用服务启动HAI实例进行文生图快速构建StableDiffusion文生......