해당 글은 교재 'Python을 이용한 개인화 추천시스템'을 정리한 글로, 이전 글과 이어집니다! 자세한 내용이 궁금하시면 교재와 글을 참고해주세요!!
'FM (Factorization Machines)' 기반 추천 2 [ReSys]
해당 글은 교재 'Python을 이용한 개인화 추천시스템' 실습을 정리한 글로, 이전 글과 이어집니다! 자세한 내용이 궁금하시면 교재와 글을 참고해주세요! FM (Factorization Machines) 기반 추천 1 해당 글
jhklee-coder.tistory.com
이번에는 딥러닝을 이용한 행렬요인화(MF) 추천시스템이다! 딥러닝(Deep Learning)은 다들 친숙한 개념일 것이라 생각하기에 간단하게만 짚고 넘어가도록 한다.
딥러닝??
딥러닝은 다수의 은닉층(hidden layer)을 가진 인공신경망을 적용하는 기법을 통틀어서 가리키는 용어다. DL을 구현하기 위한 방법으로는 여러 가지가 있는데 그 중에서 Tensorflow나 Theano, Keras 등이 많이 사용된다.
딥러닝에 대한 자세한 내용이 궁금하다면 아래 글을 참고하세요!!
https://jhklee-coder.tistory.com/65
퍼셉트론(Perceptron) [딥러닝]
'딥 러닝(Deep Learning)'은 머신 러닝(Machine Learning)의 특정한 한 분야로서 인공 신경망(Artificial Neural Network)의 층을 연속적으로 깊게 쌓아올려 데이터를 학습하는 방식을 말한다. 본격적으로 인공신
jhklee-coder.tistory.com
1. MF를 신경망 형태로 바꾸기
우선 딥러닝 형태로 변환하기 전에 MF를 은닉층이 없는 신경망 모형으로 먼저 구성한다. 은닉층이 없는 경우는 사실 앞 장에서 다루었던 기본 MF 알고리즘과 크게 차이는 없다. 딥러닝 구조와는 근본적으로 다른 개념이지만, 우선 MF를 은닉층이 없는 신경망 형태로 만들어보겠다.

1️⃣ One-hot Representation??
- One-hot encoding과 동일
2️⃣ encoding의 속성은??
- 유저의 경우 : 사용자의 수
- item의 경우 : 아이템의 수
Ex) M명의 사용자와 N개의 아이템
이 때 사용자의 입력은 M(사용자 수) x M(feature 수) 가 되며 각 사용자에 대한 입력은 해당 사용자에 대한 원소만 1이고, 나머지는 0이다. 아이템의 입력도 마찬가지. (N x N 차원 형태)
#️⃣ 왜 One-hot Representation은 행과 열이 같은 차원을 가질까??
사용자의 경우 One-hot Representation의 목적은 각 사용자를 구분하는 것이다. feature를 일조의 더미 변술처럼 사용하여 사용자 1명 당 하나의 feature만 1의 값을 갖고, 반대로 한 feature는 한 사용자에 대해서만 1의 값을 갖도록 한다. 따라서 행과 열의 차원이 같게 되고 대각선 원소만 1이 되며, 나머지는 0인 행렬이 만들어진다.

3️⃣ Embedding Layer
다음은 Embedding Layer다. MF에서 잠재요인(K)에 해당하는 부분으로, 각 사용자에 대해 K개, 아이템에 대해서는 또 다른 K개의 노드(node)를 갖는 Layer다. 각 노드는 하나의 잠재요인을 나타내며, 사용자 input의 모든 feature에 대해서 사용자 쪽에서 M x K개의 화살표가 Embedding Layer로 연결된다. (한 사용자 당 K개의 연결이 있는 셈!)
아이템도 마찬가지로 N x K개의 화살표가 아이템 쪽 Embedding layer로 연결되어 있다. (한 아이템 당 K개의 연결이 만들어지는 것도 마찬가지.)
4️⃣ Element-wise Product Layer
Embedding layer의 두 행렬을 내적하기 위한 츠. MF 에서는 P x Q^T 연산에 해당한다. (이 때 사용자와 아이템은 한 번에 하나 씩만 활성화되기 때문에 내적 연산을 한 결과는 해당 사용자의 해당 아이템에 대한 P xQ^T 행렬의 원소가 된다.)
Ex) [그림 7 - 1] 사용자 2와 아이템 N - 1 에 대한 연산은??
➡️ P x Q^T 행렬(M x N) 의 원소 중 (2, N-1) 원소의 값.
➡️ 예측평점행렬 R(hat) 이므로 2 번째 사용자와 N - 1번째 아이템에 대한 내적 연산 결과는 r(hat) (2, N - 1)이 된다.
이 예측평점행렬 연산값은 최종 출력(prediction layer)로 연결된다.
+) 사용자와 아이템 각각의 평가 경향(bias)를 추가한다.

