0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PyTorch教程-15.2. 近似训练

jf_pJlTbmA9 来源:PyTorch 作者:PyTorch 2023-06-05 15:44 次阅读

回忆一下我们在15.1 节中的讨论。skip-gram模型的主要思想是使用softmax操作来计算生成上下文词的条件概率wo基于给定的中心词wc在(15.1.4)中,其对应的对数损失由(15.1.7)的相反数给出 。

由于 softmax 操作的性质,因为上下文词可能是字典中的任何人V, (15.1.7)的反面 包含与词汇表的整个大小一样多的项目总和。因此, (15.1.8)中 skip-gram 模型的梯度计算和(15.1.15)中连续词袋模型的 梯度计算都包含求和。不幸的是,这种在大型词典(通常有数十万或数百万个单词)上求和的梯度的计算成本是巨大的!

为了降低上述计算复杂度,本节将介绍两种近似训练方法:负采样和分层softmax。由于skip-gram模型与连续词袋模型的相似性,我们将仅以skip-gram模型为例来描述这两种近似训练方法。

15.2.1。负采样

负采样修改了原来的目标函数。给定中心词的上下文窗口wc,任何(上下文)词的事实wo来自这个上下文窗口被认为是一个事件,其概率建模为

(15.2.1)P(D=1∣wc,wo)=σ(uo⊤vc),

在哪里σ使用 sigmoid 激活函数的定义:

(15.2.2)σ(x)=11+exp⁡(−x).

让我们首先最大化文本序列中所有此类事件的联合概率来训练词嵌入。具体来说,给定长度的文本序列T, 表示为w(t)时间步长的单词t并让上下文窗口大小为m, 考虑最大化联合概率

(15.2.3)∏t=1T∏−m≤j≤m,j≠0P(D=1∣w(t),w(t+j)).

然而,(15.2.3)只考虑那些涉及正例的事件。因此, 只有当所有词向量都等于无穷大时,(15.2.3)中的联合概率才最大化为 1。当然,这样的结果是没有意义的。为了使目标函数更有意义,负采样添加了从预定义分布中采样的负样本。

表示为S上下文词的事件wo来自中心词的上下文窗口wc. 对于此次涉及的事件wo,来自预定义的分布P(w) 样本K 不是来自这个上下文窗口的噪声词。表示为Nk干扰词的事件wk (k=1,…,K) 不是来自上下文窗口 wc. 假设这些事件同时涉及正例和反例S,N1,…,NK是相互独立的。负采样将(15.2.3)中的联合概率(仅涉及正例)重写为

(15.2.4)∏t=1T∏−m≤j≤m,j≠0P(w(t+j)∣w(t)),

其中条件概率是通过事件来近似的 S,N1,…,NK:

(15.2.5)P(w(t+j)∣w(t))=P(D=1∣w(t),w(t+j))∏k=1,wk∼P(w)KP(D=0∣w(t),wk).

表示为it和hk一个词的索引 w(t)在时间步t文本序列和噪声词wk, 分别。关于 (15.2.5)中条件概率的对数损失是

(15.2.6)−log⁡P(w(t+j)∣w(t))=−log⁡P(D=1∣w(t),w(t+j))−∑k=1,wk∼P(w)Klog⁡P(D=0∣w(t),wk)=−logσ(uit+j⊤vit)−∑k=1,wk∼P(w)Klog⁡(1−σ(uhk⊤vit))=−logσ(uit+j⊤vit)−∑k=1,wk∼P(w)Klog⁡σ(−uhk⊤vit).

我们可以看到现在每个训练步骤的梯度计算成本与字典大小无关,而是线性取决于K. 设置超参数时K对于较小的值,负采样的每个训练步骤的梯度计算成本较小。

15.2.2。分层 Softmax

作为一种替代的近似训练方法,hierarchical softmax 使用二叉树,一种 如图 15.2.1所示的数据结构,其中树的每个叶节点代表字典中的一个词V.

poYBAGR9PFyAQIa3AACXN8iJ_1k913.svg

图 15.2.1用于近似训练的分层 softmax,其中树的每个叶节点代表字典中的一个词。

表示为L(w)从根节点到表示单词的叶节点的路径上的节点数(包括两端)w在二叉树中。让n(w,j)成为jth该路径上的节点,其上下文词向量为 un(w,j). 例如,L(w3)=4在 图 15.2.1中。分层 softmax 将(15.1.4)中的条件概率近似为

(15.2.7)P(wo∣wc)=∏j=1L(wo)−1σ([[n(wo,j+1)=leftChild(n(wo,j))]]⋅un(wo,j)⊤vc),

哪里的功能σ在(15.2.2)中定义,并且 leftChild(n)是节点的左子节点n: 如果 x是真的,[[x]]=1; 否则 [[x]]=−1.

为了说明,让我们计算生成单词的条件概率w3给定的词wc在图 15.2.1中。这需要词向量之间的点积vc 的wc以及从根到路径(图15.2.1中粗体路径)上的非叶节点向量w3,向左、向右、然后向左遍历:

(15.2.8)P(w3∣wc)=σ(un(w3,1)⊤vc)⋅σ(−un(w3,2)⊤vc)⋅σ(un(w3,3)⊤vc).

自从σ(x)+σ(−x)=1,它认为生成字典中所有单词的条件概率 V基于任何词wc总结为一个:

(15.2.9)∑w∈VP(w∣wc)=1.

