1.NLP(一)Word Embeding词嵌入
2.skipgram cbow哪个好
3.Word2vec详细整理(2)—优化方法和常见问题
4.图神经网络学习笔记1Graph embedding
5.读论文——graph2vec:图的源码分布式表示学习
6.WMD——一种文档匹配成本的衡量方式
NLP(一)Word Embeding词嵌入
语言数字化的过程被称为Word Embeding,即“词嵌入”,源码其转化后的源码向量矩阵称为词向量,实际上就是源码词的数学表示。在过去多年中,源码NLP中最直观且常用的源码STLvector 源码词向量方法是One-hot Representation。随着Google发布Word2Vec,源码Distributed Representation逐渐流行起来。源码本文将介绍一些常用的源码词嵌入技术,包括它们的源码优缺点和适用场景。
本文主要内容概览:
1. Classical Representation: One-hot Encoding
独热编码是源码NLP领域最简单的一种单词表示法。One-hot Encoding就是源码一个单词用长度为V的向量表示,其中只有一个位置为1,源码其余位置为0,源码V为语料中词库的源码大小。
One-hot Encoding有什么问题呢?假如我想用余弦相似度计算上图中“机器学习”与“深度学习”的相似度,或者计算“贪心科技”与“深度学习”的相似度,我们会发现相似度的值都是相同的。也就是说,单词通过独热编码的方式是不能表示单词间语义的相似度。且具有稀疏性,向量中只有一个位置是1,是有用的,其他位置全是0,十分浪费空间。所以科学家进行改进,产生了Distributed Representation。
2. From One-hot to Distributed Representation
Distributed Representation中的distributed没有统计上的“分布”含义,而是“分散”、“分配”的意思。代表,讲一段文本中,具有相似含义的word分散到空间中相邻的区域,不相似的分散到相距较远的区域。以此来解决onehot非常的稀疏、不能表示单词间语义的相似度等缺点。
经过Distributed Representation得到的矩阵就叫词向量(word vector),如上图右边所示。词向量需要通过词向量模型学习来得到。我们需要一批语料当作模型的输入,然后词向量模型可以选择Word2Vec模型、超级趋势指标源码Bert模型或者其它模型,最后就可以得到词的分布式表示向量。
3. Static Word Embedding
Static Word Embedding和Contextualized(Dynamic) Word Embedding的区别在于,Static Word Embedding训练后,一个Word只对应一个词向量,而Contextualized一个Word对应多个。Contextualized是NLP最近几年发展出来的新技术,在解决联系上下文、一词多义等方面具有更好的效果。
3.1 Word2Vec
比较经典的词向量模型是Word2Vec,主要包含两个模型:CBOW和SkipGram模型。CBOW是根据上下文来预测中心单词;SkipGram通过中心词来预测上下文的单词。
在SkipGram预测的时候,输出的是预测目标词的概率,也就是说我每一次预测都要基于全部的数据集进行计算,这无疑会带来很大的时间开销。因此,Word2Vec提出两种加快训练速度的方式,一种是Hierarchical softmax,另一种是Negative Sampling。
3.2 Word Embedding by Matrix Factorization
矩阵分解也是可以学习词向量的。假如我们有三个句子组成的语料库:I enjoy flying. I like NLP. I like deep learning. 我们可以统计出单词的共现矩阵(Co-occurrence Matrix)如下。将共现矩阵行(列)作为词向量。例如:假设统计窗口大小为2,“I like”出现在第2、3句话中,一共出现2次,所以“I like”=2。同理,“like I”也是2次。将共现矩阵行(列)作为词向量表示后,可以知道“like”、“enjoy”都是在“I”附近且统计数目大约相等,因此它们意思相近。
co-occurrence matrix的方法也是经典的LSA(Latent Semantic Analysis)所采用的,很多很多时候我们也用LSA来指代MF
3.3 Glove
局部的方法和全局的方法都有自己的优缺点。全局的方法可以从整个语料的角度更宏观的审视词的特点;局部的方法是基于局部语料库训练的,其特征提取是基于滑窗的,因此局部的方法可以进行在线学习。基于局部方法论和全局方法论的比分源码授权700优缺点,科学家提出了Glove算法。
Glove算法很好地把MF这种全局的方法和SkipGram这种局部的方法整合在了一起。Glove的计算效率很高、效果也很好。
Word2Vec vs Glove vs LSA
(1)Glove vs LSA
(1)Glove vs Word2Vec
4. Contextualized(Dynamic) Word Embedding
上面讲了一些静态的词向量,就是一个单词只能学出一个词向量。在很多的NLP工作里面,一个单词可以表示成很多种意思(即一词多义),如何处理一词多义、考虑单词在上下文中的意思?这就需要动态词向量,也就是一个单词可以学出多个词向量。这个问题是近四年来NLP领域最火热的一个研究方向。
4.1 LSTM-based Model
4.1.1 CoVe
下图a)是一个经典的Seq2Seq模型,我们以机器翻译任务训练模型的Encoder和Decoder部分。我们可以通过这种方式学习出带有上下文的词向量。那么我们为什么可以通过这种方式学习到带有上下文的词向量呢?
从下图b)中我们可以知道,由于Encoder和Decoder都是BI-LSTM模型,模型本身含有语句上下文的信息。因此,用静态词向量输入Encoder编码器就可以得到含有上下文的词向量。我们把含有上下文的词向量和静态的词向量拼接在一起,就可以解决某些特定的任务。
4.1.2 ELMo
CoVe使用了机器翻译任务的Loss训练模型,而ELMo训练目标就是语言模型,根据上下文预测下一个单词。通过语言模型从左到右训练的方式,我们也叫做Autoregressive Model。
要从ELMo得到一个单词的词向量,我们可以把静态词向量,拼接第一层隐层向量,再拼接第二层隐层向量,最后再拼接第三层隐层向量,就得到了这个单词的完整的含有上下文的单词向量。比如,单词“今天”的词向量为:
由于最近较忙,先写这么多。后面的内容我会尽快补上。欢迎大家关注我,与我一起学习,一起快乐AI~
skipgram cbow哪个好
Skip-gram模型相较于CBOW模型更好。华为 底层驱动源码1. Skip-gram模型的特点:Skip-gram模型是Word2Vec中的两种模型架构之一。它主要关注当前词与其上下文词的关系,通过预测当前词的上下文中出现的词来生成词向量。这种模型能够有效地捕捉到词与上下文之间的关联性,因此对于语言建模和文本生成任务非常有效。
2. CBOW模型的特点:CBOW是Word2Vec中的另一种模型架构。它基于词的上下文预测当前词。CBOW通过综合考虑上下文词的词向量来预测目标词的生成概率,但这种方式相对于Skip-gram模型在捕捉词与上下文关系的精细度上稍逊一筹。
3. Skip-gram的优势:Skip-gram模型的优势在于它能够更有效地学习到词与词之间的关系,尤其是在处理大规模语料库时,它能够捕捉到更丰富的语义信息。此外,Skip-gram在训练过程中由于采用了随机选择上下文词的策略,使得其能够更充分地利用语料库中的信息,从而得到更准确的词向量表示。
综上所述,Skip-gram模型相较于CBOW模型能够更好地捕捉词与上下文之间的关系,对于语言建模和文本生成任务更为有效。因此,从效果和应用的角度来看,Skip-gram模型是更优的选择。
Word2vec详细整理(2)—优化方法和常见问题
在探讨Word2vec优化方法和常见问题之前,让我们先回顾一下基础模型。在原始形式的二元模型、CBOW(连续词袋模型)和SKIPGRAM模型中,每个单词都对应输入向量和输出向量。输入向量用于模型的输入,而输出向量则用于计算单词概率。 接下来,我们将重点介绍两种优化方法:分层softmax和负采样。分层softmax
分层softmax,也称为霍夫曼树softmax,是一种更高效的方式计算输出概率,而非直接使用标准softmax函数。它利用霍夫曼树结构,通过二分类过程沿着树路径计算概率,从而降低计算复杂度。这种方法在词汇表中频率较低的词上效率较低,但对大多数常见词而言,游戏支付系统源码效率得到显著提高。负采样
负采样技术在每次循环中仅更新输出层的一部分权重,即正样本和选定的负样本。这减少了权重更新的计算量,提高了训练速度,尤其在大词汇表中效果显著。常见问题解答
为什么要使用负采样或分层softmax优化?在Word2vec中,从隐层到输出层的权重更新涉及大量计算,尤其是标准softmax函数的使用。负采样和分层softmax通过减少需要计算的概率数量,显著降低了计算复杂度,从而提高了训练效率。
为什么使用softmax?使用softmax函数有助于模型输出概率分布,每个输出值在0到1之间,且总和为1。这使得模型能够有效拟合数据,优化交叉熵损失函数。
隐层到输出层的权重矩阵作用是什么?这个权重矩阵将输入词向量映射到词汇表的维度,使得能够通过全连接层计算出每个词的概率。在训练过程中,通过梯度下降最小化交叉熵损失,优化这些权重以拟合样本数据。
W2V的训练任务是什么?CBOW的主要任务是根据上下文预测中间词,而SKIPGRAM则相反,它根据中间词预测上下文。词向量的训练是这些任务的副产品,用于表示词汇的语义和句法特性。
图神经网络学习笔记1Graph embedding
Graph Embedding 当使用One-hot编码表示图上的每个节点时,容易出现节点数较多时向量长度过长以及丢失节点在图上信息的问题。 为简化节点特征长度并保留图上信息,采用Graph Embedding,即在图上计算每个节点的嵌入。 本文介绍5种主要Graph Embedding方法:Deep Walk、LINE、SDNE、Node2Vec和Struc2Vec。 Deep Walk通过随机游走生成节点序列,使用word2vec学习每个节点的嵌入,适用于无向图。 LINE考虑节点的一阶和二阶相似性,分别优化,适用于大规模图,能捕获节点的局部结构信息。 Node2Vec结合DFS和BFS采样策略,通过随机游走生成序列,使用SkipGram学习嵌入,适用于大规模图。 Struc2Vec通过构建层次结构并优化相似性,学习节点嵌入,适用于节点分类任务,结构标识比邻居标识更重要。 SDNE使用多层非线性结构自动编码器优化一阶和二阶相似度,学习节点嵌入,对稀疏网络具有鲁棒性。 总结各方法特点如下:Deep Walk:随机游走生成序列,SkipGram学习嵌入。
Node2Vec:结合DFS和BFS采样,随机游走生成序列,SkipGram学习嵌入。
LINE:分别优化一阶和二阶相似性,学习嵌入。
Struc2Vec:构建层次结构优化相似性,学习嵌入。
SDNE:多层非线性结构自动编码器优化相似度,学习嵌入。
代码实现和实验可在GitHub项目中找到。读论文——graph2vec:图的分布式表示学习
文章《graph2vec: Learning Distributed Representations of Graphs》于年在MLG th International Workshop上发布,探讨了如何有效地表示图谱中的子结构,为图的分类与聚类等知识图谱分析提供支撑。传统的表示方法在面对大型数据集时,往往产生高维、稀疏且不平滑的表示,这限制了其应用。因此,文章引入了Graph Kernel方法,通过将机器学习的核方法扩展至图结构数据,实现图与图之间的相似度计算。相较于Graph Embedding方法,Graph Kernel保留了结构信息,同时具备高效计算的优点。
然而,Graph Kernel方法在应用大型数据集时面临挑战,包括产生高维、稀疏、不平滑表示等问题。为解决这些问题,作者提出了将word2vec中的Skipgram模型引入图谱领域,创新性地提出graph2vec方法。Skipgram的核心思想是相似上下文中的单词应具有相似的向量表示,这与图谱中节点周围的有根子图在相似上下文中的作用相似。
文中将图谱视为一个“文档”,并将图谱中的所有节点与周围有根子图视为“词”,构建了一种基于有根子图的分布式表示学习方法。有根子图的选择基于以下两个理由:首先,它是一种无监督算法,与doc2vec的思路相似;其次,它有效地避免了高维、稀疏、不平滑的表示问题。
文章详细介绍了graph2vec算法的主要流程,包括对有根子图的提取和负采样的应用。提取有根子图时,文章提供了一个具体的函数GetWLSubgraph,用于从给定图中获取有根子图。为了提高训练效率,文章采用了负采样的方法,引入不属于目标图的子图集,以减少学习过程的复杂度。在优化方面,文章使用随机梯度下降算法和方向传播算法来估算导数,并根据经验调整学习率。
总的来说,graph2vec方法通过引入Skipgram模型并结合无监督学习策略,提供了一种有效表示图谱中节点和子图的新途径,为图结构数据分析提供了更高效、准确的解决方案。
WMD——一种文档匹配成本的衡量方式
在深入探讨WMD之前,回顾一下常用的词汇和文本表达方式。
TFIDF表达方式通过词汇在不同文本中的频数反映词汇对于文本的重要性。
One-hot Embedding是一种传统的词汇表达方法,通过标记特定长度的全零向量的特定位置为1来表达词汇。然而,这种方法存在缺陷:仅能表达已知词汇,不能表达位置信息;向量互为正交关系,维度过高,无法表达词汇相似度;离散向量,计算低效。
Word2Vec Embedding(词嵌w2v)是一种常见的词汇表达方法,其中CBOW和Skipgram两种形式基于上下文表达词汇。此方法拥有预测能力,且将词汇向量降低到特定维度,便于计算。语义关系得以保留,例如“柏林 – 德国 + 法国 = 巴黎”,证明了语义可以通过词向量的欧式距离表达。
词嵌w2v可以表达同文档下的词汇语义,但效果受限于训练文本,不同文本上表现差异明显。因此,提出了WMD,一种基于词嵌w2v衡量文档匹配成本的方式。
WMD适用于文档检索、新闻分类、聚类、歌曲识别、多语言文档匹配等任务。
在BOW模型中,同义句的文档距离指的是文档中所有词匹配到另一文档所需成本的最小累积。WMD问题转换为一个Earth Mover's Distance(推土距离)传输问题的特例。
EMD问题描述移动两个概率分布所需的成本,目标是最小化成本。在文中,此问题被转化为优化WMD。
作者使用nBOW模型训练词嵌矩阵,引入词游成本和文档距离概念,定义流矩阵,最终形成衡量文档距离的基础。
为优化计算,文中提出了词中心距离(WCD)和松弛词移距离(RWMD)方法,分别考虑计算速度和精度。
实验结果显示WMD在大多数情况下取得更好的效果,优化策略如Prefetch and Prune能显著降低训练时间。
WMD的性能依赖大量良好的词嵌训练,无超参数,可解释性强,包含词嵌内容。
尽管WMD在性能上表现良好,但仍存在未被训练词汇的适用性问题、依赖于训练语料库、未能解决词汇语序问题。未来研究可关注WMD的可解释性、同文本不同段落的同义词匹配。
参考链接:原论文、EMD问题解释、山新们深入理解WMD距离文章。
论文精读DeepWalk:社交表示的在线学习
DeepWalk是一种社交网络表示学习的方法,旨在从无向图的随机游走序列中挖掘出潜在的社交表示。这一过程将网络结构转化成低维向量空间,使得网络中的节点在该空间中的邻近度反映了其在原图中的相似程度。
核心理念基于随机游走和SkipGram模型。它首先生成一系列随机游走序列,随后利用SkipGram算法在这些序列上构建潜在社交表示。随机游走确保覆盖整个图的节点间关系,而SkipGram模型通过预测游走序列中相邻的节点,形成对节点间相似度的估计。
DeepWalk在设计时考虑了时间复杂度问题。尽管随机游走可遍历大图,但估计条件概率变得复杂。为克服这一瓶颈,DeepWalk采用了SkipGram模型,它以高效的方式构建节点的潜在表示,而无需直接计算条件概率。
DeepWalk算法的变体丰富多样,每种变体旨在通过调整策略以适应不同场景的需求。常见变体包括参数调整,以优化游走的长度和目标节点的上下文范围等。
实验设计通常包括设置基线方法,以衡量DeepWalk算法的性能。通过将DeepWalk应用于多标签分类任务,评估其在图表示学习领域中的表现。
在多标签分类任务中,DeepWalk展示出显著的优越性。基于实验结果,我们可以得出DeepWalk能够有效学习图的结构信息,提升图数据在机器学习任务中的使用效率。
针对边较少的节点问题,DeepWalk可能存在学习偏差。这可通过增加游走序列的长度,引入启发式策略来选择更丰富的上下文,或者设计特别的初始化方法以鼓励学习更为普遍的表示,来改善。
DeepWalk在图神经网络领域内与图卷积网络(GCN)等方法共享很多共同目标。然而,它们在具体方法论和应用场景上有所不同。例如,DeepWalk侧重于随机游走序列的生成和学习,而GCN则通过图卷积操作直接处理图结构。
若深入研究,还需关注DeepWalk在未来发展的挑战和潜在应用方向。其中包括:提高算法的计算效率、扩展支持复杂度更高的图结构和动态更新表示等问题。同时,DeepWalk的潜力在诸如社区发现、推荐系统、网络异常检测等场景中有待进一步挖掘。
实现上,了解DeepWalk代码的基础知识,通常能从开源库中获得,如DeepWalk库或其在TensorFlow和PyTorch等框架中的实现版本。这些资源提供了从头开始构建或直接使用现成实现的方法。