Recommender System/추천 시스템
-
[Recommender System] - Sequential Recommendation (feat. BERT4REC)Recommender System/추천 시스템 2022. 7. 6. 18:39
최근에는 GNN 관련 모델 구현, 그리고 시스템적으로 개발할 것들이 많아서 새로운 모델이나 알고리즘을 접할 일이 없었다. 퇴근 후에는 투자 공부에만 집중하고 있어서 ML쪽으로는 조금 소강 상태... ㅋㅋ 여튼 그러던 와중에 오랜만에 새로운 모델을 리서치할 일이 있기도 하고, Session-based Recommender System이 마침 궁금하던 찰나이기도 해서 BERT4REC 모델을 시간을 내서 조금 들여다보고 있다. BERT4REC은 알리바바에서 발표한 논문(BERT4REC : Sequential Recommendation wtih Bidirectional Encoder Representations from Transformer)에 소개된 추천 모델을 의미한다. 이름에서 유추할 수 있듯이, 보통 N..
-
[Recommender System] - MovieLens 데이터셋으로 MultiSAGE의 Context Query 구현하기 - 2Recommender System/추천 시스템 2021. 9. 15. 17:23
지난 포스팅에 이어, 이번에는 MultiSAGE 알고리즘을 코딩해보자. 모든 실행코드를 보려면 이곳을 참고하자. 그리고 모델 자체에 대한 설명, 혹은 논문에 대한 리뷰는 (링크)를 참고하면 된다. Context Query in MultiSAGE MultiSAGE 알고리즘은 GraphSAGE에 GAT(설명 참고)를 적용한 것이라고 할 수 있다. GAT를 한 문장으로 요약하면, Attention 방식으로 그래프 자료구조의 Convolution 연산을 aggregate 하는 것이다. 아래의 그림을 참고하자. 그리고 PinSAGE의 후속 연구인 MultiSAGE의 구조는 PPR 기반의 Random Walk 샘플링으로 Sub-graph를 생성하는 것으로 시작한다. 여기에 Attention 개념을 적용한 뒤, 노드..
-
[Recommender System] - MovieLens 데이터셋으로 MultiSAGE의 Context Query 구현하기 - 1Recommender System/추천 시스템 2021. 9. 14. 18:55
GNN with Context Query (from MultiSAGE) 최근 GNN 관련 기술을 계속 공부중인데, 가장 언급이 많이 되는 논문 중에 하나가 바로 PinSAGE, 그리고 후속으로 MultiSAGE라는 알고리즘을 다루는 [Graph Convolutional Neural Networks for Web-Scale Recommender Systems] 논문이다. 이 방법은 GraphSAGE의 기본 골격에서 PPR(Personalized Page Rank) + RW(Random Walk) 기반으로 효과적인 샘플링 기법을 추가한 알고리즘인데, MultiSAGE 라는 후속 연구에서는 Context Query 라는 것을 제안하기도 하였다. Context Query 라는 개념은 보통 조건부 검색이나 모델 ..
-
[Recommender System] - GCN과 MultiSAGE 알고리즘Recommender System/추천 시스템 2021. 7. 26. 15:04
본 포스팅은 2020년에 발표한 MultiSAGE 알고리즘(MultiSage: Empowering GCN with Contextualized Multi-Embeddings on Web-Scale Multipartite Networks)의 내용을 GCN의 대략적인 히스토리와 함께 엮어낸 것이다. 기술의 주제 자체가 추천시스템인 만큼, 추천시스템과 관련된 내용만을 다루고 있으며 꽤나 많은 부분의 내용을 포스팅 최 하단의 링크들을 참고하여 작성하였다. 1. GCN (Graph Convolutional Neural network)의 개요 1) GCN의 특징 Graph Neural Network는 서로간의 연결관계를 갖고 있는 데이터를 Computer Science 영역의 그래프 표현 방법으로 잘 나타내기 위해 ..
-
[Recommender System] - 결과 정렬에서의 Shuffle 알고리즘Recommender System/추천 시스템 2021. 4. 5. 12:06
본 포스팅은 필자가 쓴 DeliveryHero Korea 기술 블로그(링크)에 있는 추천 시스템의 Shuffle 알고리즘 활용법에 관한 내용을 발췌한 것이다. 회사 기술 블로그에 글을 쓰면서 흥미 위주의 글을 쓰게 되었는데, 여기에 조금 더 내용적인 살을 붙여 글을 재구성하였다. 당연히 비즈니스와 관련이 없는 선에서 세간에 알려진 알고리즘 내용만을 서술하였다. 1. Spotify의 Music Shuffle 알고리즘 추천시스템, 그중에서도 콘텐츠 Shuffle이 필요한 영역에서 가장 대표적인 예시는 Spotify의 Shuffle 알고리즘이다. Music Shuffle 에서는 컨텐츠를 완전한 랜덤으로 추천하지 않는다. 하지만 흔히 알고있기로, 사용자들은 음악 앱에서 셔플 기능을 사용할 때 동작하는 방식을 완..
-
[Recommender System] - 추천시스템과 MAB (Multi-Armed Bandits)Recommender System/추천 시스템 2021. 1. 28. 21:57
1. Multi-Armed Bandit MAB에서 가장 중요한 개념은 Exploration & Exploitation이다. 여러 개의 슬롯머신 중, 어떤 슬롯머신을 당겨야 이득을 최대화할 수 있는지를 파악하는 것을 탐색/획득으로 알아내기 때문이다. 그래서 탐색과 활용이 조화롭게 필요한 추천시스템에서 많이 활용되는 방식이다. 이미 수 년 전부터 추천시스템에서는 대세로 자리잡았다. A/B 테스트의 완벽한 상위호환이라고 볼 수 있기 때문이다. (모델 단위가 아닌 아이템 단위의 MAB는 모델의 대체재이기도 하다.) MAB의 구성 원리는 앞서 말한 것 처럼 두 가지, 탐색과 활용이다. 그 중 추천시스템에서의 Exploration은 Diversity를 올려줄 수 있는 방법 중 하나이다. Cold-start 문제를 ..
-
[Recommender System] - 임베딩 벡터의 Nearest Neighbor를 찾는 과정Recommender System/추천 시스템 2020. 12. 3. 17:31
이번 글에서는 검색/추천 시스템에서 가장 중요한 문제 중 하나인 Vector Space 안에서의 Nearest Neighbor를 찾는 문제에 대해 이야기하려고 한다. 이 문제가 중요한 이유는, ML을 활용하여 검색이나 추천에 활용되는 Item을 Densed Vector로 표현하는 것이 가장 보편적인 방법이 되었기 때문이다. 대표적인 예는 Collaborative Filtering에서 사용되는 Latent Factor이며, 최근에는 Word2Vec과 같이 자연어 처리에서 힌트를 얻은 임베딩 방법을 더 많이 사용하는 듯 하다. 개인적으로 최근에 Densed Vector의 Similarity를 real-time으로 줄세우는 작업을 많이 하게 되었는데, 이러한 Vector Search를 빠르게 구현하기 위해 i..
-
[Recommender System] - Factorization Machine (From Scratch with Python)Recommender System/추천 시스템 2020. 4. 17. 18:57
이전 포스팅 보기 본 포스팅은 Factorization Machine의 intuitive한 설명(블로그 번역 + 필자 개인적 해석)과 라이브러리 활용법에 대한 포스팅의 후속이다. FM이 sparse한 피처간의 pair-wise interaction을 학습한다는 것을 어렴풋이 이해했다면, 이번에는 실제로 Science 레벨에서 모델링 할때 어떻게 활용해야 하는지를 수식 레벨부터 직접 코드로 구현해보면서 따라가보자. 백문이 불여일견이라 하였으니, 코드 역시 마찬가지일 것이다. 이번 글에서는 FM의 intuitive한 설명은 생략하고 실제로 벡터 단위로 어떤 분석을 수행해야 하는지, pair-wise한 학습을 하면 어떤 이득을 얻을 수 있는지에 대해서 중점적으로 서술하였다. 1. Algorithm Concep..
-
Microsoft Research Learning to Rank 알고리즘 - [1] RankNetRecommender System/추천 시스템 2019. 10. 31. 22:35
지난 포스팅에서는 Learning to Rank에 대한 intuitive한 내용들을 다루었다. 이에 대한 내용을 다시 한 번 상기하자면, 검색과 추천같은 '랭킹'이 중요한 서비스의 경우, 아이템의 순위를 어떻게 정하느냐가 서비스의 품질을 결정한다고 할 수 있다. 그리고 이를 평가하기 위한 가장 정교한 방법은 list-wise 방법으로, nDCG를 대표적인 예로 들 수 있다. 그렇다면 이제 pair-wise ~ list-wise 정렬을 잘 하는 방법, 즉 "순서 정보를 이용하여 모델을 학습하는 방법"에 대해 알아보자. 이를 가장 잘 대표하는 방식이 바로 RankNet 계열의 알고리즘이다. 이는 Microsoft Research에서 연구한 내용으로, 순서 정보를 이용하여 뉴럴넷을 학습하는 랭킹 알고리즘의 기..
-
Learning to Rank와 nDCGRecommender System/추천 시스템 2019. 8. 13. 18:48
최근 검색 모델에도 관심을 가지게 되면서, 랭킹모델과 IR에 대해 다시 공부중이다. 기존에 관심있었던 커머스 분야의 추천 랭킹 시스템에서는, ‘유저가 실제로 살 것 같은 하나의 아이템’을 잘 추천해주는 것이 중요했기 때문에, MRR이나 nDCG 같은 순위 기준의 랭킹 평가 방법을 굳이 사용하지는 않았었다. cost function도 단순히 binary classification 문제를 해결하는 형태로 구성된다. 상품단위의 구매 AUC를 줄세우기만 해도 구매에 대한 측정은 충분히 가능했기 때문. 어떤 순위로 등장했는지를 평가하는 것은 중요하지 않았다. 하지만 일반적인 서비스에서의 검색, 추천 시스템은 노출되는 아이템의 Ranking을 얼마나 리스트 단위로 잘 정리하는지가 중요하다. 물론 “도메인에 따라”,..