imtoken钱包下载ios版|gae
Graph Neural Network(GAE,GVAE,ARGA)-CSDN博客
>Graph Neural Network(GAE,GVAE,ARGA)-CSDN博客
Graph Neural Network(GAE,GVAE,ARGA)
最新推荐文章于 2023-05-06 17:02:51 发布
上杉翔二
最新推荐文章于 2023-05-06 17:02:51 发布
阅读量1.1w
收藏
101
点赞数
19
分类专栏:
深度学习
文章标签:
链接预测
图神经网络
GAE
GVAE
ARGA
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39388410/article/details/107895198
版权
深度学习
专栏收录该内容
109 篇文章
152 订阅
订阅专栏
前面几次的整理GCN,GAT,GraphSAGE等等都适合在半监督,监督的场景下,而有没有图方法可以使用于在无监督的场景下使用呢?去发现节点的内在结果,挖掘隐藏关系如链接预测等等任务。
答案是:自编码器(AE) /变分自编码器(VAE)+Graph Graph Auto-Encoders (GAE) GAE的目的是通过encoder-decoder 的结构去获取到图中节点的 embedding,然后再去做具体的下游任务比如链接预测。
首先回顾一下自编码器,它是利用神经网络将数据逐层降维压缩,相当于让每层神经网络之间的激活函数就起到了将"线性"转化为"非线性"的作用,然后尝试还原输入即让输出==输出以捕捉到数据的隐含信息。整体的结构分编码器Decoder和解码器Encoder,编码器负责压缩,解码器负责还原。同样的,想要在Graph上也完成这种操作,也是使用encoder-decoder 的结构,具体操作如上图:
Encoder。直接使用 GCN 作为 encoder,来得到节点的 latent representations(即关于每个节点的 embedding)
Z
=
G
C
N
(
A
)
Z=GCN(A)
Z=GCN(A) 其中A是邻接矩阵,Z代表的就是所有节点的表示,如果接下来要做下游任务也是直接使用这个表示就可以。 Decoder。这里和原来的AE不一样,不是对称结构的网络,而是直接采用内积 inner-product 作为 decoder 来重构(reconstruct)原始的Graph
A
′
=
σ
(
Z
T
Z
)
A'=\sigma (Z^TZ)
A′=σ(ZTZ)这里的A’就是重构(reconstruct)出来的邻接矩阵,可以被理解为两个节点的独立事件概率相乘。 最后的目标是使重构出的邻接矩阵与原始的邻接矩阵尽可能的相似,因为邻接矩阵决定了图的结构。所以直接采用交叉熵作为损失函数衡量A和A’就可以了
L
=
−
1
N
∑
y
l
o
g
y
′
+
(
1
−
y
)
l
o
g
(
1
−
y
′
)
L=-\frac{1}{N}\sum ylogy'+(1-y)log(1-y')
L=−N1∑ylogy′+(1−y)log(1−y′) 其中y代表邻接矩阵 A 中某个元素的值(0 或 1),y’ 代表重构的邻接矩阵A’中相应元素的值(概率值)。
pytorch_geomatric的实现:
class EncoderGCN(nn.Module): #编码器
def __init__(self, n_total_features, n_latent, p_drop=0.):
super(EncoderGCN, self).__init__()
self.n_total_features = n_total_features
self.conv1 = GCNConv(self.n_total_features, 11)
self.act1=nn.Sequential(nn.ReLU(),
nn.Dropout(p_drop))
self.conv2 = GCNConv(11, 11)
self.act2 = nn.Sequential(nn.ReLU(),
nn.Dropout(p_drop))
self.conv3 = GCNConv(11, n_latent)
def forward(self, data): #实践中一般采取多层的GCN来编码
x, edge_index = data.x, data.edge_index
x = self.act1(self.conv1(x, edge_index))
x = self.act2(self.conv2(x, edge_index))
x = self.conv3(x, edge_index) #经过三层GCN后得到节点的表示
return x
class DecoderGCN(nn.Module): #解码器
def __init__(self):
super(DecoderGCN, self).__init__()
def forward(self, z):
A = torch.mm(z, torch.t(z)) #直接算点积
A = torch.sigmoid(A) #映射成分数
return A
完整逐行的中文源码阅读笔记可以参考:https://github.com/nakaizura/Source-Code-Notebook/tree/master/GAE
GAE和AE的区别
GAE在encoder过程中使用了 n∗n 矩阵的卷积核GAE在decoder部分实际上没有解码,直接计算内积算邻接矩阵的相似度,然后用loss来约束
GVAE 上面的 GAE 用于重建(数据压缩和还原)效果还不错,但是如果用于直接的图生成就不够了,所以同样的AE不行,那VAE来试一下。VGAE 的思想和变分自编码器(VAE)很像,博主已经仔细推导过就不再赘述,大致的想法是:利用隐变量(latent variables),让模型学习出一些分布(distribution),再从这些分布中采样得到z,通过这样的z就会有多样化的结果,而不仅仅是还原,重建。
如上图,其与GAE的不同只在Encoder的部分,后面的Decoder还是用内积基本是一样的,对于编码器即在GAE中是直接使用GCN作为编码器,它是一个确定的函数所以只能得到确定的结果。而在VGAE中,不再使用这样的函数得到Z,而是从一个多维的高斯分布中采样得到,即用GCN确定分布,再从分布中采样Z。
Encoder。而这样的分布,使用两个GCN来分别得到高斯分布的均值和方差就行了,即VGAE 利用GCN来分别计算均值和方差:
u
=
G
C
N
u
(
X
,
A
)
u=GCN_u(X,A)
u=GCNu(X,A)
σ
=
G
C
N
σ
(
X
,
A
)
\sigma=GCN_{\sigma}(X,A)
σ=GCNσ(X,A) 再将使其与 noise(随机生成的变量)相乘,相加,便得到高斯分布上采样到的一个Z
z
=
u
+
ϵ
×
σ
z=u+\epsilon \times \sigma
z=u+ϵ×σDecoder和GAE是一样的,只是由于使用了变分的思想,所以损失函数变成了:
l
o
s
s
=
E
q
(
Z
∣
X
,
A
)
[
l
o
g
p
(
A
∣
Z
)
]
−
K
L
[
Q
(
Z
∣
X
,
A
)
∣
∣
p
(
Z
)
]
loss=E_{q(Z|X,A)} [log p(A|Z)]-KL[Q(Z|X,A)||p(Z)]
loss=Eq(Z∣X,A)[logp(A∣Z)]−KL[Q(Z∣X,A)∣∣p(Z)]变分下界写出的优化目标,第一项是期望,第二项是 KL 散度,详细推导在这里。
class EncoderGCN(nn.Module): #和GAE的一样
def __init__(self, n_total_features, n_latent, p_drop=0.):
super(EncoderGCN, self).__init__()
self.n_total_features = n_total_features
self.conv1 = GCNConv(self.n_total_features, 11)
self.act1=nn.Sequential(nn.ReLU(),
nn.Dropout(p_drop))
self.conv2 = GCNConv(11, 11)
self.act2 = nn.Sequential(nn.ReLU(),
nn.Dropout(p_drop))
self.conv3 = GCNConv(11, n_latent)
def forward(self, data):
x, edge_index = data.x, data.edge_index
x = self.act1(self.conv1(x, edge_index))
x = self.act2(self.conv2(x, edge_index))
x = self.conv3(x, edge_index)
return x
def reparametrize(self, mean, log_std): #通过mean和std得到z
if self.training:
return mean + torch.randn_like(log_std) * torch.exp(log_std)
else:
return mean
def encode(self, *args, **kwargs):
self.mean, self.log_std = self.encoder(*args, **kwargs) #两个GCN分别得到mean和std
z = self.reparametrize(self.mean, self.log_std) #得到z
return z
ARGA 编码器是否真的能够习得一个高斯分布?上GAN吧…即把模型分为生成器和判别器两部分,让两者对抗训练。
生成器直接使用GAE,输出还原的图A’判别器使用成对比较咯,即将正例和负例同时输入到神经网络中,由判别器直接尝试区分这两者
class Discriminator(nn.Module):
def __init__(self, n_input):
super(Discriminator, self).__init__()
# 判别器是3层FC
self.fcs = nn.Sequential(nn.Linear(n_input,40),
nn.ReLU(),
nn.Linear(40,30),
nn.ReLU(),
nn.Linear(30,1),
nn.Sigmoid())
def forward(self, z):
return self.fcs(z)
class ARGA(nn.Module):
def __init__(self, n_total_features, n_latent):
super(ARGA, self).__init__()
#这里的encode和decoder都是GAE的东西,一起作为生成器
self.encoder = EncoderGCN(n_total_features, n_latent)
self.decoder = DecoderGCN()
self.discriminator = Discriminator(n_latent)
def forward(self, x):
z_fake = self.encoder(x)
z_real=torch.randn(z_fake.size())
A = self.decoder(z_fake) #得到生成的A
# 让判别器区分真 与 假。
d_real=self.discriminator(z_real)
d_fake=self.discriminator(z_fake)
return A, d_real, d_fake
def simulate(self, x): #训练完成后可以用来生成更好的A
z_fake = self.encoder(x)
A = self.decoder(z_fake)
return A
其实除了这几份工作外,可以无监督的表示学习方法还有SDNE这种,而使用GAN的思想,其实也有做的更充分的工作比如GraphGAN,所以好像相比较之下,这三个算法更适合做链接预测,用于推荐系统之类的,比如GCMC。
优惠劵
上杉翔二
关注
关注
19
点赞
踩
101
收藏
觉得还不错?
一键收藏
知道了
12
评论
Graph Neural Network(GAE,GVAE,ARGA)
前面几次的整理GCN,GAT,GraphSAGE等等都适合在半监督,监督的场景下,而有没有图方法可以使用于在无监督的场景下使用呢?去发现节点的内在结果,挖掘隐藏关系如链接预测等等任务。答案是:自编码器(AE) /变分自编码器(VAE)+GraphGraph Auto-Encoders (GAE)GAE的目的是通过encoder-decoder 的结构去获取到图中节点的 embedding,然后再去做具体的下游任务比如链接预测。首先回顾一下自编码器,它是利用神经网络将数据逐层降维压缩,相当于让每层神
复制链接
扫一扫
专栏目录
AE、GAE了解
m0_52847441的博客
11-06
38
但是,这样的生成模型存在一个问题:低维向量表示必须是由真实样本通过编码器得到的,否则随机产生的低维向量表示通过生成模型几乎不可能得到近似真实的样本。一个自编码器的输入、输出应有相同的结构,利用数据训练这个网络,等训练结束后,这个网络即学习出了x->h->x的能力,h是至关重要的,是在尽量不损失信息量的情况下,对原始数据的另一种表达。那么,如果能将低维向量表示约束在一个分布(比如正态分布)中,那么从该分布中随机采样,产生的低维向量表示通过生成模型不是就能产生近似真实的样本了吗?,代表的是所有节点的表示。
GAE
03-31
盖伊
Google App Engine上托管的简单API。
12 条评论
您还未登录,请先
登录
后发表或查看评论
图神经网络必读的5个基础模型: GCN, GAT, GraphSAGE, GAE, DiffPool.
数据派THU
05-06
3450
来源:机器学习算法那些事 极市平台https://zhuanlan.zhihu.com/p/136521625本文约6000字,建议阅读10分钟本篇文章将从一个更直观的角度对当前经典流行的GNN网络,包括GCN、GraphSAGE、GAT、GAE以及graph pooling策略DiffPool等等做一个简单的小结。“近年来,深度学习领域关于图神经网络(Graph Neural Networks,...
GAE上可以用的JAVA 博客源代码
01-14
GAE上可以用的JAVA Blog源代码
可以在GAE上直接使用,支持图片上传等。
源代码是修改其他网友的普通blog程序而来,只做了必要的修改,原结构保留
最新版本请去主页下载
http://redpower1998.appspot.com
主页包括原始的普通版本
E(n) Equivariant Graph Neural Networks
04-13
E(n) Equivariant Graph Neural Networks
深度学习基础----GAE和VGAE
weiwei935707936的博客
08-21
1597
GAE和VGAE快速入门
Graph Neural Network图神经网络
qq_38304138的博客
04-06
469
Graph Neural Network图神经网络
A.Mathematical Notations
图表示:
V、E表示节点和边
∈是一个节点,=,∈表示Vi和Vj之间的一条边
节点V的邻域可以定义为()={∈∣(,)∈}
图的邻接矩阵用∈ℛ×来描述,N是节点数,N=|V|
=1if,∈and≠;=1
在无向图中,Aij表示节点Vi和Vj之间的边连接
在有向图中,Aij表示从Vi指向Vj的边
实际应用中,图...
图神经网络(一):综述
u013010473的博客
08-04
5035
图神经网咯综述
VGGFace2的pytorch代码
qq_40178291的博客
10-05
1337
PyTorch Face Recognizer based on ‘VGGFace2: A dataset for recognising faces across pose and age’.代码链接
Deep Learning on Graphs: A Survey第五章自动编码论文总结
gy77
11-09
496
论文地址:https://arxiv.org/pdf/1812.04202.pdf
最近老师让我们读的一片论文,已经开组会讲完了,我负责的是第五章,图的自动编码,现在再总结一遍,便于后者研读。因为这篇论文是一篇综述,所以里边有些符号,在这个模型里是一个意思,在另一个模型了,符号又变了。
GRAPH AUTOENCODERS
预备知识:
1.论文中符号表解释如下:
2.编码器的...
Heterogeneous Graph Neural Network(异质图神经网络)
01-20
Heterogeneous Information Network
传统的同构图(Homogeneous Graph)中只存在一种类型的节点和边,当图中的节点和边存在多种类型和各种复杂的关系时,再采用Homo的处理方式就不太可行了。这个时候不同类型的节点具有不同的特征,其特征可能落在不同的特征空间中,如果仍然共享网络参数、同样维度的特征空间,又或者尝试将异构图映射到同构图中,根本无法学习到“异构”的关键,即无法探索到不同节点之间,监督标签之间的联系,而这又是十分重要的。
如上图著名的异构例子,学术网络图,它包含“论文”paper、“作者”author、“会议”venue和“机构”org等节点类
Introduction to Graph Neural Networks.pdf
04-19
GNN在2022研究进展?CMU-Minji112页PPT《图神经网络导论》卡内基梅隆大学(Carnegie Mellon University)计算机科学系的一名博士生,导师是Christos Faloutsos和Ruslan Salakhutdinov教授。研究兴趣在Deep Graph Learning领域。
the graph neural network model 图神经网络模型
04-26
图神经网络模型学习
graph neural network review.rar
07-03
对目前图神经网络的技术进行总结。经典graph算法,概率图模型和图神经网络。
Multimodal Fusion(多模态融合)
热门推荐
nakaizura
03-28
14万+
Jeff Dean:我认为,2020年在多任务学习和多模态学习方面会有很大进展,解决更多的问题。我觉得那会很有趣。
多模态融合 (Multimodal Fusion)
一般来说,每一种信息的来源或者形式,都可以称为一种模态(Modality),目前研究领域中主要是对图像,文本,语音三种模态的处理。之所以要对模态进行融合,是因为不同模态的表现方式不一样,看待事物的角度也会不一样,所以存在一些交叉(所...
Domain Adaptation(领域自适应,MMD,DANN)
nakaizura
12-26
2万+
Domain Adaptation
现有深度学习模型都不具有普适性,即在某个数据集上训练的结果只能在某个领域中有效,而很难迁移到其他的场景中,因此出现了迁移学习这一领域。其目标就是将原数据域(源域,source domain)尽可能好的迁移到目标域(target domain),Domain Adaptation任务中往往源域和目标域属于同一类任务,即源于为训练样本域(有标签),目标域为测集域,其测试集域无标签或只有少量标签,但是分布不同或数据差异大,具体根据这两点可以划分为:
homogeneous .
Generative Adversarial Networks(生成对抗网络GAN,DCGAN)
nakaizura
03-13
2万+
Generative Adversarial Networks
GAN的想法很简单,一言以蔽之:以假乱真。
Generative(生成):GAN实际上可以看作是一个生成数据的工具。目标就是通过学习让自身生成更加真实的数据。
Adversarial (对抗):既然能够以假乱真,对抗的自然就是识别真假的警察了。
所以GAN 主要包括了两个部分:
生成器 (Generator ):生成器努力使生成的图像...
Variational Autoencoder(变分自编码 VAE,CVAE)
nakaizura
01-22
2万+
使用通用自编码器的时候,首先将输入encoder压缩为一个小的 form,然后将其decoder转换成输出的一个估计。如果目标是简单的重现输入效果很好,但是若想生成新的对象就不太可行了,因为其实我们根本不知道这个网络所生成的编码具体是什么。虽然我们可以通过结果去对比不同的对象,但是要理解它内部的工作方式几乎是不可能的,甚至有时候可能连输入应该是什么样子的都不知道。解决方法是用相反的方法使用变分自编码.........
Multi-Label Image Classification(多标签图像分类)
nakaizura
03-13
2万+
Multi-Label Classification
首先分清一下multiclass和multilabel:
多类分类(Multiclass classification): 表示分类任务中有多个类别, 且假设每个样本都被设置了一个且仅有一个标签。比如从100个分类中击中一个。
多标签分类(Multilabel classification): 给每个样本一系列的目标标签,即表示的是样本各属性而不是相互排斥的。比如图片中有很多的概念如天空海洋人等等,需要预测出一个概念集合。
Challenge
多标签
graph neural network
最新发布
06-28
### 回答1:
图神经网络 (Graph Neural Network) 是一种特殊的深度学习模型,专门用于处理图结构数据。它能够学习图中节点之间的关系,并用于预测、分类和聚类等任务。图神经网络通常由多层节点卷积和图卷积层组成。
### 回答2:
图神经网络(Graph Neural Network,GNN)是一种能够对图数据进行分类、预测和嵌入学习的机器学习模型。图数据包括节点、边和孤立的子图,将它们组成一个网络结构,每个节点和边都带有相应的特征信息。
与传统的人工神经网络不同,图神经网络的输入不仅仅是简单的向量,而是图形结构本身。通过对节点和边进行信息传递和聚合,GNN能够对整个图进行全局性的推断和预测。常见的GNN模型有Graph Convolutional Networks(GCN)、Graph Attention Networks(GAT)、GraphSAGE等。
GNN具有以下特点:
1. 局部性:GNN通过每个节点的邻居信息消除了图数据中的局部性质,实现了节点之间的信息传递和聚合,能够快速学习到具有相似特征的节点之间的关系。
2. 结构性:GNN能够充分利用图中的结构信息,包括节点的邻居信息、度数分布等,实现了对图数据的有效利用。
3. 可扩展性:GNN可以处理大规模的图数据,对于具有高维特征的节点和边,也能够进行有效的特征提取和计算。
由于GNN能够有效地处理高维、复杂的图数据,近年来被广泛应用于社交网络分析、化学分子编码、语言模型等领域。尤其在社交关系分析、推荐系统等领域,GNN已经成为一种非常流行的机器学习模型。
### 回答3:
图神经网络是一种针对非欧几里德结构数据建模和推理的神经网络框架。传统的神经网络只能有效处理欧几里德结构数据,而对于更具复杂性质的非欧几里德结构数据如图、网络、句法树等则存在不足。图神经网络的主要目标是捕捉图上的结构信息和节点之间的关系,以便更好地推理和预测图上的节点属性、边属性和全局属性。
图神经网络可以由三个部分组成:节点表示、边表示、以及聚合函数。节点表示可以使用传统的基于节点的特征,例如离散特征、连续特征、图形特征。边表示通常是通过将节点特征组合来获得的边表征。聚合函数是在每个节点处执行的算法,这使得网络可以聚合邻居节点,从而输出每个节点的嵌入表示。
有多种类型的图神经网络,其中最常见的是卷积图神经网络(GCN)和图注意力网络(GAT)。GCN使用卷积操作聚合节点邻居,然后通过多层GCN堆叠来输出节点嵌入。而GAT使用注意力机制对节点和边进行加权,得到相应的嵌入表示。另外,还有GraphSAGE、Graph Convolutional Policy Network (GCPP)等多种图神经网络模型,其适用范围和性能各异。
总体而言,图神经网络是一种新颖的深度学习模型,可用于处理非欧几里德结构数据。它们已在图像分类、推荐系统、社交网络和分子化学等领域中取得了成功,并且在未来的研究中有很大的潜力。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
上杉翔二
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
161
原创
6万+
周排名
24万+
总排名
136万+
访问
等级
9942
积分
1810
粉丝
1840
获赞
558
评论
8653
收藏
私信
关注
热门文章
Multimodal Fusion(多模态融合)
149338
强化学习(Q-Learning,Sarsa)
62353
Random Walk(随机游走)
51903
Hierarchical Clustering(层次聚类)
46504
Domain Adaptation(领域自适应,MMD,DANN)
29699
分类专栏
深度学习
109篇
推荐系统
39篇
多媒体和多模态
33篇
机器学习
24篇
强化学习
8篇
量化学习
4篇
数据挖掘
6篇
最新评论
ChatDoctor(LLM大模型用于医疗对话)
L202010:
有源码和安装教程吗
用户行为和属性用于推荐系统问题(MBGCN,AGCN,CML)
toufuheyu:
作者有复现 MBGCN这篇论文的代码吗,里面item文件里面 .pth文件是怎么来的啊? 不知到怎么用其他数据集来测试
强化学习用于金融时序问题(Q,DQN,AC)
渣渣在线膜拜大佬:
大佬,求DQN agent的完整代码,GITHUB上没找到
强化学习用于金融时序问题(Q,DQN,AC)
渣渣在线膜拜大佬:
请问DQN agent的代码在哪里,github上好像没有正好对应的?
Multi-Label Image Classification(多标签图像分类)
How To提高记忆力?:
大佬您现在了解相关内容吗!我现在正在做这个,但是网上查不到相关资料,多级标签分类目标检测这种求前辈提示一二
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
基于LLMs的多模态大模型(PALM-E,ArtGPT-4,VPGTrans )
基于LLMs的多模态大模型(MiniGPT-4,LLaVA,mPLUG-Owl,InstuctBLIP,X-LLM)
基于LLMs的多模态大模型(Flamingo, BLIP-2,KOSMOS-1,ScienceQA)
2023年16篇
2022年21篇
2021年28篇
2020年37篇
2019年25篇
2018年8篇
2017年26篇
目录
目录
分类专栏
深度学习
109篇
推荐系统
39篇
多媒体和多模态
33篇
机器学习
24篇
强化学习
8篇
量化学习
4篇
数据挖掘
6篇
目录
评论 12
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
图表示学习经典方法 —— GCN&GAE - 知乎
图表示学习经典方法 —— GCN&GAE - 知乎首发于学姐的粉丝投稿切换模式写文章登录/注册图表示学习经典方法 —— GCN&GAE鱼子酱来源:投稿 作者:gick 编辑:学姐图表示学习(Graph Representation Learning)是近年来快速发展的研究领域,它的主要目标是学习从图数据中提取有意义且表征图结构的特征。图表示学习在诸多应用领域都有广泛的应用,如社交网络分析、生物信息学、推荐系统等。早期的图表示学习方法主要是基于图遍历(Graph Traversal)的方法,例如随机游走(Random Walks)和基于网络传播(Network Propagation)的方法。这些方法主要利用节点之间的局部关系学习节点表征,因此对于全局信息的表示效果并不理想。随着深度学习的发展,出现了基于深度神经网络(Deep Neural Networks)的图表示学习方法,这些方法大大提升了图的表征能力。基于深度神经网络的图表示学习方法主要分为两类:基于图卷积神经网络(Graph Convolutional Network,GCN)和基于图自编码器(Graph Autoencoder,GAE)。GCN是目前最受关注的图表示学习方法之一。GCN中,每个节点的特征由其邻居节点的特征组合而成。GCN通过卷积操作在图上学习节点表征,以更好地表达节点之间的相似性和距离。其中最著名的是Kipf等人提出的GCN模型,该模型使用两层卷积神经网络学习节点表征。GCN的核心思想是将卷积操作推广到图数据上。在传统的图卷积操作中,我们需要计算每个节点的相邻节点的加权和。GCN使用邻接矩阵来表示节点之间的连接,并使用该矩阵对节点特征进行加权聚合。其公式为:GCN的核心在于邻接矩阵的使用,它保留了节点之间的连接关系,从而在嵌入节点时考虑了全局拓扑结构。此外,多层GCN可以捕捉不同尺度的拓扑结构,从而提高了模型的表达能力。GAE是另一种基于深度神经网络的图表示学习方法。GAE的目标是重建图数据,将节点特征作为输入,将其压缩为低维度的表示,然后解压缩得到重构的图。GAE一般由编码器(Encoder)和解码器(Decoder)两部分组成。编码器将节点特征转换为低维度的向量表示,而解码器将该向量表示转换为重构的图数据。其中,N 表示节点的数量。为了防止过拟合,GAE 采用了 L2 正则化来控制嵌入矩阵的复杂度,即在损失函数中加入以下项:其中,K 表示嵌入的维度,整个 GAE 模型的训练过程可以表示为:其中,α 是正则化项的系数。在训练完成后,可以使用编码器得到节点的嵌入矩阵 Z,用于后续的节点分类、聚类和链接预测等任务。此外,还有一些其他的图表示学习方法,如基于自注意力机制(Self-Attention Mechanism)的图卷积网络(Graph Attention Network,GAT)、基于深度生成对抗网络(Deep Generative Adversarial Network,DGAN)的图表示学习方法等。虽然图表示学习方法已经取得了一定的进展,但是仍然存在一些问题需要解决。例如,对于大规模的图数据,如何进行高效的图表示学习是一个挑战;同时,如何将不同尺度的信息有效地融合也是一个需要研究的问题。未来的研究方向包括开展更加高效的图嵌入方法,解决大规模图数据上的图表示学习问题。一种解决方案是采用采样和聚合的方法,对大规模图数据进行采样,然后在小规模子图上学习嵌入表示。此外,也可以使用图神经网络进行嵌入学习,以便更好地处理大规模图数据。同时,如何有效地融合不同尺度的信息也是一个需要研究的问题。一种解决方法是使用多层图神经网络,在每一层中对不同尺度的信息进行处理,以获得更全面的信息。此外,还可以结合不同的图嵌入方法和特征提取方法,以获得更好的效果。图表示学习还有许多潜在的应用。例如,在社交网络中,可以使用图表示学习来识别社区结构,推荐好友和内容,以及预测用户行为。在生物信息学领域,图表示学习可以用于蛋白质分类,药物发现和基因表达分析。如AGO2相关蛋白:在推荐系统中,图表示学习可以帮助用户进行更准确的个性化推荐,提高推荐的质量。图表示学习是一个快速发展的领域,具有广泛的应用前景。未来的研究应该聚焦于解决大规模图数据上的图表示学习问题和如何更好地融合不同尺度的信息,以及探索更广泛的应用。关注学姐 @鱼子酱 AI干货多多~想投稿的同学欢迎私聊学姐嗷~发布于 2023-10-19 16:13・IP 属地上海表示学习图卷积神经网络 (GCN)GAE赞同 31 条评论分享喜欢收藏申请转载文章被以下专栏收录学姐的粉丝投稿全都是粉丝大神的投稿!经验总结,快来
六、GAE 广义优势估计 - 知乎
六、GAE 广义优势估计 - 知乎首发于RL算法推导切换模式写文章登录/注册六、GAE 广义优势估计万理的探求者希望在有生之年穷尽所有的真理前言Generalized advantage estimation (GAE)是结合了 λ-return方法的优势函数估计,其平衡了强化学习中的方差和偏差,并被广泛应用于强化学习最新算法之中。本文会从GAE的起源思想出发,一直讲到GAE论文本身。1、偏差和方差的来源首先给出偏差和方差的定义:偏差:有偏差的估计器不能很好地表示/拟合原始指标。形式上,如果估计量的期望值等于原始度量,则它是无偏的。偏差会导致局部最优解。方差:具有高方差的估计量具有很大的值分布。理想情况下,无偏估计器应该具有低方差,以在输入中始终匹配原始度量。形式上,这与测量任何随机变量的方差相同。方差会导致需要更多样本才能收敛。接下来首先说明,强化学习的一般方法在值函数估计中存在偏差/方差。1.1 蒙特卡洛(MC)方法蒙特卡洛方法是无模型的、基于经验的方法,其通过多个回报G的均值来估计价值函数V,其中折扣回报G被定义为:G_{t} \doteq R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\cdots=\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1} 而MC方法对状态值的估计量的期望刚好就是状态值函数的定义:E_{\left(R_{t}, R_{t+1}, \ldots, R_{t+N}\right)}\left[\sum_{n=0}^{N} \gamma^{n} R_{t+n} \mid S_{t}=s\right]=V^{\pi}(s) 因此MC算法对状态值的估计量是无偏估计。对于方差而言,由于估计量中的随机变量为t时刻之后所有的回报值(R_{t},R_{t+1},...,R_{t+N}),维度高,导致了高方差。做个总结:MC方法需要用整个episode的经验去估计价值函数,是一种低偏差、高方差的方法。1.2 时序差分(TD)方法MC预测公式为:V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left[G_{t}-V\left(S_{t}\right)\right]而Gt只有在幂结束时才能够得到,这降低了更新效率,因此我们考虑单步更新(TD(0)):V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left[R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right)\right]直接用即时奖励+下一个状态的价值估计-当前状态的价值估计来更新价值函数。在TD(0)中,我们采用的是单步误差,用来更新价值函数:\delta_{t} \doteq R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right)这被称作时序差分误差(TD error)通过参数化V ,实际上我们就是需要求解如下最优化问题:\min_{\theta} E_{(s,r,s')}[(r + \gamma V_\theta(s') - V_\theta(s))^2] = \min_{\theta} E_{(s,r,s')}[(\delta_{\theta})^2]了解了概念之后,接下来谈谈TD算法中的偏差与方差:TD算法可以看做在策略π下使用 r_t + \gamma V_\theta(s_{t+1}) 作为值函数 V^{\pi}(s_{t}) 的估计量。然而,神经网络参数化的 V_\theta(s) 与真实的值函数之间会存在误差,即: V_\theta(s)=V^{\pi}(s)+\epsilon_\theta(s)其中, \epsilon_\theta(s) 为近似误差。按照偏差的定义,我们求出估计量的期望:\begin{align} E_{(R_t,S_{t+1})}[R_t + \gamma V_\theta(S_{t+1})]&=E_{(R_t,S_{t+1})}[R_t + \gamma (V^{\pi}(S_{t+1})+\epsilon_\theta(S_{t+1}))] \\ &=V^{\pi}(S_t)+\gamma E_{S_{t+1}}[\epsilon_\theta(S_{t+1}))] \end{align} 则存在偏差 \gamma E_{S_{t+1}}[\epsilon_\theta(S_{t+1}))] 。此外由于估计量中的随机变量维度较少,即只存在当前时刻的回报值 R_t和下一时刻的状态 S_{t+1} ,因此估计的方差偏小。做个总结:TD方法在每个时刻都可以更新价值函数,是一种高偏差、低方差的方法。1.3 λ-return算法MC算法和TD算法是两个极端:MC算法无偏差高方差,TD算法高偏差低方差。如何在二者之间进行平衡呢?这就是 \lambda-return方法。首先我们可以从TD算法考虑降低估计偏差。TD算法为了减少方差,只用了一步的奖励R_t以及下一时刻的状态值 V_\theta(S_{t+1})作为回报。而状态值 V_\theta(S_{t+1}) 中的近似误差带来了偏差 \gamma E_{S_{t+1}}[\epsilon_\theta(S_{t+1}))]。如果用到2步的回报值,即用t和t+1时刻的奖励值 R_t 、 R_{t+1} 以及t+2时刻的近似状态值 V_\theta(S_{t+2}) 作为状态值的估计量,即 R_t+\gamma R_{t+1}+\gamma^2 V_{\theta}(S_{t+2}) ,该估计量的偏差为 \gamma^2 E_{S_{t+2}}[\epsilon_\theta(S_{t+2}))] 。这种方法可以推广到n步,则此时估计量的偏差为 \gamma^n E_{S_{t+n}}[\epsilon_\theta(S_{t+n}))] ,由于 0\le\gamma \le 1 ,则可以看出n越大偏差越小。被拓展为n步的方法被称为n步TD法,在这个方法中我们考虑n步回报:G_{t: t+n} \doteq R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1} R_{t+n}+\gamma^{n} V_{t+n-1}\left(S_{t+n}\right)\lambda-return算法对这n个k步估计量(k从1到n)进行加权平均,平衡了TD方法和MC方法,同时也平衡了偏差和方差:G_{t}^{\lambda} \doteq(1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_{t: t+n}G_{t}^{\lambda}=(1-\lambda) \sum_{n=1}^{T-t-1} \lambda^{n-1} G_{t: t+n}+\lambda^{T-t-1} G_{t}当 \lambda =1时,公式退化为MC回报;当\lambda =0时,公式退化为TD回报。2、 GAE 广义优势函数GAE主要借鉴了λ-return的思想,将其运用到了优势函数的估计中。2.1 策略梯度的表达形式策略梯度的表达形式有很多,如下:g=\mathbb{E}\left[\sum_{t=0}^{\infty} \Psi_{t} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right] 其中, \Psi_{t} 有六种表现形式:1. \sum_{t=0}^\infty r_t :轨迹的总奖励2. \sum_{t=t’}^\infty r_t :动作 a_t 奖励3. \sum_{t=t’}^\infty r_t-b(s_t) : 在2的基础上减去了一个偏移量,这样可以减小方差为啥可以减小方差,请参考减小方差4. Q^\pi(s_t,a_t) :状态-动作值函数(这是策略梯度定理的标准形式)5. A^\pi(s_t,a_t) : 优势函数 表达式是状态动作值函数Q减去状态值函数V A^\pi(s_t,a_t)=Q^\pi(s_t,a_t)-V^\pi(s_t)优势函数的意思是,只给鼓励价值大于平均价值的动作,而不仅仅是鼓励价值为正的动作。由于和3类似,同样减小了方差。6. r_t+V^\pi(s_{t+1})-V^\pi(s_t) : TD误差其中 V^\pi(s_t):=E_{s_{t+1}:\infty,a_t:\infty}[\sum_{l=0}^\infty r_{t+l}] Q^\pi(s_t,a_t)=E_{s_{t+1}:\infty,a_{t+1}:\infty}[\sum_{l=0}^\infty r_{t+l}]我们最关注的是优势函数,因为优势函数非常便于解释,并且方差最小。但是,优势函数中Q、V估计的不准会导致偏差的存在。因此,GAE的核心问题就在于,如何平衡偏差和方差的关系。2.2 折扣形式的策略梯度在2.1中,我们考虑的是无折扣的问题。现在引入折扣系数γ,不过本文中γ不被看做折扣系数,而是被看做通过引入偏差来减小方差的参数。本质上就是折扣系数,它引入了偏差(就是策略梯度的估计不再是g了,而是折扣版本的g。但是对于我们需要的折扣版本的g来说,它就是无偏的)并且减小了方差。这里其实也减小了偏差(就是引入了折扣偏差,减小了估计偏差):类似1.3节的理论于是所有的东西都变成了折扣版本:g^{\gamma}:=\underset{\substack{s_{0: \infty}: \infty}}{ }\left[\sum_{t=0}^{\infty} A^{\pi, \gamma}\left(s_{t}, a_{t}\right) \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right] \begin{aligned} &V^{\pi, \gamma}\left(s_{t}\right) :=\mathbb{E}_{s_{t+1: \infty}}^{a_{t: \infty}},\left[\sum_{l=0}^{\infty} \gamma^{l} r_{t+l}\right] \quad \\&Q^{\pi, \gamma}\left(s_{t}, a_{t}\right):=\mathbb{E}_{s_{t+1: \infty},}^{a_{t+1: \infty}}\left[\sum_{l=0}^{\infty} \gamma^{l} r_{t+l}\right] \\ &A^{\pi, \gamma}\left(s_{t}, a_{t}\right) :=Q^{\pi, \gamma}\left(s_{t}, a_{t}\right)-V^{\pi, \gamma}\left(s_{t}\right) \end{aligned} 那 \Psi_{t} 的六种表达形式,哪些能够换掉优势函数A,并且不引入偏差呢?其实只要Q是无偏的就可以了,Q-b(s)/Q-V(s)中后面减的baseline对于策略梯度根本没有影响。就是说,baseline这一项在策略梯度中直接就是0:\nabla J(\boldsymbol{\theta}) \propto \sum_{s} \mu(s) \sum_{a}\left(q_{\pi}(s, a)-b(s)\right) \nabla \pi(a \mid s, \boldsymbol{\theta})\sum_{a} b(s) \nabla \pi(a \mid s, \boldsymbol{\theta})=b(s) \nabla \sum_{a} \pi(a \mid s, \boldsymbol{\theta})=b(s) \nabla 1=0原文中这里写了一个定理,但实际上就是说这个baseline没啥用,Q准确就行所以下面这几个的期望对于Q而言都是无偏的:\sum_{l=0}^{\infty} \gamma^{l} r_{t+l}\\ A^{\pi, \gamma}\left(s_{t}, a_{t}\right)\\ Q^{\pi, \gamma}\left(s_{t}, a_{t}\right)\\ r_{t}+\gamma V^{\pi, \gamma}\left(s_{t+1}\right)-V^{\pi, \gamma}\left(s_{t}\right). 所以下一节就可以在这里面找个好用的形式来帮助估计优势函数了。2.3 优势函数估计现在可以考虑怎么估计优势函数了。在上面无偏的形式中,我们发现第四项是之前学过的TD error \delta_{t}^{V^{\pi, \gamma}}=r_{t}+\gamma V^{\pi, \gamma}\left(s_{t+1}\right)-V^{\pi, \gamma}\left(s_{t}\right) ,每个时间步长都可以更新价值函数,这不就是很好的估计方法吗?\begin{aligned} \mathbb{E}_{s_{t+1}}\left[\delta_{t}^{V^{\pi, \gamma}}\right] &=\mathbb{E}_{s_{t+1}}\left[r_{t}+\gamma V^{\pi, \gamma}\left(s_{t+1}\right)-V^{\pi, \gamma}\left(s_{t}\right)\right] \\ &=\mathbb{E}_{s_{t+1}}\left[Q^{\pi, \gamma}\left(s_{t}, a_{t}\right)-V^{\pi, \gamma}\left(s_{t}\right)\right]=A^{\pi, \gamma}\left(s_{t}, a_{t}\right) \end{aligned} 看,期望等于A,这不仅仅对于g是无偏估计,直接对于A都是无偏估计了。但是哈,有一个问题就是,当V估计准确的时候才是无偏估计,不准的时候肯定是有偏的(偏差在1.2中的TD方法讲过了),进而导致优势函数是有偏的。2.4 λ-return与GAE在价值函数有偏的时候,我们在1.3节知道更新方式越接近蒙特卡洛就越能减少偏差 \gamma^n E_{S_{t+n}}[\epsilon_\theta(S_{t+n}))] ,但是会引入方差。怎么解决的呢?λ-return算法对这n个k步估计量(k从1到n)进行加权平均,平衡了TD方法和MC方法,同时也平衡了偏差和方差:G_{t}^{\lambda} \doteq(1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_{t: t+n} 在优势函数有偏的时候,同样的,我们也可以提出一个类似λ-return的方法。使用n个k步估计量(k从1到n):\begin{aligned} &\hat{A}_{t}^{(1)}:=\delta_{t}^{V} \quad=-V\left(s_{t}\right)+r_{t}+\gamma V\left(s_{t+1}\right)\\ &\hat{A}_{t}^{(2)}:=\delta_{t}^{V}+\gamma \delta_{t+1}^{V} \quad=-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\gamma^{2} V\left(s_{t+2}\right)\\ &\hat{A}_{t}^{(3)}:=\delta_{t}^{V}+\gamma \delta_{t+1}^{V}+\gamma^{2} \delta_{t+2}^{V}=-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\gamma^{2} r_{t+2}+\gamma^{3} V\left(s_{t+3}\right)\\ &\hat{A}_{t}^{(k)}:=\sum_{l=0}^{k-1} \gamma^{l} \delta_{t+l}^{V}=-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\cdots+\gamma^{k-1} r_{t+k-1}+\gamma^{k} V\left(s_{t+k}\right) \end{aligned} \hat{A}_{t}^{(\infty)}=\sum_{l=0}^{\infty} \gamma^{l} \delta_{t+l}^{V}=-V\left(s_{t}\right)+\sum_{l=0}^{\infty} \gamma^{l} r_{t+l} 所以,GAE方法对这n个k步估计量(k从1到n)进行加权平均,平衡了TD方法和MC方法,同时也平衡了偏差和方差:\begin{aligned} \hat{A}_{t}^{\mathrm{GAE}(\gamma, \lambda)} &:=(1-\lambda)\left(\hat{A}_{t}^{(1)}+\lambda \hat{A}_{t}^{(2)}+\lambda^{2} \hat{A}_{t}^{(3)}+\ldots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}+\lambda\left(\delta_{t}^{V}+\gamma \delta_{t+1}^{V}\right)+\lambda^{2}\left(\delta_{t}^{V}+\gamma \delta_{t+1}^{V}+\gamma^{2} \delta_{t+2}^{V}\right)+\ldots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(1+\lambda+\lambda^{2}+\ldots\right)+\gamma \delta_{t+1}^{V}\left(\lambda+\lambda^{2}+\lambda^{3}+\ldots\right)\right.\\ &\left.\quad \quad \quad \quad \gamma^{2} \delta_{t+2}^{V}\left(\lambda^{2}+\lambda^{3}+\lambda^{4}+\ldots\right)+\ldots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(\frac{1}{1-\lambda}\right)+\gamma \delta_{t+1}^{V}\left(\frac{\lambda}{1-\lambda}\right)+\gamma^{2} \delta_{t+2}^{V}\left(\frac{\lambda^{2}}{1-\lambda}\right)+\ldots\right) \\ &=\sum_{l=0}^{\infty}(\gamma \lambda)^{l} \delta_{t+l}^{V} \end{aligned} 当然这个简单的形式只有在无穷步的时候可以取,所以也引入了偏差。发布于 2022-08-03 00:28强化学习 (Reinforcement Learning)人工智能深度学习(Deep Learning)赞同 582 条评论分享喜欢收藏申请转载文章被以下专栏收录RL算法推导从Qlearning到
GAE_百度百科
百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10GAE播报上传视频Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。GAE 英文全称为 Google App Engine。它是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4月 发布第一个测试版本。支持python、java和php开发。全球已有数十万的开发者在其上开发了众多的应用。目录1GAE简介2GAE申请3GAE应用4GAE相关GAE简介播报编辑GAE(Google App Engine)是Google公司在2008年推出的互联网应用服务引擎,它采用云计算技术,使用多个服务器和数据中心来虚拟化应用程序。因此GAE可以看作是托管网络应用程序的平台。GAE如何为用户提供服务呢?GAE给用户提供了主机、数据库、互联网接入带宽等资源,用户不必自己购买设备,只需使用GAE提供的资源就可以开发自己的应用程序或网站,并且可以方便地托管给GAE。这样的好处是用户不必再担心主机、托管商、互联网接入带宽等一系列运营问题。GAE也是Google云计算的一部分,是一个互联网应用服务引擎,开发人员可以使用GAE的API开发互联网应用,而带宽、主机全都不用担心,Google都提供给你了。免费用户拥有500M存储空间、每月500万次PV,对于一般的应用程序应该足够了。你可以用GAE来托管你的开心网、校内的应用,不用再为没有主机发愁了。相信会有一天,有很多开源的GAE应用可供使用,有GAE版的wordpress,GAE版的Discuz,GAE版的Mambo等等。我们不用再为建设一个小型网站去租用主机,不用去选择托管商,不用管是电信还是网通、台湾还是美国,不在丢出白花花的银子。从架构上看,GAE也是非常值得学习的。GAE提供了一套API,帮助你获取网络数据、发送邮件、数据存储、图片操作、缓存数据,相信以后还会有更多的API推出。开发人员在GAE的框架内开发,不用再考虑CPU、内存、分布等复杂和难以控制的问题,初级的程序员按照GAE的规范也可以写出高性能的应用。当然,实现高性能也是有代价的,如不能使用socket,文件操作,数据查询必须有索引,不支持同时两个不等式做条件的查询等。对于开发而言,多了些约束,少了些选择,可以让开发更加简单,更关注业务。GAE申请播报编辑Google App Engine对全球开发者免费开放使用,你可以充分利用Google提供的免费空间、免费数据库、免费二级域名等来展示你开发的应用程序,提供给全球的用户下载和使用。只要你有一个Google账号就可以在Google App Engine上注册和开通一个免费账号,免费账号允许你创建10个应用,每一个应用提供1GB的容量,月流量是60GB(传出和传入带宽都是1GB/天)。对于这样的配置,足够应付一个流量为几千IP一天的中小型博客或者网站了。GAE支持的开发语言包括Java、Python、PHP和Go等。当然,大型的应用程序和网站,GAE也能够为其提供服务,只需要支付一定的费用来购买更多的空间或资源就可以了,使大型网站的开发和运营变得更加单纯。GAE应用播报编辑1、GAE空间 Google App Engine也就是GAE,是Google推出的一款网络运用程序,也是个免费虚拟主机空间,其实这比一般虚拟主机强悍的多,你可以利用Google App Engine工具来开发网站或制作网络应用程序,Google会在自己的庞大服务器集群上为你提供空间、带宽、资源等。 [1]2、GAE应用GoAgent GoAgent是 一个使用Python和Google Appengine SDK编写的软件。部署和使用方法非常简单,不需要安装Python或者Google Appenginge SDK ,几分钟即可搞定。GoAgent是一个基于GAE的利器,速度方面,是相当的给力,打开youtube、facebook、Twitter等国外网站基本上是秒开。 [2]GAE相关播报编辑1、在使用Google App Engine应用时,部分移动或者联通的手机无法接受到验证码短信(SMS),又无法更换手机申请,那么我们怎么处理呢?还好,谷歌的服务总是从顾客的角度出发的,如果你收不到验证码短信(SMS),那么可以填写申请表单来实现。填写表单地址见引用文章。 [3]2、在申请Google应用套件中选择国家时提示不能选择“中国”,更改为美国,结果输入电话号码时总是提示无效。解决方法见引用文章。 [4]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000菜鸟玩GAE(Google App Engine)完全指南,互联网营销-阿里云开发者社区
菜鸟玩GAE(Google App Engine)完全指南,互联网营销-阿里云开发者社区
产品解决方案文档与社区权益中心定价云市场合作伙伴支持与服务了解阿里云售前咨询 95187-1 在线服务售后咨询 4008013260 在线服务其他服务 我要建议 我要投诉更多联系方式备案控制台开发者社区首页探索云世界探索云世界云上快速入门,热门云上应用快速查找了解更多问产品动手实践考认证TIANCHI大赛活动广场活动广场丰富的线上&线下活动,深入探索云世界任务中心做任务,得社区积分和周边高校计划让每位学生受益于普惠算力训练营资深技术专家手把手带教话题畅聊无限,分享你的技术见解开发者评测最真实的开发者用云体验乘风者计划让创作激发创新阿里云MVP遇见技术追梦人直播技术交流,直击现场下载下载海量开发者使用工具、手册,免费下载镜像站极速、全面、稳定、安全的开源镜像技术资料开发手册、白皮书、案例集等实战精华插件为开发者定制的Chrome浏览器插件探索云世界新手上云云上应用构建云上数据管理云上探索人工智能云计算弹性计算无影存储网络倚天云原生容器serverless中间件微服务可观测消息队列数据库关系型数据库NoSQL数据库数据仓库数据管理工具PolarDB开源向量数据库热门Modelscope模型即服务弹性计算云原生数据库物联网云效DevOps龙蜥操作系统平头哥钉钉开放平台大数据大数据计算实时数仓Hologres实时计算FlinkE-MapReduceDataWorksElasticsearch机器学习平台PAI智能搜索推荐人工智能机器学习平台PAI视觉智能开放平台智能语音交互自然语言处理多模态模型pythonsdk通用模型开发与运维云效DevOps钉钉宜搭支持服务镜像站码上公益
开发者社区
数据库
文章
正文
菜鸟玩GAE(Google App Engine)完全指南,互联网营销
2019-06-01
3444
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议》和
《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介:
GAE是什么? 从实用的角度说是GAE可以提供我们稳定的免费网站空间,空间支持语言是python、java,数据库是google专有的数据库,数据库和空间可以免费使用1G,超过了1G就要买了,还提供Google的带宽,这个带宽约可以支撑一月500万次访问请求,超过500万次就要买了……对于一般网站这免费的资源就足够了,另外GAE还支持域名绑定,就相当于个人买的虚拟空间一样。
GAE是什么?
从实用的角度说是GAE可以提供我们稳定的免费网站空间,空间支持语言是python、java,数据库是google专有的数据库,数据库和空间可以免费使用1G,超过了1G就要买了,还提供Google的带宽,这个带宽约可以支撑一月500万次访问请求,超过500万次就要买了……对于一般网站这免费的资源就足够了,另外GAE还支持域名绑定,就相当于个人买的虚拟空间一样。
即使你目前对GAE不了解,也不会python或java,也能轻易使用GAE空间,利用别人编好的基于GAE的程序建立起自己的网站。
下面就跟着一步一步来。
一、申请GAE空间
1、申请Google邮箱,如abcdef@gmail.com如果自己已经有了gmail就跳过这一步,gmail申请地址http://www.gmail.com点页面右下角的“Create an account”按钮申请
2、打开Google App Engine主页http://appengine.google.com/,在页面右边输入你的email,如你的email是abcdef@gmail.com,就只需输入abcdef,输入密码点“sign in”按钮登录。登录后出现下图所示,点“Create an Application”按钮。
3)然后看到下图,申请GAE需要验证码,GAE会发送一个验证码到你的手机上,记得在你手机号码前面加上“+86”
4)输入验证码,点上图的“send”后不用一分钟就收到验证码了,
5)在上图红圈位置输入正确验证码后就看到下图,
这是给你自己选择一个二级域名,如在本例我填上seo-cn.appspot.com,至少填6个字符,填后先点后面的Check按钮看看能不能用,如果提示不可用就换新的试试,直到提示Yes…… 6)填好后记得勾上I accept 表示同意他们的条款,点Save按钮建立。若成功则会出现如下图页面提示
7)点击上图的红圈链接就看到下图的GAE管理页面,如下图,
这个页面就是你刚才建立的应用的访问统计情况,现在还没有上传你的应用,可以看到No version deployed提示。到这里你已经成功申请了一个GAE应用(说是空间也可以),每个用户可以申请10个这样的应用,即一个手机号码可以弄到10个免费的GAE空间。
二、在自己电脑搭建python+GAE环境
1)下载、安装python
下载地址
目前python的下载链接已被封,可在http://www.python.org/ftp/python/2.5.1/下载2.5.1版本(初学推荐使用这个版本),选择python-2.5.1.msi下载,也可以点这个直接下载http://www.python.org/ftp/python/2.5.1/python-2.5.1.msi。下载后双击,一直点下一步就可以顺利完成安装
2)下载GAE SDK
下载地址http://code.google.com/intl/zh-CN/appengine/downloads.html,选择Windows 1.3.0 - 2009-12-14 GoogleAppEngine_1.3.0.msi 下载(目前最新版本是1.3.0)。下载后双击一直点下一步可顺利安装,安装了上面两个程序,GAE的环境就建立好了。
三、上传程序(网站)
GAE空间不同于一般的空间(虚拟空间或vps空间或asp、php空间),一般的空间是点对点的上传,而GAE空间是点对群的上传,这里不细说区别,所以上传的方法就不一样。按下面的步骤来就明白了。
1)下载可以运行在GAE的网站程序,开源的程序有很多,博客类网站代表性的是micolog和cpedialog,CMS类的网站有GD-cms,这里就以GD-cms为例。
GD-cms下载地址
中文版http://cn.ziddu.com/download/445910/gae-django-cms-v1.2.3_cn.zip.html
英文版http://www.ziddu.com/download/7937180/gae-django-cms-v1.2.3_en.zip.html
下载后解压,注意不要放在含有中文或空格的路径里,为了方便就直接放在D盘的根目录下,如D:\\gae-django-cms,如下图
注意gae-django-cms这个文件夹名最好不要修改,如果要修改还得把run.bat和update.bat的路径改为对应的
2)把下载下来的gae-django-cms改为自己的网站,用文本编辑器打开app.yaml文件,可以用系统自带的记事本(有时用记事本打开只看到一行,就换用写字板打开)或写字板打开,在第一行application: 后面修改为自己刚才申请到的应用id,如下图
application: seo-cn
其它地方不要修改,直接保存即可
3)在自己电脑运行测试一下
只需双击run.bat文件,然后打开浏览器,在地址栏输入http://localhost:8080 或http://127.0.0.1:8080/注意,这里需要输入http://虽然你平时打开网站时不用输入它。如果以上过程没出错的话就可以看到如下图所示的网站页面。
这界面是英文的(这个网站是支持多国语言,默认为英文),下面把它变为中文,只需修改一个地方就可以,用记事本或写字板打开settings.py文件,找到这一行 USE_I18N = False #False(en)/True(cn)如下图
改为 USE_I18N = True #False(en)/True(cn)就可以,另外有一个地方也可以修改一下(再往下看几行就看到):DEFAULT_FROM_EMAIL = 'xxxxx@gmail.com'。把email改为自己的google邮箱,保存修改后再刷新一下http://localhost:8080 或http://127.0.0.1:8080/就看到中文界面了,如下图:
你可以把网站的logo改为自己的,logo所在的路径/themes/default/images/logo.gif。就暂时这样了,以后有时间再修改别的,可以上传到自己的GAE空间了
4)上传到GAE空间
只需双击 update.bat 文件,就会出现下图的黑框
在第一个地方输入自己刚才申请GAE用的邮箱,如果的邮箱是abcd@gmail.com就只需输入abcd就可以,敲回车键提示输入密码,好好的输入密码,输入密码时屏幕上没有显示,但它会记录的,输完敲回车键,如果密码正确就会出现下图正在上传的信息,如果输错就会让你重新输入邮箱和密码。
看到最后红圈里的文字就说明上传已经成功,(从上面的图可以看出,本次上传只上传了1个文件,其它文件GAE云计算里已经存在了,直接共享就可以,这就是GAE的好处,如果是一般的空间,一个主机有100个虚拟空间,假设这100个人都使用动网的论坛程序,那就得上传100份大部分文件相同的重复文件)。上传后就可以打开自己申请到的GAE网站http://seo-cn.appspot.com/,如下图:
这样,自己已经成功的把网站上传到GAE空间了……
四、给GAE绑定域名
如果你有自己的域名,又不太喜欢xxxxx.appspot.com的域名,就可以绑定自己的域名。在绑定域名前得申请一个免费的应用服务参考如何申请 Goolge Apps,企业级在线应用服务。打开Google App Engine主页http://appengine.google.com/,在页面右边输入你的email,如你的email是abcdef@gmail.com,就只需输入abcdef,输入密码点“sign in”按钮登录。点击左栏的Application Settings,看到页面如下图所示
点Add Domain按钮,接下来比较简单,按照提示操作即可,下面只贴图附简单说明
在上图位置先别点下一步,先到自己的域名控制面板添加一个CNAME,如下图:
回到自己的GAE控制面板,点下一步就出现下图提示
点我已经完成了这些步骤,看到下图
狼人2007
目录
热门文章
最新文章
为什么选择阿里云什么是云计算全球基础设施技术领先稳定可靠安全合规分析师报告产品和定价全部产品免费试用产品动态产品定价价格计算器云上成本管理解决方案技术解决方案文档与社区文档开发者社区天池大赛培训与认证权益中心免费试用高校计划企业扶持计划推荐返现计划支持与服务基础服务企业增值服务迁云服务官网公告健康看板信任中心关注阿里云关注阿里云公众号或下载阿里云APP,关注云资讯,随时随地运维管控云服务售前咨询:95187-1售后服务:400-80-13260法律声明及隐私权政策Cookies政策廉正举报安全举报联系我们加入我们阿里巴巴集团淘宝网天猫全球速卖通阿里巴巴国际交易市场1688阿里妈妈飞猪阿里云计算AliOS万网高德UC友盟优酷钉钉支付宝达摩院淘宝海外阿里云盘饿了么© 2009-2024 Aliyun.com 版权所有 增值电信业务经营许可证: 浙B2-20080101 域名注册服务机构许可: 浙D3-20210002 京D3-20220015浙公网安备 33010602009975号浙B2-20080101-4
Google App Engine_百度百科
le App Engine_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10Google App Engine播报讨论上传视频网络应用程序Google App Engine 是一种让您可以在 Google 的基础架构上运行您的网络应用程序。Google App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。使用 Google App Engine,将不再需要维护服务器:您只需上传您的应用程序,它便可立即为您的用户提供服务。中文名谷歌应用引擎外文名Google App Engine定 位网络应用程序易 于构建和维护增 长轻松扩展目录1详细介绍2应用程序环境3Sandbox4运行时环境5数据库6谷歌账户7服务8开发工作流程9限额和限制10设计11技术12应用13验证码14最新报道详细介绍播报编辑2008年4月7号,Google在Campfire One上介绍了一种简化创建、运行和构建伸缩性Web应用的工具——Google App Engine。简而言之,Google App Engine允许你本地使用Google基础设施构建Web应用,待其完工之后再将其部署到Google基础设施之上。这次发布的是没有包含全部特性的预览版,提供了一个配额系统,它限制了在预览期间应用免费可用的存储、CPU和带宽。一旦预览期结束,配额仍将免费,但是开发者需要按需购买额外资源。额外资源的价格尚未公布(甚至可能尚未确定)。预览版的配额包括:3个应用/开发者、500MB存储/应用、2000封邮件/天(连续24小时)、10 GB入站带宽、10 GB出站带宽、200M CPU兆周、650k HTTP请求、2.5M Datastore API调用和160k URL Fetch API调用。 [1]您可以使用 Google提供的免费域名(见扩展阅读)为您的应用程序提供服务,也可以使用 Google Apps 从您自己的域为它提供服务。您可以与全世界的人共享您的应用程序,也可以限制为只有您组织内的成员可以访问。您可以免费开始使用 App Engine。注册一个免费账户即可开发和发布您的应用程序以供全世界的人共享,而且不需要承担任何费用和责任。每个免费账户都可使用多达 500MB 的持久存储空间,以及可支持每月约 500 万页面浏览量的足够 CPU 和宽带。使用 Google App Engine 的试用版本期间,只可以使用免费账户。您很快就能够购买其他的计算资源。 App Engine提供了一个web应用运行的框架,App Engine应用程序易于运行、部属和扩展。App Engine不同于其他方案:App Engine不是网格计算—它不能运行任意的作业。它不提供物理主机但提供了打包代码上传的方式。用户在只需要在代码中指定了response和request,剩下的运行和部署的任务就交给了App Engine。用户不需要预留资源,例如RAM、CPU或者诸如此类。Google App Engine是Google提供的可扩展系统上构建网络应用程序。每个Google App Engine应用程序都可使用多达500MB的持久存储空间以及可支持每月500万综合浏览量的足够带宽和CPU。目前每个用户可以免费创建十个应用。Google App Engine可让您在Google的基础架构上运行您的网络应用程序。App Engine应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。使用Google App Engine,将不再需要维护服务器:您只需上传您的应用程序,它便可立即为您的用户提供服务。 [2]应用程序环境播报编辑通过 Google App Engine,即使在重载和数据量极大的情况下,也可以轻松构建能安全运行的应用程序。该环境包括以下特性:动态网络服务,提供对常用网络技术的完全支持持久存储有查询、分类和事务自动扩展和载荷平衡用于对用户进行身份验证和使用 Google 账户发送电子邮件的 API一种功能完整的本地开发环境,可以在您的计算机上模拟 Google App Engine当前,Google App Engine官方正式 支持 Python 语言、 JAVA 语言、Go语言和PHP语言,而对应perl的开发工作,Google的开发小组也正在进行。虽然,Google App Engine支持的语言并不多,但是,借助强大的JAVA语言的Java Scripting Engine功能,实际上很多脚本语言都可以在Google App Engine上运行,例如Scala、Groovy、JavaScript、PHP、JRuby等等。Sandbox播报编辑在安全环境中运行的应用程序,仅提供对基础操作系统的有限访问权限。这些限制让 App Engine 可以在多个服务器之间分发应用程序的网络请求,并可以启动和停止服务器以满足访问量需求。Sandbox 将您的应用程序隔离在它自己的安全可靠环境中,该环境与网络服务器的硬件、操作系统和物理位置无关。安全 Sandbox 环境的限制实例包括:应用程序只能通过提供的网址获取和电子邮件服务和 API 访问互联网中的其他计算机。其他计算机只能通过在标准端口上进行 HTTP(或 HTTPS)请求来连接至该应用程序。应用程序无法向文件系统写入。应用程序只能读取通过应用程序代码上传的文件。该应用程序必须使用 App Engine 数据库存储所有在请求之间持续存在的数据。应用程序代码仅在响应网络请求时运行,且必须在几秒钟内返回响应数据。请求处理程序不能在响应发送后产生子进程或执行代码。运行时环境播报编辑App Engine 提供了一个使用 Python 编程语言的运行时环境。将来的版本将考虑使用其他编程语言和运行时环境配置。Python 运行时环境使用 Python 2.5.2 版。该环境包括 Python 标准库。当然,您无法调用违反了 Sandbox 限制的库方法,例如尝试打开套接字或向文件写入。方便起见,其主要功能不受该运行时环境支持的标准库中的多个模块已被禁用,而导入这些模块的代码将发生错误。应用程序代码只能以 Python 编写。具有用 C 编写的扩展的代码不受支持。Python 环境为数据库、Google 账户、网址获取和电子邮件服务提供了丰富的 Python API。App Engine 还提供了一个称为 webapp 的简单 Python 网络应用程序框架,从而可以轻松开始构建应用程序。方便起见,App Engine 还包括 Django 网络应用程序框架 0.96.1 版。请注意,App Engine 数据库不是某些 Django 组件所需的关系数据库。某些组件(例如 Django模板引擎)按照文档化的程序工作,而其他组件则需要做更多工作。有关将 Django 与 App Engine 一起使用的提示,请参阅文章部分。只要这些库是完全使用 Python 实现并且不需要任何不受支持的标准库模块,您就可以使用您的应用程序上传其他第三方库。有关 Python 运行时环境的详细信息,请参阅 Python 运行时环境。数据库播报编辑App Engine 提供了一个强大的分布式数据存储服务,其中包含查询引擎和事务功能。就像分布式网络服务器随访问量增加一样,该分布式数据库也会随数据而增加。数据库的 Python API 包括一个可以定义数据库实体结构的数据建模界面。数据模型可以指示属性值必须位于给定范围内,如果未给定任何范围,还可以提供默认值。您的应用程序可以根据需要向数据提供或多或少的结构。数据库使用乐观锁定进行并发控制。如果有其他进程尝试更新某实体,而同时该实体位于以固定次数进行重新尝试的事务中,此时该实体将更新。应用程序可以在一个事务中执行多项数据库操作(全部成功或者全部失败),从而确保数据的完整性。数据库通过其分布式网络使用“实体组”实现事务。一个事务操作一个组内的实体。同一组的实体存储在一起,以高效执行事务。应用程序可以在实体创建时将实体分配到组。有关数据库的详细信息,请参阅数据库 API 参考。谷歌账户播报编辑App Engine 包括用于与 Google 账户集成的服务 API。应用程序使用户可以通过 Google 账户登录,并可以访问与该账户关联的电子邮件地址和可显示的名称。使用 Google 账户使用户可以更快地开始使用您的应用程序,因为用户可以不需要创建新账户了。Google 账户还省去只为您的应用程序执行用户账户系统的麻烦。如果您的应用程序正在 Google Apps 下运行,则它可以与您组织的成员和 Google Apps 账户成员使用相同的功能。用户 API 还可告知应用程序当前用户是否是应用程序的注册管理员。这样便可以轻松实现您站点上仅用于管理的区域。有关与 Google 账户集成的详细信息,请参阅用户 API 参考。服务播报编辑App Engine 提供了多种服务,从而使您可以在管理应用程序的同时执行常规操作。提供了以下 API 以访问这些服务:网址获取应用程序可以使用 App Engine 的网址获取服务访问互联网上的资源,例如网络服务或其他数据。网址获取服务使用用于为许多其他 Google 产品检索网页的高速 Google 基础架构来检索网络资源。有关网址获取服务的详细信息,请参阅网址获取 API 参考。邮件应用程序可以使用 App Engine 的邮件服务发送电子邮件。邮件服务使用 Google 基础架构发送电子邮件。有关邮件服务的详细信息,请参阅邮件 API 参考。MemcacheMemcache 服务为您的应用程序提供了高性能的内存键值缓存,您可通过应用程序的多个实例访问该缓存。Memcache 对于那些不需要数据库的永久性功能和事务功能的数据很有用,例如临时数据或从数据库复制到缓存以进行高速访问的数据。有关 Memcache 服务的详细信息,请参阅 Memcache API 参考。图片操作图片服务使您的应用程序可以对图片进行操作。使用该 API,您可以对 JPEG 和 PNG 格式的图片进行大小调整、剪切、旋转和翻转。有关图片操作服务的详细信息,请参阅图片 API 参考。开发工作流程播报编辑App Engine 软件开发套件 (SDK) 包括可以在您的本地计算机上模拟所有 App Engine 服务的网络服务器应用程序。该 SDK 包括 App Engine 中的所有 API 和库。该网络服务器还可以模拟安全 Sandbox 环境,包括检查是否存在禁用模块的导入以及对不允许访问的系统资源的尝试访问。Python SDK 完全使用 Python 实现,可以在装有 Python 2.5 的任何平台上运行,包括 Windows、Mac OS X 和 Linux。您可以在 Python 网站上获得适用于您的系统的 Python。该 SDK 以 Zip 文件提供,安装程序可用于 Windows 和 Mac OS X。该 SDK 还包括可将您的应用程序上传到 App Engine 的工具。创建了您应用程序的代码、静态文件和配置文件后,即可运行该工具上传数据。该工具会提示您提供 Google 账户电子邮件地址和密码。构建已在 App Engine 上运行的应用程序的新主要发行版时,可以将新发行版作为新版本上传。在您改为使用新版本之前,旧版本可以继续为用户提供服务。可以在仍运行旧版本的同时在 App Engine 上测试新版本。管理控制台是基于网络的界面,用于管理在 App Engine 上运行的应用程序。您可以使用它创建新应用程序、配置域名、更改您的应用程序当前的版本、检查访问权限和错误日志以及浏览应用程序数据库。限额和限制播报编辑创建 App Engine应用程序不仅简单,而且是免费的!您可以创建账户,然后发布一个应用程序,用户无需承担任何费用和责任即可立即使用该应用程序。通过免费账户获得的应用程序可使用多达 500MB 的存储空间和多达每月 500 万的页面浏览量。此试用时间内,仅提供免费账户。您很快就能够以有竞争力的市场价格购买其他的计算资源。试用期过后,免费账户可继续使用。此试用期间,最多可注册 3 个应用程序。应用程序资源限制(“限额”)会不断刷新。如果您的应用程序达到基于时间的限额(例如宽带),则该限额将以给定限制的比率立即开始刷新。固定限额(例如存储使用量)仅在降低使用量时才会减小。有些功能会施加与限额无关的限制,以保护系统的稳定性。例如,当调用某应用程序以为网络请求提供服务时,该应用程序必须在几秒钟内发出响应。如果该应用程序花费的时间过长,则进程将被终止并且服务器将向用户返回错误代码。响应超时是动态的,如果请求处理程序经常达到其超时,则可以缩短请求超时以节省资源。服务限制的另一实例是查询返回的结果数。一个查询最多可返回 1,000 条结果。要返回更多结果的查询只能返回该最大值。在这种情况下,执行这种查询的请求不可能在超时前返回请求,但限制仍存在以节省数据库上的资源。试图破坏或滥用限额(例如同时在多个账户上操作应用程序)违反服务条款,并可能导致应用程序被禁用或账户关闭。设计播报编辑首先,在编程方面,Datastore是基于"Entity(实体)"这个概念,而且Entity和"对象"这个概念比较类似,同时Entity可以包括多个Property(属性),Property的类别有整数,浮点和字符串等,比如,可以设计一个名为"Person"的Entity,它包含名为"Name"的字符串Property和名为"Age"的整数Property。由于Datastore是"Schema-less"的,所以数据的Schema都由应用维护,而且能非常方便地对一个Entity所包含的属性进行增删和修改。在存储方面,一个Entity的实例可以被认为是一个普通的"Row(行)",而包含所有这种Entity的实例的Table被称为Kind,比如,所有通过"Person"这个Entity生成实例,比如小吴,小朱和小华等,它们都会存放在同一个名为"Person"的Kind中。在结构方面,虽然也能通过特定的方式在Datastore中实现关系型结构,但是Datastore在设计上是为层次(Hierarchical)性结构"度身定做"的,有Root Entity和Child Entity之分,比如,可以把"Person"作为Root Entity(父实体),"Address"作为"Person"的Child Entity,两者合在一起可以称为一个"Entity Group"。这样做的好处是能将这两个实体集中一个BigTable本地分区中,而且能对这两个实体进行本地事务。 [3]下表为Datastore和传统的关系型数据库之间的比较:-Datastore关系型数据库SQL支持只支持一些基本的查询全部支持主要结构层次(Hierarchical)关系Index部分可自动创建手动创建事务只支持在一个Entity Group内执行支持平均执行速度(ms)低于200低于100扩展型非常好很困难,而且需要进行大量的修改表1. Datastore和关系型数据库之间的比较总体而言,Datastore在设计理念上和传统的关系型数据库有很大的不同,所以其在反应速度和写数据方面不是最优的,但是如今Web应用以读为主,而且需要能通过简单的扩展就能支持其海量的数据,而这两点却是Datastore所擅长,所以Datastore非常适合支撑Web应用。技术播报编辑尽管Google说‘未来将支持更多的语言’,但是当前技术栈是基于Python的,它是Google认同的语言之一。出于安全和伸缩性的目的,Google提供了一个运行在安全沙箱中的Python运行时环境,它提供对底层操作系统有限制的访问。该环境包括标准库,并可通过模 块进行扩展,编写模块的语言当前不支持C语言。该环境包括Python标准库。当然,调用那些违反沙箱限制的库方法(如打开socket或写文件)将不会成功。为了方便起见,几个核心特性不被支持的标准库中的模块被禁用了。那些引入它们的代码会出错。应用代码只能用Python书写。不支持使用C来编写扩展。其他安全限制包括:出站通信(outbound communication)只能通过所提供的邮件和URL fetch API进行,通过HTTP和HTTPS作为传输的入站通信(inbound communication)使用标准端口,禁止文件系统写操作和禁止子进程或代码在请求/响应循环外执行(例如后台操作和批操作)。此外,Google提供了访问一个Datastore、Google用户账号、URL fetch和邮件服务的API。App Engine还包括一个简化的Web应用框架和Django 0.96.1,尽管App Engine Datastore不是关系型的,而且也不能使用全部的Django API。Datastore API背后由Google的BigTable支持,但是它与一个简单的对象持久化API(或一个对象关系映射框架,即使Google强调这个Datastore不是关系型的)有很多相同之处。 [1]应用播报编辑1、Google App Engine空间Google App Engine也就是GAE,是Google推出的一款网络运用程序,也是个免费虚拟主机空间,其实这比一般虚拟主机强悍的多,你可以利用Google App Engine工具来开发网站或制作网络应用程序,Google会在自己的庞大服务器集群上为你提供空间、带宽、资源等。Google App Engine对全球开发者免费开放使用,你可以充分利用Google的提供的免费空间、免费数据库、免费二级域名等来展示你开发的应用程序,提供给全球的用户下载和使用。只要你有一个Google账号就可以在Google App Engine上注册和开通一个免费账号,免费账号允许你创建25个应用 [1],每一个应用提供1GB的容量,月流量是60GB(传出带宽是1GB/天,传入带宽1GB/天)。 [4]验证码播报编辑Google App Engine应用需要验证手机,这一验证主要是为了防止Google App Engine应用被滥用。在使用Google App Engine应用时,部分移动或者联通的手机无法接受到验证码短信(SMS),又无法更换手机申请,那么我们怎么处理呢?还好,谷歌的服务总是从顾客的角度出发的,如果你收不到验证码短信(SMS),那么可以填写申请表单来实现。 [5]最新报道播报编辑谷歌2008年推出App Engine帮助外部开发人员在谷歌数据中心和服务器网络上开发和运行程序,从而正式进军公共云计算领域,与在该行业占据领先地位的亚马逊展开竞争。云计算提供商通常互相竞争,希望尽可能多的客户使用自己的数据中心。但在周二,谷歌宣布与初创企业AppScale合作,允许App Engine上的应用程序不经修改即可在其他云服务器或公司自有数据中心和服务器上运行。谷歌的这一举措使得开发人员有可能通过App Engine开发应用程序,然后拿到其他云服务提供商那里运行。不过谷歌云平台全球解决方案主管Miles Ward称,上述举措将帮助公司吸引更多云客户,尤其是碍于所谓“云割据”规定、无法按惯常方式在某些国家提供应用程序和网页服务的情况下。 [6]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000图自编码器(GAE) - 知乎
图自编码器(GAE) - 知乎首页知乎知学堂发现等你来答切换模式登录/注册图自编码器(GAE)暂无话题描述关注话题管理分享讨论精华视频等待回答切换为热门排序论文笔记:SeeGera: Self-supervised Semi-implicit Graph VariationalAuto-encoders with Maskingsuijiao摘要生成图自监督学习(SSL)旨在通过重构输入图数据来学习节点表示。然而,大多数现有的方法只专注于无监督学习任务,很少有工作表明其优于最先进的图对比学习(GCL)模型,特别是在节点分类任务。虽然最近提出了一种模型GraphMAE来弥合差距,但其在无监督学习任务中的性能仍然未知。在本文中,为了全面提高生成图SSL在无监督和监督学习任务中相对于其他GCL模型的性能,我们提出了SeeGera模型,该模型基于自监督变分图自动编码…阅读全文赞同 1添加评论分享收藏图检测一些算法-阅读记录1所谓远行心中栽桃树,灼灼映桃花.图神经网络(Graph Neural Networks,GNNs)是一种专门用于处理图形结构数据的神经网络。在近年来,随着深度学习技术的快速发展,图神经网络也得到了广泛的研究和应用。例如在检测和异常检测方面有一些, 1、scan(2007)用于检测网络中的社区、桥节点和离群点。它基于结构相似性度量对顶点进行聚类。该算法特点是:速度快,效率高,每个顶点只访问一次。 Scan 2、GAE(2016)论文地址: GAE 代码地址: vgae_pytorch 论文阅读记录:理…阅读全文赞同添加评论分享收藏Variational Graph Auto-Encoders,变分图自编码器Ashore慢慢来![图片] Variational Graph Auto-Encoders codes 变分图自编码器(VGAE)是一种基于变分自编码器的图结构数据上的无监督学习框架。VGAE利用潜在变量,学习无向图的可解释i安在表示,如下图: [图片] 定义给定无向无权图 [公式] , [公式] 个节点, [公式] 的邻接矩阵为 [公式] ,其对角线元素为1,即每个节点指向自身,度矩阵记为 [公式] 。进一步引入随机潜变量 [公式] ,表示为 [公式] 矩阵 [公式] ,节点特征为 [公式] 矩阵 [公式] 。 [图片] 推理模型(Encoder)采用两层GC…阅读全文赞同 8添加评论分享收藏【论文精读】S2GAE: Self-Supervised Graph Autoencoders Are Generalizable Learners with Graph Masking张三岁life-long learner文章首发于paperweekly公众号论文:S2GAE: Self-Supervised Graph Autoencoders Are Generalizable Learners with Graph Masking 作者:Qiaoyu Tan, Ninghao Liu, Xiao Huang, Soo-Hyun Choi, Li Li, Rui Chen, Xia Hu 来源:WSDM2023 Background自监督学习(SSL Self-supervised learning)已经在自然语言处理(NLP)和计算机视觉(CV)领域进行了广泛研究,用来提高模型的通用性。最近,越来越多的研究也致力于探索在图(graph)上的自…阅读全文赞同 141 条评论分享收藏AE for graphs 新秀:图掩蔽自编码器 MGAE, MaskGAE & GraphMAENewiz对数学单相思的 HUST-CS 渣硕MGAE: Masked Autoencoders for Self-Supervised Learning on Graphs 团队:Texas U&M University & Samsung Research AmericaarXiv:2201.02534 无源码(edit: 本文已中 WSDM '23:S2GAE: Self-Supervised Graph Autoencoders are Generalizable Learners with Graph Masking ,内容有更新,源码 )MaskGAE: Masked Graph Modeling Meets Graph Autoencoders 团队:Sun Yat-sen University & Ant GrouparXiv:2205.10053 源码 (edit: …阅读全文赞同 5119 条评论分享收藏图神经网络论文笔记8:Inference Attacks Against Graph Neural NetworkszyliangOOD / GNN / 25Fall这篇文章提出了三种针对图嵌入的攻击,分别为:属性推理攻击(推断目标图的基本图属性)、子图推理攻击(推断目标图是否包含给定的子图)、图重构攻击(重构一个图结构信息与目标图相似的图)。此外,作者还提出了一种基于图嵌入扰动的有效防御机制,可以在不显著降低图分类任务性能的情况下有效应对此类攻击。 在介绍攻击方法前,作者简单聊了一下图池化。图池化主要分为全局池化与分层池化,由于使用前者并不能充分利用图上的…阅读全文赞同 7添加评论分享收藏NeurIPS 2016 | VGAE:变分图自编码器Cyril-KI快手 员工前言 [图片] 题目: Variational Graph Auto-Encoders 会议: NeurIPS 2016 论文地址:Variational Graph Auto-Encoders 自编码器在图领域有着很多的用途,其本质就是编码器获取节点的高级向量表示,然后解码器利用高级向量表示来重建图结构。这篇文章主要介绍Kipf和Welling提出的变分图自编码器模型VGAE,在介绍VGAE之前,首先需要介绍GAE,即图自编码器。 1. GAEGAE,即Graph Auto-Encoders,图自编码器。 1.1 变量定义图 [公式]阅读全文赞同 192 条评论分享收藏论文阅读(6)——用于多视图图聚类的One2 Multi 图形自编码器——One2Multi Graph Autoencoder for Multi-view Graph Clustering南宫满堂花醉三千客,一剑霜寒十四摘要:多视图图聚类,对多个视图进行分类。目前大多采用浅层模型处理图的内部复杂关系,严重限制多视图信息的建模能力。本文首次尝试将深度学习技术用于属性多视图图聚类,并提出一种新颖的任务引导的One2Multi图自动编码器聚类框架,通过使用一个信息丰富的图形视图和内容数据来重建多个图形视图来学习节点嵌入,因此可以很好的捕捉多个图的共享特征表示。提出一种自我训练的聚类目标,以迭代改进聚类结果。通过将自训练和自动编…阅读全文赞同 5添加评论分享收藏VGAE的重构损失里面的交叉熵的对应的target,到底是一个概率还是一个随机变量取值?余雷嵌入式软件测试。x.view(-1,784)不是图像28*28个像素点吗?每个值要么为0 ,要么为1啊阅读全文赞同添加评论分享收藏喜欢变分自编码器(VAE)与变分图自编码器(VGAE)zs1996风控算法工程师/篮球boy这篇文章分享下生成模型变分自编码器(VAE)与变分图自编码器(VGAE)的学习笔记。 一、变分自编码器(VAE)1.VAE相对AE的优势AE(Auto-Encoder)主要的作用是降维,获取低维的隐向量;而VAE是生成模型,给隐向量添加了噪声,使得隐向量的编码区域由离散变为连续,扩大了编码区域,减少了隐向量空间的失真点。 [图片] [图片] 2.利用变分推断得到对数似然下界 [图片] 假设变量X由隐变量Z生成,而Z未知,则X的对数似然可以写为: [公式]阅读全文赞同 6添加评论分享收藏图自编码器的链路预测任务: 疾病-基因的相互作用Bruce帝国理工学院 设计工程博士在读图 (可选) 熟悉的读者可以直接跳过该章节. 在我们深入图神经网络之前, 我们得先定义一张图. 一般来说, 一张图可以被考虑为是节点和边的集合: [公式] . 为了在一张图中表示节点之间是如何连接的, 我们通常使用邻接矩阵 [公式] , 它是一个维度为 [公式] 的方阵. 在无向图中, 对于邻接矩阵的每一项都有 [公式] (如果 [公式] 与 [公式] 间存在一条边), 否则为0. [图片] 在实际的数据中, 大部分的图都是 稀疏的 (sparse), 意味着邻接…阅读全文赞同 2619 条评论分享收藏PyG应用: 教程(六) 图自编码器与变分图自编码器Bruce帝国理工学院 设计工程博士在读自编码器 (Autoencoder)首先让我们回忆一下深度神经网络是干什么的? 它从数据中学习重要的特征, 这些特征允许我们在某些数据上进行某个的任务, 比如分类, 回归, 泛化等等. 通过自编码器 (Autoencoder), 我们可以 "压缩" 输入数据以进行高效地学习, 比如我们有一些文档, 我们想要 "压缩" 文档到一个低维度的向量; 又或者我们有很多张图, 我们提取图的特征到一个低维度向量. [图片] 自编码器以 无监督 (unsupervised) 的形式工作, 也就是…阅读全文赞同 5218 条评论分享收藏GNN业界调研概述勤劳的数据搬运工京东商城 算法工程师1.调研目的 gnn近来在业界不同方向的研究上都有很多的进展和新的发现,先对gnn业界的整体发展进行一个梳理和分类,帮助大概了解整个领域的现状,以期望在已有的发展方向基础上再探索一些新的工作 2.当前gnn的大致分类和代表性方法描述序号类型描述1Graphe RNN包含有node-wise RNN和graphe-wise RNN两部分,通过时序记忆模型利用图拓扑结构构建节点之间或者动态图的节点和边语义的信息变化2GNN图卷积主要分为spatial类(按照空间…阅读全文赞同 8添加评论分享收藏图自编码器不划分训练集和测试集后效果很差?李斯特没什么本事……修改,问题解决,和模型没有关系,networkx 的adjacency matrix返回邻接矩阵的节点顺序默认是读取图的时候读入节点的顺序,所以在用readedgelist读入图后使用adjacency_matrix得到的邻接矩阵的节点顺序不是理想的按索引由小到大的,因此k-means分类得到的结果其实和节点对不上。 建议写成类似nx.adjacency_matrix(g, nodelist=sorted(g.nodes))这样以保证节点顺序。 -------------------------------------- 提问者的补充 我注释…阅读全文赞同 26 条评论分享收藏喜欢浏览量11.2 万讨论量65 帮助中心知乎隐私保护指引申请开通机构号联系我们 举报中心涉未成年举报网络谣言举报涉企虚假举报更多 关于知乎下载知乎知乎招聘知乎指南知乎协议更多京 ICP 证 110745 号 · 京 ICP 备 13052560 号 - 1 · 京公网安备 11010802020088 号 · 京网文[2022]2674-081 号 · 药品医疗器械网络信息服务备案(京)网药械信息备字(2022)第00334号 · 广播电视节目制作经营许可证:(京)字第06591号 · 服务热线:400-919-0001 · Investor Relations · © 2024 知乎 北京智者天下科技有限公司版权所有 · 违法和不良信息举报:010-82716601 · 举报邮箱:jubao@zhihu.
如何在 Google App Engine 上托管你的网站? - 学习 Web 开发 | MDN
Google App Engine 上托管你的网站? - 学习 Web 开发 | MDNSkip to main contentSkip to searchSkip to select languageMDN Web DocsOpen main menuReferencesReferencesOverview / Web TechnologyWeb technology reference for developersHTMLStructure of content on the webCSSCode used to describe document styleJavaScriptGeneral-purpose scripting languageHTTPProtocol for transmitting web resourcesWeb APIsInterfaces for building web applicationsWeb ExtensionsDeveloping extensions for web browsersWeb TechnologyWeb technology reference for developersGuidesGuidesOverview / MDN Learning AreaLearn web developmentMDN Learning AreaLearn web developmentHTMLLearn to structure web content with HTMLCSSLearn to style content using CSSJavaScriptLearn to run scripts in the browserAccessibilityLearn to make the web accessible to allPlusPlusOverviewA customized MDN experienceAI Help (beta)Get real-time assistance and supportUpdatesAll browser compatibility updates at a glanceDocumentationLearn how to use MDN PlusFAQFrequently asked questions about MDN PlusCurriculumNewBlogPlayAI Help BetaSearch MDNClear search inputSearchThemeLog inSign up for free学习 Web 开发常见问题工具和安装如何在 Google App Engine 上托管你的网站?Article Actions中文 (简体)此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。Filter sidebarClear filter inputIn this article创建一个谷歌云平台项目创建一个应用 (application)发布你的应用更多信息Web 机制Web 机制互联网是如何工作的网页,网站,网络服务器和搜索引擎的区别是什么?什么是超链接?什么是域名?什么是 URL?什么是 web 服务器?工具和安装工具和安装什么文本编辑器比较好用?如何确保你的网站正常运行?如何在 Google App Engine 上托管你的网站?在互联网上做一件事要花费多少?如何设置一个本地测试服务器?如何将文件上传到 web 服务器应该如何使用 Github Pages?什么是浏览器开发者工具?我需要什么软件来构建一个网站设计与无障碍设计与无障碍常见 web 布局都包含什么?我该怎样开始设计我的网站?何为无障碍?
In this article创建一个谷歌云平台项目创建一个应用 (application)发布你的应用更多信息如何在 Google App Engine 上托管你的网站?Google App Engine 是一个功能强大的平台,它能让你在谷歌的 infrastructure 上构建并运行应用,你可以在这上面:从头构建多层 WEB 应用,或建立一个静态网站。
接下来是手把手入门的教程:创建一个谷歌云平台项目为了在你自己的网站或者 app 使用谷歌的工具,你需要在谷歌云平台上创建一个新项目 ( a new project ) 当然,需要谷歌账号。
打开谷歌云平台控制台(Google Cloud Platform Console),再打开 App Engine dashboard 页面 并点击 Create .
如果从未创建过项目 (project),会提示你是否选择接收邮箱升级,并需要同意团队服务条款才能继续。
键入项目名,并编辑项目 ID(请记下你的项目 ID)
本教程的示例值:
Project Name: GAE Sample Site
Project ID: gaesamplesite
点击 Create 以创建工程
创建一个应用 (application)每个云平台项目都可以包含一个 APP 引擎应用,所以我们来为自己的项目准备一个 app
我们需要一个样例应用来发布。如果你还没有,请下载 sample app 并解压。
看一下这个样例应用的结构—website文件夹包括你的网站内容,app.yaml文件是你的应用配置文件
你的网站内容必须放在website文件夹下,并且入口文件必须取名为index.html,其他部分可以自行定义。
app.yaml 文件是一个配置文件,它高速应用引擎怎么映射 UR 到你的静态文件,你不需要编辑它。
发布你的应用现在我们已经制作了我们的项目并将示例应用程序文件收集在一起,下面发布应用程序。
打开Google Cloud Shell.
把 sample-app目录拖拽到代码编辑器左边
在命令行中键入如下命令选择你的项目:
bashgcloud config set project gaesamplesite
键入如下命令 进入到 app 的 目录:
bashcd sample-app
你现在可以部署应用程序,即将应用程序上传到 App Engine:
bashgcloud app deploy
输入一个数字以选择你希望应用程序所在的区域。.
键入 Y 确认。
现在你可以在浏览器中访问你的站点了,比如对于项目 ID 是gaesamplesite 的网站, go 输入 gaesamplesite.appspot.com访问。
更多信息请访问Google App Engine Documentation.Help improve MDNWas this page helpful to you?YesNoLearn how to contribute.This page was last modified on 2023年9月8日 by MDN contributors.View this page on GitHub• Report a problem with this contentMDN logoYour blueprint for a better internet.MDN on MastodonMDN on X (formerly Twitter)MDN on GitHubMDN Blog RSS FeedMDNAboutBlogCareersAdvertise with usSupportProduct helpReport an issueOur communitiesMDN CommunityMDN ForumMDN ChatDevelopersWeb TechnologiesLearn Web DevelopmentMDN PlusHacks BlogMozilla logoWebsite Privacy NoticeCookiesLegalCommunity Participation GuidelinesVisit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.Portions of this content are ©1998–2024 by individual mozilla.org contributors. Content available under a Creative Commons licen
【强化学习技术 28】GAE - 知乎
【强化学习技术 28】GAE - 知乎首发于强化学习前沿切换模式写文章登录/注册【强化学习技术 28】GAE张海抱清华大学 计算机科学与技术博士全称是generalized advantage estimator,几乎所有最先进的policy gradient算法实现里面都使用了该技术。原文传送门Schulman, John, et al. "High-dimensional continuous control using generalized advantage estimation." arXiv preprint arXiv:1506.02438 (2015).特色这篇文章介绍了一种能够广泛适用的advantage的估计方法,所估计的advantage应用在策略梯度类方法里面能够有效减小梯度估计的方差,从而降低训练所需要的样本。该方法一经发明之后广泛地被应用到各种最先进的强化学习算法实现中。过程1. 策略梯度的估计策略梯度的估计有多种不同的形式,下面列出的这些形式都是无偏估计(注意到Q、V、A都是准确的),但有着不同的方差,其中advantage(第4种或者第6种)几乎有最小的方差。2. 引入参数 \gamma 的策略梯度估计其实这里引入的参数 \gamma 的形式和discount rate一样,只不过这里把它当做一种参数。注意到这里的 g^\gamma 相对于前面的 g 是有偏的。不过在大多数的带有discount rate的强化学习问题里面,实际上也是以discounted cumulative reward为目标的,相应的策略梯度估计就是这里的这种。接下来文中给出了\gamma -just 的定义,其实就是说找到 A^{\pi,\gamma} 的一个估计 \widehat{A}_t ,使得用这个估计来计算得到的梯度估计期望不变。如下的这些估计都是\gamma -just的3. GAE文章提出一种generalized advantage estimator,定义如下\widehat{A}_t^{GAE(\gamma, \lambda)} = \sum_{l=1}^\infty (\gamma \lambda)^l \delta_{t+l}^V = \sum_{l=1}^\infty (\gamma \lambda)^l (r_t + \gamma V(s_{t+l+1}) - V(s_{t+l})) 它具有如下性质:GAE(\gamma, 1) : \widehat{A}_t = \sum_{l=1}^\infty \gamma^l r_{t+l} - V(s_t) ,右边第一项的期望就是 Q^\pi (无偏地),后面相当于是个baseline,因此它不管 V(s_t) 估计的准不准,都是\gamma -just的。GAE(\gamma, 0) : \widehat{A}_t = \delta_t = r_{t} + \gamma V(s_{t+1}) - V(s_t) ,仍然可以把最后一项看做baseline,但是当V(s_t)估计地不准的时候,前面两项的期望就和Q^\pi不一致了;因此仅当 V = V^\pi 时,它才是 \gamma -just的。个人理解,要想方差更小,就需要 \gamma 和 \lambda 较小,因为它们较小的时候会更多地考虑较近的奖励而降低了很远的奖励的影响。但是较小的\gamma 和 \lambda 都会引入额外的偏差;其中 \gamma 控制了 g 到 g^\gamma 之间的偏差, \lambda 控制了 \widehat{A}_t^{GAE(\gamma, \lambda)} 到 A^{\pi, \gamma} 之间的偏差。4. 与reward shaping的关系在专栏前面的文章里面讲了potential-based reward shaping一个自然的想法就是使用估计到的 V(s) 来作为这个势能,同时为了避免很远的奖励带来的噪声,加上一个更快的衰减,自然就得到了前面定义的GAE由此可以看出,GAE是就是一种reward shaping的应用,用来估计一个更instructive的value function。5. 其他后面的实验作者就是把GAE用在了TRPO上面,事实上GAE版本的TRPO和PPO已经是baselines里面的标准版本了。Ps. 在草稿箱里面存了好长时间,终于写出来了。编辑于 2019-03-14 15:47机器学习技术强化学习 (Reinforcement Learning)赞同 22326 条评论分享喜欢收藏申请转载文章被以下专栏收录强化学习前沿我们的目标是通用人工
图卷积(变分)自编码器(GAE and VGAE) - 派大星1号 - 博客园
图卷积(变分)自编码器(GAE and VGAE) - 派大星1号 - 博客园
会员
周边
新闻
博问
AI培训
云市场
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式 ...
退出登录
注册
登录
zyx423
博客园
首页
新随笔
联系
订阅
管理
图卷积(变分)自编码器(GAE and VGAE)
本文介绍了自编码器(AE),变分自编码器(VAE)图自编码器(GAE)和变分图自编码器(VGAE)的基本原理,以及说明了如何使用这四种方法应用到下游任务:分类,聚类,可视化等。
自编码器是无监督学习领域中一个非常重要的工具。最近由于图神经网络的兴起,图自编码器得到了广泛的关注。笔者最近在做相关的工作,对科研工作中经常遇到的:图自编码器(GAE)和图变分自编码器(VGAE)进行了总结。如有不对之处,请多多指正。
自编码器(AE)
在解释图自编码器之前,首先理解下什么是自编码器。自编码器的思路来源于传统的PCA,其目的可以理解为非线性降维。我们知道在传统的PCA中,学习器学得一个子空间矩阵,将原始数据投影到一个低维子空间,从未达到数据降维的目的。自编码器则是利用神经网络将数据逐层降维,每层神经网络之间的激活函数就起到了将"线性"转化为"非线性"的作用。自编码器的网络结构可以是对称的也可以是非对称的。我们下面以一个简单的四层对称的自编码器为例,全文代码见最后。
(严格的自编码器是只有一个隐藏层,但是我在这里做了个拓展,其最大的区别就是隐藏层以及神经元数量的多少,理解一个,其它的都就理解了。)
图自编码器(GAE)
图自编码器和自编码器最大的区别有两点:一是图自编码器在encoder过程中使用了一个 \(n*n\) 的卷积核;另一个是图自编码器没有数据解码部分,转而代之的是图解码(graph decoder),具体实现是前后邻接矩阵的变化做loss。
图自编码器可以像自编码器那样用来生成隐向量,也可以用来做链路预测(应用于推荐任务)。
变分自编码器(VAE)
变分自编码是让中间层Z服从一个分布。这样我们想要生成一个新的样本的时候,就可以直接在特定分布中随机抽取一个样本。另外,我初学时遇到的疑惑,就是中间层是怎么符合分布的。我的理解是:
输入样本:\(\mathbf{X \in \mathcal{R}^{n * d}}\)
中间层 :\(\mathbf{Z \in \mathcal{R}^{n * m}}\)
所谓的正态分布是让\(Z\)的每一行\(z_i\)符合正态分布,这样才能随机从正态分布中抽一个新的\(z_i\)出来。
变分图自编码器(VGAE)
如果你理解了变分比编码器和图自编码器,那么变分图自编码器你也就能理解了。第一个改动就是在VAE的基础上把encoder过程换成了GCN的卷积过程,另一个改动就是把decoder过程换成了图decoder过程。
我在示例代码中,将这四种方法应用到下游任务中:聚类,分类,可视化。数据集和下游任务的代码见: https://github.com/zyx423/GAE-and-VGAE.git
posted @
2020-06-09 21:54
派大星1号
阅读(12150)
评论(2)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面返回顶部
公告
Copyright © 2024 派大星1号
Powered by .NET 8.0 on Kubernetes