이번 포스팅에선 매력적이라고 생각하는 NLP Task인 Dialogue Systems(대화 시스템)과 Language Modelling(언어 모델링)에 대해서 간단하게 다뤄보겠습니다.
Dialogue Systems(대화 시스템)
대화 시스템은 문자 그대로 사람과 대화를 할 수 있는 시스템을 구성하는 것이 목표입니다. 따라서 대화 시스템 구성은 곧 '이루다' 만들기라고 할 수 있습니다. 대화 시스템의 경우 generation, retrieval-based 모델로 구분됩니다.
이 중에서 이루다가 사용했다고하는 retrieval-based 모델은 retrieval이란 단어에서 알 수 있듯이 기존에 미리 구축해둔 답변 DB에서 그럴듯한 대답을 여러개 골라서 그 중 최종적으로 답변을 선택합니다.
따라서 적절한 대답(TP)이 얼마나 추출됐는지가 중요하기 때문에 Recall@K를 평가 지표로 활용합니다.
retrieval 기반 모델을 훈련하기 위해서는 UDC(Ubuntu Dialogue Corpus)가 활용됩니다.
UDC는 Context, Response, flag로 구성돼 있습니다. 이때 UDC는 그림과 같이 사용자의 대답이 해당 Context 다음에 발생했는 지를 flag를 통해 표시합니다.
발생했다면 1, 아니라면 0 입니다. 따라서 flag가 1인 대답이 Context 다음에 오도록 대화 시스템을 구성하는 것이 중요합니다.
retrieval 기반 모델 역시 SOTA의 대부분 BERT를 활용한 모델입니다. 현재 Papers with code 사이트 기준 BERT-FP모델이 가장 성능이 높은데 해당 논문 Abstract에서 언급된 주요 키워드를 요약하면 다음과 같습니다.
기존 BERT는 전체 문장을 확인하기 때문에 결국 multi-utterance 관계를 학습하게 된다. 이는 대화 시스템이 주목하는 each-utterance를 학습하기 적합하지 않다. 따라서 이를 해결하기 위해서 새로운 post-training 및 objective function를 도입했다!
Language Modeling(언어 모델링)
언어 모델링이란 언어라는 현상을 모델링하기 위해서 단어 sequence에 확률을 할당해주는 것입니다.
이를 통해 결국 가장 자연스러운 단어 sequence를 구성할 수 있습니다.
이때 많은 데이터셋(Wikipidea)을 가지고 Contextual embedding을 하게 되면 언어 모델링의 강점이 나오게 됩니다. 이런 방식으로 미리 학습된 언어 모델이 바로 BERT입니다.
BERT는 fine-tuning을 거치면 거의 모든 NLP Task에서 높은 성능 얻을 수 있습니다.
BERT를 비롯한 언어 모델은 여러 NLP Task에 높은 성능을 가진다는 것이 확인되어 다양한 NLP Task에서 활용되고 있습니다.
언어 모델링에서 SOTA급 성능을 가지는 BERT의 논문 Abstract에서 언급된 주요 키워드를 요약하면 다음과 같습니다.
BERT는 context를 고려한 bi-directional representation을 Transformers를 활용해서 구현했다. BERT로 생성한 representation을 활용해 NLP Task에 활용한 결과 SOTA급 성능을 얻을 수 있었다!