Paper | Method | Explanation |
---|---|---|
VAE | Gaussian Encoder —> mean, std extract —> latent z sampling —> Bernoulli decoder —> train by loss |
최종 Loss = cross entropy + KL divergence = reconstruction error + regularization
Minimize reconstruction error = Maximize the probability of reconstruction = probability of x given that latent z (decoder) | Autoencoder에서는 latent vector를 뽑는 것이 목표기 때문에 encoder가 중요파트 하지만 VAE에서는 decoder가 중요파트 Encoder를 통해 바로 latent Z를 뽑는 것이 아닌 mean, std를 뽑고 Gaussian을 가정한 다음 sampling을 통해 z를 정의한다. 그 z를 가지고 bernoulli를 가정하고 decoder로 뽑은 결과물의 cross entropy로 학습 (z가 normal 을 가정한다면 MSE Loss) 하지만 최적화 과정이 intractable(undifferentiable) 하기 때문에 error term 도 뽑아서 reparameterization을 통한 미분 및 최적화 진행 KL Divergence: KL(q(z lx ) l p(z)) —> encoder를 통과해서 나온 z의 확률이 우리가 가정한 정규분포를 따를 수 있도록 최적화를 해야되니까 KL Divergence를 최소화 시킴
그래서 p(x)를 maximize하려고 expectation과 bayes를 사용해서 수식을 정리했을 때 maximize 할 수 있는 lower bound part가 생기고 이를 maximize하기 위해서는 theta, phi (decoder NN와 encoder의 parameter) 를 max 하면 된다! | | VGAE | Encoder 로 GCN, GraphSAGE, GAT 사용 Comparison with GraphVAE: VGAE는 노드 단위, GraphVAE는 그래프 단위로 임베딩 생성 | VGAE in RecSys: 사용자와 아이템 간의 잠재적인 관계 (link prediction) Structure: Node feature —> Latent —> Adjacency Matrix (Latent vector 를 transpose 해서 inner product로 만듬) Good for node classification, edge prediction, clustering, focus on local structure 코드는 encoder를 정의 한 후 (GCNConv를 쓸건지, GAT를 쓸건지..) torch.geometric_nn.VGAE(encoder)로 모델을 정의 |