前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[DeeplearningAI笔记]序列模型2.7负采样Negative sampling

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

作者头像
演化计算与人工智能
发布2020-08-14 14:39:36
7210
发布2020-08-14 14:39:36
举报

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 个 负样本

context

word

target

orange

juice

1

orange

king

0

orange

book

0

orange

the

0

orange

of

0

  • 注意:正负样本 的区别仅取决于单词对的来源,即是 of 也在 orange 的设定词距之内,但是作为随机从字典中选取的单词, of - orange 单词对仍然被标记为负样本。
  • 在本次提出的算法中 输入数据 x 将被设定为 context-word 的单词对,预测结果 y 将被设置为 target 算法的目的即是区分 样本采样的来源
  • 论文作者推荐,小数据集的话 K 被设置为 5-20, 而对于较大的数据集, K 被设置为 2-5.即数据集越小 K 值被设定的越大。
模型学习原理
  • Skip-grams 中 softmax 函数定义:
P(target|content)=\frac{e^{\theta_{t}^{T}e_{c}}}{\sum^{10000}_{j=1}{e^{\theta^{T}_{j}e_{c}}}}
  • 本节算法定义 输入 Context 为 c,Word 为 t,定义输出 Target 为 y

context

word

target

c

t

y

y

orange

juice

1

orange

king

0

orange

book

0

orange

the

0

orange

of

0

  • 损失函数 定义为给定 样本单词对 的情况下,
y=1

的概率:

  • 使用
e_{c}

表示 context 的词嵌入向量 其中

\theta_{t}

表示每个样本对应的参数.

P(y=1|c,t)=\sigma(\theta^{T}_{t}e_{c})
  • 对于每个正样本都有 K 个负样本来训练一个类似 logisitic 回归的模型。

神经网络算法流程
  1. 如果输入词是 orange ,即词典中的第 6257 个词,将其使用 one-hot 向量表示
o_{6257}

,

  1. 再传递给 E(词嵌入向量矩阵),通过两者相乘得到 orange 的嵌入向量
e_{6357}
e_{6357}

是一个 1W 维(字典中总单词数量)的向量,可以看成是 1W 个可能的 logistic 回归分类问题,其中一个是用来判断目标词是否是 juice 的分类器,当然也有用来判断 king,book,the... 等词汇是否是目标词的分类器。但是每次迭代不都是训练所有的样本, 每次迭代只会训练一个正样本和随机选取的 K 个负样本

  • 此算法将需要计算 10000 个维度的 softmax 问题转化为 10000 个二分类问题,每一个都易于计算,每次迭代要做的只是训练其中的 K+1 个样本,其中一个正样本和随机选取的同一个 Context 的 K 个负样本。
  • 此算法被称为 负采样 , 因为在挑选一个 正样本 的同时,随机生成 K 个负样本
负样本采样方法
  • 仅考虑单词在 语料库 中出现的频率,会导致负样本中 the, of, and ... 等介词出现的频率过高
  • 仅考虑单词在 词汇表 中出现的频率,即在 词汇表 中随机采样,分母是词汇表中的总词数,这样采样十分没有代表性。
  • 论文提出采样公式为:
P(w_{i})=\frac{f(w_{i})^{3/4}}{\sum^{10000}_{j=1}f(w_{j})^{3/4}}

其中

f(w_{i})

表示单词在语料库中的词频。

参考资料

[1]

吴恩达老师课程原地址: https://mooc.study.163.com/smartSpec/detail/1001319001.htm

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DrawSky 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.7 负采样 Negative sampling
    • 样本生成方法
      • 模型学习原理
        • 神经网络算法流程
          • 负样本采样方法
          • 参考资料
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档