머신러닝 & 딥러닝 공부/논문리뷰

[논문리뷰] Deep Neural Networks for YouTube Recommendations 논문 리뷰

조녁 2022. 6. 17. 13:10
반응형

 

 

 

안녕하세요~!

28년차 진로탐색꾼 조녁입니다!!

 

오늘은 구글의 유튜브(YouTube)추천 논문 3편 중 2번째 논문인 Deep Neural Networks for YouTube Recommendations를 리뷰해보려합니다.

원논문의 순서를 따라 리뷰했으며, 내용에 있어 어떠한 의견도 늘 환영입니다!! 

 

0. 논문 선정 이유

시작하기 전에, 6년전 논문임에도 원논문을 선정한 이유에 대해서 얘기해보고 싶습니다.

 

 1. 유튜브는 제가 겪어본 가장 강력한 추천 시스템이기에 선정했습니다. 지금도 매달 만원이상의 돈이 제 통장에서 빠져나가고 있습니다 ㅎ.. (유튜브 프리미엄 못잃어..)

 

 2. 연구가 아닌, 실제 서비스를 기반으로 작성된 논문이라서 선정하게되었습니다.

이전에 주로 사용되던 MovieLens , Netflix, Music Recsys 등 데이터셋은 몇십만인데 비해, 실제 서비스에선 몇천만 이상의 데이터가 발생할 수 있습니다. 이에 따라 연구에서 SOTA를 찍은 모델들일지라도, 실제 서비스에선 차이가 발생할 수 있습니다. 원논문에선 모델 아키텍처뿐 아니라, 구글이 유튜브를 운영하며 경험적으로 얻은 Feature Selection Tip과 같은 내용또한 포함하고 있습니다. 

 

 

1. 요약(Abstract) 

  • 유튜브(YouTube)는 대표적인 엄청 큰 개인화 서비스입니다. 이 논문에선 딥러닝을 통한 엄청난 성능 개선을 high-level에서 알려줄 것입니다. 모델은 두 가지 단계로 나눠지는데, 우선 Candidate Generation Model(후보생성 모델)과 이후의 구분된 Ranking Model(랭킹 모델)을 설명할 것입니다.
  • 또한, 실제적으로 유저를 대상으로 대규모 추천시스템 구축 및 유지를 경험하며 생긴 교훈들도 같이 제공하고 있습니다.

 

 

2. 개요(Introduction) : 실제로 딥러닝을 통해 서비스의 성능을 개선함

  1. 실제 상황에서 겪게 되는 이슈들(Challenging from three major perspectives)
    • Scale : 엄청난 양의 데이터와 제한된 컴퓨팅 파워로 인해, 고도로 전문화된 분산 학습 알고리즘과 효율적인 서빙 시스템이 필수
    • Freshness : 새로운 컨텐츠의 빠른 적용이 필요하다. 따라서, 초당 몇 개가 업데이트되는 상황에서 반영할 수 있어야 함
    • Noise : 낮은 meta data 퀄리티(sparse , many external factors) 및 Implicit Feedback(시청 이력) 위주 데이터가 주를 이룬다. 이러한 특정 특징에 강력한 알고리즘이 필요
    • 위의 문제를 범용적으로 해결하기 위해 DL을 제시하고 있으며, 아래 2가지 레퍼런스(분산처리 & 의미분석)도 가볍게 살펴볼 수 있다. 
  2. 구글이 사용하는 보편적인 대규모 분산 딥러닝 모델(2012, Large Scale Distributed Deep)
    • 비지도 학습과 함께 대규모 학습이 가능해짐. 수십억 개의 파라미터 학습을 위해 수만 개의 CPU 사용, DistBelief라는 소프트웨어 개발함.
    • Downpour SGD , Sandblaster L-BFGS 두 가지 알고리즘을 통해 학습 규모 & 속도 개선
  3. (sementic segmentation 의미분석) (2016, TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems)

[👇 더보기 클릭 시 사진 노출] sementic segmentation 예시 

 

더보기

1. 1마리 강아지 잘 인식합니다.

 

 

2. 다수의 사람도 잘 인식합니다.

 

3. 그러나, 작게보이는 다수의 사람들은 배경으로 인식합니다. 

 

 

4. 뒤에 작게 보이는 사람은 배경으로 인식하고, 앞에 크게 보이는 사람은 제대로 인식합니다. 

 

 

5. 배경과 비슷한 색의 강아지를 배경으로 잘못인식합니다.

 

 

- 이후 Chap3에선 간단한 Overview를 제시하고, Chap4에선 후보생성모델(Candidate Generation Model)이 어떻게 학습되고 사용되는 지 자세히 다룹니다. 실험결과를 통해, 어떻게 딥러닝(DL)과 추가적인 다른 신호(additional heterogeneous signals)가 모델 성능에 도움이 됐는 지 보여줍니다. Chap5에선 랭킹모델(Ranking Model)이 전통 로지스틱 회귀를 어떻게 수정해서 기대 시청시간 예측모델을 학습시켰는지 보여줍니다. 

 

 

