ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 네이버 뉴스 추천 알고리즘 (2021) - AiRS 추천시스템
    Recommendation System 2023. 9. 23. 16:17
    남들에게 설명하기 위해 꼼꼼하게 작성한 글이 아니라, 그냥 이해하기 쉽게 풀어서 설명한 글입니다.
    혼자 공부하다가 생긴 Question이나, 깨달은 점을 기록하고 싶어서 작성한 글입니다.
    첨언 언제나 환영합니다 :) 

    고려사항(Design Consideration)

    DC1. 실시간&즉각적인 예측 : 딥러닝 모델의 결과는 우수하지만, 매일 수만건의 뉴스가 생성되고, 수만명의 사용자가 이용하는 뉴스 도메인의 특성상 딥러닝 모델을 통해 즉각적인 예측이 어려움. 가볍고 효과적인 추천 모델 필요.

    ㄴ> CF 사용

     

    DC2. 뉴스 품질 측정 자동화 : 같은 주제의 뉴스더라도 고품질의 뉴스를 추천해야 함.

    ㄴ> QE(Quality Estimation) 측정. (어떻게 하는지 안알려줌)

     

    DC3. 시의 적절한 이슈 감지 : 개인의 선호도와 무관하게 사회적으로 많이 다루어지는 이슈에 대한 뉴스를 추천해야 함.

    ㄴ> SI(Social Impact) 측정. (어떻게 하는지 안알려줌) 1) 최근에 많은 사용자들이 관심을 갖는 기사 2) 여러 언론사에서 공통적으로 다루는 주요 기사

     

    DC4. 확장성 있는 시스템 구조 : 위 고려사항을 반영하여 실시간으로 기사와 사용자 로그를 분석, 적절한 뉴스를 추천할 수 있는 시스템 구조가 필요.


    뉴스 추천 단계 (간략히)

    1. candidate

    a) NPMI(CF) 사용하여 실시간&즉각적인 예측(DC1)을 위한 preference 측정

    b) DNN 사용하여 뉴스 품질 측정 자동화(DC2)를 위한 QE 측정

    c) 최근 클릭수를 이용하여 시의 적절한 이슈 감지(DC3)를 위한 SI(user), SI(press) 측정

     

    2. ranking

    1에서 생성된 후보들이 갖는 4가지 개인화 피쳐, 5가지 비개인화 피처를 사용하여 최종 점수 산출한 후 top K 추출.

     

    출처 : https://blog.naver.com/naver_search/222439351406

     


    뉴스 추천 단계 (자세히)

    1. candidate

    a) NPMI(CF) 사용하여 실시간&즉각적인 예측(DC1)을 위한 preference 측정

    - NPMI (Normalized Point-wise Mutual Information)

    기본 n일 동안

    vj : 사용자가 소비한 뉴스

    vk : 사용자가 소비하지 않은 뉴스

    p(vj), p(vk) : 전체 사용자가 소비한 뉴스 중 vj, vk 기사의 소비 비율

    p(vj, vk) : vj, vk를 함께 소비한 비율

     

    PMI가 높다 : 사용자들이 vjvk를 함께 소비한다는 것.

    NPMI : PMI를 정규화

     

    (vj,vk)로 이루어진 NPMI pair가 완성됨.

    y시간 내에 여러 vj와 단일 vk pair의 점수 중 가장 높은 값을 사용자가 vk를 선호할 선호도(preference) 값으로 사용. (실험적으로 최소값, 평균값보다 최대값이 정확했음.)  선호도가 가장 높은 top K (네이버는 1000개로 설정) vk를 후보군으로 생성.

    * MF나 AE의 CF 모델들은 수많은 양의 뉴스, 유저들의 선호도를 실시간으로 예측하기에 느릴 수 있음. 또한, popularity bias에 취약하여 소비가 적은 최신 뉴스 기사를 추천하기 어려움.

     

     

    b) DNN 사용하여 뉴스 품질 측정 자동화(DC2)를 위한 QE 모델

    - 클릭 수가 높아도 체류시간이 낮은 기사는 저품질 기사. 뉴스 사용자들이 만족했던 기사와 유사한 콘텐츠 특성을 갖는 최신 뉴스들을 후보로 추출하는 모델

    기사 vj에 대해 tj (제목), bj (본문), aj (기자 정보), sj (섹션 정보), ctj (콘텐츠 타입 정보), ivj (이미지 혹은 동영상 관련 정보) 피처를 사용. DNN구조를 이용하여 비선형적인 관계와 특징을 찾을 수 있음.

    tjbj는 임베딩 레이어 가중치를 공유. 각 피처들을 나타내는 임베딩 벡터를 concat -> FC layer 2번 (ReLU 활성화 함수) -> 품질 점수인 qj를 출력

     

    -loss-

    Random pairing : vj보다 c(click)과 d(체류시간)이 적은 vk를 랜덤하게 뽑는다.

    Same-press pairing : vj와 같은 언론사의 기사 중 c, d가 적은 vk를 랜덤하게 뽑는다. (특정 언론사의 기사가 고품질 기사로 과다하게 샘플링 되는 것을 방지하기 위함)

    이후 pairwise ranking loss를 최소화시킨다.

    Q. 여기서 궁금한 것
    1. 왜 loss를 '최소화' 시키는거지 ? 기존 기사와 저품질 기사의 차이가 크도록 학습해야 하는거 아닌가 ? 
    A.  '최소화' 시키는 것 맞음, 그러나 네이버 블로그에 올라온 수식이 틀린 것 같음. (의견 있음 달아주세요ㅠ)
    vj의 품질 점수 = qj, vk의 품질점수 = qk 라고 할 때, qj > qk 이도록 학습할 것이며, safety margin을 위해 qj > qk+m 으로 학습시킨다.
    pairwise ranking loss는 qk + m - qj 의 값이 음수&작을수록 기존 기사와 저품질 기사의 차이가 크다는 것이다.
    그러므로, max(0, qk + m - qj) 을 최소화 시키는 방향으로 학습한다.
    다만, 네이버 테크 블로그에는 max(0, qj + m - qk) 를 최소화 시키도록 학습한다고 나와있다. 오타가 아닐까,, 건방진 생각인가? 그거 아니면 이해가 안되는 걸,,,

    2. 왜..랜덤하게 뽑을까? qj > qk 하도록 학습시키는거면 제일 낮은 vk를 뽑으면 되는거 아닌가? 더 학습이 잘되지 않을까?
    A. ㅜㅜ 왜임 ? 그냥 과적합 방지를 위함인가?

     

    이렇게 모델 학습하여 추천 시점 t를 기준으로 y시간 내에 송고된 기사의 품질점수 qj를 추론하고, 상위 k개를 추출하여 후보군 생성. (네이버는 1000)으로 설정.

    사실 뉴스 품질과 관련된 콘텐츠는 자주 바뀌지 않기 때문에 QE가 DNN을 이용항 딥러닝 모델이더라도 자주 재학습할 필요 없고 추론만 하면 됨. 또한, 클릭과 체류 시간만 활용한 것보다 둘 다 활용한 것이 고품질 기사를 예측하는데 더 효과적임.

     

     

    c) 최근 클릭수를 이용하여 시의 적절한 이슈 감지(DC3)를 위한 SI(user), SI(press) 측정

    - SI(user) : 뉴스 사용자들이 관심을 가지는 이슈

     

    현재 시점 t를 기준으로 기사 vj의 최근 z분 동안 사용자 클릭수 순위 : rj(t)

    상위 k(2,000)개를 산출한 후보군 : H(t)

    H(t-z, t) : H(t-z)와 H(t)의 교집합

    avg(rj(t-z), rj(t)) : t-z시점의 vj순위와 t시점의 vj순위의 평균

     

    Q. 여기서 궁금한 것
    1. rank(avg ~, H)를 네이버 블로그에서는 vj 내에서 avg의 값의 순위라고 하는데, 이게 대체 뭔말인지 모르겠음.
    avg는 평균 순위를 의미하고, H는 교집합을 의미하는데,, rank(순위, 집합)의 의미가 모지..?
    vj는 문서를 의미하는데 "vj 내" 에서의 '순위' 라니....? ㅠㅠ

     

    여하튼 궁금증은 풀리지 않았으나 차치하고, popjraisej의 의미를 살펴보자면

    popj는 기사 vj의 최근 인기 순위가 얼마나 높은지, 현재 뿐만 아니라 과거에도 순위가 높을수록 값이 커진다.

    raisej는 과거에 비해 현재 순위가 많이 오른 뉴스일수록 커진다.

    즉, 꾸준히 인기 있거나 최근에 갑자기 인기가 생기면 커지게 된다.

    이를 이용해 lpj(t)를 계산한다.

     

    - SI(press) : 언론사들이 공통적으로 송고하는 이슈

    현재 시점 t를 기준으로 최근 송고된 뉴스 기사에 빈번히 등장하는 키워드를 많이 포함하는 뉴스 기사를 후보로 추출

     

    현재 시점 t로부터 최근 y 시간 내에 생성된 뉴스기사 vj에 대하여 기사 제목과 본문을 이용한 TF-IDF 벡터 생성 -> 모든 문서에 대한 벡터 생성 이후 계층적 클러스터링을 수행하여 여러 그룹으로 나눔.(그룹 개수는 유사도 바탕으로 자동 정해짐) -> 각 클러스터의 점수인 cs(clusterq) 를 계산

    Q. 여기서 궁금한 것
    사실 위 식에 대한 설명을 온전히 이해하지 못했다. 설명이 부족하다는 생각 반, 내가 부족하다는 생각 반.. 예를 들어, Vclust가 무엇을 나타내는지 말해주지 않는다.. 클러스터링을 수행한다고 말할 때, 특정 시점 안의 모든 기사들에 대해 벡터를 만든다고 설명한 것이 아니라, 하나의 벡터를 기반으로 클러스터링을 수행한다고 말했기 때문에 Vclust가 특정 시점 사이의 기사들->벡터화->클러스터링 한 모든 집합인건지 헷갈린다.

     

    여하튼 위 식의 의미만 파악하자면, 유사도가 비슷한 기사들끼리 클러스터링하고, 기사 갯수가 많은 클러스터가 높은 점수를 가져간다. 즉, 비슷한 기사가 많다 = 그만큼 빈번히 등장한 뉴스

    가장 높은 k개의 클러스터를 후보군으로 추출한다.


    2. ranking

    이제 후보군을 추출했다면, 후보 기사(vj)에 대한 사용자(ui) 개인의 선호도를 계산하여 top k를 추천해준다. 이때, 개인화 feature 4개, 비개인화 feature 5개를 사용

     

    [Personal Feature(pf) 4가지]

    a. NPMI 기반의 선호도

    prefij : 앞서 계산한 NPMI 점수. 사용자(ui)의 기사(vj)에 대한 선호도

     

     

    b. Press (구독한 언론)

    o(ui, pj) : 사용자(ui)의 클릭 로그 중 언론사(pj)의 뉴스를 클릭한 빈도.

    ε : 해당 기사(vj)의 언론사를 사용자(ui)가 구독중이라면 가산점을 준다. (네이버는 0.5로 값을 줌)

     

     

    c. Section (주제)

    분자 : 기사(vj)가 속하는 섹션(sj)에 대한 사용자(ui)의 클릭 빈도를 기반으로 계산된 TF-IDF 점수

    분모 : 정규화 요소

    해당 기사가 사용자가 자주 읽는 섹션에 속해있다면 가산점을 준다.

     

     

    d. Keyword (키워드)

    kj : vj의 기사 제목에서 추출된 키워드

    tfidf(ui, kj) : 키워드(kj)를 포함하는 뉴스기사(vj)에 대한 사용자(ui)의 클릭 빈도 기반의 TF-IDF 점수

     

     

    [Non-personal feature(nf) 5가지]

    e. Recency

    agej : 추천 시점과 기사(vj) 작성 시점의 시간 차이

    p : -0.4

    agej는 '시간 차이' 이므로 항상 양수일 것이고, 값이 줄어들수록 y가 커지는 그래프 (근데 그래프 그린거 봤는데 기울기가 작음. 조금의 영향을 주는 것 같음. 물론  x값에 따라 다르지만..)

     

     

    f. Quality(품질 측정)

    앞선 뉴스 품질 측정 자동화의 QE 모델에서 기사(vj)의 점수

     

     

    g. SI(user)   <- 네이버 블로그에서는 f랑 똑같은 Quality라고 적혀있고, 수식도 똑같은데 오타 같음 ㅎ..

    앞선 시의 적절한 이슈 감지의 SI(user)에서 계산된 기사(vj)의 점수(lpj)

     

     

    h. Cluster (SI press)

    SI(press)에서 구한 기사(vj)가 속한 클러스터의 점수를 의미

     

     

    I. SI (user + press)

    기사(vj)가 SI(user)와 SI(press)의 후보군집에 모두 포함되어 있을 경우 0보다 큰 값이, 그렇지 않으면 0이 할당된다.

    또한, SI(user)에 속하는 뉴스 기사(vk) 중, 기사(vj)와 같은 클러스터에 속한 뉴스들의 수가 많을수록 ssi(vj)의 값은 커진다.

    즉, 소비자와 공급자 모두가 관심을 갖는 사회적 이슈를 포함할수록 값이 커진다.

     

     

    최종 선호도

    앞서 살펴본 pf 4가지, nf 5가지로 최종 선호도를 예측합니다.

    weightpfweightnf는 피처의 가중치. LTR문제를 해결하기 위한 방법론 중 하나인 LR 모델을  point-wise 방식으로 학습한다.

    이후 top k 를 추출하여 사용자(ui)에게 추천.

     


    다양성을 위한 후처리

    위에서 구한 최종 선호도만으로 추천할 경우, 아래 조건의 기사는 누락될 수 있음. 그러므로 아래는 후처리하여 노출시킴.

    - 사용자가 과거에 이미 클릭한 경우

    - 동일한 클러스터내의 기사가 여러 건 추천되는 경우 (사용자의 주제 선호도에 비례하여 추천될 수 있도록 하거나, 랜덤한 확률로 소비하던 주제 외의 주제도 추천할 수 있도록 함)

    - 거의 동일한 제목의 기사가 여러 건 추천되는 경우

    - 동일한 썸네일 이미지 기사가 여러 건 추천되는 경우


    성능 테스트(Evaluation Questions, EQ)

    1. 오프라인 테스트

    EQ1) NPMI(CF) 사용하여 실시간&즉각적인 예측(DC1)을 위한 preference 측정 실험

    - 베이스라인 : WRMF(Weighted Regularization Matrix Factorization), AE(Auto-encoder)

    - 탈락된 모델 : NGCF, VAE, CFGAN 은 학습시간이 길기 때문에 대규모 뉴스 추천 도메인에 빠르게 적용 불가, DKN, DRN, NPA 도 학습시간이 길고, 소비이력 뿐만 아니라 제목, 본문 등 뉴스 기사 내용을 사용하기 때문에 CF 모델로서는 탈락

    - 데이터셋 : 2주동안 네이버 뉴스 사용자 클릭 로그를 샘플링. user-10,168명 / item(기사)-40,921개 / interaction(클릭 로그)-272,625개. train-첫 12일, test-마지막2일

    - top k = 10

    - 평가 지표 : F1, NDCG

    - 기타 : 추천 모델의 업데이트 주기에 따른 성능 차이를 살펴보기 위해 30분/1시간/2시간/3시간으로 설정하여 지표 산출. 이때, test set의 label은 평균적으로 30분당 1.6개, 1시간당 1.73개, 2시간당 1.88개, 3시간당 2.01개임. 즉, 매우 적음.

    - 장비 : Tesla M40

     

    - 결과

    MF(WRMF), AE, NPMI의 시간별 모데의 정확도와 학습시간

    1) 정확도 : NPMI가 모든 시간대에서 F-score와 NDCG 모두 훨씬 높음. 왜냐하면 MF와 AE는 popularity bias에 취약하기 때문에, 이제 막 송고된 cold-start 기사를 적게 추천한다. 그런데 뉴스 도메인은 사용자들이 클릭하는 기사(test label)이 대부분 최근에 송고된 기사이기 때문에 MF와 AE의 F1 score가 낮은 것. 그에 반해 NPMI는 cold-item을 더 잘 추천해준다는 뜻.

    2) 시간 : 30분 간격 업데이트의 경우 MF와 AE보다 각각 116배, 129배 빠름. 이는 뉴스처럼 사용자들의 클릭 로그나 최신 뉴스 기사들이 빠르게 바뀌는 데이터에서, 학습시간이 빠르므로 적절한 모델이 된다.

    즉, NPMI는실시간 개인화 추천에 효율적이면서도 성능을 높일 수 있다.

     

    - 참고 : NPMI는 user나 item의 기타 정보 없이, user의 클릭 로그만으로 예측하는 모델이므로 정확도의 절대값 자체가 낮을 수밖에 없다. 그러나 EQ1의 목적은 실시간 추천을 위한 모델을 만드는 것이기 때문에 NPMI는 적합한 모델로 볼 수 있다. 이후의 QE, SI 추천 및 랭킹 모델 단계에서 여러 feature를 사용하며 보완하고 있다.

     

     

    EQ2-1) DNN 사용하여 뉴스 품질 측정 자동화(DC2)를 위한 QE 모델 실험

    - 모델 : DNN 기반 

    - 데이터셋 : 2달(20.12.18~21.04.15)동안 숭고된 뉴스 기사에 대해 전체 유저들의 클릭수(click)와 체류시간(dwell). train:test=7:3

    - 평가 지표 : PCC

    - 기타 : Positive sample과 Negative sample 구분을 위해 click과 dwell의 효과를 비교하기 위해 QE를 변형하여 QE(click+dwell, 클릭과 체류시간을 모두 이용한 모델 ), QE(click, 클릭만 이용한 모델), QE(dwell, 체류시간만 이용한 모델) 세가지를 실험

     

    - 결과

    모델별 품질점수(QE)와 피드백(click&dwell)간의 상관관계(PCC)

    3가지 QE 모델에 의해 예측된 품질 점수와 해당 뉴스들에 대한 사용자의 click과 dwell간의 피어슨 상관계수(Pearson Correlation Coefficient, PCC)를 분석한 결과. QE(click)이 예측한 품질 점수는 click과는 높은 상관관계를, dwell과는 낮은 상관관계를 보이며, QE(dwell)이 예측한 품질 점수는 click과는 낮은 상관관계를, dwell과는 높은 상관관계를 보인다. (어찌보면 당연한 것) 그리고 QE(click+dwell)은 QE(click)보다는 dwell과 높은 상관관계를, QE(dwell)보다는 click과 높은 상관관계를 보인다. 그리고 각 QE 모델별로 PCC(click), PCC(dwell)값의 조화평균을 고려하여 종합적으로 평가했을 때, QE(click+dwell)이 에측한 품질점수가 click과 dwell 모두와 가장 높은 상관관계를 가진다. 즉, click만 사용하거나 dwell만 사용하는 것보다 두 정보를 함께 활용하는 것이 QE 모델의 품질점수 예측에 더욱 잘 반영된다는 의미이다.

     

    EQ2-2) 다양한 언론사를 포함하기 위한 QE 모델의 loss 함수 실험

    - 실험 : 특정 언론사의 기사가 과다하게 샘플링 되는 것을 방지하기 위해 두 가지 각 pairing 모델을 비교. 클릭 수 기반으로 나뉜 언론사들의 QE 점수대별 분포도 파악.

    - loss pairing 모델 : Random vs Same-press pairing

    - 결과

    범례 : 기사별 클릭수를 기준으로 언론사를 4개의 그룹(Q1~Q4)로 분배. (Q4 : 가장 높은 클릭수를 받은 언론사들의 집합)

    x축 : 품질 점수를 0.2 단위로 구분하여 5개 범위로 나누어 bin 설정 (#5 : 가장 높은 QE 점수를 받은 기사들)

    y축 : 범례 그룹(Q1~Q4)별 비율

    #5를 보면 즉, QE 점수가 높아 후보군으로 추출될 그룹을 보면, Same-press pairing이 Random pairing에 비해 그룹들(Q1~Q4)이 조금 더 고르게 분포되어 있음을 알 수 있다.

     

     

    EQ3) 최근 클릭수를 이용하여 시의 적절한 이슈 감지를 위한 SI(user, press) 측정 실험

    - 실험 : 특정 기간동안 사회적 이슈가 되었던 뉴스 기사들이 SI 모델에 의해 탐지되었는지 검증.

    - 데이터 : 10일(21.04.23~21.05.02)동안 숭고된 기사와 사용자 클릭 로그를 이용하여 10분마다 SI(user)와 SI(press)모델 실행.  결과값인 LP점수와 클러스터 점수를 기반으로 최종 SI 점수 산출. 10분마다 가장 높게 측정된 SI 점수를 H-SI(The Highest SI score)로 정의

    y축(H-SI) 점수가 특정 시점에서 커지는 것을 알 수 있다. 이때의 H-SI 기사가 정말로 사회적으로 이슈가 되었는지 살펴보았을 때 첫 번째 표시 : 코로나, 두 번째 표시 : 영화 '미나리'의 배우 '윤여정'의 오스카 여우 조연상 수상, 세 번째 표시 : 대학생 한강 실종 사건 이었다.

    즉, SI 모델이 사회적인 이슈를 적절히 탐지하는 것을 알 수 있다.

     

     

    2. 온라인 테스트

    EQ4-1) AiRS 뉴스 추천 시스템 내의 각 요소들은 추천의 정확도 개선에 도움이 되는가? (후보군 모델)

    - Ablation 실험(AI 시스템의 특정 구성 요소들을 제거하여 그 성능을 측정함으로써 그 기여도를 파악하는 실험)

    - 데이터 : 21.04.30~21.05.05 동안 'MY뉴스'에 방문한 사용자 중 랜덤 샘플링. 일평균 user : 606,268명

    - 모델 : AiRS-CF, AiRS-QE, AiRS-SI (AiRS-X: X를 제거한 AiRS 모델을 의미)

    - 평가지표 : MRR, Precision

    - 결과

    모델을 하나씩 제거할 때마다 정확도가 떨어진다. 특히나 CF 모델을 제거할 때 가장 많은 정확도 감소가 나타났음을 알 수 있다.

     

     

    EQ4-2) AiRS 뉴스 추천 시스템 내의 각 요소들은 추천의 정확도 개선에 도움이 되는가? (랭킹 모델)

    - Ablation 실험

    - 데이터 : 21.05.07~21.05.12 동안 'MY뉴스'에 방문한 사용자 중 랜덤 샘플링. 일평균 user : 1,307,475명

    - 모델 : AiRS-PF, AiRS-NF

    - 평가지표 : MRR, Precision

    - 결과

    역시나 모델을 하나씩 제거할 때마다 정확도가 떨어진다. 

     

    -

    결과적으로 AiRS 내 각 요소들(모델, 피쳐) 모두 추천시스템 성능에 기여하며, 모든 요소를 통합하는 것이 가장 효과적이다.

     

    Q. 여기서 궁금한 것
    1. 왜 모델별 실험 데이터의 기간이 다 다른걸까? SI 모델의 경우, 사회적 이슈가 있었던 기간을 고르기 위해 기간을 조정했다면 이해가 되는데, 그 왜 다른 모델들은 다 같은 기간 내에서 진행했다면 더 정확한 실험이 되지 않았을까? 굳이 기간을 다 다르게 한 이유가 무엇일까?
    2. 각 실험 내에서 평가지표를 통해 어떤 모델/피쳐들이 추천시스템 성능에 얼만큼의 영향을 미치는지는 파악할 수 있지만, 해당 수치가 절대적으로 높은건지 낮은건지는 모르겠다. 예를 들어, EQ4-2에서 MRR이 가장 높은 점수는 0.00375이다. 꽤나 낮은 점수이지 않은가?

    [네이버 뉴스 알고리즘을 공부하며 얻은 인사이트]

    1. 이번 네이버의 알고리즘은 통계, 머신러닝, 딥러닝을 적절히 사용하여 다양한 추천이 가능한 사례였다고 생각한다. candidate->ranking 순서를 사용한 추천시스템의 가장 유명한 case는 16년도의 유튜브 추천알고리즘인데, 한가지 candidate 모델을 사용하는 것에 비해 네이버는 4가지 모델을 candidate에서 사용한다. 각 모델별은 실시간 추천, cold-item, item의 품질, 사회적 이슈라는 목적을 위해 사용된다. 다양한 추천을 위해 많은 고민을 한 것으로 보인다.

    2. 현업에서 추천을 다룰때마다 드는 생각이지만, 추천시스템은 딥러닝의 중요성/의존도가 엄청 높진 않다. 어떠한 data를 활용하여, 어떠한 목적으로, 어떻게 Feature Engineering을 하며, 어떤 알고리즘을 사용할 것인가 하는 전반적인 프로세스에 대한 고민이 더 중요하다. 아마도 추천시스템 딥러닝은 벤치마크 데이터셋에서는 성능을 보이지만 현업의 비정제 데이터에서는 효과를 내기가 어렵기 때문이다.  네이버의 candidate 모델만 하더라도, 결국 CF모델이 가장 성능에 영향을 많이 미치고, 그 다음이 SI 모델이다. DNN을 사용한 QE는 마지막이다. 솔직히 네이버 블로그에서는 모든 모델이 결국 영향을 미친다고 하지만, QE 모델은 1% 정도 영향을 미치기 때문에 그 영향이 크게 유의미하다고 생각하긴 어렵다.

    3. 현업에서 추천시스템 딥러닝이 많이 활용되지 못하는 다양한 이유 중 하나는 실시간 추천 때문이다. 실시간 추천에서 딥러닝은 학습시간이 오래걸리고, 심지어 CF 중에서도 오래 걸리는 모델들이 많다. 이번 공부를 통해 NPMI라는 빠른 학습이 가능한 모델을 발견할 수 있었다.

    4. 뉴스라는 산업 특성상 cold-user보다 cold-item이 더 많기 때문에 cold-item을 해결하기 위한 고민들이 곳곳에서 보였다. 다만 보통의 산업군에서는 cold-user가 더 많은 케이스가 많기 때문에, 추후 cold-user 문제 해결을 위한 연구가 있다면 공부하고 싶다.

    5. 네이버 테크 블로그,,, 생각보다 오타나 설명이 틀린 부분이 꽤 많다.ㅎ... 

     

     

     

    Ref.

    네이버 뉴스 추천 알고리즘에 대해 (Part1 ~Part3)

    https://blog.naver.com/naver_search/222439351406

    https://blog.naver.com/naver_search/222439504418

    https://blog.naver.com/naver_search/222439512532

    댓글

Designed by Tistory.