CS224W 9

[cs224w 추천시스템 강의 정리] Graph Learning으로 추천시스템 구성하기 (Bipartite Graph → GNN: NGCF, LightGCN, PinSAGE)

이번 강의의 큰 줄기는 이거다.추천(recommendation)은 결국 사용자–아이템 상호작용을 미래에 예측하는 문제다.이걸 그래프(특히 사용자–아이템 이분 그래프)로 모델링하면 자연스럽게 링크 예측(link prediction)이 된다.실무 시스템은 “점수 계산”만이 아니라 후보 생성 → 랭킹 → 후처리로 이어지는 큰 파이프라인이고,임베딩 기반 방법이 강력한 이유(= 협업 필터링 직관)가 있다.그리고 GNN을 추천에 적용한 대표 흐름이 NGCF → LightGCN → PinSAGE(산업 배포)로 이어진다.1. 추천 시스템의 동기: “재고가 무한대에 가까운 세상”오프라인 매장은 공간이 제한돼서 선택지가 물리적으로 줄지만, 온라인은 재고(inventory)가 사실상 무한대에 가깝습니다. 그러면 사용자는 “..

[CS224W Lecture 11 정리] — KG Reasoning with Embeddings

(Path Queries → Conjunctive Queries → Query2Box / Box Embeddings / AND-OR(DNF))10강이 “이종 그래프 + KG completion(링크 예측)”이었다면, 11강은 한 단계 더 나아가서 이렇게 묻는다.임베딩만으로 지식 그래프에서 ‘추론(reasoning)’을 할 수 있을까?(그래프가 불완전해도, 멀티홉 질의/논리 질의에 답할 수 있을까?)핵심은 “그래프를 탐색(traversal)하는 방식”을 버리고,질의(query) 자체를 임베딩해서 답을 예측하는 predictive query 관점으로 바꾸는 것이다.0) 문제 설정: KG는 거대하고… 불완전하다지식 그래프(KG)는 엔티티와 관계로 이루어진다.엔티티: drug / disease / advers..

[CS224W Lecture 10 정리] — Heterogeneous Graphs & Knowledge Graph Completion

(R-GCN + KG Embedding + Negative Sampling + Hits@K/MRR)9강에서 “GNN이 무엇을 구분할 수 있나(표현력)”를 이론으로 봤다면, 10강은 다시 응용으로 돌아오되 그래프가 더 현실적으로 복잡해지는 순간을 다룬다.바로 이종 그래프(heterogeneous graph), 그리고 그 대표 사례인 지식 그래프(Knowledge Graph, KG)다.0) 왜 10강이 중요한가?지금까지는 “노드 타입 1개 + 엣지 타입 1개”인 단순 그래프만 다뤘다.하지만 현실 데이터는 대부분 이렇다:노드 타입이 여러 개 (사람/회사/질병/약물/논문/저자/학회…)관계(엣지) 타입도 여러 개 (treats, causes, cites, works_at, located_in…)즉 그래프의 한 엣..

[CS224W Lecture 9 정리] GNN Theory — “GNN은 어디까지 구분할 수 있나?” (표현력, 단사 집계, GIN, WL)

8강까지는 GNN을 어떻게 쓰고(헤드/손실/분할), 그래프/피처를 어떻게 조작하고, 학습을 어떻게 세팅하는지를 봤다.9강부터는 방향을 확 꺾어서 이론(theory)로 들어간다.오늘의 질문은 딱 3개다.GNN은 얼마나 표현력(expressive power)이 강한가?GNN은 무엇을 학습할 수 있고무엇을 학습할 수 없는가?결론 스포를 먼저 하면:GNN의 표현력은 “이웃 집계(neighborhood aggregation)가 얼마나 정보 손실 없이(=단사적으로) 멀티셋을 압축하느냐”로 결정된다.그리고 메시지패싱 GNN 중 “최대로 표현력 강한” 쪽이 바로 GIN이고, 이는 WL 테스트(색 정제)와 깊게 연결된다.1) 준비: 이번 강의에서 “노드 특성”은 색(color)로 본다그래프에는 두 요소가 있다.노드 특성..

[CS224W Lecture 8정리] GNN Applications — “GNN을 어떻게 학습시키나?” (헤드·손실·지표·데이터 분할)

