티스토리 뷰

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : os(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

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

  • 추천대상
    1. POI(장소) 자체를 추천
    2. POI를 소비하는 유저를 추천 : 유저가 방문했던 혹은 좋아했던 다른 장소들을 발견하기 위해 다른 장소를 간접적으로 발견하도록 함
    3. UGC 컨텐츠 : 사용자가 생성한 컨텐츠로 가장 활발한 컨텐츠
    4. 테마 : 공통 특성으로 묶인 POI나 UGC의 그룹을 잘 묶어 하나의 테마나 컬렉션 형태로 제공
      • ex) 아이와 함께 가볼만한 장소의 묶음 혹은 리뷰의 묶음 → 장소를 새로운 가치로 발견하도록

2.2 Levels of HyperLocal Personalization

  • 추천 방식(레벨)
    1. no personalization - 지역의 다양한 트렌드 추천
      • ex) 부산 맛집 : 지역 특색메뉴 - 수육백반 / 갈삼구이 / 참불꼼장어 / 멸치쌈밥 / 멸치회 …
    2. segmentation - 내가 속한 그룹의 인기에 기반하여 추천
      • ex) 부산 맛집 : 연령대/성별 추천 - 남자 / 여자 / 10대초반 / 10대후반 / 20대 초반 …
    3. personalization - 사용자의 취향을 깊이 있게 이해햐여 추천
      • ex) 부산 맛집 : 개인화 추천 ForYou - 내 취향과 비슷한
    4. HyperLocal Personalization - 사용자가 놓인 상황까지 이해하여 추천
      • ex) 부산 맛집 : 함께 가볼만한 장소 - 라운딩과 함께 가볼만한 맛집

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)

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
    • 특정 장소 다음에 갈만한 장소를 어떻게 찾고 있을까?
      • 가족과 함께하는 부산 여행을 준비하며
        1. 해운대 인기 호텔 예약
        2. 숙소 주변의 맛집, 카페들 찾아 저장
        3. 약간 멀더라도 갈만한 거리의 전시회 및 명소 검색
      • 사용자들은 방문 장소와 유사한 성격을 지니는 장소들을 주로 탐색함
        • 가족과 함께 갈만한 맛집, 자연명소, 리조트
        • 골프장 이후/이전의 갈만한 맛집
        • 미술관 관람 이후, 휴식 공간
  • Model Development
    • 방문 장소와 같은 탐색 의도를 가지는 장소들을 어떻게 데이터로 표현할 수 있을까?
      • 네이버 서비스 내 방문/클릭(관심) 데이터를 사용
        • 방문 날짜 전 후에 검색했던 장소 (근처 지역에서)
        • 방문 및 이용 날짜 (예약, 영수증 기준)
      • Model
        • 다른 Domain의 장소들간의 Co-occurrence를 잘 표현하는 것이 중요! → word2vec 기반 모델
          • word2vec은 하나의 문장내에서 함께 등장하는 단어들 간의 Co-occurrence를 고려한 언어모델
        • 방문이라는 Explicit Feedback을 모델에 강하게 반영해보자! → Global Context를 반영한 모델
      • describe
        • 모든 문장내의 POI들과 함께 Co-occurence가 일어날 수 있게 실제 문장을 설계
          1. 방문과 사용자 클릭 데이터를 기반으로 POI들을 word로 구성
          2. 방문데이터 자체를 Global Context로 고려하여
        • 각각의 POI들로 구성된 Document를 구성하고, word2vec을 백본으로 학습하여 RelatedPOI2VEC 모델을 개발
  • Service Application
    • 정확도를 올릴 수 없을까?
      • Limitation
        • Click을 정말 같은 의도라고 볼 수 있을까? - 탐색의 의도나 신뢰도가 떨어진다고 생각됨
        • 특정 기간 내에도 다른 의도의 탐색이 섞여 있지 않을까?
        → 다른 데이터를 함께 사용하여 정확도를 올리고자 함
      • 네이버 지도 내 길찾기 데이터 사용
        • 사용자의 피드백이 확실함
        • 출발지와 도착지가 존재하며, 길찾기의 빈도 수 정보가 있음 (통계모델)
    • 다른 데이터를 이용해서 정확도를 올릴 수 없을까?
      • 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로 표현할 수 있을까?
      1. Context 1 : Nearby Alternative
        • 특정 지역을 중심으로 특정 반경 내의 장소를 탐색하는 경우
          • ex) 야식, 데이트하기 좋은 장소
        • 하나의 검색 질의를 session으로 가정하고 session 내의 POI sequence를 동일한 근처의 대체제적인 성격을 지닌 데이터라고 간주할 수 있다.
          • POI들 간의 Co-occurence를 잘 임베딩하여 반영해야한다 → POI2VEC 모델 개발
      2. 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 모델 개발
      3. Context 3 : Similar Taste
        • 사용자가 방문했던/좋아했던 장소를 추천해주는 것
          • ex) 사용자들은 내가 아는 사람이 좋아했다고 하면 선호하는 경향성을 띔
        • user들이 방문한 POI가 비슷하거나 POI를 방문한 유저들이 비슷하다면, POI끼리는 매우 유사하다고 판단할 수 있다.
          • POI와 User로 구성된 Heterogeneous한 Graph를 잘 표현하기 위해 Graph 방식을 취함
          • POI와 Graph간 Random Walk(주변 노드와의 Importance 고려)를 이용
          • PinSage를 백본으로 사용 → POISage 개발
            • scalability에 강하게 됨
            • 서로 다른 유저가 좋아하지 않았던 POI를 고려할 수 있음
            • 실제 collabolative한 성향이 더 잘 녹아드는 것을 확인할 수 있음
    • 이런 행동들을 어떻게 Model로 녹여낼 수 있을까?
      • POI가 유저에 의해 소비되는 것은 다양한 Context가 있고 아래와 같이 3가지 모델로 압축할 수 있음.
    • 실제로 Context별로 학습한 모델들이 다른 특성을 보이는가?
      • 서로다른 컨텍스트에 대해 representation learning을 진행해서인지 서로다른 특성을 보이고 있다.
        • 파랑 : others(고기구이), 붉은색 : 소고기, 녹색 : 돼지고기, 주황색 : 정육식당
      1. POI2VEC : 유사한 취향의 사용자들이 좋아한 장소를 찾는 경우
        • 지역을 중심으로 임베딩되어 그런지 서로 뭉쳐져 있지 않은 것을 확인할 수 있음
      2. POIMeta2VEC : 사용자들이 방문한 poi에 기반한 poi-user graph
        • 메타데이터라는 것을 고려해서인지 서로 뭉쳐져서 표현되는 것을 확인할 수 있음
      3. POISAGE : 다양한 user, poi feature를 고려하고, collabolative filtering의 성향을 반영
        • 사용자의 취향을 고려해서 각각의 업종들 간에도 분리되는 것을 확인할 수 있음
    • 어떻게 모든 context를 고려하여 optimization 할 수 있을까?
      • 모든 context를 고려하여 최적의 우리만의 POI embedding을 만들고 싶었다.
        • 그렇게 해야 모든 상황에 맞는 모든 downstream task에 맞는 취향기반 장소 추천을 잘할수 있지 않을까 생각
      • AutoEncoder를 백본으로 하여 joint representation learning을 진행
        1. cosine similarity(top k nearest)에 기반한 추천에 적합한 joint representation learning은 무엇일까?
        2. 기존 context를 뭉개지 않고 context별 모델로 부터 생성된 POI embedding들을 어떻게 유지할 수 있을까?
    • 어떻게 모든 Context를 고려하여 Optimization 할 수 있을까?
      1. 앞에서 나온 3가지 결과의 모델은 concat
      2. reconstruction loss + classification loss → our loss 개발
        • reconstruction loss : AutoEncoder
        • classification loss : POI에 가장 중요하다고 할 수 있는 업종을 분리
      3. 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 모델 개발
      • History2VEC : User’s Recent Visit Behavior on POI
        • 최근에 관심을 가지고 있는 다음에 갈 장소가 유사할 수 있다라는 가정
          • 연속해서 방문하고 관심을 갖는 장소들을 User에 대한 POI Sequence 데이터로 표현
        • 다음에 방문할 장소를 업종이나 장소 기반으로 맞추는 것은 multi-lable에 대한 classification 문제로 볼 수 있다.
          • Deep Neural Network for Youtube Recommendation을 백본으로 하여 우리만의 모델 개발
            • 이를통해 다음에 갈 장소를 제공하는 모델을 개발
          • classification 하기 전 단계에 있는 임베딩 값을 유저라고 가정하고, 유저간의 유사도를 구하는 과정을 통해 실제 유저를 추천
          → History2Vec 개발
    • 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로 간주하여 모델 고도화
    • 어떤 추천 모델이 가장 좋은 결과를 보이는가?
      • Precision(정확도) 측면에서는 Follow Sage가 가장 좋음
        • Follow라는 action이 방문, 관심, 최근이라는 것보다 명확한 사용자의 피드백이기 때문
        • 그러나 Diversity 측면에서는 가장 약한 모습을 보여줬다.
    • 하나의 Collection을 통해, User 추천을 한다면 어떻게 최적화할 수 있을까?
      • 추천에서 가장 큰 가치 중 하나도, 다양한 유저들을 추천하고 following 함으로써 더 다양한 장소들을 통해 나도 몰랐던 장소를 추천 받는 것
      • 단일 모델로는 최적의 결과를 만들어내기는 어렵다.
    • 어떻게 여러 모델을 조합하여 최적의 추천 결과를 제공할 수 있을까?
      • 3가지 모델을 통해 추천된 추천 User의 candidate를 기반
        1. 각각이 나와 얼마나 유사한지 조금 더 구체적으로 확인하는 관심지역이나 최근 검색했던 메뉴, 관심업종과 같은 것을 Jacard Distance로 계산
        2. 계산 결과를 기반으로 다시 하나의 컬렉션으로 만들어 나의 취향과 유사한 유저를 추천해주는 방식을 취함
  • 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를 가지고 있다.
  • Model Development
    • Structured Data를 모델로 어떻게 녹여낼 수 있을까?
      • Graph 구조로 표현하는 것!
        • UGC의 Structure를 잘 이해하고 multi-modality적인 성격을 잘 녹여내는데 있어 Graph modeling을 선택
      • 가장 명확한 표현은 UGC는 POI에 포함되어 있다는 것
        1. 그래프로 표현하면 POI를 중심으로 연결되어 있는 각각이 Separated 된 Star Graph 형태를 띄게 됨
        2. 이렇게 되면 서로 POI간에 UGC가 가져갈 수 있는 정보라는 것은 단일 POI 뿐이기 때문에 UGC가 제대로 임베딩 되지 않음
      • Separated Graph를 User 취향 기반으로 연결하여 Node간 Feature를 공유할 수 있도록 Graph를 Design
        1. 사용자가 남긴 다른 POI지만 같은 업종에 있다하면 유사한 특성을 지닐수 있기 때문에 이러한 것들을 virtual edge로 연결하여 POI와 UGC로 생성된 Heterogeneous한 그래프 구성
        2. 이 그래프로 앞서 말한 PinSage 모델에 적용하기 좋음
          • 두 가지 타입으로만 구성된 Bipartite Graph이므로
          • 이때는 negative sample(서로 유사하지 않음)을 정의하는 것이 매우 중요
    • Negative Loss는 어떻게 정의할 수 있을까?
      • 장소추천에서 가장 중요하다고 할 수 있는 “서로 다른 업종은 분명히 다를 가능성이 높다.”에 기반하여 negative sample로 정의하여 Review Sage 개발
    • 실제로 Multimodality를 고려한 추천의 품질은 어떠한가?
      • Multi-modality적인 성격을 녹여내는 것이 좋다는 것을 확인할 수 있음
        1. Review Sage의 Node Feature로 UGC에 Image와 Text들을 PreTrained 모델을 임베딩시켜 넣음
        2. Review Sage는 UGC와 POI, User의 Global Structure까지 고려하기 때문에 훨씬 더 좋은 성능을 보이며, Diversity 측면에서도 다양한 장소들을 발견하게 해줌
          • 단순히 Image나 Text에 기반하여 nearest를 찾는 것이나 Image와 Text를 concat시켜 찾는 것 보다 훨씬 좋은 성능이 나옴
  • 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)

6. Conclusion

  • 추천에서 최적의 모델(Sota)가 있다고 가정하고 개발하고 있진 않다.
  • 사용자들에게 다양한 관점에서 서비스적인 가치와 발견의 가치를 제공하는 것이 중요
    • (Context Discovery) 어떠한 상황에서 발견을 하게 해줘야 하는지
    • (Context Discovery) 발견에 최적화된 모양의 데이터는 무엇인지
    • (Model Development) 그것을 가장 최적화 하기위한 모델은 어떤 형태가 좋을지
    • (Service Application) 서비스에 제공하는데 정확도와 신뢰도를 주기위해 다양한 기법들을 적용
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함