Eat Study Love

먹고 공부하고 사랑하라

Data Science/Paper

Data Augmentation with Hierarchical SQL-to-Question Generation for Cross-domain Text-to-SQL Parsing

eatplaylove 2025. 3. 20. 14:13

Data Augmentation with Hierarchical SQL-to-Question Generation for Cross-domain Text-to-SQL Parsing(SQL,TEXT pair생성관련 paper).pdf
0.92MB

 

주관심분야가 데이터증강은 아니지만, 해당 논문에 SQL <-> NL 변환과 관련된 내용이 있어서 읽어봤다.

 

GPT가 요약해준 내용은 아래와 같다.

주요 내용 요약

이 논문은 Cross-domain Text-to-SQL 문제에서 데이터 부족을 해결하기 위해, 질문-쿼리(Text-SQL) 쌍을 자동으로 생성하는 데이터 증강(Data Augmentation) 기법을 제안합니다. 기존 방법들은 SQL 쿼리를 직접 텍스트로 번역하거나, 사람이 검수·보정 작업을 해야 하는 등 제약이 있었는데, 본 논문은 계층적(Hierarchical) SQL-to-Question 생성이라는 새로운 접근을 통해 더 높은 품질의 데이터 증강을 달성합니다. 이를 통해 WikiSQL, Spider, DuSQL 등 여러 데이터셋에서 **최신 모델(IRNet, RATSQL 등)**의 성능을 일관되게 향상시키는 결과를 보였습니다.

1. 배경: Cross-domain Text-to-SQL과 데이터 부족 문제

  • Text-to-SQL은 자연어 질문을 관계형 데이터베이스(DB)의 SQL 쿼리로 변환하는 과제입니다.
  • Cross-domain 설정은 학습(훈련) 단계에서 본 적 없는 DB에 대해서도 모델이 SQL 쿼리를 생성해야 하므로, DB 구조와 스키마가 달라질 때 일반화가 어렵습니다.
  • 기존에 구축된 라벨링된 질문-SQL 쌍 데이터가 많지 않으며, 복잡한 SQL 쿼리와 다중 테이블을 다루기 위해서는 더 많은 학습 데이터가 필요합니다.

2. 데이터 증강 프레임워크 개요

논문에서 제안하는 전체 파이프라인은 크게 (1) SQL 쿼리 생성 → (2) 질의문(자연어 질문) 생성 두 단계를 거칩니다.
  1. ASTG(Abstract Syntax Tree Grammar) 기반 SQL 생성
    • SQL 쿼리를 추상 문법 트리(스케치 트리) 형태로 정의한 뒤, 규칙 기반으로 다양한 SQL 스케치를 생성합니다.
    • DB 스키마(테이블/컬럼/값)를 채워넣어 실제 SQL 쿼리를 만듭니다.
    • 실제 학습 데이터에서 쓰이는 SQL 패턴 80% 이상을 커버하도록 제한해, 불필요하게 복잡한 쿼리학습 데이터 분포와 동떨어진 쿼리 생성을 방지합니다.
  2. 계층적(Hierarchical) SQL-to-Question 생성
    • 기존 방식(FLAT): SQL 전체를 한 번에 Seq2Seq로 번역 -> 복잡한 SQL일수록 번역 품질 떨어짐.
    • 계층적 방식(HIER): SQL을 구문 구조에 따라 절(clause) 단위로 먼저 나눈 뒤, 각 절을 **간단한 서브 질문(subquestion)**으로 번역하고, 이들을 순서에 따라 이어붙여 하나의 자연어 질문으로 만들도록 설계.
    • 이렇게 하면 SQL 문장이 긴 경우에도 절 단위로 의미를 캡슐화해 오류를 줄이고, 문장과 쿼리 간 대응을 더 명확하게 유지할 수 있습니다.

3. 생성된 데이터 활용 전략

생성한 데이터(질문-SQL 쌍)는 보통 기존 학습 데이터보다 훨씬 규모가 크기 때문에, 이를 학습에 어떻게 쓸지가 중요합니다. 논문에서는 다음 세 가지 방법을 비교·분석합니다.
  1. 사전 학습(pre-training)
    • 생성 데이터로 먼저 모델을 학습한 후, 원래의 라벨 데이터로 파인튜닝.
  2. 직접 합치기(directly merging)
    • 생성 데이터와 라벨 데이터를 한 번에 통합해 학습(에폭마다 모두 사용).
  3. 샘플링(sampling)
    • 에폭마다 라벨 데이터와 동일한 양만큼만 생성 데이터를 랜덤 샘플링하여 함께 학습.
    • 이 방법이 성능과 학습 효율 측면 모두에서 유리함을 확인.

