티스토리 뷰
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : os(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
1. 지역 관점의 장소 추천 시스템
1.1 장소 추천의 목표 : 왜 장소 추천을 해야하는가?
- 쇼핑몰, 백화점, 마트, 편의점, 지하철역, 맛집, 술집, 전시회 (POI: point of interest)
- 장소들은 소비재로 볼 수 있음.
- 우리는 일주일간 다양한 장소에서 시간을 소비함
- 네이버 서비스에서 검색을 하는 경우들이 있음
- 가족들과 시간을 보낼만한 맛집
- 친구들과 시간을 보낼만한 카페
- 여행을 가서 리프레시 할만한 숙소
- 장소들은 소비재로 볼 수 있음.
1.2 사용자들이 새로운 장소를 발견하기 어려운 이유
- 가로수길 맛집 검색시 (장소와 원하는 것을 넣어 검색)
- 네이버에서는 지역 내의 퀄리티 있는 맛집들을 선별해서 알려줌
- 좋은 결과임에도 아쉬운 부분들이 있음
- 검색어의 키워드가 떠오르지 않는 경우 - 맛집 이외에는 뭐라고 검색해야할까?
- 취향 장소를 찾지 못한 경우 - 내가 어떤걸 좋아했지?
- 탐색의 상황에 맞지 않는 경우 - 함께 갈만한 1차, 2차 장소를 함께 볼 수는 없을까?
1.3 장소 발견의 가치를 제공하는 HLP Engine
- 사용자가 취향과 상황에 맞는 장소를 만나게 하는 추천엔진 개발 - HyperLocal Personalization Engine!
- 기존의 검색 결과에 개인화된 추천 결과를 통해 발견의 가치를 제공
- 지역 내 유명한 장소들을 검색의 결과로 제공 + 개인화된 추천을 통한 발견의 가치
- → 개인화된 지역 검색 결과를 제공
2. HyperLocal Personalization의 구성요소
2.0 HyperLocal Personalization의 구성요소
- 추천 대상(무엇을 추천하여 장소를 발견하게 할 것인가) x 추천 방식 (어떤 방식으로 추천할 것인가) = HLP 추천기술
2.1 Objects of HyperLocal Personalization
- 추천대상
- POI(장소) 자체를 추천
- POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
- UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
- 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
- ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록
2.2 Levels of HyperLocal Personalization
- 추천 방식(레벨)
- no personalization - 지역의 다양한 트렌드 추천
- ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
- segmentation - 내가 속한 그룹의 인기에 기반하여 추천
- ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
- personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
- ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
- HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
- ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집
- no personalization - 지역의 다양한 트렌드 추천
2.3 HyperLocal Personalization의 기술들
- 4가지 추천 대상과 4가지 추천 방식을 조합하여 추천 기술을 개발
- 이전에 Deview나 콜로키움을 통해 발표
- Deview
- 2016 : 딥러닝을 이용한 지역 컨텍스트 검색 (POI)
- 2018 : Location Based Recommendation (POI)
- 2020 : 당신의 취향의 맛집을 추천해드립니다 : 장소 개인화 추천 시스템의 비밀 (POI+User)
- 2021 : Knowledge Graph에게 맛집과 사용자를 묻는다. - GNN으로 맛집 취향 저격하기! (POI+User+UGC)
- 콜로키움
- 2017 : POI Understanding AI. ConA (POI)
- 2019 : SmartAround (POI)
- 2021 : Understanding POI (POI+User)
- 2022 : User/POI/UGC Recommendation using Graph Neural Network (POI+User+UGC)
- Deview
3. HyperLocal Personalization의 Representation Learning
3.0 Process of Representation Learning
- representation learning의 중요성 (추천시스템의 근간이 되는 기술)
- 추천 대상(POI, user, UGC 등)을 latent space에 embedding 시키는 기술
- top k nearest에 기반한 추천을 하고있다
- 추천 object간에 유사도가 가까운 것들은 우선적으로 추천
- 간편하며 시스템 적으로 설계하기 편하며 효과도 좋음
- representation learning의 3가지 단계
- Context Discovery : 어떠한 발견의 가치를 줘야할지 컨텍스트 발굴 단계
- Model Development : 컨텍스트에 맞는 데이터 정의. 데이터에 맞는 모델을 설계
- Service Application : service를 실제로 적용하는 단계
- representation learning은 Personalization과 HyperLocal Personalization에서 가장 중요한 단계
- 이 두 가지 추천 방식에 맞춰 각각의 사례를 설명
3.1 Next POI Recommendation with Heterogeneous Domain
- RelatedPOI2VEC : “특정 업체를 다음에 방문할 만한 장소를 추천하자”
- POI x HyperLocal Personalization = 다음에 방문할 장소 추천
- Context Discovery
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- 가족과 함께하는 부산 여행을 준비하며
- 해운대 인기 호텔 예약
- 숙소 주변의 맛집, 카페들 찾아 저장
- 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
- 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
- 가족과 함께 갈만한 맛집, 자연명소, 리조트
- 골프장 이후/이전의 갈만한 맛집
- 미술관 관람 이후, 휴식 공간
- 가족과 함께하는 부산 여행을 준비하며
- 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
- Model Development
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
- 방문 및 이용 날짜 (예약, 영수증 기준)
- Model
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
- 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
- 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
- describe
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
- 방문데이터 자체를 Global Context로 고려하여
- 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
- 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
- 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
- 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
- Service Application
- 정확도를 올릴 수 없을까?
- Limitation
- Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
- 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
- 네이버 지도 내 길찾기 데이터 사용
- 사용자의 피드백이 확실함
- 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
- Limitation
- 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
- RelatedPOI2VEC의 다음 장소에 대한 score와 통계 모델에 대한 다음 장소에 대한 score를 종합하여 최종 추천 스코어를 계산
- 실제 서비스 적용 결과
- 골프장 전/후 가볼만한 맛집/카페
- 서핑 게스트하우스와 함께 가볼만한 장소/맛집
- 키즈풀빌라 이후 갈만한 맛집/장소
- 정확도를 올릴 수 없을까?
3.2 Optimization with Joint Representation Learning
- Global-POI2VEC : “취향 장소와 가장 유사한 특성을 지닌 장소를 추천하자”
- POI x Personalization = 취향 기반 장소 추천
- Context Discovery
- 장소간 유사성은 어떻게 판단할 수 있을까?
- 사용자가 POI를 탐색하는 상황을 잘 이해해야 한다.
- 사용자와 POI는 다양한 Interaction이 있고, 다양한 context에서 POI는 user에 의해서 소비되게 된다.
- context들에 대해서 깊이 이해하고, POI를 embedding 할수록 취향을 기반으로 좋은 추천을 할 수 있다.
- 장소간 유사성은 어떻게 판단할 수 있을까?
- Model Development
- 다양한 Context들을 어떻게 정의할 수 있을까?
- Context들을 어떻게 Data로 정의하고 Model로 표현할 수 있을까?
- Context 1 : Nearby Alternative
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- ex) 야식, 데이트하기 좋은 장소
- 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
- POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
- 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
- Context 2 : Similar Metadata
- 유사한 특성을 지닌 장소를 찾는 경우
- ex) 특정 메뉴, 특정 분위기, 특정 가격대
- POI들이 가지고 있는 실제 데이터(족발, 치킨, 삼겹살 등)들을 공통적으로 검색하는 경우가 있음 → 공통적인 POI들끼리 가까이 임베딩 시킬 필요가 있음
- 공통된 Metadata를 지닌 POI들간의 POI-Metadata의 관계를 표현하기 위해 Graph 사용
- POI-Metadata간의 관계를 깊이있게 고려하여 representation learning을 할 필요가 있다.
- POI가 Metadata 상의 random walk에 기반한 metapath를 가장 잘 정의할수 있는 MetaPath2VEC라는 Graph learning Model을 백본 → POIMeta2VEC 모델 개발
- 유사한 특성을 지닌 장소를 찾는 경우
- Context 3 : Similar Taste
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
- user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
- POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
- POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
- PinSage를 백본으로 사용 → POISage 개발
- scalability에 강하게 됨
- 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
- 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
- 사용자가 방문했던/좋아했던 장소를 추천해주는 것
- Context 1 : Nearby Alternative
- 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
- POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
- 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
- POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
- 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
- POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
- 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
- POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
- 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
- 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
- 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
- AutoEncoder를 백본으로 하여 joint representation learning을 진행
- cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
- 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
- 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
- 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
- 앞에서 나온 3가지 결과의 모델은 concat
- reconstruction loss + classification loss → our loss 개발
- reconstruction loss : AutoEncoder
- classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
- GLOBAL POI2Vec 모델 개발
- 실제로 다양한 Context에 대해 optimization 되었는가?
- 앞선 3개의 모델에 비해 우수한 성능을 보여줌 (precision)
- 추천에서는 내가 생각하지 못한 다양한 장소를 발견하는 가치도 중요 (diversity)
- 더 정확한 결과는 ICDM에서 발표했던 논문결과에서 확인할 수 있음
- Service Application
- 추천에 신뢰를 어떻게 줄 수 있는가?
- Naver 통합검색 ForYou와 Line Place ForYou에 적용됨
- 과거에 내가 좋아요 했던 어떤 식당과 비슷하다는 형식으로 추천이 됨을 확인할 수 있음
- 다양한 추천 사유에 기반한 explainable recommendation
- 사용자에게 신뢰도를 높여 서비스 품질 향상
- 목적, 메뉴, 장소가 tv에 나왔기 때문인지에 대한 추천 레이블을 붙임
- 추천에 신뢰를 어떻게 줄 수 있는가?
3.3 Understanding User Behavior with graph deep learning
- FollowSAGE, VisitSAGE, History2VEC : “나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자”
- 네이버에는 myPlace와 같은 피드시스템이 있으며, 내가 구독하고 있는 유저를 통해 나만의 장소를 발견하는 것이 중요
- 이러한 유저 추천 역시 지역관점의 장소를 발견하게 해주는 추천시스템에서 매우 중요한 요소
- User x Personalization = 사용자 행동 기반 User 추천
- Context Discovery
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- FollowSAGE, VisitSAGE, History2VEC
- User x Personalization = 사용자 행동 기반 User 추천
- 나와 유사한 행동을 보이는 사용자를 추천하고, 그 사용자들을 통해 취향 장소를 발견하게 하자.
- Model Development
- 유사한 유저들을 판단하는 행동들은 어떻게 정의할 수 있을가?
- Context들을 어떻게 데이터로 정의하고 모델로 표현할 수 있을까?
- FollowSAGE : Fllow behavior on user
- Following, Follow하는 유저들이 유사한 정도
- Follow Action(user간 action)에 기반한 User Homogeneous Graph
- User Homogeneous Graph : user간의 관계를 그리는 user homogeneous한, 노드가 한개만 존재하는 그래프로 데이터 표현 가능
- User간의 Follow에 기반한 Topological한 구조를 잘 이해해보자
- 유저를 잘 임베딩 시키기 위해서는 내 주변에 어떠한 유저들이 있고, 그래프 상에서 유저 노드가 어떠한 위치에 표현이 되어 있는지 topological한 구조를 잘 이해하고 있어야해
- 유저의 follow에 기반한 topological한 구조를 가장 잘 이용할 수 있는 graph sage를 백본으로 함 → Follow Sage 모델 개발
- VisitSAGE : Explicit Feedback Behavior on POI
- POISage와 매우 유사
- POI 관점에서 보는 것이 아니라 유저가 소비한 POI가 유사한 정도를 통해 추천 (collaborative한 필터링 성향을 띄고있음)
- User와 User는 직접 연결되지 않고, 함께 방문했던 POI를 통해 추천되게 됨 (Bipartite Graph)
- User와 POI만 가진 Heterogeneous한 graph라고 할 수 있다.
- 이러한 Graph를 가장 잘 이해하는데는 PinSage라는 모델이 scalable하며 User와 POI 피쳐를 다양하게 고려할 수 있기 때문에 가장 적합하다고 할 수 있다. → VisitSage 모델 개발
- POISage와 매우 유사
- History2VEC : User’s Recent Visit Behavior on POI
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
- 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 이를통해 다음에 갈 장소를 제공하는 모델을 개발
- classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
- Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
- 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
- FollowSAGE : Fllow behavior on user
- Context들을 어떻게 Data로 정의하고 Model로 표혈할 수 있을까?
- User의 유사도를 정의하는데, 3가지 context로 분류하고 각 컨텍스트에 맞는 모델을 개발
- Local Domain의 특성에 맞게 어떻게 최적화하여 학습할까?
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- Edge를 binary relation이 아닌 weighted relation로 간주하여 표현
- positive와 negative loss 이외에 Low-rank positive term을 추가하여 조금 더 Node간에 relation을 weight로 간주하여 모델 고도화
- 똑같이 선호도를 표현하였어도 강도에 차이가 있을 것이다. ex)Follow
- 어떤 추천 모델이 가장 좋은 결과를 보이는가?
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
- 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
- Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
- 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
- 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
- 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
- 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
- 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
- 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
- Service Application
- 실제 서비스 적용 결과는?
- Line Place나 Naver My Place를 보면, 나와 취향이 유사한 유저라는 하나의 방식으로 추천
- 하나의 collection 안에는 여러가지 모델이 앙상블 되어 다양한 추천 사유에 기반이 되어 추천
- 사용자에게 novelty, diversity, 높은 정확도까지 제공
- 실제 서비스 적용 결과는?
3.4 Understanding User Intent with Multimodality
- ReviewSAGE : “Multimodality에 기반한 검색 의도를 이해하여 추천해보자.”
- UGC x HyperLocal Personalization = UGC 기반 실시간 반응형 추천
- 가장 lively한 추천 결과 제공
- Context Discovery
- 네이버에는 다양한 UGC가 있다.
- ex) 블로그, 리뷰
- 이미지와 텍스트가 존재한다는 특징을 가지고 있음
- UGC를 소비하는데 있어 Image와 text를 이용해 장소를 갈지 말지 판단. (multi-modality)
- UGC는 어떠한 특성을 지닐까?
- 장소와 POI 모두를 포함하는 global 적인 structure를 가지고 있다.
- 네이버에는 다양한 UGC가 있다.
- Model Development
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Graph 구조로 표현하는 것!
- UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
- 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
- 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
- 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
- Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
- 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
- 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
- 두 가지 타입으로만 구성된 Bipartite Graph이므로
- 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
- Graph 구조로 표현하는 것!
- Negative Loss는 어떻게 정의할 수 있을까?
- 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
- 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
- Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
- 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
- Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
- Structured Data를 모델로 어떻게 녹여낼 수 있을까?
- Service Application
- 실제 서비스 적용 결과는?
- 어떤 이미지를 가지고 있는 UGC를 클릭을 하거나 피드백을 보인 경우에 유사한 방식으로 장소를 소비한 리뷰들을 리스트 형식으로 제공하는 것을 고려
- 실시간적인 사용자의 Intent를 고려하여 반응형으로 추천해주는 모델을 적용 예정
- 실제 서비스 적용 결과는?
4. 사용자들은 추천 서비스들을 어떻게 사용하고 있을까?
4.0 HLP Engine이 적용된 다양한 서비스들
4.1 얼마나 많은 사용자들이 HLP Engine을 통해, 발견의 가치를 누리고 있는가?
- 기술을 통해 소상공인을 발견해나가는 유저들이 한해동안 꾸준히 늘어남
4.2 사용자들은 얼마나 많은 SME들을 발견하고 있는가?
- 서비스를 적용해 나갈때마다 계속적으로 증가
4.3 HLP Engine이 얼마나 장소 발견에 기여하고 있는가?
5. What’s Next for HyperLocal Personalization
5.1 Understanding local Trend Visually
- 지역을 소비하는게 가장 중요하다고 할 수 있는 이미지를 기반으로 “지역의 Visual Trend를 추천해보자!”
- 과거엔 POI나 UGC를 추천하는 경우가 많았는데, UGC 중에서 Image를 직접적으로 추천하여 해당 장소에 가면 어떤 방식으로 사진을 찍으며 놀 수 있는지 발견의 가치를 제공하고자 함
- 보유하고 있는 데이터인 Query와 UGC 데이터를 바탕으로 만들어진 모델을 통해 Visual Trend를 추천하고자 함
- NLP기반 Trend 추천모델 (LocalTrendRec)
- Contrastive Image-Text Foundation Model (ThumbnailRec)
- 실제 지역을 소비할 수 있는 컨텐츠 제공
- ex) 힐링파크에서 카약을 탈 수 있다. 해수욕장에 갈 수 있다..
5.2 Optimize Recommendation on HyperLocal Context
- “Real Time Context를 이해하여, 추천을 최적화하자!”
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 퇴근 후, 금요일 저녁에는 어떤 메뉴를 추천해주는 것이 좋을까?
- 바쁜 평일 점심에는 어떤 메뉴를 추천해주는게 좋을까?
- 위와 같은 컨텍스트를 고려하여 장소를 추천해주는 기술을 개발
- 어느 요일인지, 어느 시간대인지, 어느 날씨인지에 따라 달라질 수 있다.
- 실제 상황에 맞는 사용자 취향 기반의 최적화된 추천 결과(reranking)
- 사용자의 취향은 다양하고, 취향에 해당하는 장소들이 실시간적으로 나의 needs에 맞게 달라질 수 있다.
6. Conclusion
- 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
- 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
- (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
- (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
- (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
- (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용