좋은 컨텐츠인 DEVIEW 를 제공해주신 NAVER , 그리고 연사님에게 감사드립니다.
네이버에서 뭐볼까?
뭐볼까 - AI 콘텐츠 추천 서비스
네이버에서 관심있는 , 여러 주제의 콘텐츠를 한곳에서 모아 보는 추천 서비스
방문자수 + 클릭수 ; 페이스북, 인스타그램, 틱톡
가볍게 보는 서비스
체류시간 + 리텐션 ; 유튜브, 넷플릭스, 시리즈on
마음먹고 보는 서비스
Challenges
2019/10월 MY구독 추천 출시부터, 2020/11월 뭐볼까 출시까지 효과적인 콘텐츠 추천을 위한 많은 고민과 개선 사항들.
① 추천콘텐츠 정제
다양한 주제와 여러 종류의 콘텐츠를 추천하기 위해 어떻게 정재해야 할까?
--> 주제 분류기, 이미지 분류기, CMS
② AI 추천 모델
사용자의 이용 패턴에 맞는 효과적인 추천 모델은?
--> User-Modeling, Exploitation/Exploration 추천 모델, Learning To Rank
③ 최적의 UI 실험
뭐볼까 서비스에 맞는 최적의 UI는?
--> 최적의 그리드형 UI를 찾기 위한 실험 과정
추천 콘텐츠 정제

주제 분류기(Category Classifier) 역할
추천 후보 문서들을 30여개의 주제로 자동 분류
주제 분류기의 필요성
1. 뭐볼까 추천체 주제 선호도 반영
2. 주제별 콘텐츠 모아보기 기능
Text CNN 기반 주제 분류기

- 제목 / 본문 / 태그 를 pretrained word2vec 으로 200차원의 vector embedding 다음 CNN 으로 분류하여 주제를 분류하였음.
학습셋
* 과거 30여개 주제판에 게재된 문서들을 해당 주제의 정답(Positive Sample)으로 간주
* 학습셋의 대부분의 문서들은 단일 주제에 속함 -> Multi-label 형태의 학습셋이 아님
* 주제별 binary classifier 형태로 변경
Multiple-binary 분류기

Multi-class -> Multiple binary 분류기로 변경
- 각 binary 분류기는 문서가 특정 주제에 속하는지 여부만 판별.
- 대부분의 문서가 단일 주제에만 속하는 학습셋에 적합.
Positive / Negative 샘플링 비율 변화
주제 분류기에서 Positive 샘플보다 Negative 샘플을 만날 확률이 큼
- 총 30여개 주제판
Positive/Negative 샘플링 비율 변화
- 1:1 -> 1:10 변화, 정확도 +75% 향상
RESNET 기반 이미지 분류기 (Image Classifier)
main / text / adult 이미지 즉 , 1개의 적절 & 2개의 부적절 클래스로 분류
--> 추천시 패널티를 받게 됨.
- Yahoo open_nsfw 평가셋으로 성능 비교
- MM (RESNET기반) 준수한 성능
Contents Management System
뭐볼까에 추천된 콘텐츠별 노출수, 클릭수, CTR 지표 조회 기능
주제별, 키워드별 콘텐츠의 일간 생성량 모니터링 / 컨텐츠 유통 모니터링
향후 - 창작자별 지표 조회 기능을 추가하여, 창작자 지원을 위한 툴로 발전 계획
아마 경영정보학회에서 서울대 연구하시는 분 께서 발표와 관련이 있지 않을까 싶음?!
AI 콘텐츠 추천 모델
추천 모델링 문제 정의
Recommendation Model
1. User Modeling ; 사용자는 어떤 취향?
; Exploit / Implicit feedback + Demographic Click / Like / Keep / Watched time / Search query ...
2. Retriever ; 사용자가 볼만한 컨텐츠는?
; User-based , Item-based , Topic-based ...
3. Ranker ; 어떤 순서로 제공?
; 2 stage 방식 --> Retriever 로 가져온것을 어떤 sequence로 제공할지도 마찬가지로 너무 중요하다.
* User storing procedure
USER -> User behavior stroage -> Feature model -> User contetxt storage ( User Embedding )

