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′)
相关推荐
机器之心3 分钟前
海外华人15人团队打造,统一理解与生成的图像模型,超越Nano banana登顶图像编辑
人工智能·openai
用户552796026056 分钟前
在老版本 HPC 系统上运行 Antigravity(反重力)
人工智能
Axinyp1 小时前
Windows WSL2 安装 OpenClaw 踩坑指南
人工智能
恋猫de小郭1 小时前
你用的 Claude 可能是虚假 Claude ,论文数据告诉你,Shadow API 中的欺骗性模型声明
前端·人工智能·ai编程
Johny_Zhao2 小时前
centos7安装部署openclaw
linux·人工智能·信息安全·云计算·yum源·系统运维·openclaw
郑鱼咚2 小时前
现在的AI热潮,恰恰证明了这个世界就是个草台班子
前端·人工智能·程序员
美团技术团队2 小时前
LongCat 为 OpenClaw 装上效率引擎:你的自动化任务还能再快 30%
人工智能
洞见前行2 小时前
国内Windows 部署 OpenClaw 全记录:国产模型 + 飞书接入一次搞定
人工智能
JVM跑得快3 小时前
Python 基础语法 × Java 对比
人工智能