5️⃣ Flatten Layer
우리가 필요한 최종 예측값과 지금까지 계산 과정에서 사용된 행렬의 차원을 맞추기 위해 차원을 줄여주는 역할.
2. 딥러닝을 적용한 추천시스템
은닉층이 제외된 형태의 Keras 추천시스템 구조를 간단하게 살펴보았다. 그렇다면, 진짜 딥러닝을 추천시스템에 적용하려면 어떻게 해야할까??
우선 추천을 위한 입력으로 사용자와 아이템의 특성을 나타낼 수 있는 embedding 데이터가 필요할 것이다. MF를 은닉층 없는 신경망 구조로 만들었던 1이 형태처럼 사용자와 아이템을 embedding해서 입력으로 넣으면 사용자와 아이템 간의 특성을 학습해서 추천에 이용할 수 있다.

이 형태를 조금 더 쉽게 도식화해서 표현하면 아래와 같다.

1️⃣ ~ 4️⃣ : One-hot Representation 으로 변환 후 잠재요인(Embedding Layer)로 연결. 사용자 잠재요인과 아이템 잠재요인이 만들어진 뒤 이 둘을 합쳐 신경망의 첫 번째 층을 형성한다. (concatenate : 단순 앞 뒤 결합 방식)
5️⃣ ~ 이후 은닉층 생성 후 학습 & 최종 예측평점 출력.
#️⃣ 실습
다음은 MF 행렬에 딥러닝을 접목한 과정을 담고 있는 코드 링크이다.
MF_Keras.ipynb
Colab notebook
colab.research.google.com
'기획(PM & PO) > ✏️ 개발 일지' 카테고리의 다른 글
'FM (Factorization Machines)' 기반 추천 2 [ReSys] (0) | 2024.04.01 |
---|---|
'FM (Factorization Machines)' 기반 추천 1 [ReSys] (1) | 2024.03.29 |
'MF (matrix factorization)' 기반 추천 2 [ReSys] (0) | 2024.03.25 |
'MF (matrix factorization)' 기반 추천 1 [ReSys] (0) | 2024.03.24 |
해당 글은 교재 'Python을 이용한 개인화 추천시스템'을 정리한 글로, 이전 글과 이어집니다! 자세한 내용이 궁금하시면 교재와 글을 참고해주세요!!
'FM (Factorization Machines)' 기반 추천 2 [ReSys]
해당 글은 교재 'Python을 이용한 개인화 추천시스템' 실습을 정리한 글로, 이전 글과 이어집니다! 자세한 내용이 궁금하시면 교재와 글을 참고해주세요! FM (Factorization Machines) 기반 추천 1 해당 글
jhklee-coder.tistory.com
이번에는 딥러닝을 이용한 행렬요인화(MF) 추천시스템이다! 딥러닝(Deep Learning)은 다들 친숙한 개념일 것이라 생각하기에 간단하게만 짚고 넘어가도록 한다.
딥러닝??
딥러닝은 다수의 은닉층(hidden layer)을 가진 인공신경망을 적용하는 기법을 통틀어서 가리키는 용어다. DL을 구현하기 위한 방법으로는 여러 가지가 있는데 그 중에서 Tensorflow나 Theano, Keras 등이 많이 사용된다.
딥러닝에 대한 자세한 내용이 궁금하다면 아래 글을 참고하세요!!
https://jhklee-coder.tistory.com/65
퍼셉트론(Perceptron) [딥러닝]
'딥 러닝(Deep Learning)'은 머신 러닝(Machine Learning)의 특정한 한 분야로서 인공 신경망(Artificial Neural Network)의 층을 연속적으로 깊게 쌓아올려 데이터를 학습하는 방식을 말한다. 본격적으로 인공신
jhklee-coder.tistory.com
1. MF를 신경망 형태로 바꾸기
우선 딥러닝 형태로 변환하기 전에 MF를 은닉층이 없는 신경망 모형으로 먼저 구성한다. 은닉층이 없는 경우는 사실 앞 장에서 다루었던 기본 MF 알고리즘과 크게 차이는 없다. 딥러닝 구조와는 근본적으로 다른 개념이지만, 우선 MF를 은닉층이 없는 신경망 형태로 만들어보겠다.

