[AI 모델 탐험기] #11 한국어 자연어 이해 벤치마크 데이터 셋, KLUE

AI Network
17 min readJul 6, 2021

--

[편집자주] 본 글은 커먼컴퓨터에서 Developer Relations Engineer를 맡고 있는 성창엽님이 오픈소스 AI모델을 정리하고 인사이트를 공유하는 글로 시리즈로 기획돼 발행되고 있습니다. 열한번째 글은 한국어 자연어 이해 벤치마크 데이터 셋인 KLUE(Korean Language Understanding Evaluation Benchmark)입니다.

오늘 소개드릴 것은 한국어 자연어 이해 벤치마크 데이터 셋인 KLUE(Korean Language Understanding Evaluation Benchmark)입니다.

지금까지 한국어 NLP 분야에서 사전학습된 다양한 모델들이 개발되고 발표되지만 이를 평가할 공신력 있는 벤치마크가 아쉬움이 컸습니다. 하지만 이런 문제를 해결하기 위해 31명의 공동 연구진들이 참여하여 KLUE 프로젝트가 발표되었습니다. KLUE는 8개의 Task에 대해 평가할 수 있는 데이터 셋으로 구성되어 있는데, 이 Task들을 간략하게 살펴 볼 예정입니다. 뿐만 아니라 KLUE 데이터들을 가지고 모델을 직접 학습하여 학습된 모델의 성능을 평가할 수 있는 튜토리얼을 제공해드릴 예정입니다!

프로젝트를 바로 확인해 보고 싶으신 분은 다음 링크를 참조해 주세요.

KLUE Github : https://bit.ly/2TCZLAT

KLUE-BERT-MRC Tutorial : https://link.ainize.ai/3qIxEyi

KLUE-BERT-MRC DEMO/API : https://link.ainize.ai/3BMzaBJ

최근에 발표되는 NLP(Natural Language Processing) 모델의 핵심 키워드를 뽑아보라고 하면 아마 대부분 전이학습이라는 단어가 떠오르실 겁니다. 전이학습이란 사전 학습된 모델의 가중치로 초기화 된 모델을 가지고 구체적으로 풀고 싶은 문제에 맞게 추가 학습을 하는 것을 의미합니다.

전이 학습의 기본은 사전 학습 된 모델을 사용하는 것이므로 사전 학습 된 모델의 성능이 좋지 않으면 전이 학습의 효율성은 떨어질 것 입니다. 예를 들어 보겠습니다. 제 친구 A는 3개의 외국어를 할 줄 아는 친구(사전 학습 된 모델)입니다. 이 친구가 다른 언어(풀고 싶은 문제)를 배운다고 한지 얼마 지나지 않아 새로운 외국어를 구사합니다. 하지만 저는 0개 국어를 구사합니다. 저도 A처럼 금방 외국어를 구사할 수 있을까요?

그렇다면 사전 학습된 모델의 성능을 어떻게 정량적으로 평가할 수 있을까요? 이는 벤치마크 데이터 셋를 통해 가능합니다. 제가 생각하기에 사전 학습된 모델들(BERT, ELECTRA)이 빠른 속도로 발전하게 된 배경에는 GLUE(General Language Understanding Evaluation) 벤치마크 데이터 셋이 있지 않을까라는 생각이 듭니다. 다양한 모델들이 같은 벤치마크 데이터 셋 아래 성능 비교를 원동력 삼아 빠른 속도로 발전하게 되었을 것 입니다. GLUE는 DeepMind, 워싱턴 대학교 등 다양한 기관에서 만든 벤치마크 데이터 셋으로 11개의 Task들에 대해 평가할 수 있습니다.

하지만 아쉬운 점이 하나 있습니다. 한국어 NLP 분야에서도 사전학습된 다양한 모델들이 개발되고 발표되지만 이를 평가할 공신력 있는 벤치마크가 없다는 점입니다. 이러한 한계점을 극복하기 위해 KLUE(Korean Language Understanding Evaluation Benchmark)가 발표되었습니다.

