또르르's 개발 Story

[24-1] 넷플릭스 추천시스템 본문

부스트캠프 AI 테크 U stage/이론

[24-1] 넷플릭스 추천시스템

또르르21 2021. 2. 26. 01:33

2006년부터 2009년까지 넷플릭스에서는 "넷플릭스 챌린지 (Netflix Challenge)"라는 대회가 개최되었고, 총 2700개의 팀이 참여했습니다. 이 대회의 목적은 추천시스템의 성능을 10% 이상 향상시키는 것이었습니다.

 

https://www.wired.com/2012/04/netflix-prize-costs/

 

즉, 평균 제곱근 오차 0.9514을 0.8563까지 낮출 경우 100만불의 상금을 받는 조건이었습니다.

 

넷플릭스 챌린지(Netflix Challenge)에서는 사용자별 영화 평점 데이터가 사용되었는데, 2000년부터 2005년까지 수집한 48만명 사용자의 1만 8천 개의 영화에 대한 1억 개의 평점을 사용했습니다.

 

넷플릭스는 "넷플릭스 챌린지"를 통해 추천시스템의 성능이 비약적으로 발전했습니다.

그렇다면 "넷플릭스 챌린지"에서 나왔던 모형들은 무엇일까요?

 

 

1️⃣ 잠재 인수 모형

 

잠재 인수 모형 (Latent Factor Model)UV decompostion, 또는 SVD라고도 불립니다.

잠재 인수 모형(Latent Factor Model)의 핵심은 사용자와 상품을 벡터로 표현하는 것입니다.

 

사용자와 영화를 임베딩한 예시입니다.

 

http://www.mmds.org/mmds/v2.1/ch09-recsys2.pdf

 

하지만 어떤 영화가 로맨스적인지, 액션적인지 숫자로 표현하는 것은 어려운 일입니다.

따라서 잠재 인수 모형에서는 고정된 인수 대신 효과적인 인수를 학습하는 것을 목표로 합니다.

학습한 인수를 잠재 인수(Latent Factor)라 부릅니다. 즉, embedding 공간의 축들을 잠재 인수라고 부릅니다.

 

http://www.mmds.org/mmds/v2.1/ch09-recsys2.pdf

 

1) 임베딩 (Embedding)

사용자와 상품을 임베딩하는 기준은 다음과 같습니다.

 

사용자와 상품의 임베딩의 내적(Inner Product)이 평점과 최대한 유사하도록 하는 것입니다.

사용자 𝑥의 임베딩을 𝑝𝑥, 상품 𝑖의 임베딩을 𝑞𝑖라고 합시다.

사용자 𝑥의 상품 𝑖에 대한 평점을 𝑟𝑥𝑖라고 합시다.

임베딩의 목표는 𝑝_{𝑥}^{⊺} 𝑞_{𝑖} 𝑟_{𝑥𝑖}와 유사하도록 하는 것입니다.

 

 

행렬 차원에서는 다음과 같습니다.

 

사용자 수의 열과 상품 수의 행을 가진 평점 행렬을 𝑅이라고 합시다.

사용자들의 임베딩, 즉 벡터를 쌓아서 만든 사용자 행렬을 𝑃라고 합시다.

영화들의 임베딩, 즉 벡터를 쌓아서 만든 상품 행렬을 𝑄라고 합시다.

 

http://www.mmds.org/mmds/v2.1/ch09-recsys2.pdf

 

2) 손실 함수

 

잠재 인수 모형은 다음 손실 함수를 최소화하는 𝑃와 𝑄를 찾는 것을 목표로 합니다.

(여기서 R은 훈련 데이터에 있는 평점에 대해서만 계산)

 

 

하지만, 위 손실 함수를 사용할 경우 과적합(Overfitting)이 발생할 수 있습니다. 과적합이란 기계학습 모형이 훈련 데이터의 잡음(Noise)까지 학습하여, 평가 성능은 오히려 감소하는 현상을 의미합니다.

 

과적합을 방지하기 위하여 정규화 항을 손실 함수에 더해줍니다.

 

https://www.edwith.org/bcaitech1

 

Loss를 최소화할 때 오차 부분만 최소화하는 것이 아니라 모형 복잡도를 함께 최소화하게 됩니다.

모형 복잡도를 최소화한다는 뜻은 p_xq_i가 너무 큰 값을 가지지 않는다는 것을 의미합니다.

즉, Loss는 오차도 줄이면서 너무 복잡하지 않은 embedding들(모형 복잡도)을 배우게 됩니다.

 

그렇다면 왜 embedding들이 너무 큰 것을 방지하는 것일까요?

embedding들이 너무 크면 훈련 데이터에 있는 잡음들까지 학습할 수 있습니다. 잡음은 새로운 사용자, 상품 쌍에 대해 예측을 할 때 아무런 도움이 되지 않기 때문에 잡음의 학습을 최대한 피해야 합니다.

 

