목록Machine Learning/NLP (23)
elevne's Study Note

지금껏 NLP 모델을 만드는 작업을 진행할 때, 항상 하나의 언어에 대한 데이터를 구한 후 이를 통해 전체 모델을 학습시키는 방법을 사용하였다. 하지만 하나의 문서가 여러 언어로 이루어져 있는 경우도 있을 것이다. 그러한 경우에는 다중 언어 트랜스포머 모델을 사용할 수 있다. 다중언어 트랜스포머 모델들은 BERT 와 같이 사전훈련 목표로 마스크트 언어 모델링을 사용하지만, 100 개 이상의 언어로 된 텍스트에서 동시에 훈련을 진행한다고 한다. 다중 언어 트랜스포머는 많은 언어로 된 대규모 말뭉치에서 사전 훈련하여 Zero-shot Cross-lingual transfer 이 가능하다고 한다. (한 언어에서 Fine Tuning 된 모델이 추가훈련 없이 다른 언어에 적용될 수 있다는 것.) 이번 실습에서는..

본격적으로 Model을 Train 돌리기 전, Model에 Sequence를 입력하였을 때 어떠한 Output이 나오게되는지 확인해보았다. 아래와 같은 코드를 작성한다. text = "This is a text for test" inputs = tokenizer(text, return_tensors="pt") print(inputs["input_ids"]) print("Input Tensor Size:", inputs["input_ids"].size()) 이전에 확인해보았듯이, 우선 Sequence는 tokenizer에 들어가게 될 것이고 이는 하나의 tensor data로 바뀌게된다. inputs를 print 하여 확인해보면 아래와 같은 모습을 띈다. 아래와 같은 코드를 작성하여 불러온 model에 S..

Transformers, Huggingface는 NLP와 ML 프로젝트의 속도를 높이는 다양한 라이브러리와 도구를 갖춘 생태계로 빠르게 성장했다. Huggingface는 크게 Library, Hub 둘로 구성된다고 한다. Library는 코드를 제공하고, Hub는 사전훈련 모델 가중치, 데이터셋, 평가지표를 위한 Script 등을 제공한다고 한다. 전이학습은 Transformer의 성공을 견인한 주요 요소라고 한다. 사전훈련되 모델을 새로운 작업에 빠르게, 재사용하는 것이 가능해졌기 때문이다. Huggingface Hub에서는 20,000 개 이상의 무료 모델을 사용할 수 있고 Pipeline Class를 사용하여 단 한줄로 Test를 해볼 수 있다. 또, NLP task에서는 텍스트를 Token으로 분..

Google은 2017년 논문에서 Sequence Modeling을 위한 새로운 Neural Network 아키텍쳐, Transformer를 제안하였고 이는 기존의 RNN을 능가하였다. 이 모델은 오늘날의 GPT, BERT의 기반이 되었다. 두 모델은 Transformer 구조와 비지도학습을 결합하여 작업에 특화된 모델을 밑바닥부터 훈련할 필요를 거의 없애고 거의 모든 NLP Benchmark에서 큰 차이로 기록을 갱신하였다고 한다. Transformer 이전에는 RNN 기반 Encoder-Decoder 형태의 Seq2Seq가 많이 사용되었다. RNN은 단어 또는 문자와 같은 입력을 받아 Network를 통과시킨 후 은닉상태라는 벡터를 출력한다. 동시에 출력된 정보를 피드백 루프로 보내 자기자신에 다시 ..
저번에 이어서 KoBART 코드를 분석해보고자 하였다. 저번에는 데이터셋을 불러오는 파일을 분석해보았으니 이번에는 불러온 데이터셋을 학습시키는 코드를 지닌 train.py 파일과, 학습시킨 모델을 바탕으로 추론을 진행할 수 있게끔 해주는 infer.py 파일을 분석해보았다. 우선 train.py 파일이다. 아래와 같이 필요한 라이브러리들을 import 해준다. import argparse import logging import os import numpy as np import pandas as pd import pytorch_lightning as pl import torch from pytorch_lightning import loggers as pl_loggers from torch.utils.da..
저번 시간에 git clone으로 가져온 KoBART 코드를 분석해보기로 하였다. 아직 torch를 사용해본 적도 없고 모르는 내장 라이브러리도 많아서 많이 찾아보면서 천천히 분석해야할 것 같다. 우선 dataset.py 파일을 들여다보았다. import argparse import os import glob import torch import ast import numpy as np import pandas as pd from tqdm import tqdm, trange from torch.utils.data import Dataset, DataLoader import pytorch_lightning as pl from functools import partial 가장 처음 import 한 argpar..

오늘은 지금껏 미뤄둔 GPT 모델에 대해서 알아보고자 하였다. GPT는 OpenAI에서 2018년 처음 제안된 모델로, GPT1으로 시작하여 지금은 GPT3까지 발표되어 있다. GPT1은 "Improving Language Understanding by Generative Per-Training" 이라는 논문에서 처음 소개되었으며 BERT보다 먼저 사전학습 기법을 활용하여 여러 문제에서 당시 기존 모델들보다 높은 성능을 보인 바가 있다. GPT1 GPT1은 BERT와 마찬가지로 매우 큰 Text Data를 활용, 비지도학습으로 사전학습을 시킨 후 Fine Tuning을 통해 여러 영역에 사용하는 방식을 사용한다. GPT1의 구조도 BERT와 마찬가지로 Transformer의 구조를 띄어 BERT와 대부분..

개인 프로젝트를 진행하며 KoBART 모델을 사용하기로 하였는데, 이를 조금 Fine Tune 시킬 필요성을 느꼈다. 다행히도 KoBART 모델은 Fine Tuning 시키기 수월하게끔 Github에 코드가 잘 정리되어 있었다. (아래 모든 코드는 Colab에서 진행되었다.) 우선 Colab에서 Drive Mount를 해준 이후 Git Clone을 할 위치로 cd 해준다. !git clone https://github.com/seujung/KoBART-summarization.git cd KoBART-summarization !git clone 명령어 뒤 KoBART Github repository 링크를 넣어준다. 위 명령어가 수행되면 cd 한 위치에 Github Repo가 잘 설치되어 있는 것을 확인..