Day1 (10.25, 월)

  • MRC Task 에 대한 이해

  • 데이터 셋 분석

MRC(Machine Reading Comprehension, 기계독해)란?

기계 독해란 인공지능 알고리즘이 스스로 문제를 분석하고 질문에 최적화된 답안을 찾아내는 기술을 의미한다. 이를 활용한 Task 중 이번 대회에서는 ODQA (Open-Domain Question Answering)를 구현하는 것을 목표로 하고 있다.

ODQA란, 주어지는 지문이 따로 존재하지 않고 사전에 구축되어있는 Knowledge resource 에서 질문에 대답할 수 있는 문서를 찾고, 그 안에서 질문에 대한 답을 찾는 문제이다.

지난 강의를 통해서 배웠다시피 ODQA 문제는 다음 두가지로 나누어서 볼 수 있다.

  • Retriever: 질문에 관련된 문서를 찾아주는 단계

  • Reader: 관련된 문서를 읽고 적절한 답변을 찾거나 만들어주는 단계

우리는 1명의 PL과 3 / 3으로 팀을 나누어서 각각 Retreiver와 Reader를 구현해보기로 하였다.

(나는 Reader를 담당하게 됨)

평가방법 (EM + F1 Score)

Exact Match

예측과 정답이 완전 일치할 때 점수가 주어진다.

  • 단, 띄어쓰기나 '.' 과 같은 기호는 제거하고 평가한다.

  • 답이 여러개인경우 하나만 일치해도 정답으로 처리한다.

F1 Score (참고용으로만 사용됨)

  • Barack Obama 가 정답인 경우, Obama만 입력하여도 겹치는 단어를 고려하여 부분점수가 부여됨.

Dataset

  • id: 질문의 고유 id

  • question: 질문

  • answer: 답변에 대한 정보, 하나의 질문에 하나의 답변만 존재함.

    • answer_start: 답변 시작위치

    • text: 답변의 텍스트

  • context: 답변이 포함된 문서

  • title: 문서의 제목

  • document_id: 문서의 고유 id

외부데이터 사용금지

KLUE MRC 데이터 셋으로 학습된 가중치 사용은 금지

다음은 KLUE MRC에서 학습시킨 데이터 셋의 양이다.

보다시피 약 3만개의 데이터를 가지고 작업을 한 걸 알 수 있었다. 그에 비해 지금 학습하고자하는 데이터의 양이 약 4천개로 너무 적은것 같다는 생각이 들었다.

MRC Model

저번과 마찬가지로 모델 선정에 있어서 기본적인 base-line과 Roberta-base, large를 테스트해보기 앞서 공식 문서를 체크해보았다.

이번 Task에서도 KLUE-RoBERTa-large가 높은 점수를 가지고 있음을 확인할 수 있었다.

근데 이거를 사용해도 되는건지 잘 모르겠다...

1. EDA 를 위한 작업 진행

  • Train Dataset에 Train과 Validation이 애초에 나눠져있다. K-Fold를 사용하기 위해 두 데이터를 합쳐서 그냥 학습하는게 좋을 것 같다.

1.1. 중복 데이터 체크

  • 눈에 보이는 거로는 text, answer_start, context가 모두 일치한 케이스의 데이터를 직접 검증이 필요해 보였다.

위에 보이는것과 같은 형태로 실제로 질문이 다르고 정답이 일치한 것으로 확인할 수 있었다.

단 context와 document_id가 일치하는 중복건수가 612건으로 제거를 해주는 것에 대해 고려가 필요할 것 같다.

validation으로 구분된 곳에서도 5건의 중복 document를 확인할 수 있었다.

개인적인 생각으로는 해당 데이터를 삭제해주는 편이 top-k를 했을때 다양한 결과를 가져올 수 있는 방향이 될 것이라고 생각이 되었다. (아 질문이 다르기때문에 그냥 학습하는게 낫다는 결과)

2. poetry 세팅

Poetry로 dependency 관리

멘토님이 추천주신 의존성관리자로 스프링부트를 할 시에 maven같은 역할을 해주는 툴

Last updated