【图表示学习】word2vec与DeepWalk

2023-10-28 20:40

本文主要是介绍【图表示学习】word2vec与DeepWalk,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、word2vec

在自然语言处理中,词向量是一种常见的词分布式表示。词表中的每个单词均由一个维度固定的连续向量表示。word2vec是2013年Google公布的训练词向量的工具,其包含了两个模型,分别是:CBOW和SkipGram。这里仅简单介绍SkipGram模型,更加详细的原理介绍见文章【自然语言处理】【Word2Vec(二)】超详细的原理推导(包含负采样和层次softmax)。

1. SkipGram模型结构

如果词表为V,那么SkipGram就是某个单词的one-hot编码,其是一个维度为|V|的向量。其结构如图所示
在这里插入图片描述
该模型可以看做是不带激活函数的双层全连接神经网络。更正式的来说,输入向量 x ∈ R ∣ V ∣ x\in\mathbb{R}^{|V|} xRV,输入层权重为 W ∈ R V × N W\in\mathbb{R}^{V\times N} WRV×N,输出层权重为 W ′ ∈ R N × V W^{'}\in\mathbb{R}^{N\times V} WRN×V。其前向传播过程中,输入层到隐藏层为
h = W T x ∈ R N h=W^Tx\in\mathbb{R}^N h=WTxRN
隐藏层到输出层为
u = W ′ T h ∈ R V u=W^{'T}h\in\mathbb{R}^V u=WThRV
使用softmax层转换为概率分布
y = softmax ( u ) ∈ R V y=\textbf{softmax}(u)\in\mathbb{R}^V y=softmax(u)RV

2. SkipGram主要思想

SkipGram的主要思想是使用输入词来预测上下文。举例来说,给定一个句子"Named entity recognition plays an important role"。那么在一次训练中输入为单词"recognition",需要预测的是其上下文单词"Named"、“entity”、“plays”、“an”。SkipGram的最终目标是获得输入层到隐藏层的权重矩阵 W W W,其大小为 V × N V\times N V×N。由于 W W W是由V个N维向量组成,每个向量就对应词表中的一个词。所以 W W W就是词表V中单词的词向量集合。

3. SkipGram训练过程

上面说“使用输入词来预测上下文”,但是模型结构决定其不能同时预测多个上下文。因此在实际的训练过程当中,依次使用输入词预测上下文单词。例如,使用“recogniton”预测“Named”,然后使用“recogniton”预测“entity”,再使用“recogniton”预测“plays”,最后使用“recogniton”预测“an”。常见的SkipGram的结构图如下图,但其实该图是SkipGram结构图和训练过程的结合。
在这里插入图片描述

4. 层次Softmax

通常来说,词表的大小|V|会十分的巨大,在计算softmax时需要进行幂运算,因此计算量十分巨大。层次softmax就是为了解决这个问题,将原始的时间复杂度 O ( ∣ V ∣ ) O(|V|) O(V)降低至 O ( l o g ∣ V ∣ ) O(log|V|) O(logV)


原始softmax可以将输入转换为概率分布,而层次softmax则是将|V|个单词的概率值分配到二叉树的叶节点上。其结构如下图
在这里插入图片描述
词表中的|V|个单词,分别是 w 1 , w 2 , … , w V w_1,w_2,\dots,w_V w1,w2,,wV。该树中的每个非叶节点都对应一个线性二分类器(也就是逻辑回归LR),也就是说每个叶节点都有一个需要进行学习的参数。那么,这个树是如何替代原始softmax来表示某个词的概率呢?由于每个非叶节点的分类器都会输出一个概率值,某个词的概率就是由根节点到对应词路径上的所有概率乘积来表示的。举例来说,前向传播过程中预测单词 w 2 w_2 w2的概率,则是由节点 n ( w 2 , 1 ) n(w_2,1) n(w2,1)预测为左的概率 P ( n ( w 2 , 1 ) , l e f t ) P(n(w_2,1),left) P(n(w2,1),left)乘以节点 n ( w 2 , 2 ) n(w_2,2) n(w2,2)预测为左的概率 P ( n ( w 2 , 2 ) , l e f t ) P(n(w_2,2),left) P(n(w2,2),left),再乘以节点 n ( w 2 , 3 ) n(w_2,3) n(w2,3)预测为右是概率 P ( n ( w 2 , 3 ) , r i g h t ) P(n(w_2,3),right) P(n(w2,3),right)来决定的,即 w 2 w_2 w2为目标输出词 w o w_o wo的概率为
P ( w 2 = w o ∣ w i ) = P ( n ( w 2 , 1 ) , l e f t ) × P ( n ( w 2 , 2 ) , l e f t ) × P ( n ( w 2 , 3 ) , r i g h t ) P(w_2=w_o|w_i)=P(n(w_2,1),left)\times P(n(w_2,2),left)\times P(n(w_2,3),right) P(w2=wowi)=P(n(w2,1),left)×P(n(w2,2),left)×P(n(w2,3),right)
之后只要使用最大似然估计来更新所有参数即可。这里再做几点说明

  1. 原始softmax的时间复杂度为O(|V|),而层次softmax每次前向传播时仅仅需要计算树的高度log|V|个值。因此,其时间复杂度为log|V|.
  2. 为了使频繁出现的单词,尽量少的更新,从而进一步降低时间复杂度。可以统计各个词出现的频数,然后构造Huffman树,使得从根节点到点频繁出现单词的路径尽量短。
  3. 在Huffman树中,|V|个单词有|V|-1个非叶节点,那么也就会导致模型多出来|V|-1个参数需要更新。

二、DeepWalk

DeepWalk是一种图嵌入方法,其可以将图中的顶点转换为固定维度的向量,这个向量可以捕获到该顶点的结构信息,并用于后续的顶点分类、聚类等问题。

1. 使用随机游走(Random Walk)获取训练数据

G = ( V , E ) G=(V,E) G=(V,E),其中 V V V是顶点集合, E E E是边的集合。随机游走:从图中随机选择一个顶点作为开始,之后再从该顶点的邻居节点随机的选择一个作为下一个节点,依次类推可以得到一个以该节点为起始的顶点序列。那么将这些顶点序列看做是一种语料,其包含了该顶点的结构信息。

2. 使用SkipGram学习图中顶点的表示

将通过随机游走获得的顶点序列看做是自然语言中的语料,并使用SKipGram对其进行序列就能得到图中顶点的向量表示。

3.并行

由随机游走产生的顶点序列具有长尾效应。因此,当使用SkipGram训练,模型反向传播时更新会比较稀疏(即某些顶点的出现频率不会过于集中)。所以,使用异步SGD也是可以的。而且,实验也证明异步SGD对最终的效果没有显著的影响。

这篇关于【图表示学习】word2vec与DeepWalk的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295807

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件