欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

图神经网络学习一(浅谈embedding)

发布时间:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 图神经网络学习一(浅谈embedding) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

最近在做图神经网络(GNN)有关的项目,这个图就是数据结构里面的那个图。在学习的过程中接触到了embedding。由于我以前做的比较多的都是卷积神经网络,而embedding常用于自然语言处理(NLP),因此卡在了这个地方,并花了些时间去了解什么是embedding

从词说起
假如我们有6个词:男人,女人,苹果,西瓜,肠粉,螺蛳粉。
如果用one-hot编码来表示,就是六维向量。
男人:(1,0,0,0,0,0)
女人:(0,1,0,0,0,0)

螺蛳粉:(0,0,0,0,0,1)
用one-hot表示的话,我们就无法得知这些词之间的关联性,只能得到他们各自的位置。而且每个向量都是6维这么高,当词多的时候,就维度太高了。我们能不能想一个降低维度而且又让词之间有关联性的方法呢?
我们先看下面的表格

男人    女人    苹果    西瓜    肠粉    螺蛳粉
性别    0.99    -0.99    0    0    0    0
甜度    -0.2    0.3    0.7    0.78    0.3    0.1
咸度    0.2    0.1    -0.1    0.2    0.7    0.9
我们可以发现,每一列都有3行,男人的列向量为(0.99,-0.2,0.2),这是个三维向量,同时每列的列向量之间的数值都有联系。这就是一个embedding了!可以粗略地理解为,embedding就是一个类的特征。
那么embedding怎样获得呢?

embedding的获取
方法一:用迁移学习获取别人预训练好的embedding
方法二:自己训练一个embedding
这里将一个最简单的构造embedding算法,skip-gram算法。
假定我们的神经网络是输入一个词,输出一个反面词,比如,输入男人,输出女人,那么我们就构造一个含有embedding层的神经网络。
可以把embedding想象成是神经网络的一层,里面的参数经过不断的前向传播反向传播迭代更新。损失函数可以选用交叉熵函数。

训练完后,我们自己的embeding就构造好啦!
 

总结

以上是生活随笔为你收集整理的图神经网络学习一(浅谈embedding)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。