2021 한국어 대화요약 경진대회에서 BART 기반 모델을 개선해 본선 1위를 만든 실험 기록이다. 제한된 학습 데이터만 쓸 수 있는 조건에서 사전학습 노이즈, regularization, ROUGE-L을 직접 최적화하는 강화학습을 조합했다. 잘 작동한 방법뿐 아니라 topic token, 전처리, random pretraining, ranker가 실패한 이유도 함께 남긴다.
핵심 포인트- 대화는 정보가 여러 화자와 발화에 흩어지고 주제 전환과 지시어가 많아 문서 요약보다 어렵다.
- Mecab으로 먼저 분절한 뒤 SentencePiece Unigram tokenizer를 학습하고, Hugging Face BART encoder-decoder를 baseline으로 사용했다.
- 대회 데이터의 발화를 이용해 token masking과 turn 단위 sentence permutation으로 사전학습한 조합이 가장 효과적이었다.
- R3F는 입력에 noise를 준 예측과 일반 예측의 KL divergence를 loss에 더해 단순한 구현으로 성능을 올렸다.
- ROUGE-L F1을 reward로 쓰는 강화학습은 precision을 올리고 recall을 낮췄지만 목표 지표를 개선했다.
- 최종 모델은 BART 사전학습, R3F fine-tuning, ROUGE-L 강화학습의 3단계로 구성됐다.
상세 정리- 과제 특성: 추출 요약은 원문 문장을 골라 사실 오류가 적고, 추상 요약은 새 문장을 만들어 읽기 쉽지만 사실과 다른 내용을 만들 수 있다. 대화 요약은 낮은 정보 밀도와 화자 상호작용까지 다뤄야 한다.
- 평가 지표: 대회는 두 형태소 sequence의 longest common subsequence로 precision과 recall을 계산하는 ROUGE-L F1을 사용했다. 학습 objective와 대회 metric의 불일치가 후반 실험의 출발점이 됐다.
- 데이터 표현: 같은 화자의 연속 발화는 합치고 발화 사이에 `[SEP]`를 넣었다. 화자·시간·성별·나이·거주지 정보는 요약 생성에 중요하지 않다고 판단해 baseline에서 제외했다.
- Tokenizer: 외부 학습 tokenizer는 허용됐지만 대회 데이터만으로 tokenizer를 만들었다. Mecab 형태소 분석 후 SentencePiece Unigram을 학습해 한국어 subword 분절을 구성했다.
- Baseline: encoder-decoder Transformer인 BART를 사용했다. 대화 전체를 encoder에 넣고 정답 요약을 decoder target으로 학습했다.
- 제한 데이터 사전학습: 외부 corpus가 금지돼 task data의 대화로 denoising pretraining을 시도했다. random token 규칙이나 인공 요약 task는 오히려 random initialization보다 나빠 사용하지 않았다.
- 유효한 노이즈: 전체 발화를 무작위로 묶은 dialogue도 조금 개선됐지만, 같은 session의 turn을 permutation하고 token을 masking하는 BART 방식이 더 좋았다. 발화 관계도 보존할 수 있어 이후 이 조합으로 고정했다.
- 실패한 feature: 일상·토론 type과 대화 topic을 special token으로 넣었지만 사용하지 않은 모델이 가장 좋았다. 토론 데이터가 너무 적고 topic label의 일관성이 낮아 noise가 된 것으로 분석했다.
- 전처리 실패: 자모, 이모티콘, 불필요한 기호, 반복 물음표와 공백을 정리했지만 성능이 나아지지 않아 원본 입력을 유지했다.
- Regularization: R-Drop은 서로 다른 dropout 결과의 KL divergence를 줄였고, R3F는 입력에 random noise를 넣은 결과와 일반 결과를 맞췄다. 둘을 같이 쓰기 어려워 개선 폭이 큰 R3F를 택했다.
- 강화학습: sampled summary의 reward가 greedy baseline보다 좋으면 likelihood를 높이는 self-critical 방식으로 ROUGE-L F1을 직접 최적화했다. 정답 token을 찾기보다 불필요한 token을 빼기 쉬워 precision 상승과 recall 하락이 나타난 것으로 추정했다.
- Ranker 시도: Beam 후보를 ROUGE 순위로 학습하는 SimCLS 방식은 로컬 점수를 크게 올렸지만 대회 제출 점수는 낮아졌다. 대회의 비공개 형태소 분석기와 로컬 metric 차이, 나중에 발견한 ROUGE 라이브러리 오류가 원인 후보였다.
- 최종 구성: 대화 데이터로 token masking·sentence permutation BART pretraining을 하고 R3F로 요약 task를 fine-tuning했다. 마지막에 Mecab 기반 ROUGE-L F1 reward로 강화학습했으며 코드와 모델을 공개했다.
왜 읽나제한된 데이터로 추상 요약 모델을 개선할 때 성공·실패 실험을 어떤 순서로 쌓고 평가 metric에 맞출지 알고 싶은 NLP 엔지니어에게 유용하다.