[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 ...
随机推荐
- 检查Linux服务器性能的关键十条命令
检查Linux服务器性能的关键十条命令 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL ...
- 九个很有用的php功能
1. 函数的任意数目的参数 你可能知道PHP允许你定义一个默认参数的函数.但你可能并不知道PHP还允许你定义一个完全任意的参数的函数 下面是一个示例向你展示了默认参数的函数: 1 2 3 4 5 6 ...
- Beta发布——视频博客
1.视频链接 视频上传至优酷自频道,地址链接:http://v.youku.com/v_show/id_XMzkzNzAxNDk2OA==.html?spm=a2hzp.8244740.0.0 2.视 ...
- Scrum立会报告+燃尽图(Beta阶段第六次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2388 项目地址:https://coding.net/u/wuyy694 ...
- c# 加载图片 正在被占用问题
问题情境:图片文件加载到pdf中,程序没有退出,再次加载该图片文件,提示被占用. 解决办法: 1.加载文件会锁定该文件,fromfile方法会导致占用内存较大,不使用该方法. FileStream f ...
- HDU 5234 Happy birthday 01背包
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5234 bc:http://bestcoder.hdu.edu.cn/contests/con ...
- HDU 5433 Xiao Ming climbing 动态规划
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5433 Xiao Ming climbing Time Limit: 2000/1000 MS (Ja ...
- (一)Tensorflow安装
主要包括下面两个指令: $ sudo apt-get install python-pip python-dev $ sudo pip install --upgrade https://storag ...
- jQuery之回到顶部
实现回到顶部的功能,根据学了元素滚动实现,温习知识点. 做之前先理清一下步骤和思路: 1.获得页面的滚动长度 var $page = $("html,body"); var dis ...
- 1014 我的C语言文法定义与C程序推导过程
程序> -> <外部声明> | <程序> <外部声明> <外部声明> -> <函数定义> | <声明> < ...