修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

搜索
    中文

      Skip-gram 模型优化

      概述

      由于原始 Skip-gram 模型的计算量非常高,因此几乎无法应用到实际场景中。

      矩阵 WW 的大小取决于词汇量的大小(例如,V=10000)和嵌入维度(例如,N=300),其中每个矩阵通常包含数百万个权重(例如,VN=3 百万)! 因此,Skip-gram 的神经网络变得非常庞大,需要大量的训练样本来调整这些权重。

      另外,在每个反向传播步骤中,矩阵 W 的所有输出向量 vw 都会被更新,但其中的绝大多数的向量与目标词和上下文词都没有关系。鉴于 W 的尺寸巨大,梯度下降过程将非常缓慢。

      还有一个显著的成本来自于 Softmax 函数,该函数归一化分母的计算涉及到词汇表中的所有单词。

      T. Mikolov 和其他研究人员引入了一些 Skip-gram 模型的优化技术,包括二次采样(Subsampling)和负采样(Negative Sampling)。这些方法不仅加速了训练过程,还提高了嵌入向量的质量。

      二次采样

      在语料库中,有些词会频繁出现,如 "the"、"and"、"is" 等。这些高频词会带来一些问题:

      • 它们的语义价值有限。例如,模型更多地受益于 "France" 和 "Paris" 的共现,而不是 "France" 和 "the" 频繁共现的情况。
      • 会存在过多包含这些词的训练样本,超过了训练相应向量所需的数量。

      二次采样(Subsampling)方法就用于解决这个问题:对于训练集中的每个单词,设定一定的机会将其丢弃,而不常见的单词较少被丢弃。

      首先,通过下式计算保留一个单词的概率:

      其中,f(wi) 表示第 i 个单词出现的频率,α 是影响概率分布的因子,默认大小为 0.001

      接着,生成一个大小介于 01 之间的随机数。如果 P(wi) 小于这个数,则丢弃这个单词。

      例如,如果 α=0.001,当 f(wi)0.0026 时,P(wi)1,这意味着频率为 0.0026 或更低的单词将完全被保留。对于高频词汇,比如 f(wi)=0.03,有 P(wi)=0.22

      如果 α=0.002,那么频率为 0.0052 或更低的单词将百分之百被保留。对于相同的高频词汇 f(wi)=0.03,此时有 P(wi)=0.32

      因此,较大的 α 会增加高频词被二次采样的概率。

      举个例子,在训练句子 "Graph is a good way to visualize data" 中,如果单词 "a" 被丢弃,那么这个句子的采样结果将不会包含以 "a" 作为目标词或上下文词的样本。

      负采样

      在负采样(Negative Sampling)方法中,每当对目标词进行采样获得一个上下文词作为正样本时,同时选择 k 个单词作为负样本。

      我们讨论原始 Skip-gram 模型时使用了一个简单的语料库,这个语料库包含一个由 10 个单词组成的词汇表:graph、is、a、good、way、to、visualize、data、very 和 at。举例来说,当使用滑动窗口生成正样本 (target, content): (is, a) 时,我们同时选择 k=3 个负样本单词 graph、data 和 at。

      目标词 上下文词 期待的输出
      is 正样本 a 1
      负样本 graph 0
      data 0
      at 0

      使用负采样后,模型的训练目标从预测目标词的上下文词转变为一个二分类任务。在这个设置中,正例单词的输出期望为 1,而负例单词的输出期望为 0;其他无关的单词将被忽略。

      因此,在反向传播过程中,模型只更新与正例和负例单词相关联的输出向量 vw,以提高模型的分类性能。

      考虑一个情景,其中 V=10000N=300。当应用参数 k=9 的负采样时,矩阵 W 中只有 300×10=3000 个权重需要更新,这相当于没有应用负采样时需要更新的 3 百万个权重的 0.1%

      我们的实验表明,在小型训练数据集中,k 值在 5~20的范围内即可;而对于大型数据集,k 值可以更小,大约 2~5。(Mikolov 等

      选择负样本单词需要一个概率分布 Pn,其基本原则是优先考虑语料库中的高频词汇。然而,如果选择完全基于词频,可能导致高频词被过度表示而低频词被忽视。为了取得平衡,通常使用将词频提升 34 幂次的经验分布:

      其中,f(wi) 表示第 i 个单词的频率,P 的下标 n 表示"噪音"的概念,因此Pn 也被称为噪音分布(Noise Distribution)。

      在极端情况下,如果语料库只包含两个单词,频率分别为 0.90.1,使用上式调整后的概率分别为 0.840.16。这种调整在一定程度上缓解了由频率差异引起的固有选择偏差。

      处理大型语料库时,负采样在计算效率方面可能存在挑战。因此,我们进一步采用一个 resolution 参数来重新缩放噪音分布。较大的 resolution 值能提供对原始噪音分布的更接近的近似。

      优化的模型训练

      前向传播过程

      我们将以目标词 is、正样本词 a 和负样本词 graph、data 和 at 为例进行说明:

      在负采样中,Skip-gram模型使用以下变化的 Softmax 函数,实际上也是 uj 的Sigmoid 函数(σ)。这个函数将 u 的所有分量映射到 01 的范围内:

      反向传播过程

      如前所述,期望正样本单词的输出(表示为 y0)为 1;而对应的 k 个负样本单词的输出(表示为 yi)为 0。因此,模型训练的目标是最大化 y01-yi,这可以等价为最大化它们的乘积:

      损失函数 E 可以通过将上述问题转化为最小化问题来获得:

      分别求 E 相对于 u0ui 的偏导数:

      Eu0Eui 具有与原始 Skip-gram 模型中 Euj 类似的含义,可以理解为从输出向量中减去期望向量:

      更新矩阵 WW 权重的过程与 Skip-gram 的原始形式类似。然而,只有 W 中的 w11w21w13w23w18w28w1,10w2,10 以及 W 中的 w21w21 会被更新。

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写