--- tags: '랩업 리포트' --- KLUE - Run & Learn 팀 랩업 리포트 === 프로젝트 개요 --- - 프로젝트 주제 - [NLP] 문장 내 개체간 관계 추출 - 프로젝트 개요(프로젝트 구현 내용, 컨셉, 교육 내용과 관련성 등) - 문장의 단어(Entity)에 대한 속성과 관계를 예측하는 인공지능 만들기 - 자연어 처리 과정에 대한 기초 잡기 - Huggingface를 사용하여 모델 파인 튜닝 도전하기 - 활용 장비 및 재료(개발 환경 등) - H/W - V100 GPU - SSH 환경 - S/W - Ubuntu 18.04 LTS - Pytorch, Huggingface - Wandb - VS Code, Jupyter Lab - 프로젝트 구조 - main.py, main_cfg.yaml 을 통한 모델 훈련 - 기대 효과 - 문장에서 토큰들 사이의 관계성을 30개의 Class를 기준으로 분류하는 모델이다. 관계 추출은 구조화된 검색, 감정 분석, 질문 답변하기, 요약과 같은 자연어처리 응용 프로그램에서 활용될 수 있다. 프로젝트 팀 구성 및 역할 --- - 강석민 : 사용하기 쉽도록 코드 리펙토링 - 김종현 : Feature Extraction을 통해 전통적인 ML 기법 적용, pre-trained 모델에 추가적인 layer 추가 - 김태현 : 대회 데이터셋을 이용한 Masked Language Model pre-training을 통해 Domain adaptation을 시도 - 오동규 : 모델의 Entity Information 학습을 위한 다양한 방법 실험. - 윤채원 : 데이터셋 class의 imbalance를 반영한 train/val 분할해봄. 또한 BERT model Domain adaptation을 시도 - 최재혁 : Entity들의 관계성을 단어 임베딩 레이어에 부착하는 전처리과정을 제시하고, 추가적으로 Entity의 임베딩 벡터를 BERT모델에 넣어보려는 시도 - 허은진 : AEDA를 사용해서 Data Augmentation 시도 프로젝트 수행 절차 및 방법 --- - 210927 : 인공지능과 자연어, 자연어 전처리 - 210928 : BERT 언어 모델 소개, 한국어 BERT 모델 학습 - 210929 : BERT 언어모델 기반의 단일 문장 분류 - 210930 : BERT 언어모델 기반의 두 문장 관계 분류 - 211001 : BERT 언어모델 기반의 문장 토큰 분류 - 211005 : 베이스라인 코드 이해, 모델 파인 튜닝 진행 - 211006 : 코드 리팩토링, AEDA 적용 - 211007 : 하이퍼 파라미터 적용 및 최종 모델 정리 프로젝트 수행 결과 --- ### 탐색적 분석 및 전처리 (학습데이터 소개) - 총 데이터 갯수 : 32470개 - 문장, subject_entity, object_entity, 라벨 - entity에는 name, start_index, end_index, type이 포함됨 - 테스트 데이터 갯수 : 7765개 - 클래스 : 30개 ### 모델 개요 - KLUE/BERT-base - KLUE/BERT-large - KLUE/RoBERTa-Large - KLUE/RoBERTa-base - KoElectra-base-V3 ### 모델 선정 및 분석 - KLUE/bert-base - 기초 베이스 라인에 제공된 모델이며 준수한 점수를 기록함 - KLUE/RoBERTa-Small - 빠른 학습시간으로 여러가지 시도를 할 때 사용 - KLUE/RoBERTa-Large - 가장 높은 점수를 보여 주었으며 최종 제출 모델로 사용 - KoElectra-base-V3 - 벤치마크 점수는 높지만 현재 대회에서는 낮은점수를 기록하여 제외 됨 ### 모델 평가 및 개선 - 하이퍼 파라미터 튜닝 시도 ![](https://i.imgur.com/B9C6sEQ.png) - AEDA 시도 ![]( https://i.imgur.com/uV8c2iW.png) ### 시연 결과 & 모델 성능 ![](https://i.imgur.com/aLuSIOE.png) 자체 평가 의견 --- ### 잘한점들 - 대회 코드를 좀 더 사용하기 쉽게 만듦 (Hydra 사용) - AEDA를 시도하여 훈련데이터 튜닝 - 하이퍼파라미터 최적화 적용 ### 시도 했으나 잘 되지 않았던 것들 - CatBoost를 통한 모델 분류 성능 향상 시도 - Pytorch Lightning 사용 시도 - 그러나 HuggingFace가 더 잘되있어서 HuggingFace 사용 - Entity 토큰을 Embedding Layer에 추가해서 넣어주려고 했으나, PreTrained된 모델에 맞지 않았던 문제 - MLM을 이용한 언어모델을 대회 데이터셋으로 추가 학습한 후 fine tuning - Output Layer에서 RNN, LSTM 레이어를 부착해서 시도 ### 아쉬웠던 점들 - 모델 제작, 시간에 쫒겨 커스텀 모델을 만들진 못했다. - 가지고 있는 아이디어를 적용한 모델을 학습하는데에 시간이 생각보다 너무 오래걸려서 원하는 결과를 끝내 보지 못했다. - 데이터 셋에 맞는 Pre-Trained된 모델을 재학습시켜보지는 못했다. - 다같이 한번에 맞춰서 진행할 코드가 늦게 만들어지기도 했고, 다음에는 이번 대회를 통해서 만든 것을 기반으로 발전해야겠다. - Ensemble 등 Competition에서 많이 사용하는 기법을 적용해보지 못했다. - huggingface 사용이 익숙하지 않아서 응용할 때 헤맸다.