KLUE는 한국어 자연어 이해 벤치마크로 토픽 분류 (TC), 의미 유사도 (STS), 자연어 추론 (NLI), 개체명 인식 (NER), 관계 추출 (RE), 의존 구문 분석 (DP), 기계 독해 (MRC), 대화 상태 추적 (DST)로 총 8개의 Task에 대해 평가할 수 있는 데이터 셋으로 구성되어 있습니다. 이는 언어의 문법/구조를 파악할 수 있는 Task부터 문장의 의미를 파악할 수 있는 Task까지 고루고루 포함되었고, 다른 언어에서도 중요하게 다뤄지는 Task 또한 포함되었다고 합니다.

KLUE는 단순히 GLUE를 번역하거나 기존에 공개된 데이터 셋를 섞은 게 아닌 한국어 언어 모델이 구문론적, 의미론적 표상을 제대로 학습했는지 평가할 수 있는 과제를 포함하고, 학계뿐 아니라 산업계에서도 수요가 있는 과제를 포함했다고 합니다. 또한 KLUE는 누구나 “모두의 데이터”로써 자유롭게 활용할 수 있도록 제한적 라이센스 걸지 않고 CC-BY-SA 라이센스를 달고 배포하는 데이터 셋라고 합니다.

이제 데이터 셋에 대해 살펴보겠습니다.

토픽 분류 (Topic Classification)

  • 데이터 셋

TC(Topic Classification)의 목표는 텍스트가 주어지면 해당 텍스트에 대한 주제를 예측하는 classifier를 학습하는 것입니다. 텍스트의 토픽 예측은 NLP 분야에서 핵심적인 기능으로 볼 수 있는데, 이는 주로 뉴스처럼 이미 카테고리가 정해진 데이터 셋을 통해 구축됩니다. KLUE-TC에서 사용된 데이터는 2016년 1월부터 2020년 12월까지 네이버 뉴스에 올라간 연합뉴스의 헤드라인입니다. 이 헤드라인을 가지고 해당 텍스트가 정치, 경제, 사회, 생활문화, 세계, IT과학, 스포츠 중 어떤 카테고리에 속하는지를 예측합니다.

  • 평가 방법

해당 Task를 평가할 때는 macro F1 score이 사용됩니다. 다중 분류에 대한 F1 score를 구할 때는 각 라벨들에 대해서 F1 score를 구한 후 이를 평균내는 방식으로 점수를 계산합니다. 해당 사진에서 정치 라벨에 대한 F1 score을 구해보겠습니다.

F1 score를 구하기 위해서는 precision 값과 recall 값이 필요한데 먼저 precision을 구해보겠습니다. precision는 정밀도라고 불리우는데 이는 TP(True Positive)/ (TP(True Positive) + FP(False Positive))로 구할 수 있습니다. 위의 예제에서는 30 / (30 + 19 + 10 + 1 + 1 + 4 + 15)로 평가할 수 있습니다.

반면 recall은 재현율이라고 불리우는데 이는 TP(True Positive)/ (TP(True Positive) + FN(False Nagative))로 구할 수 있습니다. 위의 예제에서는 30 / (30 + 21 + 31 + 12 + 14 + 12 + 11)로 평가할 수 있습니다.

이제 precision과 recall을 구했으니 F1 score을 구해보겠습니다. F1 score는 (2 * precision * recall) / (precision + recall)로 구할 수 있습니다. 이와 같이 각 라벨에 대해 F1 score를 구하고 평균을 내면 macro F1 score를 구할 수 있습니다.

의미 유사도 (Semantic Textual Similarity)

  • 데이터 셋

