NLP

NLP Task 정리

알 수 없는 사용자 2021. 6. 11. 12:25
반응형

이번 포스팅은 NLP에는 어떤 Task들이 있는지 한번 간략하게나마 정리해보려 한다.

 

매번 말하지만 이 글은 CV를 전공하는 사람이 작성하는 NLP 정리이다. 따라서 깊은 개념은 지양하고 이해에 목적을 뒀다. 또한 관점이 CV관점의 글일 수 있다.

 

CV에 classification, detection(segment, instance ... ), generate, denising, SR... 등등의 다양한 Task가 있는 것 처럼 당연히 NLP에도 다양한 Task들이 있다.

 

다양한 모델들을 이해하기 위해서는 어떤 Task들이 무엇을 목표로 하는지 알아두는 것이 좋다. 그 자세한 내막은 모를지언정 전체적인 큰 그림을 알기 위해서는 필수적이다. 하나씩 용어와 개념을 정리하며 큰 그림을 그려보자.

 

Q. 읽는다는 것은 무엇일까.

 

우리가 국어 문제를 풀 때, 우리는 지문을 읽고 문제를 푼다. 읽는다는 것은 해당 문장들을 이해하고 관련된 정보들을 재해석하여 관련된 질문이 주어졌을 때 이를 답할 수 있어야 한다는 것이다.

 

이런 문제들 말이다. (물론 저런 문제들은 상당히 어려운 문제이기에 사람도 오답률이 높다. 그저 예시를 위한 사진일 뿐이다.) 이를 우리말로는 '독해'라고 하고 영어로는 Reading comprehension이라 한다. 어디선가 Reading comprehension이라는 단어가 나온다면 문장을 읽는 능력이라 생각하면 된다.

 

SQuAD

과연 문장을 잘 읽었는지 알아내기 위해 input으로 문장과 질문을 주었을 때 대답을 맞춰야 하는 모델을 만들면 될 것 같다는 생각이 든다. 이에 적합한 데이터 셋이 바로 SQuAD다. 풀네임은 Stanford Question Answering Dataset 으로 데이터셋 이름부터가 벌써 질문과 대답을 할 것임을 명시하고 있다. 

 

CNN/Daily Mail Dataset

다른 방향으로는 문장에 빵꾸를 뚫은 뒤에 어떤 단어가 들어가야 하는지 예측할 수 있다면, (앞뒤 문맥을 통해 추측이 가능하다면) 잘 읽었다고 판단 할 수도 있을 것이다. 보통 이를 수행하기 위해서 CNN/Daily Mail Dataset을 사용한다. 아주 똑똑하게도 매일같이 쌓이는 뉴스의 스크립트를 데이터셋으로 사용할 생각을 하다니 역시 사람은 머리가 좋아야 한다.

 

Open-domain QA

앗... 그렇다면 이미 있는 데이터의 대명사인 위키백과를 사용하면 어떨까?

이런식의 이미 존재하고, 인터넷을 통해 접근 가능한 데이터를 사용하여 무언가 일을 하는 것을 (일단 질문과 대답을 하는 것이라 가정해보자) Open-domain QA라 명명한다.

 

이 3가지의 Task들을 어떤 식으로 기존 모델들이 해결했었는지 과거를 돌아보자.

 

일단 최근 NLP의 성능을 살짝 보자.

90퍼센트의 성능을 뽐내고 있다..

하지만 오늘은 저런 고오급 모델들에 대해 이야기 할 것이 아니라 매우 옛날의 접근법을 소개하려 한다.

 

2015년에 나온 Teaching Machines to Read and Comprehend라는 논문에서 설명을 위해 모델을 3가지로 나누어 정리했다. 

Attentive Reader와 Impatient Reader,그리고 Deep LSTM Reader이다. 3개에 대해 간략하게 설명하고 넘어가보자.

 

일단 Attentive Reader란 어떤 문장에서 뭐가 제일 중요한지 파악하는 녀석이라 생각하면 쉽다.

그림에서 보이는 것은 CNN/Daily Mail Dataset을 해결하는 모습이다. CNN/Daily Mail Dataset은 Passage(지문)가 주어지고 질문에 빵꾸가 하나 뚫려 있어서 거기에 뭐가 들어가야 하는지 맞추는 녀석이였다. 'Mary went to England'가 Passage의 일부이고 뒤에 X가 빵꾸 뚫린 것이다. X를 포함해서 'X visited England' 가 질문이라 할 수 있다.  정답은 Mary일 것이다. Attentive Reader는 Passage의 한 문장씩 Question과 함께 네트워크에 넣어 무엇이 가장 중요한지 판단하여 Mary라는 정답을 찾아낸다. 이 때 softmax를 통해 가장 확률이 높은 단어를 선택한다고 이해하면 쉽다.

 

보면 알겠지만 (몰라도 크게 상관없다) Bidirectional LSTM을 사용하고 있다. 결과적으로 Bidirectional LSTM을 통해 softmax를 가지고 가장 확률이 높은 단어를 집어낸다는 것인데 여기에는 문제점이 있다.

 

문장에 중요한 부분이 여러군데라면? 그냥 잠깐 떠올려봐도 중요한 부분이 한군데만 있는 문장보다 여러군데 있는 문장을 찾는게 더 쉽다. 

 

Impatient Reader는 이런 문제점을 해결하기 위해 문장과 단어를 바꿔가면서 반복적으로 돌린다. 간단한 개념 이해를 위해 큰그림만 소개하자면 query(질문)의 단어별로 전체 지문에 대해 어떤 단어들이 가장 중요한지 확인하는 것이다. 저 문장에서는 X에 대해서 확인하고, visited에 대해 확인하고, England에 대해 확인할 것이다. 그리고 그 모든 결과를 종합하여 하나의 답을 내는 형식이다.

 

(c)는 DeepMind Attentive Reader라고도 불린다. 저녀석은 LSTM을 살짝 변형한 녀석이라 생각해도 좋다. 

수식은 위와 같다. 조금 복잡해 보이기도 하지만 정말 정말 자세히 보면 LSTM 수식과 매우 유사하다.

https://www.quantumdl.com/entry/10%EC%A3%BC%EC%B0%A81-Teaching-Machines-to-Read-and-Comprehend

이는 일종의 이전 상태를 hidden state 에 입력으로 꽂아 넣어주는 형태이다. 이를 통해서 시퀀스 정보가 부족해지지 않도록 보완해줬다고 생각하면 된다. 수식은 복잡하나 기존 LSTM 글을 읽었고, 저 그림을 본다면 금방 이해할 수 있을 것이라 생각한다.

 

하지만 CNN/Daily Mail의 데이터셋의 양이 많아서 그런지 오류가 조금 있다고 하고 대부분의 이후 논문들은 Squad를 사용한다. 

https://arxiv.org/pdf/1606.05250.pdf -> SQuAD

 

물론 위에서 언급하였듯이 open domain에서 문제를 해결하고자 하는 시도도 있었다. https://arxiv.org/abs/1704.00051 -> Reading Wikipedia to Answer Open-Domain Questions (2017)

 

다 옛날 이야기만 하는 듯 하다. 하지만 곧 최근으로 넘어갈 예정이니 걱정말자.

 

 

반응형

'NLP' 카테고리의 다른 글

ELMO, BERT, GPT, 그리고 ViT  (0) 2021.06.11
Transformer를 알아보자 [Attention is all you need]  (0) 2021.06.11
인공지능에서 Attention 이란? _ seq to seq  (0) 2021.06.11
NLP 벤치마크 GLUE  (0) 2021.06.11
RNN과 LSTM  (0) 2021.05.02