背景 GNN在协同过滤相关方法中达到了最优的效果,从隐式反馈中负采样是协同过滤中需要面临的一大难题。当前在基于图的协同过滤方法中,负采样方法探索的还比较少。...本文提出了即插即用的MixGCF负采样方法。 本文不是直接从原始样本中进行负采样,而是通过生成难负样本(hard negative samples)来进行负采样。...positive mixing通过插值的方法向负样本中添加正样本的信息,从而得到难负样本 hop mixing通过池化的方式将已得到的难负样本进行结合,从而生成虚假但是信息丰富的负样本。...实验结果 在开头也说了,本文所提的是一种即插即用的采样方法,因此实验中和不同的采样方法进行了对比,并且将采样方法和不同的基于图的模型进行结合,然后实验。可以发现结果都有明显的提升。 4....总结 本文所采用的的思想,一方面采用mixup,用插值的方式得到难负样本,这类方法其实在图像相关的方法中很常见,不过将其应用于图相关的协同过滤方法可能还是第一次。
'21上的一篇短文,主要是对召回阶段的双塔模型中的负采样方法的改进。...通常用的表多的是batch内(in-batch)负采样,但是直接使用in-batch负采样,需要较大的batch size,而如果batch size太大,GPU就会承受不住,因此负样本的多少会受到GPU...2.方法 双塔模型在这里不做详细介绍,主要就是对user和item的embedding求相似度从而得到推荐分数,最终进行召回。得分或者说概率计算方式如下,这里用到的是sampled softmax。...采用in-batch的负采样方式,并根据sampled softmax的含义,可以将其上式改写为下式,可以发现不同点在于 log(q(I)) ,log用于矫正采样偏差。...in-batch的采样方式使得负采样的数目和batch size是呈线性关系的,会受到batch size的限制。而batch size太大GPU的内存就会承受不住。
导读 本文是针对负样本采样过程中可能采样到假阴性样本的问题提出的相关方法,现有的方法通常侧重于保持具有高梯度的难负样本进行训练,导致优先选择假负样本。假阴性噪声可能导致模型的过拟合和较差的泛化性。...为了解决这个问题,本文提出了一种增益调整动态负采样方法 GDNS。 设计了一个期望增益采样器,该采样器涉及用户对训练中正负样本之间偏好差距的期望,以动态指导负选择。...方法 image.png 2.1 增益感知的负采样 由于常用方法存在假负例的情况,因此本文希望找到一种更可靠的衡量方式来找到负样本。...\mathbb{E}_{i \sim \Delta_{u}} \sigma\left(r_{u, j}-r_{u, i}\right) 其中代表训练阶段的第次迭代,是sigmoid函数。...相应地,设计了一个增益感知函数来计算商品是一个真正的负样本的概率,如下式,其中是使训练稳定的平滑超参数,防止分母为0。
使用Hierarchical Softmax的主要原因是其计算复杂度是以2为底V的对数。 ? 每个单词都可以通过从根节点-内部节点的路径到达,此外,对这个路径的度量可以由沿着这条路径的各概率乘积表示。...Negative Sampling就是这么一种求解word2vec模型的方法,它摒弃了霍夫曼树,采用了Negative Sampling(负采样)的方法来求解,下面我们就来看看Negative Sampling...我们的模型只有一个输出节点,它可以预测这对数据是随机噪声数据还是真实有效的target/context对。 由于采用了随机采样,所以需要假定一个概率分布。...在采样时,我们只需要从M个区间中采样出neg个区间,此时采样到的每一个区间块对应到的线段所属的词就是我们的负例词。 ?...相比于Hierarchical Softmax,Negative Sampling不再采用霍夫曼树,而是采用随机负采样。
区别于其它神经网络对词语embedding表示,Mikolov的word2vec非常漂亮,直接采用单层神经网络(或理解为sigmoid函数)对词语进行表示。...具体的方法有两种CBOW和Skip-gram,具体模型结构如下: 模型结构.png CBOW是使用周边词语来预测当前词语出现的概率,而skip-gram是采用中心词语预测周边词语的概率。...需要说明的是,当语料较少时使用CBOW方法比较好,当语料较多时采用skip-gram表示比较好。 本文具体描述skip-gram模型的原理与实现。...此时有两种方法进行改进:(1)分层softmax; (2)负采样。...负采样的思想也很简单,就是不计算所有词的概率算softmax,而是采样一些负样本,算对数sigmoid函数,近似softmax。具体原理就是最大化正例概率,最小化负例出现的概率。
区别于其它神经网络对词语embedding表示,Mikolov的word2vec非常漂亮,直接采用单层神经网络(或理解为sigmoid函数)对词语进行表示。...具体的方法有两种CBOW和Skip-gram,具体模型结构如下: ? CBOW是使用周边词语来预测当前词语出现的概率,而skip-gram是采用中心词语预测周边词语的概率。...需要说明的是,当语料较少时使用CBOW方法比较好,当语料较多时采用skip-gram表示比较好。 本文具体描述skip-gram模型的原理与实现。...对于概率p的计算公式可以表示为: ? 当语料比较大时,词典规模会比较大,求softmax速度会变得很慢,严重影响了训练速度。此时有两种方法进行改进:(1)分层softmax; (2)负采样。...负采样的思想也很简单,就是不计算所有词的概率算softmax,而是采样一些负样本,算对数sigmoid函数,近似softmax。具体原理就是最大化正例概率,最小化负例出现的概率。 ?
样本不平衡 扩大数据集 数据采样 focas loss损失函数 数据处理方法 shard: 采样,从某个位置开始隔固定距离采样一个元素。 repeat: 重复数据若干次,不带参数时,重复无数次。...使用 prefetch 方法让数据准备和参数迭代两个过程相互并行。 shuffle:数据顺序洗牌。...、tanh、relu、softmax sigmoid的数学公式是 \sigma(x)=\frac{1}{1+e^{-x}}\\ 优点: 梯度平滑,容易求导 Sigmoid函数的输出映射在(0,1)之间...编辑切换为居中 Softmax示意图 Softmax是Sigmoid的扩展,当类别数k=2时,Softmax回归退化为Logistic回归。...预训练初始化是神经网络初始化的有效方式,比较早期的方法是使用 greedy layerwise auto-encoder 做无监督学习的预训练,经典代表为 Deep Belief Network;而现在更为常见的是有监督的预训练
要解决这个问题,一个直觉的方法是限制每个训练样本必须更新的输出向量的数量,后续会介绍两种方式来实现这一点,分别是层次softmax与负采样。...Huffman树——层次softmax 层次softmax是一种高效计算softmax的方法,其使用二叉树来表示词表中的所有词,每一个词都必须是树的叶子结点,对于每一个结点,都存在唯一的路径从根结点到当前叶子结点...理论上说,可以使用任何形式的树来计算层次softmax,word2vec里面使用的是二叉Huffman树来进行训练。...softmax更加直接:为了解决softmax要计算和更新的参数太多的问题,负采样每次只计算和更新几个参数。...is_negative # 是否使用负采样 self.huffman_label = [] # huffman数据的标签,判断每次选择左子树还是右子树 self.huffman_index
如何区分调用的是函数还是方法 class MyClass(): def process(self): pass def process(): pass print...MyClass.process False MyClass.process True from types import MethodType, FunctionType ''' 函数: FunctionType 方法
❝本文的主要内容: 使用「朴素softmax」损失函数的word2vec 使用「负采样」式损失函数的word2vec 编程实现的细节 ❞ 一些Notations skip-gram的目标就是学习由中心词预测其上下文中某特定词的概率...在参数更新时,更新向量是很容易的,更新向量却很艰难。 负采样(Negative Sampling) 上面对朴素softmax损失函数的求导过程中,我们发现了在更新U的时候,计算开销十分大。...假设当前中心词为c,我们从词汇库中选取K个负采样词,记为,其对应的词向量为,要注意选取这些负采样词的时候,要避开当前真实的上下文词o,o实际上是正样本。...这样,我们便可以构建一个新的损失函数——负采样损失函数: 这个损失函数,一眼就可以看出比naive-softmax loss求导要更容易,因为,它在更新U矩阵时,只更新了K+1个向量,而naive-softmax...而在负采样损失函数中,我们不再使用softmax激活函数了,而是使用sigmoid函数。所以,很多人也会说,负采样是把原本的一个softmax的|V|类分类变成了少数几个二分类问题。
:设计数据重采样策略,或者对损失重加权(为不同类别或实例分配不同的权重)。...大多数现有方法都是基于类别的频率设计的,然而这有个缺陷:这些方法不够鲁棒,因为广泛存在着容易的负样本和冗余的正样本。并且数据重采样还会增加训练时长。而本篇工作使用累积正负梯度比作为指标。...对其增加正梯度(即正样本带来的梯度,反之亦然)的权重,降低负梯度的权重,得到Sigmoid-EQL如下: \mathrm{L}(\mathcal{P}, \mathcal{Y})=\sum_{i \in...CE loss及对应的Softmax-EQL CE loss项通过下面的公式计算: CE(p,y)=-y\log(p) 其中的p不使用sigmoid而是使用softmax: p_i^j = \frac...尽管CE只计算一个实例的正样本的损失,但由于softmax函数,梯度将回流到负样本的对数。
2.4 为什么 Word2vec 中会用到 负采样? 动机:使用霍夫曼树来代替传统的神经网络,可以提高模型训练的效率。...但是如果我们的训练样本里的中心词w是一个很生僻的词,那么就得在霍夫曼树中辛苦的向下走很久了; 介绍:一种概率采样的方式,可以根据词频进行随机抽样,倾向于选择词频较大的负样本; 优点: 用来提高训练速度并且改善所得到词向量的质量的一种方法...因为使用softmax时,分母需要将中心词与语料库总所有词做点乘,代价太大: image.png 所以负采样方法将softmax函数换成sigmoid函数。...极大化正样本出现的概率,同时极小化负样本出现的概率,以sigmoid来代替softmax,相当于进行二分类,判断这个样本到底是不是正样本。...采用负采样,从所有的单词中采样出指定数量的单词,而不需要使用全部的单词 3.2 word2vec和tf-idf 在相似度计算时的区别?
其实现方法是将darknet中间层和中间层后某一层的上采样进行拼接。...这个255就是这么来的。 Yolo v3用上采样的方法来实现这种多尺度的feature map。...类置信度:表示检测到的物体属于一个具体类的概率值,以前的YOLO版本使用softmax将类分数转化为类概率。...在YOLOv3中作者决定使用sigmoid函数取代,原因是softmax假设类之间都是互斥的,例如属于“Person”就不能表示属于“Woman”,然而很多情况是这个物体既是“Person”也是“Woman...在Yolo v1中使用了一种叫sum-square error的损失计算方法,只是简单的差方相加。
代码实现 总结 一.基于Hierarchical Softmax的word2vec模型的缺点 上篇说了Hierarchical Softmax ,使用霍夫曼树结构代替了传统的神经网络,可以提高模型训练的效率...二.Negative SampliNg模型 Negative Sampling是word2vec模型的另一种方法,采用了Negative Sampling(负采样)的方法来求解。...公式三 也就是说,通过sigmoid函数求每个样本的概率,我们希望最大化正例w的概率,最小化负例的概率。...我们想,频率更高的词应该要有更高的概率被采样,将所有词根据词的词频放在长度为1的线段中随机选取符合我们的设定的采样方法: 公式四 其中counter(w)是w的词频 于是我们公平的将不同词频的词放到了长度为...所以一般想拥有比较好的词向量,还是应该在一个有目标导向的神经网络中训练,比如目标是情感分析,在这样的神经网络中去取得第一层embedding层作为词向量,其表达的的效果应该会比word2vec训练出来的效果好得多
是word2vec工具中使用到的两种不同的语言模型,而Hierarchical Softmax和Negative Sampling是对以上的两种模型的具体的优化方法。...3.3、负样本选中表的初始化 如果是采用负采样的方法,此时还需要初始化每个词被选中的概率。...作者在实现的过程中,主要实现了两个模型,即CBOW模型和Skip-gram模型,在每个模型中,又分别使用到了两种不同的训练方法,即层次Softmax和Negative Sampling方法。...一致,Negative Sampling也是一种加速计算的方法,在Negative Sampling方法中使用的是随机的负采样,在CBOW模型中,已知词ww的上下文,需要预测词ww,对于给定的上下文,词...4.3.1、Hierarchical Softmax 由上述的分析,我们发现,在Skip-gram模型中,其计算方法与CBOW模型很相似,不同的是,在Skip-gram模型中,需要使用当前词分别预测窗口中的词
与Skip-Gram模型基础中,我们讲到了使用神经网络的方法来得到词向量语言模型的原理和一些问题,现在我们开始关注word2vec的语言模型如何改进传统的神经网络的方法。...由于word2vec有两种改进方法,一种是基于Hierarchical Softmax的,另一种是基于Negative Sampling的。...为了避免要计算所有词的softmax概率,word2vec采样了霍夫曼树来代替从隐藏层到输出softmax层的映射。我们在上一节已经介绍了霍夫曼树的原理。如何映射呢?...判别正类和负类的方法是使用sigmoid函数,即: P(+)=σ(xTwθ)=11+e−xTwθ 其中xw是当前内部节点的词向量,而θ则是我们需要从训练样本求出的逻辑回归的模型参数。 ...容易理解,被划分为左子树而成为负类的概率为P(−)=1−P(+)。在某一个内部节点,要判断是沿左子树还是右子树走的标准就是看P(−),P(+)谁的概率值大。
2 连续词袋模型及其训练 3 近似训练(负采样)。 4 下期预告 5 参考文献 正文开始 1 跳字模型(Skip-Gram)的训练? 跳字模型的参数是每个词所对应的中心词向量和背景词向量。...因为连续词袋模型的背景词有多个,我们将这些背景词向量取平均,然后使用和跳字模型一样的方法来计算条件概率。设中心词wc在词典中索引为c,背景词wo1,...,wo2m在词典中索引为o1,......与跳字模型不一样的一点在于,使用连续词袋模型的背景词向量作为词的表征向量。 3 近似训练(负采样) 上面我们虽然得到了跳字模型(Skip-Gram)和连续词袋模型(CWOB)。...对于包含几百万词的较大词库,每次的梯度计算开销会相当的大。为了降低计算复杂度,本次将介绍近两种似训练方法,即负采样和层序softmax。...本篇文章这里会介绍负采样方法(基于Skip-Gram模型),层序采样将在下次文章做介绍。 负采样修改了原来的目标函数。
上一篇介绍了使用Hsigmoid加速词向量训练 ,这里我们介绍另一种基于采样的提高语言模型训练速度的方法:使用噪声对比估计(Noise-contrastive estimation, NCE)[1] |...假设来自噪声分布的负类样本的数量 k 倍于目标样本,于是有: ? 我们直接用Sigmoid函数来刻画式(33)这样一个二分类概率: ?...- NCE cost 层的可学习参数 W 是一个 |V|×d 维度的矩阵,|V| 是词典大小,d 是上下文向量h的维度; - 训练时下一个词的真实类别 t 是正类,从指定的噪声分布中采样 k 个负类样本它们的类别分别记作...使用NCE准确训练时,最后一层的计算代价只与负采样数目线性相关,当负采样数目逐渐增大时,NCE 估计准则会收敛到极大似然估计。...因此,在使用NCE准则训练时,可以通过控制负采样数目来控制对归一化的概率分布近似的质量。
, num_true) num_true : 实际的正样本个数 num_sampled: 采样出多少个负样本 num_classes = N sampled_values: 采样出的负样本,如果是None...remove_accidental_hits: 如果采样时不小心采样到的负样本刚好是正样本,要不要干掉 partition_strategy:对weights进行embedding_lookup时并行查表时的策略...nce_loss的实现逻辑如下: _compute_sampled_logits: 通过这个函数计算出正样本和采样出的负样本对应的output和label sigmoid_cross_entropy_with_logits...因此,在TF的word2vec里,负采样的过程其实就是优先采词频高的词作为负样本。 在提出负采样的原始论文中, 包括word2vec的原始C++实现中。...是按照热门度的0.75次方采样的,这个和TF的实现有所区别。但大概的意思差不多,就是越热门,越有可能成为负样本。
领取专属 10元无门槛券
手把手带您无忧上云