[리뷰] GECToR – Grammatical Error Correction: Tag, Not Rewrite

728x90
728x90

※ 혹시 본문 내용 중, 틀린 내용이 있다면 언제든지 알려주시면 감사하겠습니다. 🙇‍♂️
논문 제목: GECToR – Grammatical Error Correction: Tag, Not Rewrite
논문 제목:
https://aclanthology.org/2020.bea-1.16/

💁‍♂️ 왜 읽으셨나요?


  • 문법 오류 교정(GEC, Grammatical Error Correction) 연구 분야의 SOTA 모델
  • 기존 GEC 연구 모델들과 달리, 트랜스포머 인코더 기반 모델
    • Seq2Seq 구조 모델보다 10배 빠른 추론 속도
  • 문법 교정 한 우물파온 회사, Grammaly의 논문이네...?!

 

📌 연구 키워드


  • 자연어처리 (NLP, Natural Language Processing)
  • 문법 오류 교정 (GEC, Grammatical Error Correction)
  • 앙상블 모델 (Ensemble Models)

🕵️ 내용 정리


  • 논문 핵심
    • GEC 연구를 위한 트랜스포머(Transformers) 인코더 기반 Sequence Tagger 제안
    • 간단한 학습 방법으로 SOTA (State-of-the-art) 달성
      • 방법은 간단하더라도 어떻게 학습을 디자인하느냐가 중요하다
      • GEC 연구의 트렌드는 Seq2Seq 구조이지만, 몇 가지 한계점 지적
      • Seq2Seq 모델보다 10배 빠른 추론 속도 + 인코더 기반 모델로 SOTA 달성

  • 연구 배경
    • 최신 GEC 연구에서는 Seq2Seq 모델이 활발하게 이용된다
      • 오류 있는 텍스트를 복원하는 관점으로 문법 오류 교정 (Grammatical Error Correction)
    • 그러나 Seq2Seq 기반 모델은 한계가 명확하다
      • 느린 추론 속도 (Slow inference speed)
        • 여기서 느리다는 건 '인코더 기반 모델'에 비해 느리다는 것
        • '인코더 기반 모델'은 모델 학습&추론에 인코더만 거치지만, '인코더 디코더 기반 모델'은 인코더와 디코더를 거쳐야 한다. 거치는 단계가 더 많으니까 당연히 느릴 수밖에 없다.
      • (상대적으로) 대량의 학습 데이터 (Demand for large amounts of training data) 요구
        • 이건 Discriminative AI vs Generative AI 학습의 차이로 이해해도 될 듯
        • Generative AI는 많은 양의 학습 데이터가 있어야 좋은 성능을 보인다.
          • 여기서 문제는 GEC 연구에서는 활용 가능한 공개 데이터가 많지 않다는 점이다.
          • 즉, 활용 가능한 데이터가 부족한 연구 분야에서 Seq2Seq 모델은 적합하지 않을 수 있다.
          • 물론 이런 문제를 다루기 위해 GEC 연구에서는 인위적으로 에러 데이터(Synthetic Data)를 생성하는 연구도 함께 다뤄진다.
      • 해석 및 설명 가능성 (Interpretability and explainability) 부족
        • 인코더 모델은 문법 오류를 감지하고, 감지된 오류를 사용자가 미리 정의한 특정 방법으로 교정한다. 따라서 교정 결과가 출력됐을 때, 어떤 교정 방법이 적용 됐는지 직관적으로 알기 쉽다.
        • 인코더 디코더 모델은 오류가 복원된 문장을 생성하기 때문에 A → A'로 왜 교정되었는지 그 이유를 직관적으로 알기 어렵다.
  • 접근 방법
    • 세 번의 학습 단계
      • 한 번의 사전 학습(Pre-training process)과 두 번의 미세 조정(Fine-tuning process)으로 학습
    • Pre-training
      • 20 epoch 학습
      • 인위적으로 에러를 만든 데이터(Synthetic Data)로 학습
      • 선행 연구(Awasthi et al., 2019)의 학습 방법을 참조해 Pre-training 수행
        • 선행 연구 논문은 다 안 읽어서 모르지만, 입출력 문장 사이 최소 편집 거리(Edit Distance) 학습하도록 목적함수를 두었다고 한다.
        • 이 학습 방법 덕분에 사전학습만 수행했는데도 오타 교정을 수행할 수 있고, 그래서 실험 결과표에도 오타 교정 성능이 측정돼 있다.
    • Fine-tuning
      • 첫 번째 학습은 errorful-only sentences 데이터로 학습 (2-3 epoch)
      • 두 번째 학습은 subset of errorful and error-free sentences 데이터로 학습 (2-3 epoch)
        • 일종의 Curriculum Learning으로 봐도 되지 않을까
        • 첫 번째 학습 단계에서는 오류가 있는 데이터만 주고 고치는 것만을 배웠다면, 두 번째 학습에서는 오류가 있는 데이터와 없는 데이터를 판별하는 능력도 배웠을 거라 기대한다.
        • 이런 내 추측때문인지, subset of errorful의 비율을 달리해서 학습한 모델별 성능도 알 수 있었다면 정말 좋았을 텐데... 아쉽다.
      • 참고로 논문의 제안 모델은 Fine-tuning 단계의 학습 목표가 중요하다
        • A의 문법 오류 형태가 A'라 가정할 때, 제안 모델은 A' → A로 교정하는 식으로 학습하지 않는다. 그러니까 MLM처럼 학습하지 않는다는 것.
        • A' → A로 바뀌기 위해 어떤 편집(교정) 방법이 적용돼야 하는 지를 학습한다.
          • 이게 이 논문의 🌟핵심🌟
          • 마치 물고기를 잡아주지 말고 어떻게 하면 물고기 잡을 수 있는지 알려주듯
          • 미리 정의한 5,000개 편집 공간(Edit Space ≒ Edit Operation) 활용해 교정 (*표1,2 참조)
            • 각 토큰 별로 5,000개의 편집 행위 중, 어떤 작업이 필요한지 분류(Classification)하는 방식
            • go → goes로 바꾸는 게 옳은 교정이라면, 모델은 'go' 토큰에 대한 분류 결과를 "$VERB_FORM_VB_VBZ" 으로 예측해야 한다.
          • 학습과 추론의 방식이 조금 다른지는 모르겠는데, 추론할 때에는 한 번에 모든 오류를 수정하지 않고 조금씩 수정하는 방식을 취한다고 한다.
            • 원래 엉망이 된 일(?)도 조금씩 고쳐가면서 방향을 잡아야지, 다 난장판이 된 상태에서 한 번에 다 바로잡는 건 어려운 일이니까.
    • 실험
      • 세 단계 제안 방법의 효과 입증 (*표3,4  참조)
        • 개인적으로 실험이 좀 아쉽다.
        • 예를들어 제안 모델의 Fine-tuning이 Stage 2 (3 epoch) + Stage 3 (3 epoch)와 같이 수행됐다면, Stage 2 (6 epoch) 학습한 것과도 성능이 비교돼야 제안 방법이 효과 있는 거 아닐까?
        • 지금의 실험은 단순히 학습을 더 했기 때문에 성능이 좋아진 건지, 아니면 정말로 제안 방법이 효과적이라서 그런 건지 알기 어렵다. 
      • GEC 연구 대표 벤치마크에서 SOTA 달성 (*표5 참조)
        • GEC 연구의 대표 벤치마크 데이터셋 CoNLL-2014와 BEA-2019에서 SOTA달성
        • 단일 모델 기준으로도 다른 모델에 비해 높은 성능을 보이고, 앙상블 한 모델은 가장 높은 성능을 보였다.
        • 그런데 교정 작업이 다른 NLP 시스템의 전처리 모듈로 들어가거나, 또는 사용자의 글쓰기를 돕는 형태로 사용되다 보니 속도가 매우 중요한데.... 이게 앙상블 하면서 성능 끌어올리는 방향이 맞나 싶다.
      • Seq2Seq 모델과 비교해 10배 빠른 추론 속도 (*표6 참조)
        • 제안 모델 5 iteration과 Beam size 12인 Seq2Seq 모델 비교 시, 추론 속도가 약 10배 차이 난다.
        • 모델 구조 때문에 야기되는 차이이기도 하고, Seq2Seq 모델은 오류가 없는 문장의 모든 토큰도 다시 생성해야 하는 반면, 인코더 모델은 오류가 있는 토큰만 감지해서 교정이 수행되기 때문에 더 빠른 것도 있을 것
       
     