1️⃣ One-hot Representation??
- One-hot encoding과 동일
2️⃣ encoding의 속성은??
- 유저의 경우 : 사용자의 수
- item의 경우 : 아이템의 수
Ex) M명의 사용자와 N개의 아이템
이 때 사용자의 입력은 M(사용자 수) x M(feature 수) 가 되며 각 사용자에 대한 입력은 해당 사용자에 대한 원소만 1이고, 나머지는 0이다. 아이템의 입력도 마찬가지. (N x N 차원 형태)
#️⃣ 왜 One-hot Representation은 행과 열이 같은 차원을 가질까??
사용자의 경우 One-hot Representation의 목적은 각 사용자를 구분하는 것이다. feature를 일조의 더미 변술처럼 사용하여 사용자 1명 당 하나의 feature만 1의 값을 갖고, 반대로 한 feature는 한 사용자에 대해서만 1의 값을 갖도록 한다. 따라서 행과 열의 차원이 같게 되고 대각선 원소만 1이 되며, 나머지는 0인 행렬이 만들어진다.

3️⃣ Embedding Layer
다음은 Embedding Layer다. MF에서 잠재요인(K)에 해당하는 부분으로, 각 사용자에 대해 K개, 아이템에 대해서는 또 다른 K개의 노드(node)를 갖는 Layer다. 각 노드는 하나의 잠재요인을 나타내며, 사용자 input의 모든 feature에 대해서 사용자 쪽에서 M x K개의 화살표가 Embedding Layer로 연결된다. (한 사용자 당 K개의 연결이 있는 셈!)
아이템도 마찬가지로 N x K개의 화살표가 아이템 쪽 Embedding layer로 연결되어 있다. (한 아이템 당 K개의 연결이 만들어지는 것도 마찬가지.)
4️⃣ Element-wise Product Layer
Embedding layer의 두 행렬을 내적하기 위한 츠. MF 에서는 P x Q^T 연산에 해당한다. (이 때 사용자와 아이템은 한 번에 하나 씩만 활성화되기 때문에 내적 연산을 한 결과는 해당 사용자의 해당 아이템에 대한 P xQ^T 행렬의 원소가 된다.)
Ex) [그림 7 - 1] 사용자 2와 아이템 N - 1 에 대한 연산은??
➡️ P x Q^T 행렬(M x N) 의 원소 중 (2, N-1) 원소의 값.
➡️ 예측평점행렬 R(hat) 이므로 2 번째 사용자와 N - 1번째 아이템에 대한 내적 연산 결과는 r(hat) (2, N - 1)이 된다.
이 예측평점행렬 연산값은 최종 출력(prediction layer)로 연결된다.
+) 사용자와 아이템 각각의 평가 경향(bias)를 추가한다.

5️⃣ Flatten Layer
우리가 필요한 최종 예측값과 지금까지 계산 과정에서 사용된 행렬의 차원을 맞추기 위해 차원을 줄여주는 역할.
2. 딥러닝을 적용한 추천시스템
은닉층이 제외된 형태의 Keras 추천시스템 구조를 간단하게 살펴보았다. 그렇다면, 진짜 딥러닝을 추천시스템에 적용하려면 어떻게 해야할까??
우선 추천을 위한 입력으로 사용자와 아이템의 특성을 나타낼 수 있는 embedding 데이터가 필요할 것이다. MF를 은닉층 없는 신경망 구조로 만들었던 1이 형태처럼 사용자와 아이템을 embedding해서 입력으로 넣으면 사용자와 아이템 간의 특성을 학습해서 추천에 이용할 수 있다.

이 형태를 조금 더 쉽게 도식화해서 표현하면 아래와 같다.

1️⃣ ~ 4️⃣ : One-hot Representation 으로 변환 후 잠재요인(Embedding Layer)로 연결. 사용자 잠재요인과 아이템 잠재요인이 만들어진 뒤 이 둘을 합쳐 신경망의 첫 번째 층을 형성한다. (concatenate : 단순 앞 뒤 결합 방식)
5️⃣ ~ 이후 은닉층 생성 후 학습 & 최종 예측평점 출력.
#️⃣ 실습
다음은 MF 행렬에 딥러닝을 접목한 과정을 담고 있는 코드 링크이다.
MF_Keras.ipynb
Colab notebook
colab.research.google.com
'기획(PM & PO) > ✏️ 개발 일지' 카테고리의 다른 글
'FM (Factorization Machines)' 기반 추천 2 [ReSys] (0) | 2024.04.01 |
---|---|
'FM (Factorization Machines)' 기반 추천 1 [ReSys] (1) | 2024.03.29 |
'MF (matrix factorization)' 기반 추천 2 [ReSys] (0) | 2024.03.25 |
'MF (matrix factorization)' 기반 추천 1 [ReSys] (0) | 2024.03.24 |