4. 실험 및 결과

  1. 데이터셋
    • WikiSQL: 테이블 1개, 쿼리 구조가 단순(SELECT, WHERE 정도).
    • Spider: 복잡한 스키마(다수 테이블/조인), 중첩쿼리, GROUP/HAVING/ORDER 등 다양.
    • DuSQL(중국어): 복잡한 SQL, 계산 관련 구문 포함. 데이터 수는 많지 않아 일반화 어려움.
  2. 성능 지표
    • 정확 일치(EM): 예측된 SQL이 정답 SQL과 동등(논리적 동등)한지.
    • 실행 정확도(exec): 예측된 SQL 실행 결과가 실제 답과 동일한지(WikiSQL에서 주로 사용).
    • 구문 단위 F1(CM): SELECT/WHERE/ORDER 등 절 단위로 얼마나 정확한지.
  3. 주요 결과
    • 계층적(HIER) 방식으로 생성한 데이터만 추가했을 때,
      • WikiSQL/Spider/DuSQL 모두에서 성능(EM)이 유의미하게 상승.
      • 기존 FLAT(한 번에 번역) 방식은, 오히려 강력한 BERT 기반 모델에는 성능 하락을 가져오거나 큰 향상을 보이지 못함.
    • 절 단위 예측 정확도도 전반적으로 상승해, 특히 Spider나 DuSQL같은 복잡 SQL에서 WHERE, GROUP, ORDER 등 다양한 절을 더욱 정확히 예측하게 됨.
    • 샘플링으로 증강 데이터를 활용하면, 학습 시간은 크게 늘리지 않으면서 좋은 성능을 얻음.

5. 결론 및 의의

  • ASTG로 SQL 쿼리를 자동 생성하고, 이를 계층적 SQL-to-Question 번역으로 자연어 질의문을 만드는 완전 자동 데이터 증강 프레임워크 제안.
  • 기존 대비 인간 검수 필요X, 복잡 SQL도 충분히 커버 가능.
  • 실제 **복잡 도메인(Cross-domain)**의 Text-to-SQL 모델 성능을 일관되게 향상시킴을 WikiSQL, Spider, DuSQL에서 실험적으로 검증.
  • 향후 다른 언어(예: 한국어 등)나 다른 텍스트-데이터베이스 태스크에도 응용 가능성을 시사.

한줄 요약

이 논문은 SQL 쿼리를 계층적으로 절단해 자연어 질문을 생성하는 방식을 제안하여, 크로스도메인 Text-to-SQL 환경에서 데이터 부족 문제를 완전 자동 데이터 증강으로 해결하고, 최신 모델의 성능을 폭넓게 높인다는 점이 핵심입니다.

 

각설하고 내 관심분야만 중점적으로 보자면,

결국 Seq2seq model을 이용해서 SQL문을 NL로 바꿔 SQL-NL Pair를 만들었다.

 

다만, 이 때 문장을 통 째로 Transformer에 넣지 않고, Clause별로 나눠서 각 각의  Part를 Transformer에 넣은 뒤에 그것을 합치는 방식으로 NL을 생성한다.

이런식으로 해야 Semantic이 더 잘 살아난다고 하는데,,

이게 명확한 공식이 있는 것이 아니라 필자가 그렇다면 그냥 그런갑다 하고 믿는 영역이어서 찝찝하다.

 

실제로 이 논문에도, Reviewer들이 이렇게 해서 반환된 NL이 Ground Truth랑 얼마나 차이가 나는지 정확도를 측정해달라고 하였으나 이 부분을 Future work로 남긴 체 넘어갔다.

 

실제 이렇게 바꾸는 방식이 정확도가 높은지, 그렇다면 Why? 그 이유가 뭔지가 알고싶다.

 

그렇지만, 실상 Transformer, 즉 Deep learning 영역에 들어서면 사실 why를 알아내긴 쉽지 않다는 건 익히 배워서 잘 알고 있다.

 

AI는 수학/통계기간 학문인데 점점 자연법칙의 발견처럼, 이유는 정확히 알 수 없지만 특정 현상을 누가 먼저 발견하냐의 영역으로 바뀌어가는 거 같다.

 

그래도 논문을 쓰려면 최소 Inference는 해야 하기에, 특정 현상이 왜 발생하는지에 대해서 최소한 추정 정도는 할 수 있는 능력이 있어야겠다.