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'로 왜 교정되었는지 그 이유를 직관적으로 알기 어렵다.
- 느린 추론 속도 (Slow inference speed)
- 최신 GEC 연구에서는 Seq2Seq 모델이 활발하게 이용된다
- 접근 방법
- 세 번의 학습 단계
- 한 번의 사전 학습(Pre-training process)과 두 번의 미세 조정(Fine-tuning process)으로 학습
- Pre-training
- 20 epoch 학습
- 인위적으로 에러를 만든 데이터(Synthetic Data)로 학습
- 본 논문에서는 900만 건의 PIE-synthetic 데이터 (Awasthi et al., 2019) 활용
- 선행 연구(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 모델은 오류가 없는 문장의 모든 토큰도 다시 생성해야 하는 반면, 인코더 모델은 오류가 있는 토큰만 감지해서 교정이 수행되기 때문에 더 빠른 것도 있을 것
- 세 단계 제안 방법의 효과 입증 (*표3,4 참조)
- 세 번의 학습 단계
❓ 여전히 궁금한 부분
- 두 번째 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
'자연어처리(NLP) > Spell and Grammatical Correction' 카테고리의 다른 글
[리뷰] A Simple Recipe for Multilingual Grammatical Error Correction (0) | 2023.04.07 |
---|---|
[리뷰] 다국어 검색 철자 오류 교정 인공지능 모델, 마이크로소프트(Microsoft) - Speller100 (0) | 2023.04.01 |