7강에서 우리는 GNN 레이어(메시지 변환 + 집계), 스킵 연결/오버스무딩, **그래프·피처 조작(augmentation, sampling)**까지 “모델 구조”를 쭉 봤다.8강은 그 다음 단계다.임베딩을 만들었으면, 이제 그걸로 뭘 예측하고(Head),정답과 어떻게 비교해서(Loss),성능을 뭘로 보고(Metric),데이터를 어떻게 나눌지(Split)를 정해야 한다.이 4개가 오늘 글의 메인이다.0) 왜 “학습”이 설계 공간의 핵심 축인가?우리는 이미 이런 걸 할 수 있다고 했다.노드 feature를 증강한다그래프 구조를 조작한다(엣지 추가/삭제, 샘플링)high-degree 노드는 이웃을 전부 집계하지 말고 조심스럽게 sub-select한다근데 여기서 끝이 아님.GNN은 마지막에 임베딩을 만든다.그..

[CS224W Lecture 7정리] GNN2 — GNN을 “수학적으로” 일반화 해보자 (Design Space 총정리)

6강에서 우리는 GNN을 직관적으로 잡았다.“노드는 이웃에서 정보를 모아서(aggregate) 자기 표현을 업데이트한다.”7강은 여기서 한 단계 더 나가서,GNN을 일반적인 형태로 수학적으로 정식화하고GCN/GraphSAGE/GAT 같은 모델들을 하나의 프레임워크로 묶고“좋은 GNN”을 만들 때 우리가 선택할 수 있는 설계 공간(design space)을 쭉 펼쳐 보여주는 강의다. 0) 오늘 강의가 던지는 큰 그림그래프를 입력으로 받아서, 딥 네트워크(비선형 변환 여러 층)를 거친 뒤…노드 수준 예측 (node classification 등)서브그래프/그래프 수준 예측 (graph classification)노드쌍 예측 (link prediction)기타 등등이걸 다 할 수 있는 Deep Graph En..

[CS224W Lecture 6정리] GNN (Graph Neural Networks) — Shallow Embedding에서 Deep Graph Encoder까지!

이번 강의 한 줄 요약:노드 임베딩을 “외워서 저장(lookup)”하던 시대(DeepWalk/node2vec)에서,“이웃 정보를 모아 계산하는” 딥러닝 방식(GCN/GraphSAGE)으로 넘어간다.목차지금까지의 노드 임베딩: Encoder–Decoder 관점Shallow encoding(DeepWalk/node2vec)의 한계왜 그래프는 그냥 MLP/CNN으로 못 푸나?GNN 핵심 아이디어: Neighborhood Aggregation(이웃 집계)Deep Graph Encoder 수식 직관 (왜 이웃항 + 자기항을 섞나)파라미터 공유와 Inductive capability(새 노드/새 그래프 일반화)Graph Convolutional Network(GCN) vs GraphSAGEGraphSAGE의 AGG..

[CS224W Lecture 5 정리] Message Passing으로 Semi-supervised Node Classification 을 해보자

0) 오늘의 문제: “라벨 일부만 알 때, 나머지는 어떻게 예측?”그래프에서 일부 노드만 라벨이 있고, 나머지 노드는 라벨이 없다고 하자. 목표는 라벨 없는 노드들의 라벨을 예측하는 것. 이 문제를 강의에서는 semi-supervised node classification이라고 부른다. 예시(강의 동기):네트워크에서 어떤 노드들은 fraudster(사기) / trusted(신뢰)로 이미 라벨이 있고,나머지 노드들의 라벨을 찾아내고 싶다. 1) 왜 그래프에서 “전파”가 먹히나? (상관관계의 근원)강의의 큰 직관은 한 줄로 요약된다:네트워크에는 상관관계(correlation)가 있고, 가까운 노드들은 같은 색/클래스일 가능성이 높다. 이 상관관계가 생기는 대표 원인 두 가지:Homophily(동질성): 비..

[CS224W Lecture 3 정리] node2vec 수식부터 negative sampling, p·q 편향 랜덤워크, 그래프 임베딩(anonymous walk)까지

요즘 그래프 임베딩(DeepWalk/node2vec)을 제대로 이해해보려고 CS224W 슬라이드를 따라가고 있다.웃긴게 처음에는 모델 구조는 “word2vec이랑 비슷하다” 한 줄로 끝나는데, 수식이 한 번 등장하면 그때부터 뇌정지가 온다.특히 내가 막혔던 건 이거였다.NR(u가 뭔지 감이 안 잡힘첫 번째 objective가 왜 갑자기 두 번째 loss로 바뀌는지 이해 안 됨softmax 분모가 왜 문제인지, negative sampling이 뭘 “근사”하는지 모르겠음GD/SGD가 왜 나오는지 알겠는데 "납득"이 안 됨node2vec의 p, q가 그냥 파라미터인지(하이퍼파라미터인지) 감이 없었음오늘은 이걸 내가 이해한 흐름대로 처음부터 끝까지 정리한다.1. 일단 목표가 뭐냐: “노드를 벡터로” 만들고 싶..