작성자: 이예지
이번 리뷰에서는 Transformer의 핵심만을 간단히 살펴보고, 기존 Transformer와의 차이를 위주로 진행하겠습니다.
기존의 sequential recommender를 간략하게 살펴봅시다.
Markov Chains (MCs)
유저의 다음 행동이 바로 이전의 과거 혹은 몇 개 이전의 행동에 영향을 받을 것이라는 가정을 합니다.
이러한 가정은 너무 over-simplfy하고 매우 희소한(sparse) 데이터에만 잘 작동한다는 단점을 가지고 있습니다. 따라서, 복잡한 관계를 학습하는 것은 힘듭니다.
Recurrent Neural Networks (RNN)
RNN 기반의 모델, 대표적으로 GRU recommender 같은 경우는, 과거의 모든 행동을 모델의 입력값으로 넣어, 이를 요약한 정보를 가지고 다음 행동을 예측합니다.
상대적으로 복잡한 모델을 학습하기 위해 많은 양의 데이터를 요구하기 때문에, 희소한 데이터에서는 좋은 성능을 보여주기 힘들다고 합니다.
저자는 이 둘의 단점을 보완하고자 새로운 모델을 추천 시스템에 적용하게 됩니다.
이미지: (left) Factorizing personalized Markov chains for next-basket recommendation / (center, right) BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer
기존의 딥러닝에서 빈번하게 사용되는 CNN, RNN 계열 모델과는 다르게 Transformer는 self-attention이라는 새로운 메커니즘을 사용합니다. Self-attention은 문장을 구성하는 단어들 간 의미적, 구조적 패턴을 기존의 모델들보다 더 잘 파악하는 결과를 보여주었고, 이에 따라 기계 번역과 같은 어려운 태스크에서 매우 좋은 성능을 보여주었습니다.
저자는 self attention을 사용하는 Transformer로 MCs, RNN 모델의 한계를 극복하고자 하였습니다.
위의 이미지(page 6)에서 그림을 보시면 MCs, RNN, Transformer의 접근 방식의 차이를 확인할 수 있습니다. 앞서 설명했듯 MCs, RNN 계열 모델의 가정이 그림에서 드러나며, Transformer(Self-attention)와 어떤 차이가 있는지 확인할 수 있습니다. (Parallelization 관점에서도 생각해볼 필요가 있습니다.)
2017년, Vaswari, et al. 의 "Attention is all you need"에서 발표된 Transformer에 대해 간략하게 살펴보겠습니다.
Transformer의 설명에 사용된 이미지는 Jay Alarmmar의 블로그에서 가져왔으며, 이곳에 Transformer의 자세한 설명이 있으니 참고하시면 좋을 것 같습니다.
이 3가지 self-attention과 positional encoding을 간단하게 살펴보겠습니다!
(참고로, encoder, decoder block의 입력 벡터와 이를 통과한 벡터의 사이즈는 동일하게 유지됩니다. 그림에서도 사이즈가 4로 유지되는 것을 확인할 수 있습니다. 이러한 사이즈를 유지하기 위해, multi-head attention의 파라미터 사이즈 설정에 주의해야 합니다.)
"The animal didn't cross the street because it was too tired."
Multi-headed attention 연산도 그림처럼 간단합니다. 여기서 주목할 만한 것은 출력 벡터의 사이즈입니다.
(위에서 잠깐 언급했듯이, 사이즈를 유지하기 위해 head의 개수 등을 고려해줘야 합니다.)
(위에서 말했듯이 MH attention과 FFNN에서 중요하게 살펴볼 차이점은 input들의 dependency의 유무입니다.)
같이 논의해봅시다 :)
SASRec이 Transformer를 어떻게 추천 시스템에 적용하였는지 살펴보겠습니다.
Transformer와 일치하는 부분은 생략하였습니다.
B.Self-Attention Block
D.Prediction Layer
공간복잡도
시간복잡도
[15기 이성범]
본 논문에서는 시퀀스 데이터를 사용하는 추천 시스템 알고리즘인 Markov Chains와 RNN 계열의 단점을 동시에 보완하고자 NLP Task에서 SOTA인 Transformer 모델을 추천시스템에 적용한 SASRec Model을 제안했다. 본 논문에서 제안한 모델은 기존의 RNN, MC, CNN based 모델의 성능을 모두 뛰어넘는 실험 결과를 보여주었다.
MC는 유저의 다음 행동이 바로 이전의 과거 혹은 몇 개 이전의 행동에 영향을 받을 것이라는 가정으로 만들어진다. 이러한 가정은 매우 단순하고 희소한 데이터에만 잘 작동한다는 단점을 가지며, 복잡한 관계를 학습하는 것이 어렵다.
RNN는 과거의 모든 행동을 모델의 입력 값으로 넣어, 이를 요약한 정보를 가지고 다음 행동을 예측한다. 복잡한 모델은 학습하기 위해서는 많은 양의 데이터를 요구하기 때문에, 희소한 데이터에서는 좋은 성능을 보여주기 어렵다.
SASRec은 Self-Attention 기법을 적용한 Transformer 모델을 추천 시스템에 적용하여 MC와 RNN의 모델의 한계를 극복했다. Self-Attention을 통해서 시퀀스 내에 존재하는 모든 행동에 연관성을 파악함으로써 행동 간의 복잡한 관계를 학습할 수 있게 만들었다. 그리고 본 모델은 대부분의 모델 구조가 Transformer와 유사하지만 Positional Encoding 부분을 학습 파라미터로 설정했다는 점이 다르다. 또한 현재 이후의 시점에 대해서는 마스킹 처리를 해서 학습을 시켰는데 이는 실제 추천 알고리즘이 작동할 때 미래의 유저 행동을 볼 수 없기 때문이며, 미래의 유저 행동을 사용하는 것은 모순적이기 때문이다. 따라서 본 모델은 기존의 알고리즘보다 조금 더 유저의 행동의 연관성을 잘 파악할 수 있었으며 현실과 유사한 방식으로 추천 시스템 알고리즘을 학습시켜서 성능이 우수하고 일반화된 모델을 얻을 수 있었다고 생각한다.
Self-Attentive Sequential Recommendation (SASRec)
15기 류채은
Markov Chains(MC)과 RNN 계열의 단점을 동시에 보완하기 위해 등장했다.
Sequential recommender system은 유저의 최근 행동의 context를 기반으로 한 추천을 목표로 하며 기존의 recommender로 Markov Chains (MCs)와 Recurrent Neural Networks (RNN)가 있다.
Transformer은 encoder blocks(stacking)과 decoder blocks(stacking)으로 구성되어 있으며 문장을 구성하는 단어들 간 의미적, 구조적 패턴을 기존의 모델들보다 더 잘 파악하는 결과를 가능케 한 self-attention을 사용한다.
Encoder block은 크게 두 개의 레이어(Multi-headed attention, Feed Forward Neural Network)로 구성된다.
Decoder block은 실제 태스크를 풀기 위한 역할을 수행하기 위해서 masking을 해주는 masked multi-head attention과 encoder-decoder attention이 있다.
Self attention에서 고려하지 않은 위치 좌표를 입력 벡터에 반영하기 위해서 입력 시퀀스에 positional 값을 더해주는 positional encoding이 일어난다.
[Embedding Layer]
Positional encoding을 고정된 값이 아닌, 학습 파라미터로 설정했다.
[Self-Attention Block]
Q_i and K_j, where j>i에 해당하는 연산을 masking했다.
[Prediction Layer]
Shared Item embedding에서 모델 입력 값으로 사용되었던 M을 재활용한다.
[15기 장아연]
전통적인 Markov Chains과 RNN 계열의 알고리즘의 단점을 보안하고 Transformer 모델을 적용해 새로운 모델인 SASRec Model을 제시함.
기존의 Sequential Recommender System 중 Markov Chains는 sparse한 경우에만 적절하고 오히려 Recurrent Neural Networks은 대량의 데이터가 있어야 한다는 한계를 보임.
Transformer는 Multi-headed attention과 Feed Forward Neural Network로 구성된 Encoder와 masked multi-head attention과 encoder-decoder attention로 구성된 Decoder를 stacking하고 self attention을 사용해 문장의 복잡한 구조와 의미를 파악함.
SASRec는 Self Attention을 통해 연관성을 파악해 복잡한 관계에 대한 학습이 가능해짐. 또 Positional Encoding에서 Self Attention에서 반영되지 않은 위치 좌표를 반영하기 위해 고정하지 않고 학습 파라미터로 설정함. 그리고 이후 시점에 대해 Masking을 진행함. Shared Item Embedding으로 모델에서 입력 되었던 값을 사용해 M을 재활용함.
14기 박지은
SASRec은 NLP의 Transformer 모델을 추천시스템에 도입하여 기존 RNN 계열 모델과 sequential recommender의 단점을 보완할 수 있습니다. Transformer는 마스크를 씌우지 않은 encoder block과 마스크를 씌운 decoder block으로 이루어져 있는데, SASRec에서는 이를 따로 구분하지 않고 새로운 self-attention block을 제안합니다. 또한 순서 정보가 저장되지 않는 Transformer의 특징을 보완하기 위한 positional encoding이 고정된 값이 아니라 학습되는 파라미터의 형태를 띄고 있습니다. 그리고 미래의 유저 행동을 예측하기 위해 미래 시점에 대한 유저 행동은 마스킹하여 예측합니다. 이후 글에서 등장하는 BERT4Rec를 읽으며 그 전단계라 볼 수 있는 SASRec에 대해서 차근차근 공부할 수 있었고, Transformer 개념을 어려워했었는데 정말 친절하고 자세하게 설명해주셔서 너무너무 유익한 시간이었습니다. 좋은 강의 감사합니다!
[14기 이혜린]