Coding

경제학코딩1 – Final Project: Part 1

김복꾼 2024. 1. 25. 21:47
728x90

서론

Language Modeling에는 두 가지 종류가 있다. 하나는 Causal Language Modeling이고, 다른 하나는 Masked Language Modeling이다. Causal Language Model은 이전 토큰들을 입력으로 받아 다음 토큰을 예측하여, 문장 생성 능력이 뛰어나다는 장점이 있다. 대표적인 예로 GPT-2가 있다. 이에 Causal Language Modeling 모델 중 하나인 DistilGPT-2fine-tuning하여, 축구 분야에 특화된 text generation 모델을 구현해 보았다. 본 보고서는 해당 모델을 구현하는데 사용된 pretrained model 및 코드를 소개하고, fine-tuning에 사용된 데이터셋에 따라 모델의 성능이 어떻게 달라지는지를 분석하고자 한다.

 

본론

(1) Pretrained Model

우선, 어떤 pretrained model을 사용했는지에 대해 소개하고자 한다. 본 연구에서는 DistilGPT-2를 사용하였다. DistilGPT-2GPT-2 모델의 경량화 버전으로, 모델 크기를 줄였는데도 추론 속도가 높게 유지되어 상당한 자연어 처리 능력을 보유하였다는 장점이 있다. 할당된 메모리 및 GPU가 부족한 Colab의 특성상, 가벼우면서도 강력한 성능을 지닌 DistilGPT-2가 적합하다고 판단하였다.

 

(2) 데이터셋

축구에 특화된 모델을 만들기 위하여, 축구와 관련된 데이터가 많은 데이터셋을 구하였다. Hugging face‘ParsaKgvr/socce_report_analysis’ 데이터셋과 ‘rony/soccer-dialogues’ 데이터셋을 사용하였다. socce_report_ analysis는 축구 방송에서 사용된 문장들을 모아 구성한 데이터셋이다. 경기 중 중계나 경기 후 분석 방송, 선수 인터뷰 등에서의 문장들이 포함되어 있다. 반면 soccer-dialogues는 축구와 관련하여 사람들이 할 법한 대화 문장들을 모아 구성한 데이터셋이다. 정확한 출처는 명시되어 있지 않으나, 인터넷의 축구 관련 커뮤니티에서 크롤링을 한 것으로 추정된다. ‘I think Ribery is the best’와 같은 개인 의견이나 ‘Shaqiri scored 22 goals’와 같은 단순 사실들이 포함되어 있다. 각 데이터셋에 대한 상세 정보 및 링크는 4에 첨부하였다.

성능 비교를 위해, 가장 standardeli5 데이터셋도 사용했다. soccer-dialogues 데이터셋과 socce_report_ analysisfine-tuning한 모델들이 정말 축구에 특화된 모델이 맞는지 판단하기 위함이다.

 

(3) Fine-tuning 과정

먼저 socce_report_analysis 데이터셋으로 DistilGPT-2fine-tuning 하여, 축구 특화 모델을 구현했다. 이후 데이터셋만 soccer-dialogues으로 바꾸어, DistilGPT-2를 다시 fine-tuning해 보았다. socce_report_analysis을 사용한 fine-tuning 과정을 소개하고자 한다. 전체 코드의 Colab 링크는 4장에 첨부하였다.

 

1. 우선, socce_report_analysis 데이터셋을 로드하여 ‘soccer’로 명명해주었다. 이후 데이터셋의 구조를 살펴보기 위하여 soccer print하여 보았다. 그 결과, soccertrain dataset만 가지고 있으며, 1996줄의 데이터를 가지고 있음을 알 수 있었다.

 

 

2. soccertrain_test_split method를 사용할 수 없어, 수동으로 train settest set을 나누어 주었다. train set에는 395, test set에는 1600줄을 할당하여, 전체 데이터의 80% 정도를 train set에 할당하였다. soccerprint한 결과, train settest set이 잘 분리된 것을 확인할 수 있다.

 

3. 다음으로는 pretrainedDistilGPT-2에서 tokenzier를 불러왔다. 이후 flatten method를 사용해 soccer에서 text subfield를 추출하였다. 마지막으로 soccer[“train”][1]를 출력하여 soccer의 내용을 자세히 살펴본 결과, sent0부터 sent136까지가 fine-tuning에 필요한 string 형식의 text 데이터였음을 알 수 있었다.

 

이어질 경제학코딩1 - Final Project 2편은 아래의 링크에서 확인할 수 있습니다.

https://helloeconomistkim.tistory.com/28

 

728x90