3. 전반적인 모델 설명(System overview)

 

  • 전체 비디오의 유저 히스토리를 보고 협업필터링을 통해 candidate generate(후보 선출)을 몇백 개 추려낸다. → 랭킹 모델의 후보군은 많지 않으므로 추가 피처들을 추가해서 랭킹모델을 돌린다. 결과적으로 우선순위 몇십 개의 영상이 나온다.
    • 컨텐츠 기반 필터링 : 내가 액션을 취한 컨텐츠와 비슷한 컨텐츠 추천
    • 협업 필터링 : 사용자의 구매이력, 평점 등 사용자 행동 기반하여 추천
    • [👇 더보기 클릭 시 사진 노출] 예시  

 

더보기
당근 마켓에서 내가 거래한 당근러의 다른 제품 추천(컨텐츠 기반) , 다른유저가 이 제품과 함께 본 제품들(협업 필터링)

 

  1. Candidate Generation Model : High-precision 이 목표
    • precision : 진짜라고 예측(Positive)한 것들 중 진짜(True)의 비율(암환자로 예측한 환자 중 실제 암환자 비율)
    • recall : 실제로 positive한 애들 중 올바르게 예측한 비율(실제 암환자 중 암환자로 예측한 비율)
      ** 오타 : TN -> FN
  2. Ranking Model : 다양한 다른 소스들(피처들)을 포함하여 성능 개선시킴

 

 

4. 후보생성모델(Candidate Generation Model)

 

 

  • 위 그림이 후보생성모델의 전체 아키텍처이며, 아래 6단계로 나눠서 리뷰해보도록하겠습니다.

 

  1. video watches & search tokens 를 각각 dense embedding 
  2. 모델에 feeding하기 위한 input combiner
  3. Additional features  
  4. DNN Layers(ReLU Stack) 
  5. Softmax Prediction(with Negative Sampling)
  6. Serving (NNS Algorithm)

 

 

4.1. video watches & search tokens 를 각각 dense embedding 

 

The task of the deep neural network is to learn user embeddings u as a function of the user’s history and context that are useful for discriminating among videos with a softmax classifier.

 

  • Video Embedding과 Search Token Embedding은, 각각 유저 한 명의 시청 이력과 검색 이력이다. 
  • 높은 차원 임베딩(sparse)을 각 영상 별 단어(키워드)로 바꾸고 학습시킨다. 
  • 오차역전파(back propagation)을 통해 embedding하는 부분까지 학습한다.

 

(뇌피셜) 과연 video watches 를 어떻게 embedding하는걸까? 

 

 첫번째, 영상 썸네일(Image)을 의미분석한 키워드에 제목(Text)을 더한값으로 각 영상을 태깅해준다.

(레퍼런스 : 이미지 의미분석 코드)

 

 두번째, 위의 값을 Input으로 Feedforward Network에 넣어주면 Dense Embedding 이 나온다. 

 

 

 

4.2.모델에 feeding하기 위한 input combiner

 

  • 모델학습을 위해 고정된 사이즈의 Input으로 변환해준다.
  • 다양한 방법(sum , concat, average)을 사용해봤는데 average가 성능이 제일 좋음

 

4.3. Additional features

 

  • geographic embedding(지역, 기기 등)
  • example age(영상의 나이)
  • 모두 단순하게 concat해서 큰 Input을 만든다.

 

영상의 나이(example age)피처에 대해서 더 살펴보면,

베이스라인일때는 실제(Empirical Distribution)분포와 다르게 나오지만, 베이스라인에 영상의 나이(Example age) 피처를 추가하면 실제분포와 유사해지는 걸 확인할 수 있습니다.

  1. Freshness is very important
  2. 히스토리 데이터를 기반으로 학습을 시키면 오래된 아이템들이 더 추천을 많이 받는 현상
  3. "영상의 나이"를 추가 feature로 넣어보자!! (concat)

 

 

4.4. DNN Layers (ReLU Stack)

 

  • Fully connected "Tower" : 점점 좁은 쪽으로 통과시킨다. 
  • Output으로 user embedding이 나온다. (user embedding은, 유저의 선호도 정보)

여기서 실험적으로,

Layer는 더 넓게 쌓는 것이 더 좋은 성능을 내는 걸 확인하실 수 있습니다. 

 

 

4.5. Softmax Prediction (with Negative Sampling)

 

  • user embedding에 softmax를 취해주면, video 별 가중치가 output으로 나온다.
    • e.g) [0.4, 0.2, 0.1, 0.3]
  • Negative Sampling : 수천개의 샘플만 뽑아서 샘플링 된것을 통해 학습을 시킨다. (100배 이상 시간 단축!!)

 

 

