论文笔记之:Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation

简介: Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation   Google  2016.10.06   官方 Blog 链接:https://research.googleblog.com/2016/10/graph-powered-machine-learning-at-google.html     今天讲的是一个基于 streaming approximation 的大规模分布式半监督学习框架,出自 Google 。

 

Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation 

  Google  2016.10.06

 

  官方 Blog 链接:https://research.googleblog.com/2016/10/graph-powered-machine-learning-at-google.html 

  

  今天讲的是一个基于 streaming approximation 的大规模分布式半监督学习框架,出自 Google 。

  摘要:众所周知,传统的 graph-based 半监督学习方法不适合处理大批量数据和大型标签场景,因为其计算量和他们的 边 |E| 和 直接标签 m 的个数是线性关系。为了处理大型标签尺度问题,最近的工作提出了 sketch-based methods 来预测每一个节点的标签分布,故而将空间复杂度由 O(m) 降到了 O(log m),在一定的条件下。

  本文提出一种 新颖的 streaming graph-based SSL approximation 的方法有效的抓住了标签分布的稀疏性(the sparisity),进一步的将空间复杂度降到了 O(1). 与此同时,本文提出一种分布式版本的算法可以处理大批量数据的情况。在实际世界的数据集中的实验,证明所提出的方法比现有方法可以达到明显的内存降低。最后,本文提出一种鲁邦的利用半监督深度学习框架的 graph augmentation strategy,并且在自然语言应用上取得了较好的半监督学习效果。

 

  引言:SSL 是利用少量有标签数据和海量无标签数据去训练一个预测系统(prediction systems)。其研究意义就在于,现有的标注总是少量的,而且标注工作是枯燥耗时的,而无标签数据又是海量的,如何利用有限的有标签数据结合海量无标签数据,进一步的提升现有模型的性能,是一个值得关注的课题。

  关于不同 SSL methods 的局限性,主要体现在:昂贵的计算代价! 比如,transductive SVM 和 Graph-based SSL 算法是 SSL 算法中比较出名的一个子类。这些方法的核心 idea 就是构建和平滑一个 graph,利用 点 和 边 去链接他们之间的关系。边权(edge weights)是根据节点之间的相似性得到的。基于标签传递(label propagation)的 Graph-based methods 利用已有的种子节点,通过 graph 去传递其标签信息。这些方法通常收敛的很快,并且他们的时间和空间复杂度和边的个数以及 label 的个数呈线性关系。

  但是,有些场景所涉及到的样本数量 和 label 个数真的是非常巨大,常规的基于 graph 的 SSL 方法无法处理。通常,单独的节点用稀疏的标签分布来进行初始化,但是随着迭代次数的增加,他们将变得 dense。Talukdar and Cohen 最近提出一种方法【1】试图克服 label scale problem ,通过一个  Count-Min Sketch 的方法来预测每一个 node 的 label 和他们的 score 。这使得内存复杂度变得非常低。但是,在实际世界的应用中, actual label k 的个数和每一个节点的连接实际上是 sparse 的,尽管总的 label space 是非常 huge 的,也就是说 K 是远小于 m 的。很明显,在实际应用中,考虑到label 的稀疏性可以显著的降低复杂度。

 

  Contributions

  1. 本文提出一种新的 graph propagation algorithm 进行 general purpose SSL 。

  2. 该算法可以处理有大量 label 的情况。其核心是,利用一种 approximation 有效的抓住了 标签分布的稀疏性,确保算法可以准确的传递标签。

  3. 提出 并行化处理版本的算法,可以很好的处理 large graph sizes. 

  4. 提出一种 有效的线性时间 构图策略,可以有效的结合多种信号,可以动态的从 sparse 到 dense representation。

  5. 特别的,graphs ,节点表示文本信息,仅仅利用 原始文本 和 顶尖的 DL 技术,可能会鲁邦的学习到和这些节点联系的 latent semantic embeddings 。

 

  用这种 embedding 的方式增强原始 graph,然后用 graph SSL 产生了明显的提升。

 

 

 


 

  Graph-based Semi-Supervised Learning

 

  Preliminary : 目标是产生一个 soft assignment of labels to each node in a graph G=(V,E,W)。

  

  Graph SSL Optimization

  通过最小化下列的目标函数来学习一个 label distribution $Y^^$ :   

  其中,N(v) 代表 节点 v 的近邻节点,U 是所有label 的先验分布。

  以上目标函数建模了:

  (1). the label distribution should be close to the gold label assignment for all the seeds ; 

  (2). the label distribution of a pair of neighbors should be similar measured of a pair of neighbors should be similar measured by their affinity score in the edge weight matrix ; 

  (3). the label distribution should be close to the prior U, which is a uniform distribution. 

 

  公式 1 的优化可以通过 Jacobi iterative algorithm,这个算法定义了第 (i+1) th iteration 的近似解,给定第 i 次迭代的 solution 为:

 

  其中, i 是迭代的索引,$U_l = \frac{1}{m}$ 是 label l 的均匀分布。

  我们将这种优化 公式 1 的方法暂且称为:EXPANDER 

  

  DIST-EXPANDER: Scaling To Large Data .

  为了处理 huge graph 的情况,我们提出了多机并行的算法版本。

 

 

  Streaming Algorithm for Scaling To Large Label Spaces

  Talukdar et al. 采用一种 Count-Min Sketch approximation 来存储每一个节点的整个标签分布,特别是对于大型 label 集合,因为 每一个节点的标签分布通常都很 sparse,仅仅 top ranking ones 是有用的。此外,the Count-Min Sketech 可能对于 top ranking labels 是有害的。

  与此对应,我们的工作并不是试图执行 sparsity,而是focus 在 用一个 streaming approximation 的方式在 SSL 的过程中,有效的存贮 和 更新 label distribution 。

 

  EXPANDER-S Methods: 

  我们提出一种 streaming sparsity approximation algorithm 来进行 SSL 达到了 constant space complexity,并且节省了大量的内存空间。

  这个方法可以有效的以一种 streaming fashion的方式,从近邻中处理信息;并且 记录了 每一个节点 top ranking labels 的 sparse set,然后预测剩下的估计。总的来说,这种方法类似于从数据流中寻找出常见的项目(frequent items), 这些 items 是 label;streams 是从紧邻得到的 messages。我们的 Pregel-based approach (算法1)提供了一个自然的框架来执行信息流的想法。

  算法 1 流程如下:

 

  Preliminary

  Manku et al 提出了一种算法在 data streams 中,来计算超过用户设定的频率次数,而其他人则利用这种算法去处理 NLP 中出现的大数据的问题。主题的想法是:

   a data stream containing N elements is split into multipule epochs with $\frac{1}{\epsilon}$ elements in each epoch. 

  所以,总共有 $\epsilon N$ 个 epochs,每一个这样的 epoch 有一个从 1 开始的 ID。该算法处理顺序的从每一个 epoch 处理 elements,然后保持一个三元组形式的列表 $ (e, f, \delta) $, e 是一个 item, f 是其 reported frequency, $\delta$ 是频率预测的最大误差。在当前的 epoch t,当一个项目 e 到来时,就增加了频率统计 f,如果该 item e 包含在 tuples 的列表当中。否则,就会创建一个新的 tuple (e, l, t-1) 。然后,在一个 epoch 后,该算法滤掉最大频率较小的那些 items。特别的,如果 epoch t 结束了,那么算法就会删掉所有满足条件($f + \delta <= t $)的 tuples。这就确保了 rare items 不会被保留到最后。

 

  Neighbor label distribution as weighted streams

  直观的讲,我们的设定中,每一个 item 是一个 label,每一个 neighbor 是一个 epoch。对于一个给定的 node v,Neighbors 将 label probability streams 传递给节点 v,每一个 Neighbor $v \in N(v)$ 是一个 epoch,其大小为:$|N(v)|$ 。我们保存了一个 tuple 的 list $l, f, \delta$ ,其中 l 是labels index, f 是 weighted probability value,$\delta$ 是加权概率估计的最大误差。对于当前的 Neighbor $u_t$ (也就是说,v 的 第 t 个近邻),节点 v 接受到了带有权重 $w_{v u_t}$ label distribution $Y_{u_t l}$。这个算法然后做两件事情:

  1. 如果 label l 当前已经在 tuple list 当中,那么就会增加 probability value f ,通过 add w * Y ; 

  2. 否则,就会创建一个新的 tuple list  

