[DeeplearningAI笔记]序列模型2.7负采样Negative sampling
5.2自然语言处理
觉得有用的话,欢迎一起讨论相互学习~Follow Me
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 |
| \(x_1\) | \(x_2\) | 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回归的模型。
神经网络算法流程
- 如果输入词是 orange ,即词典中的第6257个词,将其使用one-hot向量表示 \(o_{6257}\),
- 再传递给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})\)表示单词在语料库中的词频。
[DeeplearningAI笔记]序列模型2.7负采样Negative sampling的更多相关文章
- [DeeplearningAI笔记]序列模型1.7-1.9RNN对新序列采样/GRU门控循环神经网络
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.7对新序列采样 基于词汇进行采样模型 在训练完一个模型之后你想要知道模型学到了什么,一种非正式的方法就是进行一次新序列采 ...
- [DeeplearningAI笔记]序列模型3.9-3.10语音辨识/CTC损失函数/触发字检测
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.9语音辨识 Speech recognition 问题描述 对于音频片段(audio clip)x ,y生成文本 ...
- [DeeplearningAI笔记]序列模型3.7-3.8注意力模型
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.7注意力模型直观理解Attention model intuition 长序列问题 The problem of ...
- [DeeplearningAI笔记]序列模型3.6Bleu得分/机器翻译得分指标
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.6Bleu得分 在机器翻译中往往对应有多种翻译,而且同样好,此时怎样评估一个机器翻译系统是一个难题. 常见的解决 ...
- [DeeplearningAI笔记]序列模型3.3集束搜索
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.3 集束搜索Beam Search 对于机器翻译来说,给定输入的句子,会返回一个随机的英语翻译结果,但是你想要一 ...
- [DeeplearningAI笔记]序列模型3.2有条件的语言模型与贪心搜索的不可行性
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.2选择最可能的句子 Picking the most likely sentence condition lan ...
- [DeeplearningAI笔记]序列模型3.1基本的 Seq2Seq /image to Seq
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1基础模型 [1] Sutskever I, Vinyals O, Le Q V. Sequence to Se ...
- [DeeplearningAI笔记]序列模型2.8 GloVe词向量
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.8 GloVe word vectors GloVe词向量 Pennington J, Socher R, Mannin ...
- [DeeplearningAI笔记]序列模型1.10-1.12LSTM/BRNN/DeepRNN
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10长短期记忆网络(Long short term memory)LSTM Hochreiter S, Schmidhu ...
随机推荐
- python sys模块使用详情
python常用模块目录 sys模块提供了一系列有关Python运行环境的变量和函数.1.sys.argv可以用sys.argv获取当前正在执行的命令行参数的参数列表(list).变量解释sys.ar ...
- gulp4.0 存在的错误信息 The following tasks did not complete: default,Did you forget to signal async completion?
当gulp为如下代码的时候: // 以下代码会执行在node环境下 const gulp = require( "gulp" ); // 创建一个gulp的任务 gulp.task ...
- Scrum立会报告+燃尽图(十月十七日总第八次)
本次作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 一.小组介绍 组名:杨老师粉丝群 组长:乔静玉 组员:吴奕瑶.公 ...
- HDU 4747 Mex 递推/线段树
题目链接: acm.hdu.edu.cn/showproblem.php?pid=4747 Mex Time Limit: 15000/5000 MS (Java/Others)Memory Limi ...
- lintcode-389-判断数独是否合法
389-判断数独是否合法 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项 一个合法的数独(仅部分填充)并不一定是可解的.我们仅需使填充的空格有效即可. 说 ...
- slf4j与logback的结合使用
参考:http://my.oschina.net/ydsakyclguozi/blog/412240 一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logbac ...
- HTML&CSS实体
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- HDU 2113 Secret Number
http://acm.hdu.edu.cn/showproblem.php?pid=2113 Problem Description 有一天, KIKI 收到一张奇怪的信, 信上要KIKI 计算出给定 ...
- 对mysql联合索引中的字段进行合理排序
在MySQL的where条件中,有时会用到很多的条件,通常为了加快速度会把这些字段放到联合索引中,可以更快的提高搜索速度: 但是对联合索引中字段顺序的合理排序,便更能提高速度 例子:select * ...
- php PDO操作类
<?php /*//pdo连接信息 $pdo=array("mysql:host=localhost;dbname=demo;charset=utf8","root ...