STS(Semantic Textual Similarity)의 목표는 입력으로 주어진 두 문장간의 의미 동등성을 수치로 표현하는 것입니다. KLUE-STS에서 사용된 데이터는 에어비앤비 리뷰, 정책 뉴스 브리핑 자료, 스마트 홈 기기를 위한 발화 데이터입니다. 에어비앤비 리뷰, 정책 뉴스 브리핑 자료 같은 경우 문장간의 유사성을 추정하기 힘든 경우가 있었는데, 이때는 네이버 파파고를 사용하여 영어로 번역했다가 다시 한국어로 번역하여 유사한 문장 쌍을 생성했다고 합니다. 이런 기법을 round-trip translation(RTT)라고 부르는데 이렇게 함으로써 원래 문장의 핵심 의미를 유지하면서 어휘 표현이 살짝 다른 문장을 생성할 수 있었습니다.

  • 평가 방법

해당 Task를 평가할 때는 F1 score와 피어슨 상관 계수가 사용됩니다. 우선 F1 score 같은 경우, 유사도 3.0을 기준으로 유사하다, 유사하지 않다로 라벨링 후 F1 score를 구한다고 합니다. 피어슨 상관 계수는 변수 X, Y가 있을 때 이 두 변수가 어떤 상관 관계를 가지는가를 수치로 나타낸 값입니다. KLUE-STS에서는 사람이 직접 붙인 라벨값과 모델의 예측 라벨값 간의 선형 상관 관계를 측정한다고 합니다.

출처 : https://ko.wikipedia.org/wiki/피어슨_상관_계수

자연어 추론 (Natural Language Inference)

  • 데이터 셋

NLI(Natural Language Inference)의 목표는 전제로 주어진 텍스트와 가설로 주어진 텍스트 간의 관계를 추론하는 것입니다. KLUE-NLI에서 사용된 데이터는 위키트리, 정책 뉴스 브리핑 자료, 위키뉴스, 위키피디아, 네이버 영화 리뷰, 에어비앤비 리뷰인데 여기서 조건에 부합하는 10000개의 전제를 추출하여 약 30000개의 문장 쌍을 구성했다고 합니다. 전제와 가설간의 관계는 가설이 참인 경우(entailment), 가설이 거짓인 경우(contradiction), 가설이 참 일수도 있고 아닐 수도 있는 경우(neutral)로 라벨링 되어 있습니다.

  • 평가 방법

해당 Task를 평가할 때는 정확도가 사용됩니다. 정확도는 모델의 예측 라벨과 실제 정답 라벨이 얼마나 정확한가를 나타냅니다.

개체명 인식 (Named Entity Recognition)

  • 데이터 셋

NER(Named Entity Recognition)의 목표는 비정형 텍스트에서 개체의 경계를 감지하고 개체의 유형을 분류하는 것입니다. 다시 말해 어떤 이름을 가진 단어를 보고 그 단어가 어떤 유형인지를 분류하는 것 입니다. 예를 들어 조직, 시간에 대해 개체명 인식을 수행하는 모델이 있다고 가정해보겠습니다. 이 모델에 “커먼컴퓨터는 2018년에 설립되었다”라는 문장이 들어오면 해당 모델은 커먼컴퓨터(조직), 2018년(시간)을 출력할 것입니다. KLUE-NER에서는 6개의 개체명을 가지고 있는데 이는 사람(PS), 위치(LC), 기관(OG), 날짜(DT), 시간(TI), 수량(QT)로 구성되어 있습니다. KLUE-NER에서 사용된 데이터는 형식적인 글과 비형식적인 글의 통합을 위해 위키트리와 네이버 영화 리뷰가 사용되었다고 합니다.

  • 평가 방법

해당 Task를 평가할 때 entity-level macro F1와 character-level macro F1가 사용되었다고 합니다. entity-level macro F1의 경우에는 개체명 레벨에서 얼마나 정확하고 많이 맞췄는지를 평가합니다. 이는 한국어의 특성과도 연결이 되는데요. 한국어는 어근에 접사가 결합되어 있는 형태를 띠는 교착어입니다. 따라서 한국어 토큰화를 진행할 때는 어근과 접사를 잘 분해해야 하는데 이를 평가하는 지표라고 생각하시면 될 거 같습니다.