其中的 $\delta$ 作为 probability threshold.  这个值在一个 item frequency streams 很自然的是 1 ,我们的是一个概率权重。

此外,每一个 epoch t,Neighbor $u_t$ 通过 edge weight $w_{vu_t}$ 进行加权。然后,在我们收到第 t 个 Neighbor 之后,我们过滤掉最大概率小的那些 label 。如果 满足   ,我们就将 label l 删掉。

 

  Memory-bounded update: 

  给定 streaming sparsity algorithm,我们可以确保 没有 low weighted-probability labels 会保留下来 (在收到所有 Neighbors 的 messages)。然而,在许多案例中,我们需要将 保留的labels 的个数限制在 k 个,也就是说,基于其概率保留其 top-k 个。在这种情况下,对于一个节点 v 来说,其每一个 Neighbor u 仅仅包含一个 top-k labels。此外,我们利用设定的阈值 来计算保留的labels 的平均概率。然后我们采用之前的 streaming sparsity algorithm 算法。唯一的不同在于,当 label $l$ 不在当前的 tuple list 当中,则会新建一个新的 tuple ,形如:  。直观的来讲,并非选择一个全局的 threshold,我们基于之前看到的Neighbors 变换不同的阈值。在每一个 epoch,在从当前 (t-th neighbor) 接收到信号后,我们扫描当前的 tuple list。对于每一个 tuple $(l, f, \delta)$,如果 label $l$ 不在当前第 t 个Neighbor 的 top-k label list 当中我们通过 adding $\delta_{u_t}$ 增加其概率值 f 。最后,在接收到所有的 Neighbors 信息之后,我们 ranking 所有剩下的 tuples 基于 tuple $(l, f, \delta)$ 当中的值 $f + \delta$。这个值代表最大加权的概率预测。然后我们选择 top-k labels,然后只记录当前 node v 的概率。

 

