GNN 공부
GNN
입력: 그래프(노드, 엣지, 노드/엣지 피처)
-> 노드 간 메시지 전달 후 임베딩 업데이트- Attention 기반 / Sum / Max
-> readout(노드->그래프 단위 변환)
-> 예측값 도출
-> loss 계산+역전파 학습
GIN 이란
GNN은 평균을 내거나, 일반화해서 이웃 노드를 집계하는 반면 GIN은 단순합이어서 구조를 더 구체적으로 구분.
데이터 증강: 과적합방지, 일반화/ 너무 세세한 부분까지 학습하지 않고, 몇개 없어도 예측할 수 있도록 몇부분 없애거나 가림
node/edge drop: 노드 엣지 제거
subgraph: 부분 그래프 추출
attribute masking: 어트리뷰트(=피처) 일부 가리기
노드 임베딩 업데이트
Sum: 정보 보존력 좋음 (GIN 사용). 구조 구별에 강함
Max : 특징적인 값만 반영. 정보 손실 위험 있음-GNN/Mean: 평균!-GNN
Attention: 중요한 이웃에 가중치 부여-GAT
Readout( 노드->그래프 단위 변환)
global mean pooling: 그래프 전체 노드 임베딩 평균
global sum pooling : 전체 노드 임베딩의 합
global attention: 노드별 중요도에 따라 가중합
Set2Set: RNN 기반 반복 집계. 순서 고려 가능, 복잡도 높음
학습 방식
supervised: 라벨이 있는 데이터로 학습. Cross-Entropy loss 사용
self-supervised: 라벨 없이 학습. 구조 예측, 마스킹 복원 등을 통해 학습
contrastive: 유사/비유사 쌍을 구성해 차이 학습
loss 함수: 예측값 vs 실제값 비교 후 오차 계산
cross-entropy: 분류 문제에서 예측 확률 분포와 실제 라벨의 차이를 최소화
triplet loss : 기준값+positive+negative 사용해 임베딩 간 거리 조절
MLP 안에 있는 W가 loss 함수로 인해 바뀌게 됨.
엣지,노드 피처
노드 간 관계를 조절 (중요한 호출, 덜 중요한 호출 구분되게)