[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 ...
随机推荐
- 在PHP中,是以分好结束一条语句的吗
在PHP中,是以分号结束一条语句的,这个和C语言类似. 但是,有一条例外,对于PHP结束tag之前的语句,是可以不写分号的: <?php if ($a == $b) { echo "R ...
- 软工第十二周个人PSP
11.30--12.6本周例行报告 1.PSP(personal software process )个人软件过程. C(类别) C(内容) ST(开始时间) ET(结束时间) INT(间隔时间) Δ ...
- PSP表格记录功能
关于王者荣耀交流协会的PSP表格记录功能,就是针对我们平时做表格时候遇到问题的简化与解决.这部分功能可以记录我们开始时间,暂停时间,结束时间,并自动计算出各个时间段的净时间.只要你开始工作时点一下开始 ...
- 软件工程-东北师大站-第四次作业PSP
1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图
- AOP:spring 的Annotation配置
1.文件目录: 2.实体类 package com.wangcf.po; public class User { private int id; private String name; privat ...
- (六)hadoop系列之__hadoop分布式集群环境搭建
配置hadoop(master,slave1,slave2) 说明: NameNode: master DataNode: slave1,slave2 ------------------------ ...
- 【vue】父组件主动调用子组件 /// 非父子组件传值
一 父组件主动调用子组件: 注意:在父组件使用子组件的标签上注入ref属性,例如: <div id="home"> <v-header ref="he ...
- FastReport.Net 无限页高(连续纸小票)
using System; using System.Collections; using System.Collections.Generic; using System.ComponentMode ...
- Vue2.0 render:h => h(App)
new Vue({ router, store, //components: { App } vue1.0的写法 render: h => h(App) vue2.0的写法 }).$mount( ...
- SQL的拼接语句在DELPHI中怎么写
SQL 语句的拼接,关键点在于对引号的处理上. 在 delphi 的语法中,使用单引号做字符串的标志符.因此,当遇到 SQL 语句中字符串标识量编写的时候,需要用两个单引号来代替实际的引号. 举例: ...