接下来,作者给出了一个 lemma :

  Lemma 1 : 

  对于任意的 node $v \in V$,用 y 表示 un-normalization true label weights,y^ 是通过 streaming sparsity approximation version of EXPANDER algorithm 得到的估计。用 N 表示在 aggregation 之前,从 u 的所有 Neighbors 得到的 labels entries 的总数,$d = |N(u)|$ 是node u 的degree,k 是 y^ 当中保留的 entries 的固定个数,其中,$N <= k*d$,然后:

  (1). 对于所有的 labels $l$,所提出的稀疏估计误差被限制在:  

  (2). 该算法的每一个 node 的空间要求为:$O(k) = O(1)$ 。

 

 


  Graph Construction  

  Graph-based SSL algorithm 的主要成分就是 输入图 本身。图的构建对于后续输出的结果有很大的影响。基于 edge link information 和 vertex representation,有许多种方法来构建 graph:

  (a)Generic graphs 代表观测到的Neighborhood ,或者 link information connecting vertices ;

  (b)对于每一个 vertex 从 稀疏特征表示 构建的 graphs;

  (c)对于每一个 vertex 从dense representations 构建的 graphs;

  (d)用上述混合的方式构建的 augmented graphs 

 

  图 1 展示了各种图结构的示意图。我们集中在 (b)(c)and(d)上,因为其在NLP 上有更加广泛的应用。

  Sparse instance-feature graphs (b)通常被用作大部分 SSL 任务的输入。接下来,我们提出一种方法能够自动的构建 (c)这种类型的图,并且基于此,构建出增强的 graph (d)可以抓住 sparse 和 dense per-vertex 的特性。

  

  Graph Augmentation with Dense Semantic Representation

  本文提出一种更加 robust 的策略来构建 graph augmentation ,这个遵循两个步骤:

  First,we learn a dense vector representation that captures the underlying semantics associated with each (text) node.

  (我们学习一个 dense vector 表达,能够抓住每一个节点的潜在语义)

  我们借助最近的 Deep Learning 的方法有效的学习单词 和 段落语义 在一个 dense 的低维空间。

 

  我们采用 Mikolov 等人的工作 来从大型的 dataset 中学习到 words (or phrase)连续的特征表示。这种方法将 文本资料库 作为输入,学习到一个向量表示来表示每一个单词或者短语。我们 continuous skip-gam model 结合 hierarchical softmax layer,句子当中的每一个单词被用作线性分类器的输入,试图学习到 同一句话当中另一个单词的最大分类。关于这个训练过程和网络结构,可以参考【2】。

  【2】 Efficient estimation of word representations in vector space.  ICLR 2013

  此外,这些 models 可以有效的并行处理,利用分布式训练框架可以处理大型的 datasets 。

 

  Next,for each node $v = w_1w_2 ... w_n$,我们从 node text 当中得到的 words 中,得到对应的 embedding $v_{emb}$,并且查询到 pre-trained vectors :

  

  基于此,我们利用 embedding vectors 的 nodes pairs 计算相似性函数,其中 $sim_{emb} (u, v) = u_{emb} * v_{emb}$ 。我们过滤掉 node pairs (with low similarity values),对于剩下的 pairs,在原始的 graph G 中添加一个 edge 。

 

  但是不幸的是,上述策略需要 $O(|V|^2)$ 相似性计算代价,这在实际应用当中是不可能的。为了处理这个挑战,我们借助 locallity sensitive hashing (LSH),一种随机的映射方法 用来有效的估计 nearest Neighbor lookups ,当 data size 和 dimensionality is large 。我们利用节点 embedding vectors $v_{emb}$ ,并且执行了 LSH 有效的降低了不需要的 pairwise 的计算,将会产生低相似性的值。 

 

  

  

   

 

  

 

    

  

 

 

 

