Word2Vec

one-hot的缺点

  • 维度灾难:有多少词语需要多少维度
  • 无法度量词语之间的相似性

Word2Vec假设:

  • 文本中离得越近的词相似度越高

Word2vec通过无监督学习从大量文本语料中提取词汇的语义信息。它使用神经网络模型来预测词汇的上下文或通过上下文预测当前词汇。具体来说,Skip-gram模型通过中心词来预测其上下文词汇,而CBOW模型则通过上下文词汇来预测中心词‌。

Word2vec生成的词向量可以应用于多种NLP任务中,如文本分类、情感分析、拼写检查等。词向量能够捕捉词汇之间的语义相似性和相关性,从而帮助模型更好地理解语言和进行智能处理‌。例如得到结果之后,可以进行聚类分析,相似度分析等等。

训练方法:

  • CBOW 连续词袋模型
    目标:根据上下文预测目标词
    输入:上下文中多个词
    输出:中间的目标词
    优点:适用于大规模语料库,训练速度快。

训练方法:

  1. 设定一个固定大小的上下文窗口(如前后各2个词)。
  2. 将上下文窗口内的词向量进行平均或求和,作为隐藏层的输入。
  3. 通过一个隐藏层(无激活函数)连接到输出层,输出层通常使用softmax函数计算每个词作为目标词的概率。
  4. 通过最大化目标词的概率来优化模型参数。
  • 跳字模型(Skip-gram)
    目标:根据目标词预测上下文词。
    输入:目标词的向量表示。
    输出:预测上下文中每个词的概率分布。
    特点:在小数据集或稀有词上表现较好,能够更好地捕捉词语的细微语义。

训练方法:

  1. 设定一个固定大小的上下文窗口。
  2. 将目标词的向量作为输入,通过隐藏层(通常无激活函数)连接到输出层。
  3. 输出层使用softmax函数计算每个上下文词的概率。
  4. 通过最大化上下文词的概率来优化模型参数。

您提出的问题非常有见地。确实,Softmax 函数通常用于单分类(多类别)任务,而在Word2Vec中,模型需要同时处理多个上下文词(即多个"正样本")。为了澄清这一点,让我们深入探讨Word2Vec中Softmax的具体应用方式以及它如何在多样本环境中运作。

1. Word2Vec 的基本架构

Word2Vec主要有两种架构:

  • 连续词袋模型(CBOW):预测中心词(目标词)基于其上下文词。
  • 跳字模型(Skip-gram):预测上下文词基于中心词。

在此,我们以跳字模型(Skip-gram)为例来说明,因为它更直接涉及到多个上下文词的预测。

2. Skip-gram 模型中的 Softmax

在Skip-gram模型中,给定一个中心词,模型的目标是预测其周围的上下文词。假设我们有一个中心词 w t w_t wt 和其上下文窗口中的上下文词 w t − 1 , w t + 1 w_{t-1}, w_{t+1} wt−1,wt+1 等。

单个上下文词的预测

这个概率 P ( w c ∣ w t ) P(w_c | w_t) P(wc∣wt) 通常通过Softmax函数计算:

P ( w c ∣ w t ) = e v w c ⋅ v w t ′ ∑ w ∈ V e v w ⋅ v w t ′ P(w_c | w_t) = \frac{e^{v_{w_c} \cdot v'{w_t}}}{\sum{w \in V} e^{v_w \cdot v'_{w_t}}} P(wc∣wt)=∑w∈Vevw⋅vwt′evwc⋅vwt′

其中:

  • V V V 是词汇表的大小。
  • v w v_w vw 和 v w ′ v'_w vw′ 分别是词 w w w 的输入和输出向量。
多个上下文词的处理

虽然每个上下文词的预测是一个单分类任务(即在所有可能的词中选择一个正确的词),但一个中心词通常对应多个上下文词。因此,整体的损失函数是针对所有这些上下文词的累加平均

例如,假设一个中心词有 ( N ) 个上下文词,那么总的损失函数 ( \mathcal{L} ) 为:

L = − ∑ i = 1 N log ⁡ P ( w c i ∣ w t ) \mathcal{L} = -\sum_{i=1}^{N} \log P(w_{c_i} | w_t) L=−i=1∑NlogP(wci∣wt)

负采样(Negative Sampling)
  • 基本思想:不计算整个词汇表的Softmax,而是仅对少量"正样本"(真实的上下文词)和"负样本"(随机采样的噪声词)进行训练。
  • 优点:显著降低了计算复杂度,特别适用于大规模词汇表。
  • 损失函数
    L = − log ⁡ σ ( v w c ⋅ v w t ′ ) − ∑ i = 1 k log ⁡ σ ( − v w n i ⋅ v w t ′ ) \mathcal{L} = -\log \sigma(v_{w_c} \cdot v'{w_t}) - \sum{i=1}^k \log \sigma(-v_{w_{n_i}} \cdot v'_{w_t}) L=−logσ(vwc⋅vwt′)−i=1∑klogσ(−vwni⋅vwt′)
相关推荐
盼小辉丶8 小时前
PyTorch实战(10)——从零开始实现GPT模型
人工智能·pytorch·gpt·深度学习
mit6.8249 小时前
[AI tradingOS] AI自动交易器 | 绩效追踪与日志
人工智能·区块链
AAA阿giao9 小时前
用 AI 工程师 Trae Solo ,一个人打造“绘本岛”:从想法到上线只需三步
人工智能·全栈·trae
Blossom.1189 小时前
大模型量化压缩实战:从FP16到INT4的生产级精度保持之路
开发语言·人工智能·python·深度学习·神经网络·目标检测·机器学习
K2_BPM9 小时前
打通 AI 与业务的 “最后一公里”:流程优化的底层逻辑与三种战略选择
人工智能·机器学习
Ro Jace9 小时前
三国华容道(横刀立马)移动策略
android·java·数据库·人工智能·深度学习·神经网络·游戏
taxunjishu9 小时前
Modbus TCP 转 Modbus RTU物联网网关实现光伏产线西门子与罗克韦尔PLC互联
人工智能·物联网·工业物联网·工业自动化·总线协议
User_芊芊君子9 小时前
从“能说会道”到“自主思考”:一文读懂AI的过去、现在与未来
人工智能·chatgpt
半臻(火白)9 小时前
Meta DreamGym:用合成经验,重构智能体训练的“低成本革命”
人工智能
快乐非自愿10 小时前
数智化时代:AI技术重构企业财务管理系统的底层逻辑与实践
大数据·人工智能·低代码