아래 버튼을 누르면 배포 링크로 이동합니다.
프로젝트 진행 기간
2021.08 ~ 2021.09
프로젝트 목표
기계독해 기반 질의응답(QA) 모델 구현 후 Web App service 배포
Introduction
저는 평소에 구글, 유튜브, 네이버 등의 여러 플랫폼을 이용하는데, 그중 가장 많이 사용하는 기능은 검색 기능입니다.
넷플릭스조차 영상 시청시간보다 검색시간이 더 길 때가 있는데요,😅
그럴 때마다 어떻게 이렇게 추상적인 키워드로 검색해도 원하는 결과를 낼 수 있는지, 어떤 원리인지 항상 궁금했습니다.
지난 8월간 딥러닝 학습을 진행하면서, 검색 결과를 내는 알고리즘이 단순히 키워드를 기반으로 리스트를 출력하는 것이 아닌 MRC(Machine Reading Comprehension, 기계 독해)라고 불리는 인공지능 알고리즘이라는 것을 알 수 있었습니다.
해서 이번 프로젝트에선 기존의 궁금증을 해결하고, MRC의 영역 중 하나인 QA 시스템을 이해한 후 실제 service로 구현해보고자 본 프로젝트를 진행하게 됐습니다.
텍스트의 양이 많고, 한국어 자연어 처리에 좋은 성능을 보이는 모델이 있기에
기존 모델의 성능을 더 개선시켜보고자 KLUE-MRC 데이터셋으로 fine-tunning 하는 과정으로 진행했습니다.
우리는 언제나 질문에 대한 답을 원합니다.
예시로, "코로나 전염의 원인"에 대해서 답을 찾고 싶을 수 있습니다. 이때의 검색 키워드는
코로나19는 무엇으로부터 발생하는가?
코로나19의 전염 원인은?
등으로 다양할 것입니다.
이때, 구글은 우리에게 아래의 2가지 정도의 형식으로 답을 해줍니다.
- Finding documents that contain an answer (정답을 포함하고 있는 문서 찾기)
- 기존의 정보 검색 (Information Retrieval=IR)/ 웹 검색으로 처리할 있는 사항
- Finding an answer in a paragraph or a document (문서에서 정답 찾기)
- 이 문제를 흔히 기계 독해(Machine Reading Comprehension, MRC)라고 합니다.
- 인공지능(AI) 알고리즘이 스스로 문제를 분석하고 질문에 최적화된 답안을 찾아내는 기술
사용자들은 명확하게 알려지지 않은 정보를 질문하기 때문에 질문들은 정의가 불충분하고, 더 많은 언어 이해를 필요로 합니다. 따라서, IR system으로는 정확한 답을 유추하는데 한계가 있습니다. 즉, 불특정 언어에서 의미를 유추할 수 있다는 것이 MRC를 전통적인 IR과 차별화하는 이유입니다.
MRC의 대표적인 기술적 활용은 QA(Question Answer)입니다. 기존 검색은 DB에서 데이터를 찾고, 키워드 기반으로 검색한 결과를 리스트로 제공하는 방식입니다. QA 서비스는 이런 방식을 넘어서, 정형 데이터든 비정형 데이터든 다양한 데이터 속에서 키워드 기반이 아닌 사용자의 의도를 분석해 원하는 답을 찾아줍니다. ‘비욘드 서치(Beyond Search)’라고도 합니다. MRC는 비정형 데이터에서 의미를 파악해 질문에 적합한 답을 찾는 QA의 핵심 기술입니다.
이번 프로젝트에선 모델을 KLUE-MRC로 fine-tunning 하여 Question Answering(QA) 모델의 성능을 개선시켜보도록 하겠습니다.
이러한 과정이 중요한 이유는 다음과 같습니다.
- 챗봇, 검색 엔진을 포함한 다양한 분야에서 다양한 사용자 니즈를 완벽하게 수용하기 위해 더욱 고도화된 QA 기술을 필요로 합니다.
- COVID-19 팬데믹을 계기로 Digital Workplace의 필요성이 대두되면서 회사에 산재되어 있는 다양한 양질의 정보들을 하나로 통합하고, 필요한 내용을 검색하여 적시에 인사이트를 얻는 일이 보다 중요해지고 있습니다. 필요한 정보를 빠르고 정확하게 찾는 기계 독해(MRC), 시맨틱 검색 등의 자연어 처리와 자연어 이해 기술의 필요성이 부각되고 있는 이유입니다.
- 비정형 데이터는 사회적으로 중요한 가치나 사실을 다수 담고 있습니다. 또 전체 데이터 중에서 비정형 데이터가 차지하는 비중은 80% 이상으로 추정됩니다. 그중 가장 기본적이고 광범위한 비중을 차지하는 텍스트 데이터를 학습함으로써 정보 검색 시간과 비용을 절감할 수 있습니다.
Modeling
사용한 모델은 koelectra입니다. koelectra는 14기가의 한국어 텍스트로 학습된 모델입니다. 이 모델은 Hugging Face 또는 GitHub에서 가져와 사용할 수 있습니다.
데이터셋으로는 klue-mrc를 사용했습니다. 해당 데이터셋은 train, test set이 각각 약 17000개, 13000개로 구성되어있습니다. 2021년 출시된 데이터셋으로, 위키피디아, 한국경제신문의 데이터로 이루어져 있습니다.
전처리 과정을 거치고 koelectra-base 모델을 KLUE-MRC(Machine Reading Comprehension) 데이터셋으로 fine-tunning/추론/평가했습니다.
기획 초기엔 한국어 데이터셋/모델만 학습을 진행하려고 했으나, 추가적으로 영어 데이터셋/모델도 추가적으로 학습을 진행했습니다.
따라서 해당 service는 영어와 한국어를 모두 지원합니다.
전체 구성은 다음과 같습니다.
koelectra모델을 klue-mrc의 train data를 사용하여 fine-tunning과 학습을 진행하고, test 셋에서 성능을 평가했습니다.
사용할 평가지표는 EM으로, 모델이 제시한 결과와 정답이 완전히 일치하는 비율을 의미하며 클래스가 균형된 데이터 평가에 사용됩니다.
예측한 답과 실제 답이 정확히 일치하면 점수를 얻게 됩니다
def em_evalutate(prediction_answers, real_answers):
total = len(prediction_answers)
exact_match = 0
for prediction_answer, real_answer in zip(prediction_answers, real_answers):
if prediction_answer in real_answer:
exact_match += 1
return (exact_match/total) * 100
em_score = em_evalutate(pred_answers, dev_answers)
em_score
# 50.67365269461078
EM score는 약 50%를 보이고 있습니다.
활용 방안
1. 비즈니스 사례
- 정보 요구를 정확하게 파악하여 정보 검색 시간과 비용을 절감하고, 결과적으로 사내 시스템 활용도를 제고하며 업무 효율을 향상할 수 있을 것으로 기대합니다.
- 추후 표나 리스트를 포함하는 복잡한 구조의 문서에도 활용하여 신뢰도 높은 결과를 제공할 수 있도록 개발해보고자 합니다.
2. 서비스 사례
- 검색엔진의 성능은 사이트 전체 사용자 실적, 사이트 재방문율에 상당한 영향을 미칩니다. 딥러닝 기반의 QA system을 검색 기술에 활용함으로써 소비자의 웹사이트 방문율을 높일 수 있습니다.
- 한국어로 일상 대화, 목적 대화가 가능한 대화 모델링 기술의 기반이 됩니다. 따라서 AI 스피커·챗봇 서비스 자율주행 등에 활용 가능합니다.
최종적으로 구현된 QA service입니다. (글 가장 상단의 버튼을 누르면 배포 링크로 이동합니다. )
사용 방법은 다음과 같습니다.
QA service
- 언어를 선택합니다.
- context 박스에 context를 입력합니다.
- question 박스에 찾고 싶은 question을 입력합니다.
- submit 버튼을 누릅니다.
Example
- context 예제에서 원하는 context를 선택합니다.
- 3가지 question 중 하나를 선택합니다.
- submit 버튼을 누릅니다.
Load button
- 로컬에 있는 txt 파일을 load 버튼으로 불러올 수 있습니다.
- question 박스에 찾고 싶은 question을 입력합니다.
- submit 버튼을 누릅니다.
Clear button
- question 박스와 context 박스의 내용이 지워집니다.
Resources
- dataset(squad)
- dataset(klue-mrc)
- code(fine-tunning dataset)
- code(model)
- model(xlm-roberta-base)
- model(koelectra)