character-level macro F1의 경우에는 모델 예측과 실제 정답 사이의 부분 중첩을 측정하기 위한 점수입니다. 이는 각 라벨 별 F1-score의 평균을 통해 구할 수 있습니다.

관계 추출 (RE)

  • 데이터 셋

RE(Relation Extraction)의 목표는 텍스트에서 단어들 간의 의미론적 관계를 식별하는 것입니다. 예를 들어 “김철수는 서울에서 태어났다”라는 문장에서 “김철수”와 “서울”의 관계는 place_of_birth라고 볼 수 있습니다. KLUE-RE에서 사용된 데이터는 위키피디아, 위키트리, 정책 뉴스 브리핑 자료로 구성되어 있는데 이 데이터들은 no_relation, per:date_of_birth 등 30개의 관계 레이블링이 되어 있습니다. 다른 관계들도 보고 싶으시면 여기를 참고해주세요.

  • 평가 방법

해당 Task를 평가할 때 micro F1 score와 area under the precision-recall curve (AUPRC)가 사용되었다고 합니다. micro F1 score는 macro F1 score과 비슷하지만 다릅니다. micro F1 score = 2 * (micro-precision * micro-recall) / (micro-precision + micro-reall)로 구할 수 있습니다. 먼저 micro-precision = TP의 합 / (TP의 합) + (FP의 합)이며, micro-recall = TP의 합 / (TP의 합) + (FN의 합)을 통해 구할 수 있습니다.

출처 : https://peltarion.com/knowledge-center/documentation/evaluation-view/classification-loss-metrics/micro-f1-score

AUPRC는 x축을 recall, y축을 precision으로 설정하여 그린 곡선 아래의 면적 값입니다. precision, recall 두 점수 모두 1에 가까울수록 성능이 좋은 모델로 평가하므로 AUPRC 점수 역시 1에 가까울 수록 성능이 좋은 모델로 평가합니다.

의존 구문 분석 (DP)

  • 데이터 셋

DP(Dependency Parsing)의 목표는 단어 간의 관계 정보를 찾는 것입니다. 다시 말해 단어와 단어간의 관계를 기분으로 누가 head인지, 의미적으로 지배하는지/지배 당하는지에 대한 관계 정보를 찾는 것입니다.

해당 사진을 예제를 들어보겠습니다. dependency structure를 구성할 때 규칙이 있는데, 이는 ROOT를 추가해서 단어의 모든 성분의 최종 head 는 결국 이 ROOT가 되도록 설계합니다. 사진에서 볼 수 있는 화살표는 head에서 출발하여 dependent를 가리킵니다. “철수가”는 “먹었다”의 dependent이며 주어의 관계를 가집니다. 이러한 관계를 DEPREL(dependency relation classes)이라고 하는데 DEPREL은 NP(Noun Phrase), VP(Verb Phrase)와 같은 9개의 Syntax 태그와 SBJ(Subject), OBJ(Object)과 같은 6개의 Function 태그의 조합으로 이루어진 36개의 TTA Dependency를 따릅니다.

KLUE-DP에서 사용된 데이터는 위키트리와 에어비앤비 리뷰를 사용했다고 합니다.

  • 평가 방법

해당 Task를 평가할 때 UAS(unlabeled attachment score), LAS(labeled attachment score)가 사용되었습니다. UAS는 어떤 HEAD를 가리키는지만을 평가하고, LAS는 HEAD와 DEPREL을 모두 계산한다고 합니다

기계 독해 (MRC)

  • 데이터 셋