[표1] 제안 모델은 여러 번 iteration을 돌며 오류 문장을 수정한다
[표1] 제안 모델은 여러 번 iteration을 돌며 오류 문장을 수정한다

 

[표2] 제안 모델의 편집 공간(Edit Space) 예시
[표2] 제안 모델의 편집 공간(Edit Space) 예시

 

[표3] GECToR 실험에 활용된 GEC 데이터셋
[표3] GECToR 실험에 활용된 GEC 데이터셋

 

[표4] GECToR 세 가지 학습 단계별 성능 비교
[표4] GECToR 세 가지 학습 단계별 성능 비교 / Inf. tweaks는 임계점(threshold)같은 하이퍼파라미터 튜닝까지 마쳤을때

 

[표5] GEC 분야에서 널리 사용되는 CoNLL-2014와 BEA-2019 벤치마크 SOTA 달성
[표5] GEC 분야에서 널리 사용되는 CoNLL-2014와 BEA-2019 벤치마크 SOTA 달성

 

[표6] 인코더 기반 모델인 GECToR와 인코더 디코더 기반 모델의 추론 속도 비교
[표6] 인코더 기반 모델인 GECToR와 인코더 디코더 기반 모델의 추론 속도 비교

 

❓ 여전히 궁금한 부분


  • 두 번째 Fine-tuning 단계에서 Stage 2 (6 epoch) 학습과 Stage 2 (3 epoch) + Stage 3 (3 epoch) 학습을 비교한 실험 결과가 있었다면 좋았을 것 같다
  • subset of errorful and error-free sentences 데이터로 학습한 Stage 3에서 subset of erroful의 비율에 따른 성능 차이도 실험했다면 더 좋았을 것 같다
  • 본 논문은 Grammaly에서 발표했지만, 실제 Grammaly 플랫폼에서 서비스 중인 모델은 GECToR가 아닌 것으로 알고 있다. 실제 모델은 어떤 기반의 모델이고 어떻게 빠른 속도의 교정 결과를 보여주고 있는 건지 궁금하다.
  • 표6을 보면 iteration 횟수가 5배로 늘었지만, 추론 속도는 고작 2배 증가했다. 즉, 추론 속도가 iteration 횟수에 정비례 하지 않는다. 어떻게 이게 가능한 걸까. (이건 GECToR Github에 공개된 코드를 참조해야할 듯 하다)
320x100
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유