LearnRun

[KT AIVLE 3기] 10주차 후기 - 4차 미니 프로젝트 본문

KT AIVLE 3기/Weekly Report

[KT AIVLE 3기] 10주차 후기 - 4차 미니 프로젝트

PROMPT_ 2023. 4. 8. 23:53

본 게시글은 AIVLE 기자단 활동의 일환으로 작성되었습니다.

 

4차 미니 프로젝트 (언어지능 / 분류)

AIVLE 내의 1:1 문의 데이터가 주어집니다.

그 문의 내용의 유형을 분류해내는 미션입니다.

 

Text Classification 미션.

캐글 경합으로 순위를 다투게 됩니다.

 

 

Kaggle Competition : 1:1 문의 내용 분류하기

과제

 - AIVLE 내의 1:1 문의 데이터를 바탕으로, 데이터를 바탕으로 시험 데이터에 대한 분류를 예측합니다.

 - 평가 기준은 micro F1 score로, 클래스별 F1 score의 가중평균을 계산, 1에 가까울 수록 성능이 좋음을 의미합니다.

 

나의 진행

데이터 전처리

● 특수문자의 제거

 - 특수문자는 텍스트 데이터에서 자주 등장하지 않거나 중요한 의미를 가지지 않는 경우가 많습니다.

 - 특수문자로는 쉼표, 마침표, 물음표, 느낌표, 괄호, 대시 등, 영어/숫자/한글이 아닌 경우 배제했습니다.

 - 텍스트 데이터를 1차적으로 깔끔하게 정리하고자 사용했습니다.

 

 불용어의 제거

 - 텍스트에서 자주 등장하지만 분류 모델에는 유용한 정보를 제공하지 않는 단어를 제거합니다.

 - "더", "그", "이", "저"와 같은 한국어 불용어는 제거하면 모델이 중요한 정보에 더 집중할 수 있습니다.

 - 텍스트의 크기를 줄이고 모델의 학습 성능을 향상하고자 사용했습니다.

 

 공백 수 조정

 - 위의 전처리 과정을 거치며, 삭제/수정이 일어나고 이에 따라 공백이 추가 발생합니다.

 - 단어와 단어 사이를 구분하는 역할을 하지만, 여러 개로 나타나거나 불규칙하게 배치되어 있을 수 있습니다.

 - 불규칙한 공백을 조정, 텍스트를 균일하게 만들고 모델이 이해하기 쉽도록 만들었습니다.

 

영어 및 한글 내용의 분리

 - 언어적 특성과 문법이 다르기 때문에, 텍스트 데이터에 포함된 여러 언어를 개별적으로 처리해봤습니다.

 

위의 네 항목을 적절히 조합하여, 여러 경우의 수를 시도했습니다.

 

손실함수 설정

Asymmetric Loss

 - 분류 데이터들이 균등하게 분포되어 있지 않아 채택하였다.

 - 이러한 불균형을 고려하여 다른 클래스 간에 서로 다른 가중치를 적용하는 방법을 제공합니다.  

 - P에 대한 손실과 N에 대한 손실을 다르게 설정하여, 높은 정확도로 예측하도록 유도합니다.

 

Focal Loss

 - 분류 데이터들이 균등하게 분포되어 있지 않아 채택하였다.

 - 일반적으로 객체 검출 등에 사용하나, 텍스트 분류의 불균형 클래스 분포에 대해 손실함수로 활용될 수 있습니다.
 - 주로 클래스 간의 불균형을 해결하고, 모델이 어려운 샘플에 더 집중하도록 도와줍니다.

 - 쉬운 샘플에 대한 가중치를 낮추고 어려운 샘플에 대한 가중치를 높이는 방식으로 작동합니다. 

 - 어시메트릭과 달리, 부정에 대한 손실을 지정하지 않습니다.

 

한국어 형태소 분석기