MRC(Machine Reading Comprehension)의 목표는 주어진 context와 context에 관한 질문에 답할 수 있는가입니다. KLUE-MRC에서 사용된 데이터는 위키피디아, 아크로팬, 한국경제신문입니다. 데이터에 대한 분석이 필요하시면 아래 Ainize Workspace에서 확인해주세요!

  • 평가 방법

해당 Task를 평가할 때 EM(exact match), ROUGE(character-level ROUGE-W)가 사용되었습니다. EM의 경우 QA model에서 가장 많이 사용하는 평가 방법으로 실제 답변과 예측 답변이 일치하면 점수를 얻게 됩니다. 반면 ROUGE의 경우 예측 답변과 실제 답변이 완벽하게 일치하지 않아도 점수를 얻을 수 있습니다.

대화 상태 추적 (DST)

  • 데이터 셋

최근 사람과 컴퓨터 간의 대화 시스템이 점점 주목을 끌고 있습니다. DST(Dialogue State Tracking)의 목표는 사람과 컴퓨터의 대화에서 사람이 하는 말의 문맥을 보고 대화 상태를 예측하는 것입니다. 아래 그림을 예로 들어 설명해보겠습니다.

각 유저의 턴이 끝날 때 마다 slot과 value pair를 예측합니다. “서울 중앙에 있는 박물관을 찾아주세요”라는 발화가 들어오면 관광이라는 영역 아래 종류-박물관, 지역-서울 중앙을 예측합니다.

  • 평가 방법

해당 Task를 평가할 때 JGA(joint goal accuracy)와 slot F1 score가 사용됩니다. JGA는 매 턴마다 실제 값과 예측 값이 일치하는 정도를 수치화한 값입니다. 반면 slot F1 score는 매턴마다 구한 micro F1 scores의 평균값입니다. value pair가 none인 데이터가 있는데 이는 slot micro F1 score를 계산하지 않는다고 합니다.

KLUE-MRC로 학습/평가해보기

이번에는 직접 KLUE-MRC를 사용하여 모델을 학습하고 평가해보겠습니다. 해당 튜토리얼은 Ainize Workspace에서 진행되었는데, 이는 클라우드 기반의 주피터 노트북 개발 환경으로 GPU(T4)를 무료로 사용할 수 있는 환경입니다. 이 튜토리얼은 여기에서 확인하실 수 있습니다.

이렇게 해서 각 Task에 대한 데이터 셋, 평가 방법을 간략하게 살펴보았습니다. 사실 자연어 처리 분야에서 한국어는 영어에 비해 데이터 셋 부족 등의 이유로 발전이 덜 이루어졌다라고 생각을 했습니다. 하지만 KLUE라는 발판을 통해 한국어 자연어처리 분야에 한걸음 더 나아갈 수 있을 거 같습니다. 이렇게 한걸음 한걸음 나아가다 보면 언젠가는 정상에 도착할 수 있을 것 입니다. 이는 KLUE 멤버들의 책임감 혹은 사명감, 그리고 헌신이 있었기에 가능한 일이며, 이를 토대로 좋은 한국어 데이터 셋이 공유되는 생태계가 조성되었으면 좋겠다라는 생각이 듭니다.

Reference

  1. The State of Transfer Learning in NLP
  2. KLUE Github
  3. KLUE: Korean Language Understanding Evaluation
  4. KLUE BENCHMARK
  5. PELTARION Micro F1-score
  6. WIKIPEDIA Pearson Correlation Coefficient
  7. Dependency Parsing — Stanford University

AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.

최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.

AI네트워크 공식 홈페이지: https://ainetwork.ai/

공식 텔레그램: telegram.com/ainetwork_kr

아이나이즈(Ainize): https://ainize.ai

유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog

페이스북: https://www.facebook.com/ainetworkofficial/

포럼: https://forum.ainetwork.ai/

AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/

--

--

AI Network
AI Network

Written by AI Network

A decentralized AI development ecosystem built on its own blockchain, AI Network seeks to become the “Internet for AI” in the Web3 era.

No responses yet