본문 바로가기

공부/실전문제연구단5

[실전문제연구단] GREET 코드 뜯어보기 - 4. train 과정 전 게시글들에 모델에 대한 간단한 설명을 적어놓았다. 이번엔 train 과정을 살펴보겠다. 논문에서 소개한 학습 방식의 자료이다. 먼저 Dual-channel Representation Learning Module이다. 이 모듈은 Edge Discriminating Module로부터 Homophiliy한 그래프 View(인접행렬)과 heterophily한 그래프 View(인접행렬)을 받아서 이를 필터에 통과시켜 임베딩을 구한다. 그 후 둘의 차이를 이용해서 Negative Contrastive Loss를 구하여 Back propagation을 진행한다. def train_cl(cl_model, discriminator, optimizer_cl, features, str_encodings, edges): .. 2024. 1. 15.
[실전문제연구단] GREET 코드 뜯어보기 - 3. Edge Discriminator 모델 class Edge_Discriminator(nn.Module): def __init__(self, nnodes, input_dim, alpha, sparse, hidden_dim=128, temperature=1.0, bias=0.0 + 0.0001): """ 그래프 엣지를 판별하는 모델인 Edge Discriminator의 클래스입니다. Parameters: - nnodes: 노드의 수 - input_dim: 입력 특성의 차원 - alpha: Negative sampling에서 사용되는 가중치 - sparse: 희소 그래프 여부 - hidden_dim: 은닉 레이어의 차원 (기본값: 128) - temperature: Gumbel-Softmax 샘플링의 온도 매개변수 (기본값: 1.0) - bias:.. 2024. 1. 13.
[실전문제연구단] GREET 코드 뜯어보기 - 2. GCL 모델 코드에 모델이 두 개 있다. 하나는 GCL, 하나는 Edge_Discriminator이다. 이 게시글에서는 GCL모델이 무엇인지 설명할 것이다. GCL은 Graph Contrastive Learning의 약자로, 비교하는 방식을 학습시키는 모델이다. 간단히 말해서 두 입력의 차이를 계산한다고 할 수 있다. 논문에서 소개한 Dual-channel Representation Learning Module이다. 데이터셋 Nodes: 2708 Edges: 10556 class GCL(nn.Module): def __init__(self, nlayers, nlayers_proj, in_dim, emb_dim, proj_dim, dropout, sparse, batch_size): super(GCL, self).__.. 2024. 1. 12.
[실전문제연구단] GREET 코드 뜯어보기 - 1. data 확인 GREET을 소개한 논문에서 graph convolution을 더 잘 하기 위해서 edge가 heterophily한지 homophily한지 판별하는 판별기를 제시했다. 이 부분을 조금 자세히 볼 예정이다. 먼저 데이터 부분이다. cora 데이터를 로드하면 어떤 것이 프로그램 변수로 할당되는지 알아보았다. https://docs.dgl.ai/generated/dgl.data.CoraGraphDataset.html#dgl.data.CoraGraphDataset cora 데이터셋의 공식 문서를 보며 비교해보자. def load_data(dataset_name): path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '.', 'data', datas.. 2024. 1. 12.
[실전문제연구단] 주제 선정 학교에서 진행하는 실전문제연구단 프로젝트의 방학 후 2주동안 공부와 고민을 거듭하다가 주제가 드디어 잡혔다. 처음에는 GCN의 오버스무딩을 관찰하는 방법을 제시하려고 하였다. 첫 번째 방법은 노드 당 attention coefficient가 얼마나 같아지는지 보고, 비슷해진다면 오버스무딩이 일어났다고 보는 방법이다. 두 번째 방법은 graph conv를 할 때마다 같은 클러스터 수로 클러스터링을 진행하고, 특정 클러스터 수가 넘어가면 오버스무딩이 일어났다고 보는 방법이다. 이 두 방법 모두 교수님께 통과되지 못하고, 다른 주제로 하게 되었다. 이제는 2인 1조로 같은 연구실 친구와 함께 프로젝트를 진행한다. 우리의 주제는 노드끼리 homophily한지 heterophily한지를 구별해내는 방법을 제시하려.. 2024. 1. 11.