금융 데이터 분석가 25

[추천모델] Factorization Machines

추천 시스템에는 CF(Collaborative Filtering)이나 CBF(Content Based Filtering)이 가장 흔히 쓰입니다. 두 모델은 고객-상품 간의 구매 여부 혹은 평점을 기반으로 추천하기 때문에 구매가 빈번하게 일어나지 않는 데이터에서는 적용하기 어렵습니다. 구매가 빈번하게 일어나지 않으니 사용할 수 있는 정보는 고객과 상품의 메타정보입니다. 예를 들면 고객의 메타정보는 성, 연령, 기존의 구매했던 상품, 가장 최근 구매했던 상품을 반영할 수 있습니다. 이런 메타정보들을 추가할수록 자료형(숫자, 카테고리 등)은 다양해지고 정보에 해당하지 않는 경우가 많아집니다. 즉, 구매한 상품보다 구매하지 않은 상품이 더 많기 때문에 희소한 데이터(0이 많은 데이터)가 됩니다. 메타정보를 사용..

[논문리뷰] DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

ABSTRACT 이 논문은 유저 행동 데이터로 CTR(click-through rate)를 예측하기 위한 모델을 소개한다. 핵심은 feature들의 잠재적인 상호작용(implicit interaction)을 잘 반영하는 것이다. 이전까지의 모델은 크게 두가지 문제가 있었다. 1) low-order와 high-order interaction을 동시에 잡아내지 못한다. 2) feature engineering이 필요하다. 즉, 도메인 지식이 필요하다. DeepFM은 FM과 DNN을 결합하여 저차원의 상호작용과 고차원의 상호작용을 모두 잘 반영하고, wide와 deep이 동일한 feature를 공유하여 end-to-end 학습이 가능하도록 만들었다. 데이터 구성 학습 데이터는 (χ, y)로 표현하고, n개의 ..

[NLP] tokenizer 학습 모델 비교 (BPE, WordPiece, Unigram)

Tokenizer는 크게 4단계로 구성되어 있습니다. 1. Nomalization : 불필요한 문자 제거, 유니코드 정규화 등 텍스트 정리 2. Pre-Tokenization : 단어 단위로 분해 3. Model : 사전에 토큰화된(pre-tokinzed) 단어로 토큰 시퀀스 생성 4. Postprocessor : 스페셜 토큰 삽입, attention mask와 token type id 생성 각 단계를 예시를 들며 살펴보겠습니다. 1. Normalization from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") print(type(tokenizer.backend_tokeniz..

[NLP] XLNet 토크나이저 처음부터 학습하기

