Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
d2l-zh
提交
040cb955
D
d2l-zh
项目概览
OpenDocCN
/
d2l-zh
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
d2l-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
040cb955
编写于
10月 25, 2018
作者:
A
Aston Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
positive and neg
上级
d1add606
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
3 addition
and
3 deletion
+3
-3
chapter_natural-language-processing/approx-training.md
chapter_natural-language-processing/approx-training.md
+2
-2
chapter_natural-language-processing/word2vec-gluon.md
chapter_natural-language-processing/word2vec-gluon.md
+1
-1
未找到文件。
chapter_natural-language-processing/approx-training.md
浏览文件 @
040cb955
...
...
@@ -28,7 +28,7 @@ $$\sigma(x) = \frac{1}{1+\exp(-x)}.$$
$$
\p
rod_{t=1}^{T}
\p
rod_{-m
\l
eq j
\l
eq m,
\
j
\n
eq 0}
\m
athbb{P}(D=1
\m
id w^{(t)}, w^{(t+j)}).$$
然而,以上模型中包含的事件仅考虑了正
例样本。这导致当所有词向量相等且值为无穷大时,以上的联合概率才被最大化为1。很明显,这样的词向量毫无意义。负采样通过采样并添加负例样本使目标函数更有意义。设背景词$w_o$出现在中心词$w_c$的一个背景窗口为事件$P$,我们根据分布$
\m
athbb{P}(w)$采样$K$个未出现在该背景窗口中的词,即噪音词。设噪音词$w_k$($k=1,
\l
dots, K$)不出现在中心词$w_c$的该背景窗口为事件$N_k$。假设同时含有正例样本和负例样本的事件$P, N_1,
\l
dots, N_K$相互独立,负采样将以上需要最大化的仅考虑正例
样本的联合概率改写为
然而,以上模型中包含的事件仅考虑了正
类样本。这导致当所有词向量相等且值为无穷大时,以上的联合概率才被最大化为1。很明显,这样的词向量毫无意义。负采样通过采样并添加负类样本使目标函数更有意义。设背景词$w_o$出现在中心词$w_c$的一个背景窗口为事件$P$,我们根据分布$
\m
athbb{P}(w)$采样$K$个未出现在该背景窗口中的词,即噪音词。设噪音词$w_k$($k=1,
\l
dots, K$)不出现在中心词$w_c$的该背景窗口为事件$N_k$。假设同时含有正类样本和负类样本的事件$P, N_1,
\l
dots, N_K$相互独立,负采样将以上需要最大化的仅考虑正类
样本的联合概率改写为
$$
\p
rod_{t=1}^{T}
\p
rod_{-m
\l
eq j
\l
eq m,
\
j
\n
eq 0}
\m
athbb{P}(w^{(t+j)}
\m
id w^{(t)}),$$
...
...
@@ -75,7 +75,7 @@ $$\sum_{w \in \mathcal{V}} \mathbb{P}(w \mid w_c) = 1.$$
## 小结
*
负采样通过考虑同时含有正
例样本和负例
样本的相互独立事件来构造损失函数。其训练中每一步的梯度计算开销与采样的噪音词的个数线性相关。
*
负采样通过考虑同时含有正
类样本和负类
样本的相互独立事件来构造损失函数。其训练中每一步的梯度计算开销与采样的噪音词的个数线性相关。
*
层序softmax使用了二叉树,并根据根节点到叶子节点的路径来构造损失函数。其训练中每一步的梯度计算开销与词典大小的对数相关。
## 练习
...
...
chapter_natural-language-processing/word2vec-gluon.md
浏览文件 @
040cb955
...
...
@@ -160,7 +160,7 @@ all_negatives = get_negatives(all_contexts, sampling_weights, 5)
我们从数据集中提取所有中心词
`all_centers`
,以及每个中心词对应的背景词
`all_contexts`
和噪音词
`all_negatives`
。我们将通过随机小批量来读取它们。
在一个小批量数据中,第$i$个样本包括一个中心词以及它所对应的$n_i$个背景词和$m_i$个噪音词。由于每个样本的背景窗口大小可能不一样,其中背景词与噪音词个数之和$n_i+m_i$也会不同。在构造小批量时,我们将每个样本的背景词和噪音词连结在一起,并添加填充项0直至连结后的长度相同,即长度均为$
\m
ax_i n_i+m_i$(
`max_len`
)。为了避免填充项对损失函数计算的影响,我们构造了掩码变量
`masks`
,其每一个元素分别与连结后的背景词和噪音词
`contexts_negatives`
中的元素一一对应。当变量
`contexts_negatives`
中的某个元素为填充项时,相同位置的掩码变量
`masks`
中的元素取0,否则取1。为了区分正
例和负例,我们还需要将
`contexts_negatives`
变量中的背景词和噪音词区分开来。依据掩码变量的构造思路,我们只需创建与
`contexts_negatives`
变量形状相同的标签变量
`labels`
,并将与背景词(正例
)对应的元素设1,其余清0。
在一个小批量数据中,第$i$个样本包括一个中心词以及它所对应的$n_i$个背景词和$m_i$个噪音词。由于每个样本的背景窗口大小可能不一样,其中背景词与噪音词个数之和$n_i+m_i$也会不同。在构造小批量时,我们将每个样本的背景词和噪音词连结在一起,并添加填充项0直至连结后的长度相同,即长度均为$
\m
ax_i n_i+m_i$(
`max_len`
)。为了避免填充项对损失函数计算的影响,我们构造了掩码变量
`masks`
,其每一个元素分别与连结后的背景词和噪音词
`contexts_negatives`
中的元素一一对应。当变量
`contexts_negatives`
中的某个元素为填充项时,相同位置的掩码变量
`masks`
中的元素取0,否则取1。为了区分正
类和负类,我们还需要将
`contexts_negatives`
变量中的背景词和噪音词区分开来。依据掩码变量的构造思路,我们只需创建与
`contexts_negatives`
变量形状相同的标签变量
`labels`
,并将与背景词(正类
)对应的元素设1,其余清0。
下面我们将实现这个小批量读取函数
`batchify`
。它的小批量输入
`data`
是一个长度为批量大小的列表,其中每个元素分别包含中心词
`center`
、背景词
`context`
和噪音词
`negative`
。该函数返回的小批量数据符合我们所需要的格式,例如包含了掩码变量。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录