작성자 : 건국대학교 응용통계학과 정재윤
Natural Language Understanding (NLU) : 자연어 형태의 문장을 기계가 이해할 수 있게 만드는 기술
Natural Language Generation (NLG) : 학습 결과로 기계가 자연어 문장을 생성하는 기술
Natural Language Processing (NLP) : 자연어의 의미를 분석해 컴퓨터가 처리할 수 있도록 하는 일. 즉, NLG + NLU
대표적인 Task에는 Machine Translation, Summarization, Dialogue, Creative Writing 등이 있다.
LM : 언어 모델링이란 지금까지 주어진 단어를 바탕으로 다음에 나올 단어를 예측하는 작업입니다. 그 대표적인 예시들이 우리가 앞서 배웠던 RNN-LM입니다.
Conditional LM : 주어진 단어들과 어떠한 입력으로부터 다음 단어를 예측하는 모델입니다. 어떻게 보면 지금까지 저희가 지금까지 배웠던 과정의 대부분은 이 과정이었습니다. 예시로 Machine Translation의 경우, source sentence를 x로, Target sentence를 y로 받는 것이죠.
이러한 Conditional LM을 학습시키는 방법 중에서 강의에서는 Teacher Forcing을 언급합니다. 그림을 보면 알 수 있듯, Teacher Forcing이란, Encoder의 input으로 Source sentence를 넣고, Decoder의 input으로는 Decoder를 빠져나온 output이 아닌 Target sentence를 그대로 넣어서 학습시키는 것입니다.
그렇다면 위의 LM이나 Conditional LM을 학습시키고 나선 어떻게 문장을 생성할 수 있을까요? 바로 Decoding Algorithm을 사용하는 것입니다. 우리가 앞서 배운 Decoding Algorithm에서는 Greedy와 Beam search가 있었습니다.
Greedy Algorithm
우선 Greedy Decoding입니다. Greedy Decoding은 각 출력을 예측하는데 매 스텝에서 가장 가능성이 높은 단어 한 개를 선택합니다. 매 스텝마다 최적값 하나만 찾기 때문에 속도는 월등하죠. 하지만 한 번 단어를 잘못 산출하게 되면 그 이후의 값들 역시 영향을 받기 때문에 결과가 좋지 않을 수 있습니다.
Beam search
두 번째로 Beam search 방식입니다. Beam Search는 k개의 가능한 가설들을 두고 가장 높은 확률을 갖는 문장을 찾아 나가는 방식입니다. 이때 k는 beam size를 의미하며, k = 1 이라면 greedy algorithm과 같은 방식이 됩니다.
이 때 최적의 K를 찾는 것이 가장 중요합니다. beam size가 너무 작으면 주제에 맞는 대답은 하지만 말이 안되는 답변을 하게 되고, 반대로 beam size가 너무 크면 일반적이고, 짧은 답변을 산출하지만 BLEU score가 낮을 위험성이 있습니다.
Sampling based decoding
이러한 Beam search의 단점을 보완하기 위해 나온 방식입니다. 즉, 큰 k를 가지더라도 너무 일반적인 답안을 얻지 않게 하기 위해 나온 방식입니다.
1) Pure sampling : Greedy Decoding과 비슷하지만 argmax 대신에 랜덤 샘플링을 사용합니다.
2) Top-n sampling : Pure sampling과는 다르게 확률이 가장 큰 n개의 단어들 중에서 랜덤 샘플링을 진행하는 것입니다. n이 커질수록 다양하지만 적절하지 않은 문장이 생성되고, n이 작을수록 일반적이면서 평범한 문장이 나오게 됩니다.
text summarization이란 입력 텍스트 x를 바탕으로 중요한 정보만을 정제해서 요약문인 y를 생성하는 작업을 의미합니다. Summarization은 single-document와 multi-document로 나눌 수 있습니다. 하나의 문서에 대해서 요약을 하면 single, 여러 개의 문서에 대한 요약이라면 multi-document가 됩니다.
그리고 summarization은 다른 기준으로 Extractive summarization과 Abstractive summarization으로 나눌 수 있습니다. 강의에서는 형광펜과 만년필로 비유하면서 소개했습니다. Extracitve summarization은 문서의 원본 문장을 그대로 추출하는 방식으로 쉽지만 제한적이고, Abstractive summarization은 중요한 내용을 추출하고 아예 새로운 문장을 만드는 방식으로 더 어렵지만 더 다양한 결과를 얻을 수 있습니다.
Neural Nerwork 기반의 연구가 진행되기 전에는 Extractive summarization을 연구해왔습니다. 그리고 Extracitve summarization은 전형적인 pipeline을 가지는데요. 아래의 그림과 같습니다.
content selection : 포함할 중요한 문장을 선택
Information ordering : 선택한 문장들을 중요도에 따라 정렬
Sentence realization : 요약 문장을 구성하는 단계
ROUGE란 Recall Oriented Understudy for Gisting Evaluation의 줄인 말로 텍스트 요약 모델의 성능 평가 지표입니다. 모델이 생성한 요약본을 사람이 미리 만들어 놓은 요약본과 대조하여 성능 점수를 계산하죠. 구체적인 예시를 통해 알아보겠습니다.
시스템 요약 :
the cat was found under the bed.
참조 요약 :
the cat was under the bed.
ROUGE는 recall과 precision을 모두 구할 수 있습니다. 먼저 Recall은 위의 수식처럼 참조요약본을 구성하는 단어 중 몇 개의 단어가 시스템 요약본과 겹치는지 보는 점수입니다. 예시를 보면 1이란 값이 나올 겁니다. 이 값은 정말 좋은 점수이지만 모델 성능을 모두 나타내지는 못합니다. 생성된 문장이 엄청 긴 문장이라면 높은 점수를 얻을 가능성이 존재하기 때문입니다.
이런 문제를 해결하기 위해서 Precision을 계산하는 것입니다. Precision은 Recall과는 반대로 모델이 생성한 시스템 요약본 중 참조 요약본과 겹치는 단어들이 얼마나 많이 존재하는지를 파악하는 지표입니다. 즉, Recall보다는 값이 떨어지게 됩니다. 시스템 요약문의 길이가 길어지면 길어질수록 값은 줄어들게 될 겁니다.
따라서 정확하게 성능 평가를 하기 위해서는 Precision과 Recall을 모두 계산해야하며 F-measure를 구한다면 더 바람직할 것입니다.
2015년, Rush et al 등은 single document abstractive summarization은 번역과 다를 바 없다는 가설을 바탕으로 seq2seq + attention을 적용했습니다. 하지만 seq2seq과 attention만을 적용한 모델은 디테일에 제대로 잡히지 않는 문제점을 가지고 있었습니다. 즉, OOV문제나 고유명사들을 출력하는 성능은 떨어지는 것이죠.
그래서 이러한 문제점을 보완하고자 summarization에 copy mechanism을 적용했습니다. copy mechanism이란 input으로 들어오는 문장에서 output 생성에 필요한 단어나 구문을 복사해오는 방법입니다. 즉, copy와 generation을 모두 쓰는 방식으로 extractive approach와 abstractive appoarch를 모두 고려하여 디테일을 잡아내고자 한 것입니다.
그러나 이 copy mechanism에도 너무 많이 copy를 진행해 결국 hybrid가 아닌 extractive 형태가 된다는 점과 전반적으로 좋은 content selection을 하지 못하는 문제가 발생했습니다. 이에 대한 해결책으로 bottom up summarization이 나왔습니다. 단어가 포함되었는지 아닌지를 0과 1로 태깅하여 모델은 단어가 포함되지 않은 부분에는 집중하지 않게 만든 것입니다.
Dialogue란 대화 시스템으로 task-oriented dialogue와 social dialogue로 구분지을 수 있습니다. Neural dialogue 이전에는 predefined template 기반으로 시스템을 구축하거나 responses 코퍼스에서 검색하는 방식을 사용했습니다. 그리고 2015년 이후, seq2seq 방식이 도입되면서 open-ended freeform 대화시스템을 만들게 됐습니다. 하지만 seq2seq based dialogue는 심각한 결함들을 가지고 있습니다.
Genericness
Irrelevant responses
Repetition
Lack of context
Lack of consistent persona
우선 NLP task에서는 BLEU, ROUGE, F1 등 굉장히 다양한 평가지표들이 있습니다. 그러나 그 어느 하나 명확히 이상적인 지표는 아닙니다.
모델을 평가하는 방법으로 perplexity도 존재합니다. 이 값이 낮으면 낮을수록 토픽 모델은 실제 문헌 결과를 잘 반영한다는 뜻이므로 학습이 잘 되었다고 평가를 할 수 있겠습니다. 하지만 이 값이 generation을 평가하지는 않습니다.
즉, Fluency, Diversity, Relevance 등 NLG의 각 측면을 평가하는 지표는 있으나 전반적인 NLG 성능을 평가하는 지표는 없는 것이죠.
가장 이상적인 기준에 가까운 지표는 바로 Human Judgement입니다. 사람이 직접 평가하는 것이죠. 그러나 사람이 하는 평가는 너무 오래걸리고 비용이 많이 나간다는 단점이 있습니다. 뿐만 아니라 집중력을 잃거나 일관적이지 않거나 하는 등의 문제들도 있다는 점을 유의하여야 합니다.
특히 chatbot의 경우, 다른 평가 지표들에 비해 사람이 평가하는 것이 굉장히 유의하지만 그렇기에 더 조심스럽게 사용해야한다고 강의에서는 언급하고 있습니다.
https://arxiv.org/pdf/1603.08023.pdf
지금까지 저희가 배워왔던 자연어 생성 문제 해결 방법들은 입력 정보에 대응하는 출력문장을 준비시켜 학습시키는 Supervised Training에 기반했습니다. 즉, Paired Corpus로 학습을 진행하는 것입니다. 그러나 문제는 이런 데이터가 대량으로 필요하다는 점과 현실적으로 이런 데이터를 구축하는 것은 굉장히 어려운 점이라는 것입니다.
그리고 최근 이 문제점을 돌파하기 위해 Unsupervised training을 연구하고 있습니다. 한 사례를 찾아서 이야기를 해보겠습니다. 중요한 점은 아래와 같습니다.
- 어떤 스타일의 문장이 들어오더라도 본질적인 Latent vector 형태로 인코딩한다.
- 인코딩된 Latent vectors가 주어졌을 때, 각 스타일에 해당되는 디코더는 해당 스타일의 문장을 생성할 수 있어야 한다.
- 위의 포인트들을 학습하기 위해 인공 신경망은 Autoencoder loss, Cycle loss를 최소화하는 방향으로 학습하게 됩니다.
여기서, Autoencoder loss: X 스타일의 문장 x를 latent vectors로 변환한 후, 이를 다시 X 디코더를 이용해 문장 x’가 생성되었을 때, x’과 원래의 문장 x와 얼마나 다른지, Cycle loss: X 스타일 문장 x를 변환 과정을 통해 Y 스타일의 문장 y로 변환하였을 때, 이 문장 y를 다시 X 스타일로 변환한 문장 x’’과 원래의 문장 x는 얼마나 다른지 입니다.
투빅스 14기 한유진
text summarization에 대해서 자세히 배울 수 있었고, unpair한 data로 NLG를 수행하는 과정도 설명해주셔서 좋았습니다. 좋은 강의 감사합니다!
투빅스 15기 김동현
자연어를 생성하는 모델들에 대해 자세히 알 수 있었습니다.
투빅스 15기 조준혁
투빅스 15기 강재영
NLG에 대해 이해할 수 있는 강의였습니다.
투빅스 15기 이수민
투빅스 15기 조효원
투빅스 15기 김재희
투빅스 15기 이윤정
투빅스 14기 박준영
-LM : 언어 모델링이란 주어진 단어를 바탕으로 다음에 나올 단어를 예측하는 작업
NLG의 개념과 NLG성능 평가의 한계에 대해 배울수 있는시간이었습니다. 좋은 강의감사합니다!
투빅스 14기 이정은
Text Summerization에 대해 자세히 설명해주신 점이 좋았습니다. 감사합니다! : )
투빅스 14기 정세영
NLG를 좀 더 깊숙히 배울 수 있는 시간이었습니다.