pile·
AI / ML·스캐터랩스캐터랩 (이루다)·

알라꿍달라꿍의 대화요약 이모저모

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 엔지니어에게 유용하다.
스캐터랩
스캐터랩 (이루다) 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. AI / ML·LY CorporationLY Corporation·

    Grafana에서 자연어로 장애 원인을 분석하기: LLM 에이전트 기반 SRELens 개발기

    LY Corporation Home SRE 팀이 장애 분석 시 메트릭·로그·트레이스가 각각 다른 화면에 흩어져 있는 문제를 해결하기 위해 Grafana 플러그인 SRELens를 개발했다. SRELens는 LLM 에이전트가 자연어 질의를 받아 실제 관측성 데이터를 조회하고, 근거와 함께 장애 원인 후보를 정리해 주는 도구다. LGTM-P 스택(Loki·Grafana·Tempo·Mimir·Pyroscope)과 FlavaMCP 게이트웨이를 통합해 단일 채팅 인터페이스에서 멀티시그널 분석이 가능하다.

    #llm-app#mcp#observability+2