相关文章
|
2月前
|
自然语言处理
【论文代码】① STIOCS: Active learning-based semi-supervised training framework for IOC extraction
【论文代码】① STIOCS: Active learning-based semi-supervised training framework for IOC extraction
22 0
|
8月前
|
机器学习/深度学习 自然语言处理 算法
【论文精读】COLING 2022 -Event Detection with Dual Relational Graph Attention Networks
图神经网络(Scarselli et al, 2009)已被广泛用于编码事件检测的依赖树,因为它们可以基于信息聚合方案有效地捕获相关信息(Cao et al, 2021)。
80 0
|
8月前
|
机器学习/深度学习 自然语言处理
【论文精读】COLING 2022 - DESED: Dialogue-based Explanation for Sentence-level Event Detection
最近许多句子级事件检测的工作都集中在丰富句子语义上,例如通过多任务或基于提示的学习。尽管效果非常好,但这些方法通常依赖于标签广泛的人工标注
55 0
|
机器学习/深度学习 移动开发 编解码
【论文阅读】A Three-Stage Self-Training Framework for Semi-Supervised Semantic Segmentation
【论文阅读】A Three-Stage Self-Training Framework for Semi-Supervised Semantic Segmentation
156 0
【论文阅读】A Three-Stage Self-Training Framework for Semi-Supervised Semantic Segmentation
|
机器学习/深度学习 存储 分布式计算
【深度学习系列】(二)--An overview of gradient descent optimization algorithms
【深度学习系列】(二)--An overview of gradient descent optimization algorithms
85 0
【深度学习系列】(二)--An overview of gradient descent optimization algorithms
|
机器学习/深度学习
【论文阅读】(2019)SimGNN:A Neural Network Approach to Fast Graph Similarity Computation
- 图形相似性搜索是最重要的基于图形的应用程序之一,例如查找与查询化合物最相似的化合物。 - 图相似性距离计算,如图编辑距离(GED)和最大公共子图(MCS),是图相似性搜索和许多其他应用程序的核心操作,但实际计算成本很高。 - 受神经网络方法最近成功应用于若干图形应用(如节点或图形分类)的启发,我们提出了一种新的基于神经网络的方法来解决这一经典但具有挑战性的图形问题,**旨在减轻计算负担,同时保持良好的性能**。 - 提出的**方法称为SimGNN**,它结合了两种策略。 - 首先,我们**设计了一个可学习的嵌入函数**,将每个图映射到一个嵌入向量中,从而提供图的全局摘要。**提出了一种新的
176 0
【论文阅读】(2019)SimGNN:A Neural Network Approach to Fast Graph Similarity Computation
|
机器学习/深度学习 算法 数据挖掘
【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
|
机器学习/深度学习 算法 PyTorch
目标检测的Tricks | 【Trick12】分布式训练(Multi-GPU)与DistributedParallel使用相关总结
目标检测的Tricks | 【Trick12】分布式训练(Multi-GPU)与DistributedParallel使用相关总结
254 0
目标检测的Tricks | 【Trick12】分布式训练(Multi-GPU)与DistributedParallel使用相关总结
|
自然语言处理 数据挖掘 知识图谱
Re31:读论文 metapath2vec: Scalable Representation Learning for Heterogeneous Networks
Re31:读论文 metapath2vec: Scalable Representation Learning for Heterogeneous Networks
Re31:读论文 metapath2vec: Scalable Representation Learning for Heterogeneous Networks