Okt

 - KoNLPy 라이브러리에 포함된 한국어 형태소 분석기 중 하나

 - 구 트위터 형태소 분석기의 파이썬 버전으로 쉽게 사용할 수 있으며 다양한 자연어 처리 작업에 적합합니다.

 - Mecab과 kkma의 중간 정도의 시간이 소요되었습니다.

 

kkma

 - KoNLPy 라이브러리의 한국어 형태소 분석기 중 하나

 - 정확한 형태소 분석 결과를 제공하며 다양한 자연어 처리 작업에 활용됩니다.

 - 단, 속도가 굉장히 느립니다.

 

Mecab

 - 빨라서 사용했는데 성능이 구렸습니다. 얼추 경향성만 보는 용도로 사용했습니다.

 

모델

 Kobert

 - BERT모델의 한국어 버전입니다.  

 - 자연어 처리 작업에서 뛰어난 결과를 내며, 한국어에 적용하기 위해 사전 학습된 모델로, 전이학습이 가능합니다.

 

 Koelectra

 - ELECTRA 아키텍처를 기반으로 한 한국어 자연어 처리 모델입니다.  

 - GAN을 자연어 처리에 적용한 모델로, 효율적인 학습과 뛰어난 성능을 제공합니다.

 

결과

- 팀 내에선 내가 1등으로 마무리했습니다. 하지만 전체 팀 순위는 중위에 머물러 아쉬웠습니다.

- EDA 등, 데이터 전처리에 대해 좀 더 적극적으로 고려했어야 했습니다.

- 전처리에 대한 개선 고민 없이, 손실함수나 모델, 형태소 분석기에 집중한 것이 아쉽습니다.

- 검증 없이 이것 저것 써보려는 태도가 시간을 너무 잡아먹었습니다.

 (손실함수*모델*전처리 경우의 수를 다 따지면 너무 많은 시도를 해야하니까요. 반성합니다.)

 

타 팀의 사례

문법 교정 

 - 한국어 맞춤법/문법 검사기를 한번 거친 것이 인상적이었습니다.

 

번역

 - 파파고를 통해 영어 또한 모두 한글로 번역하여 사용한 팀도 있었습니다. 멋집니다.

 

EDA

- 데이터를 조사하고 분석하여 데이터의 특성을 파악하는 과정

- 데이터를 시각화하고 기초 통계를 사용하여 데이터의 패턴, 분포, 이상치 등을 파악

 

AUTO-ML

- 데이터 전처리도 자동, 모델선택도 자동, 튜닝도 자동입니다.

- 시드넘버만 좋은 것을 찾으면 다 잘 돌아가는 무적의 치트키입니다.

- 그러나 이는 결국 천하제일 시드찾기대회가 됩니다.

(에이블 측에 좀 금지시켜달라고 말해야됩니다.. 이거.. 학습의도랑 안맞지 않나 하는... 금지 안해주면 저도 쓸겁니다..)

 

룰 위반

- 주어진 데이터를 활용하는 것이 아닌, 타 문의 데이터를 임의로 가져와 학습한 팀이 있었다. (이는 데이터 증강이 아니다.)

- GPT를 이용해 문의데이터를 임의로 추가한 팀도 있었다. 이 또한 전혀 타당한 방식이 아니다.

- 그럼에도 따로 코멘트나 주의문구는 없었고, 점수 카운팅 또한 그냥 진행되었다.

 

 

마치며...

전날 공부한다고 밤 새고 출발.. 당일 점심도 입에 못대고 빡세게 했습니다.

그럼에도 성적이 좋지 않아 마음이 아프네요.

끽해야 1점 모자란 것이라고 한다면 할 말은 없지만, 이게 어떤 나비효과를 부를지는 아무도 모르니까요.

 

현타도 오긴 하는데, 또 이걸 동기로 삼아야겠죠?

제가 못난 탓에 팀원들도 점수 못 얻은 것 같아서 마음이 저릿저릿하네요.

 

다음 미니 프로젝트는 뭔가 보여드리겠습니다..

(칼을 갈며)

‌ ‌ ‌
Comments