4.6. Serving (NNS Algorithm)

 

  • 상위 N개의 비디오 : user vector u + 학습된 video vector v_j
  • Dot-product space에서 가장 가까운 아이템을 찾음
  • Nearest Neighbor 알고리즘간에 성능차이는 크지않으므로 결과를 빨리 내는게 중요

다만, 논문은 16년도까지의 nns 알고리즘 기준이었기에, 최근에는 아래 최신표 참고하여 비교해보시면 좋을 것 같습니다. 

 

출처 : https://aaoossiinnaa.tistory.com/87

 

그 외 실제 환경을 고려한 요소들 
  1. 모든 비디오 시청이력을 확인해야 bias가 없다. (외부 사이트 포함)
  2. 학습에 사용할 이용자별 영상 횟수를 fix해야 heavy user(영상 많이 본 유저) 에 치우치지 않는다.
  3. 새로운 검색 쿼리에 즉시 추천엔진을 반영하지 않는다. (한번 검색했을 뿐일 수도 있다)
  4. 비대칭적인 감상 패턴을 적용해서 학습 시킨다. (영상을 규칙적으로 보지않는다. 딥러닝 영상볼땐 그거 쭉 보다가, 게임 영상볼떈 그걸 쭉 본다.) 

위 Figure 5와 같이 비대칭적인 감상 패턴을 적용해서 학습시키면,  미래정보 누설 및 불규칙 영상소비 패턴을 무시하게된다.

 

 

5. 랭킹모델(Ranking Model)

 

 

  • 앞선 과정에서 생성한 후보군(높은 확률로 클릭할) 영상들을 모두 볼 수도 있지만, 특정 썸네일에 따라 안 누를 수도 있기때문에 랭킹모델을 통해 수십개로 줄여줍니다. 
  • Input으로 들어가는 영상의 갯수가 줄어들었기 때문에 추가적으로 유저 & 영상간 관계 파악하기 위해 피처들을 추가해줍니다. 
  • 아래 4가지 과정을 통해 랭킹모델(Ranking Model)을 리뷰해보겠습니다.

 

  1. 피처들을 각각 Embedding
  2. Ranking Model
  3. Task : Expected Watch Time
  4. 피처가 많으므로, Feature Engineering

 

 

1. 피처들을 각각 Embedding

 

 

  • 후보 생성 모델과 달리, Input의 갯수가 많지 않으므로 많은 Feature들을 넣어준다.
  • 후보 생성 모델과 같은 ID space , embedding 사용한다.
  • 직전 시청이력은 average해서도 쓰고, 직접 원본 그대로도 쓴다. 
  • continuous features는 normalize해서 사용

 

 

2. Ranking Model

 

  • 깊고 넓을 수록 성능이 잘 나온다. (아래 실험결과 표 참고)

 

3. Task :  Expected Watch Time

 

 

  1. 후킹용 영상 클릭 데이터를 제외하기 위해, 추천된 영상을 얼마나 오래동안 볼지 예측하는 것을 목표로함 
  2. 감상시간은 안봤으면 0, 봤으면 본 시간을 값으로 입력
  3. 감상 시간으로 가중치를 준다.(Weighted logistic regression) , CTR보다 효과적이다.

 

 

4. 피처가 많으므로 , Feature Engineering 

 

 

  1. 각 feature들을 어느정도 가공해줘야 한다.
  2. 특히나 시간 연속성을 가진 데이터들은 summarizing이 필요
  3. 사용자 이용패턴, 추천했는데 보지않았던 영상 등도 활용
  4. 가장 좋은 feature는 비슷한 비디오에 대한 유저의 반응

 

 

6. 결론

1. 우리의 여러층의 DeepCF 모델은 기존의 방법(matrix factorization) [23] 보다 성능을 많이 향상 시켰다.

 

2. "영상의 나이"가 성능을 크게 개선 시켰다. 오프라인에서 precision을 , 온라인 A/B 테스트에서 시청시간 예측을 향상시켰다. (온라인 A/B 테스트가 중요하다)

 

3. 모든 것을 딥러닝으로 하기는 쉽지 않다. (파이프라인 구축, 임베딩 방법 등 중요)

딥러닝은 Category features와 Continuous features를 임베딩 및 quantile normalization를 각각 해줘야한다.

그럼에도 딥러닝을 쓰는 이유는, 수많은 피처들이
비선형성을 통해 효율적으로 표현되어 성능이 향상되기 때문이다.

 

4. positive data는 감상 시간에 가중치를 주고, negative data는 unity(통일성)에 가중치를 준 것도 개선점이 컸다. (CTR일때보다 시청시간예측에서 더 주요함)

 

 

 

참고자료

더보기

NBT 발표 : https://www.youtube.com/watch?v=V6zixdCIOqw&t=569s

recall , precision 개념 : https://j-i-y-u.tistory.com/37

추천시스템 전반 : https://lsjsj92.tistory.com/563

ANN 알고리즘 비교 : https://aaoossiinnaa.tistory.com/87

네거티브 샘플링 : https://wikidocs.net/69141

 

 

 

반응형