* 가볍게 진행해본 내용으로, 자세한 내용은 아래 참고문헌을 참고해주세요
Langauge 모델 Pretraining
트랜스포머 Language 모델은 기본적으로 두가지 학습을 통해 Pretrained 모델을 생성한다. 바로, MLM(Masked Language Modeling)과 NSP(Next Sentence Prediction)을 통해 언어모델을 생성한다. 이미 많은 논문들에서 밝혀졌지만, NSP보다는 MLM이 트랜스포머 모델의 성능 향상에 주요한 영향을 끼친다고 얘기하고 있다.
관련 코드 실행
그럼 이미 Pretrained된 모델에 추가로, Custom 데이터에 MLM 학습을 진행할 수 있을까? Huggingface 라이브러리를 활용하면 간단하게 진행해볼 수 있다. 허깅페이스 라이브러리 깃허브를 clone 해온 후, 내부의 run_mlm.py파일을 실행하면 된다.
쉘 파일을 생성해 실행하고자 한다면, 아래와 같은 파라미터들만 설정해주면 된다.
python run_mlm.py \
--model_name_or_path klue/roberta-large \ # 학습할 베이스 모델
--train_file ./klue_for_pretrain_combined.txt \ # 학습할 텍스트 데이터
--output_dir ./klue_combined_pretrained_model \ # 학습된 모델이 저장될 디렉토리
--do_train \ # 학습 여부
진행 목적
기본적으로 이미 대량의 데이터로 학습된 모델들이 다수 존재하는 만큼, 굳이할 필요는 없다. 그래도 혹시나 내가 파인튜닝할 유형의 데이터에 대한 학습이 Pretrained 과정에서 부족했다고 생각된다면 시도해볼만한 것 같다.
추가적으로, 유사한 데이터로 파인튜닝을 진행하고자 하는데, 기존 Train 데이터와 완전히 일치하지 않아 파인튜닝에 적합하지 않다고 판단되는 경우, 파인튜닝 대신에 Prterain 과정을 해볼 수 있을 것이다. 물론 그렇다하더라도 당연히 Finetuning을 통한 성능향상 여부를 먼저 파악해보는게 우선되어야한다.
현재는 가볍게 MLM을 돌려보는 정도로만 사용해서, 하이퍼 파라미터를 수정을 최소화하였으며, 내부적으로 어떻게 학습되는지 자세하게 알아보진 못했다. 시간이 되는데로 진행해서 분석해볼 수 있었으면 한다.
참고문헌
'Machine Learning' 카테고리의 다른 글
[NLP] ColBERT 논문 살펴보기 (0) | 2022.06.04 |
---|---|
[NLP] Siamense Network를 이용한 Sentence Bert (S-BERT) (0) | 2022.05.10 |
[NLP] MRC(ODQA) 태스크 관련 지표 (0) | 2022.05.06 |
[MLOps] MLflow 기본 실행 코드 (0) | 2022.04.30 |
[Knowledge Graph] ‘우크라이나-러시아 전쟁’ 지식그래프 시각화 결과 및 총평 (2) | 2022.04.25 |