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′)
相关推荐
Milk夜雨15 分钟前
人工智能与大数据:从零开始学习的教学指南
大数据·人工智能·学习
AIBigModel1 小时前
专访李飞飞:从2D到3D,AI将为我们带来哪些改变?
人工智能·3d
weixin_404551241 小时前
huggingface NLP-微调一个预训练模型
人工智能·自然语言处理·微调·nlp·huggingface·fine-train
我的龙呢1 小时前
Flash Attention
人工智能·flash attention
云樱梦海1 小时前
Coconut:探索大语言模型的连续思维链推理能力
人工智能·coconut
hsg772 小时前
AI绘图:开源Stable Diffusion 3 ComfyUI下载安装方法
人工智能·stable diffusion
思通数科x2 小时前
AI监控赋能健身馆与游泳馆全方位守护,提升安全效率
人工智能·安全·目标检测·机器学习·计算机视觉·自然语言处理·ocr
宸码2 小时前
【机器学习】【无监督学习——聚类】从零开始掌握聚类分析:探索数据背后的隐藏模式与应用实例
人工智能·python·学习·算法·机器学习·数据挖掘·聚类
**之火3 小时前
(六)机器学习 - 正态数据分布
人工智能·机器学习
铭瑾熙3 小时前
机器学习之强化学习
人工智能·机器学习