Dataset

User * item 행렬로 표현이 되며, 유저가 선호를 나타낸 아이템은 1, 유저가 선호를 나타내지 않은 아이템은 0으로 표현하고(혹은 -1), 유저가 보지 못한 아이템 (negative dataset)은 따로 저장해 둔다.

학습 데이터는 유저가 선호를 나타낸 데이터에서 일정부분 샘플링을 하고, 이 데이터와 negative dataset 에서 샘플링 한 데이터, 둘을 합친 augmented dataset을 학습 데이터로 사용한다.

Model

일반적인 auto encoder모델을 사용하며 다른점은 인풋 layer에 각각의 유저마다 고유한 node값을 붙여서 넣어준다는 점이다.

1 ~ 5 노드는 아이템을 나타내는 노드들이고, 빨간색 노드는 유저마다 고유한 값을 가지고 있는 노드로써 아이템에 대한 선호가 완전히 일치하더라도 각각의 유저는 고유한 input layer를 가지게 된다.

input layer 값은 순수한 데이터 값이 아닌 일부분 masking 처리된 데이터를 사용하고 reconstruct 된 output layer값에 sigmoid function을 통과시킨 값과 순수한 데이터와 일치하는지 보면서 학습이 된다.

학습 알고리즘

Equation 9 → user row에 있는 데이터 중 일정 확률 q로 0으로 덮어 씌운다. 또한 덮어 씌워지지 않은 값들은 1 / (1 - q) 값으로 대체시켜서 편향되지 않게 한다.

Equation 10 → 인풋레이어에서 hidden vector Z로 차원 축소하는 부분

Sample negative samples S(u) < O(u) → 유저가 선호하지는 안하는지 모르는 데이터셋중 일부를 sampling 하는 부분

Equation 14, 15, 20 → input layer 에서 hidden layer weight update 부분

Equation 17, 20 → hidden layer 에서 output layer weight update 부분

Equation 18, 19, 20 → hidden vector 값 update 부분