当前位置:   article > 正文

[DeeplearningAI笔记]序列模型2.7负采样Negative sampling_负样本采样

负样本采样

5.2自然语言处理

觉得有用的话,欢迎一起讨论相互学习~

我的微博我的github我的B站

吴恩达老师课程原地址

2.7 负采样 Negative sampling

Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2013:3111-3119.

  • skip-gram模型可以构造一个监督学习任务,把上下文映射到目标词上,以学习一个实用的词嵌入,但是他的缺点是softmax计算起来很慢。本节将会介绍了一个经过优化的学习问题叫做 负采样,其能够做到和 skip-gram 相似的功能但是使用起来更加高效。
样本生成方法
  • 例句: I want a glass of orange juice to go along with my cereal 构造一个新的监督学习问题,给定一对单词 orange 和 juice ,预测这是否是一对 上下文词-目标词 (context-target) ,在这个样本中,orange 和 juice 就是一个正样本。 然而对于 orange 和 king 就是一个负样本。
    • 正样本 的生成是采样得到一个上下文词和一个目标词。其中先在句中随机均匀的选取一个单词作为上下文词。然后在其左右两边一定词距内随机选择一个单词作为目标词。 并且将 标签 设置为1.
    • 负样本 的生成是使用和正样本一样的上下文词,然后从字典中随机选取一个单词构成一个组合。并且将 标签 设置为0. 其中同一 上下文词 生成 K个 负样本
contextwordtarget
orangejuice1
orangeking0
orangebook0
orangethe0
orangeof0
  • 注意:正负样本 的区别仅取决于单词对的来源,即是 of 也在 orange 的设定词距之内,但是作为随机从字典中选取的单词, of - orange 单词对仍然被标记为负样本。
  • 在本次提出的算法中 输入数据x 将被设定为 context-word 的单词对,预测结果y 将被设置为 target 算法的目的即是区分 样本采样的来源
  • 论文作者推荐,小数据集的话 K 被设置为5-20, 而对于较大的数据集, K 被设置为2-5.即数据集越小 K 值被设定的越大。
模型学习原理
  • Skip-grams 中softmax函数定义:
    P ( t a r g e t ∣ c o n t e n t ) = e θ t T e c ∑ j = 1 10000 e θ j T e c P(target|content)=\frac{e^{\theta_{t}^{T}e_{c}}}{\sum^{10000}_{j=1}{e^{\theta^{T}_{j}e_{c}}}} P(targetcontent)=j=110000eθjTeceθtTec

  • 本节算法定义 输入Context为c,Word为t,定义输出Target为y

contextwordtarget
cty
x 1 x_1 x1 x 2 x_2 x2y
orangejuice1
orangeking0
orangebook0
orangethe0
orangeof0
  • 损失函数 定义为给定 样本单词对 的情况下, y = 1 y=1 y=1 的概率:
    • 使用 e c e_{c} ec表示context的词嵌入向量 其中 θ t \theta_{t} θt表示每个样本对应的参数.
    • P ( y = 1 ∣ c , t ) = σ ( θ t T e c ) P(y=1|c,t)=\sigma(\theta^{T}_{t}e_{c}) P(y=1c,t)=σ(θtTec)
    • 对于每个正样本都有 K 个负样本来训练一个类似logisitic回归的模型。
神经网络算法流程
  1. 如果输入词是 orange ,即词典中的第6257个词,将其使用one-hot向量表示 o 6257 o_{6257} o6257,
  2. 再传递给E(词嵌入向量矩阵),通过两者相乘得到 orange 的嵌入向量 e 6357 e_{6357} e6357
  3. e 6357 e_{6357} e6357是一个1W维(字典中总单词数量)的向量,可以看成是1W个可能的logistic回归分类问题,其中一个是用来判断目标词是否是 juice 的分类器,当然也有用来判断 king,book,the… 等词汇是否是目标词的分类器。但是每次迭代不都是训练所有的样本, 每次迭代只会训练一个正样本和随机选取的 K 个负样本
  • 此算法将需要计算10000个维度的softmax问题转化为10000个二分类问题,每一个都易于计算,每次迭代要做的只是训练其中的 K+1 个样本,其中一个正样本和随机选取的同一个Context的 K 个负样本。
  • 此算法被称为 负采样 , 因为在挑选一个 正样本 的同时,随机生成 K个负样本
负样本采样方法
  • 仅考虑单词在 语料库 中出现的频率,会导致负样本中 the, of, and … 等介词出现的频率过高
  • 仅考虑单词在 词汇表 中出现的频率,即在 词汇表 中随机采样,分母是词汇表中的总词数,这样采样十分没有代表性。
  • 论文提出采样公式为:
    P ( w i ) = f ( w i ) 3 / 4 ∑ j = 1 10000 f ( w j ) 3 / 4 P(w_{i})=\frac{f(w_{i})^{3/4}}{\sum^{10000}_{j=1}f(w_{j})^{3/4}} P(wi)=j=110000f(wj)3/4f(wi)3/4其中 f ( w i ) f(w_{i}) f(wi)表示单词在语料库中的词频。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号