본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

공부 시작

강의 종료

강의장

학습 인증샷

학습후기

 

PinSAGE 핀터레스트에서 개발한 GrapgSAGE를 확장한 모델

 

단순 랜덤 샘플링이 아니라 random walk를 기반으로 유의미한 이웃을 선택한다.

유사한 이미지끼리 더 자주 연결되게 함으로써 더 관련도 높은 정보를 학습한다.

 

추론 과정에서는 효율성을 극대화하기 위해 전체 아이템 그래프 임베딩을 미리 계산해 저장해 둔다

이후 유저 임베딩만 실시간으로 계산하고, 저장된 아이템 임베딩과의 유사도만 비교하면 된다. 이로써 대규모에서도 빠른 실시간 추천이 가능해진다.


랜덤 샘플링 대신 random walk가 왜 더 좋은 효율을 보이는거지?

 

ramdom walk를 사용해서 그래프 구조 안의 '자주 함께 등장하는' 노드를 우선 선택하게 한다.

빈도수를 기반으로 이웃 순위를 측정한 후 다음 사위만 뽑는 방식이다.

따라서 진짜 관련있는 이웃만 서택적으로 학습에 반영하는 효과가 있다.

 


"추론 과정에서는 효율성을 극대화하기 위해 전체 아이템 그래프 임베딩을 미리 계산" 이게 좋은건 알겠는데 왜 다른 모델들에서는 이 방법을 사용하지 않았지?

 

GNN에서도 이 방법을 사용하면 쉽게 추론 속도를 높일 수 있는거 아닌가?

=>

GNN의 한계일 수도 있는 학습과 추론 모두 이웃 정보가 필요한 구조때문에

특정 노드의 임베딩을 얻으려면 항상 그 노드의 이웃 임베딩까지 동시에 계산해야 하기 때문에

이를 위해서는 그래프 전체를 캐시해야한다.

 

반면에 PinSAGE는 학습 시에만 이웃 정보를 통해 아이템 임베딩을 만들고 추론 시에는  미리 계산된 임베딩을 사용할 수 있다.

 


그렇다면 학습에만 이웃 노드를 사용하고 추론에 미리 계산된 임베딩을 사용한다면 추론은 빠르지만 성능을 얼마나 포기했지?

 

PinSAGE 논문 링크 : https://arxiv.org/abs/1806.01973

 

논문에 따르면 random walk덕에 성능이 올랐고

따라서 임베딩의 품질이 올랐다고 한다.

 

내 생각에는 실시간으로 추천 로직이 바뀌지 않는 서비스라면 성능이 향상되면서 추론속도도 비약적으로 향상 시킬 수 있다.

 

핀터레스트에서는 A/B test를 통해 사용자 참여율이 30%정도 향상되었다고 한다.