분류 전체보기 310

Self-Attentive Sequential Recommendation (ICDM'18)

Contents 해당 논문은 Sequential Recommendation 논문에서 유명한 모델 중 하나인 SASRec을 제안한 논문이다. Self-Attention 기법을 사용하여 다음 사용자가 행동(Action)할 제품을 예측하는 기법이다. 기존 연구에서 주로 사용하는 Markov Chain (MC)의 경우 이전 제품 혹은 과거 몇 번의 행동을 바탕으로 다음 행동할 제품을 예측하고, RNN의 경우 장기 정보를 고려할 수 있다. 일반적으로 MC는 주로 Sparse한 데이터에서 우수한 성능을 보이고, RNN의 경우 Dense한 데이터에서 우수한 성능을 보이고 있다. 본 연구에서는 Self-Attention Networks를 이용하여 Sparse, Dense와 상관없이 우수한 성능을 발휘하는 SASRec을..

Simplifying Graph-based Collaborative Filtering for Recommendation (WSDM'23)

Contents Simplifying Graph-based Collaborative Filtering for Recommendation 논문은 WSDM'23 컨퍼런스에서 발표되었다. 기존 추천 시스템에서 성능이 우수한 것으로 알려진 LightGCN에 비해 성능적인 부분이 향상된 것뿐만 아니라, 속도도 매우 빨라진 SGCF를 제안한 논문이다. Abstract Graph Convolutional Networks (GCN) 기법은 여러개의 Convolutional 층을 쌓고 비선형 활성화함수를 사용하는 기법으로 머신러닝 분야에서 주로 사용되는 기법이다. 최근 추천 시스템 연구에서도 GCN을 기반으로 한 추천 시스템을 제안하고 있으나, 큰 데이터셋에서 비활성화 함수는 오히려 학습을 어렵게 한다. 또한, GCN ..

BERTopic: Neural topic modeling with a class-based TF-IDF procedure

Contents Abstract 토픽 모델링은 수집된 문서 내에서 잠재되어 있는 토픽을 추출하는 기법이다. 본 연구에서는 Clustering task를 기반으로 토픽을 추출하는 기법인 BERTopic 기법을 제안한다. BERTopic은 class-based TF-IDF 기법을 통해 토픽을 추출한다. 구체적으로 사전 학습된 트랜스포머 모델을 사용해 문서 임베딩을 생성한 후, class based TF-IDF 기법을 사용하여 토픽 representation을 생성한다. Introduction 전통적인 토픽 모델링 기법으로는 LDA(Latent Dirichlet Allocation)과 NMF(Non-Negative Matrix Factorization) 기법이 있다. 그러나 이와 같은 기법은 단어 간의 관계(..

Dynamic Multi-Behavior Sequence Modeling for Next Item Recommendation (AAAI'23)

Contents 이번에 리뷰할 논문은 2023년도 AAAI 컨퍼런스 논문인 Dynamic Multi-Behavior Sequence Modeling for Next Item Recommendation이다. 포항공대 연구실과 GS 리테일이 함께 논문을 작성하였으며, GS 리테일을 이용하는 사용자의 정보도 함께 사용하여 성능을 비교분석한 논문으로 매우 흥미로운 논문이다. 논문을 간략하게 설명하면, 본 논문에서 제안하는 Dynamic Multi-behavior Sequence modeling (DyMuS)는 Sequence Recommender Systems (SRSs) 기반으로 사용자가 소비할 다음 제품을 예측하는 기법을 의미한다. 기존에 존재하는 SRSs 기법들은 전부 사용자의 single type에만 초..

[Pytorch] Neural Graph Collaborative Filtering (NGCF) 구현하기

Contents Neural Graph Collaborative Filtering (NGCF)는 기존의 협업 필터링(Collaborative Filtering)이 고차-연결성(High-Order Connectivity)을 고려하지 못한다는 단점을 극복하고자 그래프를 협업 필터링에 도입 시킨 기법이다. 전통적인 협업 필터링은 user-item interaction만을 고려하게 된다. 대표적인 Neural Collaborative Filtering (NCF)를 생각해보면 사용자 ID와 제품 ID를 내적하거나 연결(Concatenate)하여 사용자의 제품에 대한 구매 확률을 도출한다. 그렇기 때문에 제품과 다른 사용자 간의 관계 즉, 고차-연결성을 고려하지 못한다는 것이다. 예를 들어 $u_1 \leftarr..

Python/Pytorch 2023.01.01

[Pytorch] Transformer 구현하기

Contents Transformer는 자연어 처리(Natural Language Processing, NLP) 분야에서 성능이 우수한 것으로 검증된 대표적인 Self-Attention 모델이다. 기존 Sequential Based 모델인 RNN, LSTM, GRU 등과 같은 모델에 비해 매우 우수한 성능을 보여주고 있으며, BERT, GPT 등의 사전 학습 기반 모델이 Transformer의 골조를 활용하였다. 이번 글에서는 Transformer의 Encoder와 Decoder가 어떻게 구성되어 있는지 짧은 코드를 통해 알아보자. Import Package Transformer는 HuggingFace 에서 지원하는 transformers 패키지와 PyTorch를 이용하여 구현할 것이다. 따라서, 구현에..

Python/Pytorch 2022.12.20

[Pytorch] RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling

CUBLAS_STATUS_NOT_INITIALIZED 에러는 nn.Embedding에 원래 값보다 큰 값이 들어갔을 때 발생하는 에러다. 예를 들어, 사용자의 수는 100명이고, 제품의 수는 50개라고 하자. 그렇다면 아래와 같은 코드로 nn.Embedding을 생성할 수 있을 것이다. class Model(nn.Mudule): def __init__(self, num_users, num_items, latent_dim): self.num_users = num_users self.num_items = num_items self.latent_dim = latent_dim self.user_embedding = nn.Embedding(self.num_users, self.latent_dim) self.ite..

Python/Pytorch 2022.12.05

[Transformers] Bert Tokenizer 알아보기

Contents Transformers 패키지는 자연어처리(NLP) 분야에서 엄청 많이 사용되는 패키지 중 하나이다. BERT 등과 같은 모델을 구축할 때 Transformers 패키지를 사용하면 매우 편하게 구축할 수 있다. 이번 글에서는 Transformers에 존재하는 BERT에서 사용하는 tokenizer 함수를 뜯어본다. BertTokenizer BertTokenizer는 PreTrainedTokenizer를 상속받는다. PreTranedTokenizer는 나중에 알아보도록하고, 단순히 사전 학습된 tokenizer 정도로 이해하면 된다. BertTokenizer 내에는 vocab_file, do_lower_case, unk_token 등 다양한 파라미터들이 존재하는데, 중요한 파라미터 위주로 ..

Python/Transformers 2022.12.04

[Pytorch] BERT로 감성 분석하기. 기초 설명까지

Contents BERT(Bidirectional Encoder Representation from Transformers)는 Transformer를 기반으로 양방향 학습을 하는 사전학습 모델이다. 사전학습 모델이란 미리 사전에 많은 양의 코퍼스를 학습하고, 그 후 파인튜닝(Fine-tuning)을 통해 본인이 사용하고자 하는 도메인에 적용하는 모델이다. Transformer가 나오기 이전에도 Bi-LSTM 등과 같이 양방향 학습 모델이 존재했지만, 사전 학습 모델은 아니었으며, BERT는 Self-supervised Learning 중 하나인 Making 기법을 사용하여 학습의 성능을 향상시키고, 지금까지도 많이 사용된다. 이번 글에서는 BERT를 사용하는 방법에 대해서 알아보고, 각 코드가 어떤 의미..

Python/Pytorch 2022.12.03

[Pandas] set_categories 사용하기.

추천 시스템을 구축할 때 데이터를 학습 데이터와 검증 데이터 그리고 테스트 데이터로 분할하여 사용한다. 이때 학습 데이터는 모델을 학습하기 위한 용도로 사용하고 검증 데이터는 모델의 하이퍼 파라미터를 최적화하기 위해 사용한다. 마지막으로 테스트 데이터는 최종 모델의 성능을 확인하는 용도로 사용한다. 추천 시스템을 구축할 때 만약 검증 데이터와 테스트 데이터에는 존재하지만 학습 데이터에는 존재하지 않는 사용자의 경우 학습한 데이터가 없기 때문에 실제 사용자에게 제품을 추천할 수 없게 된다. 따라서, 학습 데이터에 존재하는 사용자를 기반으로 실험을 진행하는 것이 중요하다. 이때 사용되는 것이 바로 Pandas에 set_categories 함수이다. sample = pd.DataFrame({'user_id':..

Python/Pandas 2022.12.03
반응형