Retrievers , Ranker , Business Logic

Retriever 고도화 방향
Exploration (탐색) vs. Exploitation (활용)
- 사용자의 취향 탐색 -> Bandit
- 추천 후보의 정확도 향상 -> DNN retriever
Contextual Bandit - 도입 배경
- 취향 적중시키기 vs. 유저의 취향 변화 추적, 컨텍스트 확장
- 적중률이 높아지면, 비슷한 아이템 위주로 추천하게 되는 경향 ( bias )
- 사용자가 매번 비슷한 추천결과에 질려서 떠날 수 있음.
- 끊임없이 새로운 시도(exploration) -> 유저의 취향 변화 / 미발견 취향 탐색
- 탐색 대상 아이템 수 축소
- 취향 탐색에 효과적인 인기 아이템 선정
- Bandit 알고리즘으로 유저의 취향 탐색
- 탐색(Exploartion)을 통해 각 action의 reward를 추정
- ε-greedy, UCB(upper confidence bound), Thompson sampling , ...
- 종합 CTR 추정 -> context(= user X item feature)에 따른 클릭 가능성 추정

* 사용자 구분 없이 global 한 탐색을 하기 위해 baseline으로 Mutli-armed bandit을 사용하고 그것과 비교하여 Contextual Bandit 로 User - Item interaction 을 예측함.
Contextual Bandit - 파이프라인

1. User features * Item feautres 를 context vector 로 가공
2. 만들어진 context vector 를 input 으로 하여 reward 를 label 로 하여 모델을 업데이트
3. 모델의 업데이트로 인해 발생하는 파라미터 캐시를 storage 에 업데이트함.
4. 서버에서 Latency를 낮추기 위해 내부적으로 한 번 더 caching 함 .
5. 유저의 요청이 들어오면 User/item 피쳐를 조회하여 CTR 추정 후 Top-N 추천 후보 출력
6. 1~5 반복
Contextual Bandit - 적용 결과
온라인 A/B 테스트 지표.
DNN Retriever - 배경
Matrix factorization 모델

DNN Retriever - 구조

DNN Retriever - 모델 입력
- 히스토리와 각종 피쳐를 concatenate하여 input vector 생성
DNN Retriever - 유저 벡터 생성
- 파라미터 및 임베딩을 1시간마다 학습 & 갱신
- API 서버 내부에서 행렬 연산 (Eigen lib. 사용)
- Latency 최소화
DNN Retriever - 후보 생성
- 모델이 생성한 user / item vector 간의 approximate nearest neighbor 을 통해서 추천후보를 생성
DNN Retriever - 적용 결과

랭킹 및 후처리 과정

Learning to Rank
크게 3가지 그룹의 feature을 사용하고 있음.
Retriever features
User/session Features
Item features

* Pointwise estimator vs. Pairwise estimator
* complexity model vs. simplity model
Diversification

* 아이템간의 유사성을 다양한 feature[채널유사성 / 카테고리 / 컨텐츠 유사성]을 토대로 측정하며 다양한 아이템을 listing 함.
주요 개선 이후 지표 변화

새로운 추천 UI 실험
피드형 UI에서 그리드형 UI로 변화

그리드형 UI - 제목의 중요성
뭐볼까 콘텐츠 특성
- 순수 이미지가 아닌, 이미지와 함께 제목과 본문이 존재하는 문서
- 제목이 생략되면, 내용 예측이 어려움 --> 제목 2줄 노출
그리드형 UI - 노출 위치별 CTR 분석

그리드형 UI - 실험 결과

신규 추천 컴포넌트 - 키워드/이미지 모달

마치며
RECAP & REVIEW
1. Text CNN 기반 주제 분류기?
2. Positive / Negative 샘플링 비율 변화
3. Recommendation system , 3요소
4. Contextual Bandit
* Bandit 알고리즘 ?
5. Pointwise Estimator / Pairwise Estimator
6. 현업에서는 간단한 모델을 사용함으로써 Latency를 줄일수 있음. 허나 정교한 Feature Engineering 이 필요함.
7. UI 의 중요성 , 특히 그리드형에 대해 세부적으로 어떻게 유도하는가에 대해서 고민이 필요할거라 생각됨.