패스트캠퍼스 환급챌린지 14일차 : 30개 프로젝트로 끝내는 추천시스템 구현 초격차 패키지 강의 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작
강의 종료
강의장
학습 인증샷
학습후기
PageRank란?
그래프를 기반으로 어떤 노드가 더 중요한지 확률적으로 평가하는 방식.
그래프에서 많은 엣지를 받는 노드가 더 중요하다는 가정
을어오는 엣지의 수가 아니라 중요한 노드에게 링크 받았는가를 계산
추천시스템에서의 활용
user-item 그래프에서 중요 아이템 선별
유저들이 많이 연결된 상품
다른 인기 아이템과 잘 연결된 상품
주요 특징
연결 기반 순위 결정 | 엣지 수뿐 아니라, 중요한 노드와의 연결 고려 |
텔레포트(d) 도입 | 그래프에 고립된 노드 문제 방지 |
반복 계산 | 점수 수렴할 때까지 반복 (보통 20~50회) |
빠름 | 학습 없이 단순 계산 → cold start에도 강함 |
GNN(Graph Neural Network)
노드 수 연결구조가 다른 그래프 데이터를 직접 처리 가능
노드 임베딩 학습을 하면서 이웃의 영향까지 함께 학습 가능
학습 단계
[초기 임베딩]
→ [이웃 노드 정보 집계 (Aggregation)]
→ [자기 표현 업데이트 (Update)]
→ [예측값 계산]
→ [정답과 비교해 Loss 계산]
→ [역전파로 파라미터 업데이트]
1단계 초기 임베딩 초기화
각 노드에 대해 초기 임베딩 부여
2단계 이웃 정보 집계
각 노드에 연결된 이웃 노드들의 임베딩을 모은다
이때 합산, 평균, max, attention 등 다양한 방식 사용 가능
3단계 자기 표현 업데이트
입계된 이웃 정보와 자신의 임베딩을 합쳐서 새로운 표현 h_v^k를 만든다.
4단계 예측값 계산
최종 노드 임베딩을 가지고 예측값 생성
5단계 손실함수 계산
6단계 파라미터 업데이트 (역전파)
2단계에서 집계 함수를 선택하는 기준은? 딥러닝의 loss, 활성함수처럼 테스트를 해봐야 아는건가?
집계 방식 | 특징 | 사용할 때 |
합(sum) | 이웃 수가 많을수록 영향력 증가 | 노드 간 연결 수 자체가 의미 있을 때 (ex. popularity 반영) |
평균(mean) | 연결 수 상관없이 정보 균등 반영 | 이웃 수가 제각각일 때 안정적 |
최댓값(max) | 가장 강한 영향만 반영 | 잡음이 많은 경우 (강한 연결만 반영하고 싶을 때) |
attention | 이웃마다 다른 가중치 부여 | 이웃 중 중요한 노드가 있을 때 (성능 좋지만 느림) |
GNN에서는 loss function처럼 다양한 수식을 선택하거나 조합해서 쓰는 게 있는가?
gpt 답변
GNN도 딥러닝처럼 수식적인 구성 요소들을 조합하고 실험하면서 최적 구조를 찾는 과정이다.
Loss function만 바꾸는 게 아니라,
aggregation 방식, update 함수, 활성화 함수, 구조 반복 수 모두 실험 대상이 된다.
3단계에서 h_v^k가 뭐지?
- vv: 노드의 이름 (예: 유저, 상품 등)
- kk: GNN 레이어 깊이 (layer number)
- hvkh_v^k:
- “노드 v가 이웃들과 정보를 주고받고, 그걸 기반으로 표현을 새로 계산한 결과”
→ 즉, v의 최신 문맥 임베딩