여기서 \lambda_{1}, lambda_{2}는 목표 p_xq_i더 중요한 부분에 가중을 주는 "정규화의 세기"입니다. 이 \lambda_{1}, lambda_{2}hyperparameter로 사용자가 지정해줍니다. 이 값이 크면 클수록 모형복잡도에 좀 더 집중해서 최소화하고, 이 값이 작으면 작을수록 오차에 좀 더 집중해서 최소화합니다.

 

정규화는 너무 원점으로부터 멀리 떨어진 embedding들을 원점으로 불러드리는 효과가 있습니다.

 

http://www.mmds.org/mmds/v2.1/ch09-recsys2.pdf

 

즉, 정규화를 통해 어떤 사용자가 이 영화를 봤다고 해서 무조건적으로 이런 종류의 영화만 좋아해!라는 결론을 내리는 것이 아닌, 이런 종류의 경향성이 있다는 것으로 만들어 시스템이 한층 더 보수적이고 신중하게 생각하도록 만듭니다.

 

 

3) 최적화

최적화에는 대표적으로 경사하강법(GD)확률적 경사하강법(SGD)이 있습니다.

 

경사하강법은 손실함수를 안정적으로 하지만 느리게 감소시킵니다.

확률적 경사하강법은 손실함수를 불안정하지만 빠르게 감소시킵니다.

실제로는 확률적 경사하강법이 더 많이 사용됩니다.

 

https://www.edwith.org/bcaitech1

 

이 잠재 인수 모형을 사용하면 평균 제곱근 오차가 0.90 정도 나옵니다. 하지만 저희가 목표한 오차는 0.8563입니다.

 

 

2️⃣ 고급 잠재 인수 모형

1) 사용자와 상품의 편향

사용자의 편향해당 사용자의 평점 평균과 전체 평점 평균의 차입니다.

 

나은이 매긴 평점의 평균이 4.0개의 별,

다연이 매긴 평점의 평균이 3.5개의 별이라고 합시다.

 

전체 평점 평균이 3.7개의 별인 경우,

나은의 사용자 편향은 4.0 - 3.7 = 0.3개의 별입니다.

다연의 사용자 편향은 3.5 - 3.7 = -0.2개의 별입니다.

 

 

상품의 편향해당 상품에 대한 평점 평균과 전체 평점 평균의 차입니다

 

영화 식스센스에 대한 평점의 평균이 4.5개의 별,

영화 클레멘타인이 매긴 평점의 평균이 3.0개의 별이라고 합시다.

 

전체 평점 평균이 3.7개의 별인 경우,

식스센스의 상품 편향은 4.53.7 = 0.8개의 별입니다.

클레멘타인의 상품 편향은 3.0 - 3.7 = -0.7개의 별입니다.

 

 

개선된 잠재 인수 모형에서는 평점을 전체 평균, 사용자 편향, 상품 편향, 상호작용으로 분리합니다.

 

https://www.edwith.org/bcaitech1

 

개선된 잠재 인수 모형의 손실 함수는 아래와 같습니다.

 

https://www.edwith.org/bcaitech1

 

사용자와 상품의 편향을 고려한 잠재 인수 모형을 사용하면 평균 제곱근 오차가 0.89 정도 나옵니다. 하지만 아직 저희가 목표한 오차는 0.8563입니다.

 

 

2) 시간적 편향

 

영화의 평점은 여러 가지 요인으로 출시일 이후 시간이 지남에 따라 상승하는 경향을 갖습니다.

 

https://www.edwith.org/bcaitech1

 

개선된 잠재 인수 모형에서는 이러한 시간적 편향을 고려합니다.

즉, 사용자 편향과 상품 편향을 시간에 따른 함수로 가정합니다.

 

https://www.edwith.org/bcaitech1

 

시간적 편향까지 고려한 잠재 인수 모형을 사용하면 평균 제곱근 오차가 0.876 정도 나옵니다. 이제는 거의 목표한 오차 0.8563에 가까워진 것을 알 수 있습니다.

 

 

3️⃣ 넷플릭스 챌린지 결과

 

BellKor 팀 앙상블 학습을 사용하여 처음으로 목표 성능에 도달하였습니다.

 

http://www.mmds.org/mmds/v2.1/ch09-recsys2.pdf

 

즉, 정답은 앙상블입니다!

'부스트캠프 AI 테크 U stage > 이론' 카테고리의 다른 글

[29] GLUE와 KLUE  (0) 2021.03.04
[25] 그래프 신경망  (0) 2021.02.26
[24] 정점 임베딩 (Node Embedding)  (0) 2021.02.25
[23-1] 추천 시스템  (0) 2021.02.25
[23] 군집 구조  (0) 2021.02.24
Comments