幸运的是,因为L(wo)−1顺序是 O(log2|V|)由于二叉树结构,当字典大小时V是巨大的,与不使用近似训练相比,使用分层 softmax 的每个训练步骤的计算成本显着降低。

15.2.3。概括

负采样通过考虑涉及正例和负例的相互独立的事件来构建损失函数。训练的计算成本线性依赖于每一步的噪声词数量。

Hierarchical softmax利用二叉树中从根节点到叶节点的路径构造损失函数。训练的计算成本取决于每一步字典大小的对数。

15.2.4。练习

我们如何在负采样中对噪声词进行采样?

验证(15.2.9)成立。

如何分别使用负采样和分层 softmax 来训练连续词袋模型?

Discussions

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • pytorch
    +关注

    关注

    2

    文章

    803

    浏览量

    13149
收藏 人收藏

    评论

    相关推荐

    请问电脑端Pytorch训练的模型如何转化为能在ESP32S3平台运行的模型?

    由题目, 电脑端Pytorch训练的模型如何转化为能在ESP32S3平台运行的模型? 如何把这个Pytorch模型烧录到ESP32S3上去?
    发表于 06-27 06:06

    Pytorch模型训练实用PDF教程【中文】

    ?模型部分?还是优化器?只有这样不断的通过可视化诊断你的模型,不断的对症下药,才能训练出一个较满意的模型。本教程内容及结构:本教程内容主要为在 PyTorch训练一个模型所可能涉及到的方法及函数,并且
    发表于 12-21 09:18

    PyTorch10的基础教程

    PyTorch 10 基础教程(4):训练分类器
    发表于 06-05 17:42

    怎样使用PyTorch Hub去加载YOLOv5模型

    PyTorch Hub 加载预训练的 YOLOv5s 模型,model并传递图像进行推理。'yolov5s'是最轻最快的 YOLOv5 型号。有关所有可用模型的详细信息,请参阅自述文件。详细示例此示例
    发表于 07-22 16:02

    pytorch实现断电继续训练时需要注意的要点

    本文整理了pytorch实现断电继续训练时需要注意的要点,附有代码详解。
    的头像 发表于 08-22 09:50 1390次阅读

    PyTorch教程11.9之使用Transformer进行大规模预训练

    电子发烧友网站提供《PyTorch教程11.9之使用Transformer进行大规模预训练.pdf》资料免费下载
    发表于 06-05 15:07 0次下载
    <b class='flag-5'>PyTorch</b>教程11.9之使用Transformer进行大规模预<b class='flag-5'>训练</b>

    PyTorch教程13.5之在多个GPU上进行训练

    电子发烧友网站提供《PyTorch教程13.5之在多个GPU上进行训练.pdf》资料免费下载
    发表于 06-05 14:18 0次下载
    <b class='flag-5'>PyTorch</b>教程13.5之在多个GPU上进行<b class='flag-5'>训练</b>

    PyTorch教程之15.2近似训练

    电子发烧友网站提供《PyTorch教程之15.2近似训练.pdf》资料免费下载
    发表于 06-05 11:07 1次下载
    <b class='flag-5'>PyTorch</b>教程之<b class='flag-5'>15.2</b><b class='flag-5'>近似</b><b class='flag-5'>训练</b>

    PyTorch教程15.4之预训练word2vec

    电子发烧友网站提供《PyTorch教程15.4之预训练word2vec.pdf》资料免费下载
    发表于 06-05 10:58 0次下载
    <b class='flag-5'>PyTorch</b>教程15.4之预<b class='flag-5'>训练</b>word2vec

    PyTorch教程15.9之预训练BERT的数据集

    电子发烧友网站提供《PyTorch教程15.9之预训练BERT的数据集.pdf》资料免费下载
    发表于 06-05 11:06 0次下载
    <b class='flag-5'>PyTorch</b>教程15.9之预<b class='flag-5'>训练</b>BERT的数据集

    PyTorch教程15.10之预训练BERT

    电子发烧友网站提供《PyTorch教程15.10之预训练BERT.pdf》资料免费下载
    发表于 06-05 10:53 0次下载
    <b class='flag-5'>PyTorch</b>教程15.10之预<b class='flag-5'>训练</b>BERT

    PyTorch如何训练自己的数据集

    PyTorch是一个广泛使用的深度学习框架,它以其灵活性、易用性和强大的动态图特性而闻名。在训练深度学习模型时,数据集是不可或缺的组成部分。然而,很多时候,我们可能需要使用自己的数据集而不是现成
    的头像 发表于 07-02 14:09 1330次阅读

    解读PyTorch模型训练过程

    PyTorch作为一个开源的机器学习库,以其动态计算图、易于使用的API和强大的灵活性,在深度学习领域得到了广泛的应用。本文将深入解读PyTorch模型训练的全过程,包括数据准备、模型构建、
    的头像 发表于 07-03 16:07 928次阅读

    pytorch如何训练自己的数据

    本文将详细介绍如何使用PyTorch框架来训练自己的数据。我们将从数据准备、模型构建、训练过程、评估和测试等方面进行讲解。 环境搭建 首先,我们需要安装PyTorch。可以通过访问
    的头像 发表于 07-11 10:04 446次阅读

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练
    的头像 发表于 10-28 14:05 143次阅读
    <b class='flag-5'>Pytorch</b>深度学习<b class='flag-5'>训练</b>的方法