transformers 라이브러리로 토크나이저를 처음부터 학습시킬 수 있습니다. 다양한 클래스를 블록처럼 쌓아서 간단하게 토크나이저를 완성시킵니다. 이번 포스팅에서는 XLNet 토크나이저(XLNet 논문링크)를 처음부터 학습시켜보겠습니다. 먼저 Unigram 모델을 사용하여 초기화합니다. vocabulary가 있다면 초기 모델에 넣을 수 있습니다. tokenizer = Tokenizer(models.Unigram()) XLNet에 맞는 normalizer를 설정해줍니다. 이 규칙들은 sentencepiece에서 왔습니다. from tokenizers import Regex tokenizer.normalizer = normalizers.Sequence( [ normalizers.Replace("``", '..

[NLP] 한국어 모델 fine-tuning

BERT 다국어모델에 한국어 감성분석을 fine-tuning하는 방법을 소개합니다. 1. kor_hate 데이터셋 불러오기 이 예제에서는 Hugging Face의 "kor_hate" 데이터를 사용합니다. train과 test 데이터셋으로 나누어져 있고, train셋에는 7,896개, test셋에는 471개의 댓글이 있습니다. from datasets import load_dataset dataset = load_dataset('kor_hate') dataset # 출력 ------ # DatasetDict({ # train: Dataset({ # features: ['comments', 'contain_gender_bias', 'bias', 'hate'], # num_rows: 7896 # }) # te..

[NLP Transformers] input, sequence 처리

Hugging Face의 Transformers의 모델 인풋을 살펴봅니다. 1. 인풋 형태 : Batch Input Transformer는 배치 입력을 받습니다. 즉, 한번에 문장을 입력할 수 있습니다. from transformers import AutoTokenizer, AutoModelForSequenceClassification checkpoint = "bert-base-multilingual-cased" tokenizer = AutoTokenizer.from_pretrained(checkpoint) model = AutoModelForSequenceClassification.from_pretrained(checkpoint) sequence = "첫번째 문장입니다." tokenizer_inputs..

[NLP Transformers] NLP 작업 순서 - Tokenizer, Model, Post Processing

이번 포스트에서는 일반적인 자연어처리 작업의 흐름을 정리합니다. NLP 작업 순서 일반적인 NLP 작업은 3단계를 거치게 됩니다. : 입력 텍스트를 토크나이징하여 변환하고, 모델에 통과시킨 후, 후처리를 통해 원하는 형태로 출력합니다. Tokenizer NLP의 첫 단계는 문자를 모델에 입력할 수 있는 숫자로 변환하는 것입니다. 이 때 tokenizer를 사용합니다. 이 때 토크나이저의 목표는 모델에 가장 적합하면서도 가능한 작은 표현을 찾는 것입니다. 단어 기반(Word-based), 문자기반(Character-based), 하위단어(Subword) 토크나이저로 구분할 수 있습니다. 교착어인 한국어에서는 Subword Tokenizer가 일반적으로 가장 유용합니다. [ Subword Tokenizer ..

[NLP Transformers] Encoder, Decoder, Encoder-Decoder 모델

이전 포스팅에서 Transformer의 개념을 정리하고, 인코더와 디코더로 구성된 아키텍처를 소개했습니다. 2023.11.02 - [NLP] Transformer 개념 정리 위 포스트에서 Transformer는 인코더와 디코더로 구성되어 있다고 소개했었습니다. 인코더와 디코더는 아키텍처의 요소이기도 하지만 각각을 단일 모델로 사용할 수도 있는습니다. 이번 포스팅에서는 Encoder Model과 Decoder Model, 둘 다 사용하는 Encoder-Decoder(Sequence-to-sequence) Model을 살펴보겠습니다. Encoder Model 인코더 모델은 transformer 모델의 앞부분인 인코더만 단독으로 사용하여, attention layer는 문장의 모든 단어에 접근할 수 있습니다...

[NLP Transformers] Transformer 개념 정리

Transformer 모델 히스토리 2018.06 : GPT 2018.10 : BERT 2019.02 : GPT-2 , 개선된(및 더 큰) 버전의 GPT(윤리적인 문제로 바로 공개되지 않음) 2019.10 : DitilBERT, BERT보다 60% 더 빠르고, 메모리는 40% 덜 사용하면서도 성능의 97%를 유지하는 모델 2019.10 : BART와 T5, 원래 Transformer 모델과 동일한 아키텍처를 사용하는 두 개의 사전 훈련된 모델(최초) 2020.05 : GPT-3, fine-tuning 없이 다양한 작업을 잘 수행할 수 있는 GPT-2의 더 큰 버전(zero-shot learning) Transformer 모델 분류 최근 유명한 모델은 세 가지 범주로 분류할 수 있습니다. (모든 종류의 T..

[NLP] MBart fine-tuning을 위한 데이터 생성

huggingFace의 facebook/mbart-large-50-many-to-many-mmt 모델을 fine-tuning 하기 위한 데이터 생성하는 법을 소개합니다. 이 모델은 huggingface 모델 허브에서 가장 많은 다운로드를 받은 모델 중 하나입니다. 데이터 다운로드 필요한 데이터를 다운로드 준비합니다. AI-Hub에서 한국어-영어 번역 말뭉치(사회과학) 데이터를 사용했습니다. AI-Hub ※ 내국인만 데이터 신청이 가능합니다. 데이터 개요 데이터 변경이력 데이터 변경이력 버전 일자 변경내용 비고 1.3 2022-01-24 데이터 추가 개방 1.2 2021-08-02 데이터 추가 개방 1.1 2021-07-20 데이터 www.aihub.or.kr 다운로드 받으면 train 데이터와 vali..

728x90