핵심 세 줄 요약 1. 개별 아이템 이력이 아닌 복수의 아이템의 이력을 다음 아이템 예측에 이용한다 2. 꼭 다음이 아이템이 아닌 몇 개의 time step 이후의 아이템을 예측할 수 있다. 3. 1차원의 시퀀스를 가지는 데이터를 2차원 이미지로 해석했다. 무슨 문제를 풀 수 있는가? 유저의 행동은 시간의 순서대로 이전의 구매 영향을 받으면서 수행된다 -> Markov Chain (a) point level : 이전에 구매했던 개별 아이템이 $S_{t}$에 영향을 준다. e.g. CPU - 그래픽 카드는 각각 메인보드 구매에 영향을 미친다. (b) union-level, no skip : 이전에 구매했던 아이템 집합이 $S_{t}$에 영향을 준다. e.g. [CPU, 그래픽 카드] 조합은 메인보드 구매에..
추천에서의 빈도주의와 베이지안 지금까지 일주일에 한 번씩은 치킨을 시켜먹은 소비자가 있다고 했을 때, 빈도주의적 관점에선 다음 주에도 치킨을 먹기를 추천할 수 있다. 반면 베이지안은 데이터로 보여지는 사실과 별개로 불확실성을 내포하고 있기 때문에, 다음 주도 치킨을 시켜먹을 것이라는 빈도주의적 접근을 따르지는 않는다. 즉, 보여지는 현상이 아닌 불확실한 현상을 검증하는 데에 주목한다. BPR LOSS의 핵심음악 추천 서비스를 만든다고 했을 때,고객의 사용 로그를 살펴보면 다음과 같은 사실을 알 수 있다.1. 고객은 A 음악을 들었다.2. 고객은 A 음악에 대해 k점의 평점을 남겼다. (없을 수도 있다)3. 고객은 B 음악을 들은 적이 없다. B음악을 듣지 않은 고객은 해당 음악을 몰라서 듣지 않을수도, ..
INTRO막연히 서비스 내의 [추천]을 떠올리면 검색 시간을 줄여준다거나, 만족스러운 쇼핑을 도와주는 존재, 그게 아니라면 공간을 차지하는 거슬리는 서비스라고 인식될 수도 있다. 서비스와 연계된 모든 기능과 마찬가지로 추천 역시 [목적]을 가지고 있어야 한다. 오늘은 추천서비스 혹은 추천 알고리즘의 단순 테크니컬한 기교가 아니라, 왜 그리고 언제, 누구에게 제공이 되어야하며, 게임 속에서 추천은 언제 제공되어야 하는지를 여러 사례와 함께 알아보겠다 추천의 본질추천 서비스는 비즈니스 목적을 이루기 위해 [고객이 살 법한 아이템을 보여주는 것이다] 여자친구에게 줄 선물을 고를 때 일주일 사귄 남자친구와 일년을 사귄 남자친구 중 누가 더 만족스러운 선물을 고를 확률이 높을까? 대부분의 케이스에선 일 년을 사귄..
한창 attetion layer의 가중치 초기화를 어떻게 하면 효과적으로 할 수 있을까 고민하던 중 읽었던 논문을 리뷰한다 서론과 선행연구는 스킵하도록하고 핵심만 적겠다 뭐하는 논문인가 Pretrained model의 self-attention weight를 [모방]해보겠다는 것이다 이것이 무슨 의미냐면, 학습된 모델을 직접적으로 쓰지않고, 흉내내는 것만으로 성능을 높일 수 있다는 말이다. 어떻게 하는가 이것은 이미지처리 분야에서 ViT를 통해 학습된 attention layer의 가중치들이다. a와 b의 Query, Key, Value, Projection의 가중치들이 보이는데 왜 저렇게 둘 씩 곱한 것을 보이냐고하면, self attention 계산식에서 알 수 있다. $ Attn = Softmax(..
추천시스템에서 side information을 활용하는 것은 성능 향상에 의미있는 결과를 보여준다. 하지만 해당 정보를 Neural Net에 어떤 방식으로 입력하는지에 따라 성능이 다르다. 트랜스포머에 기반하여 SI를 임베딩 시키는 방법엔 기존 상품의 ID 값에 SI를 Summation하거나, Concatenation하는 방법으로 입력해왔다. 해당 연구는 SI를 기존과 같은 방식으로 입력했을 때 모델의 추천 성능은 비슷하거나, 오히려 떨어지는 결과를 문제점으로 삼았다. 저자는 문제의 원인을 Invasive한 입력방식이라고 언급했고, 위 입력이 self-attention을 수행할 때 Query, Key, Value값에 일괄적으로 입력되어선 안된다고 주장한다. 때문에 SI를 새롭게 self-attention..
Overall Performance Comparision BERT4Rec 모델과 Baseline들을 모두 비교한 결과표를 보면, 인기순으로 정렬한 단순한 베이스라인인 POP는 모든 데이터셋에서 가장 안좋은 결과를 보였다. Sequential Model인 GRU, FPMC(MF+Markov Chain)은 matrix연산 기반의 BPR-MF와 NCF의 결과를 상회했다. 해당 결과는 행렬 기반의 풀이보다 유저의 행동 흐름을 고려한 모델이 더 효과적임을 보여준다. Sequential Model 중에서도 Caser가 FPMC보다 훨씬 좋은 성능을 보여줬는데, 두 모델 모두 Markov Chain을 사용했지만, Caser는 직전 시점을 포괄하는 더 이전 시점의 아이템들을 동시에 고려한 high-order Marko..
전반부에 이어서 적는 BERT4Rec 리뷰 Embedding Layer BERT 모델의 Embedding은 Input값과 Positional Encoding이 합쳐진 형태로 구성된다. 이들은 첫번째 Hidden state로 구성이되는데, $h_{i}^{0} = v_{i} + p_{i}$ 로 두 개의 인풋이 summation된 형태이다. Transformer는 RNN과 다르게 병렬적으로 학습하기 때문에 단어의 시퀀스를 인지할 수 없다. 때문에 각 포지션을 인지할 수 있게 Positional Encoding 작업이 추가되어야한다. (Positional Encoding 참고링크) 여러가지 방법으로 포지션을 할당할 수 있지만 해당 논문에서는 고정된 sinusoid 벡터가 아닌 '학습 가능한' 포지션을 부여하길 ..
오늘은 2019년에 나온 BERT4Rec 논문 리뷰다 BERT는 2018년 구글이 만들어낸 양방향 트랜스포머이며 Bidirectional Encoder Representations from Transformers라는 풀네임을 가지고있다. 이름에서 볼 수 있듯이 Transformer가 기존에 갖고있던 인코더-디코더 구조가 아닌 인코더만 존재하는 것을 알 수 있다.Transformer와 BERT의 가장 큰 차이점은 학습 방식에 있다 Transformer는 다음 단어를 예측하기위한 학습을 하는 반면,BERT는 마치 빈칸 넣기 문제처럼 MASK된 단어를 학습한다 GPT와 같이 BERT 역시 거대한 말뭉치를 가지고 자연어를 처리하기 위해 학습된 모델이다. 그런데 이 모델을 추천시스템에 적용하기 위해서 나온 논문이..