프로그램 제너레이션 — 마이닝을 넘어서 (Program Generation: Beyond Mining)

1. 문제 (Problem)

마이닝(mining) 은 데이터에 이미 존재하는 패턴을 뽑아오는 것이고, 제너레이션(generation) 은 없던 것을 리얼리스틱하게 새로 만들어내는 것이다. ProgNet [Interpretable Graph Classification 참조]을 포함한 지금까지의 GDL program 기반 연구는 전부 마이닝에 해당한다.

마이닝-only 접근에는 두 가지 한계가 있다.

  1. 다이버시티 제한: vocabulary가 데이터에 실제로 등장한 패턴으로 한정된다. 데이터에 나타나지 않았지만 분류에 유용할 수 있는 프로그램은 셋에 들어올 수 없다.
  2. 다운스트림 미고려: 셋을 구축하는 과정이 다운스트림(분류) 태스크를 고려하지 않는다 — 현재 ProgNet의 대표적 약점이다.

핵심 아이디어는 프로그램을 마이닝 대신 제너레이션으로 만들어보는 것이다. 마이닝 결과를 타겟/레이블처럼 주고 그것을 만들어내는 제너레이터를 학습하면, 마이닝으로 추출한 것 외에 더 다양한 형태의 프로그램을 생성할 수 있다. 셋이 풍성해지고, 그중 좋은 것을 골라 쓰면 성능이 어디서든 올라갈 여지가 생긴다.

나아가 엔드 투 엔드 구성도 가능하다: 셋에 학습 가능한 파라미터(크기 K)를 넣어두고 다운스트림 태스크와 함께 업데이트하며 셋을 만들어 나간다. 이때 마이닝 결과와 유사하도록 constraint를 부여하여, 비현실적인 프로그램이 마구 생성되지 않게 가이드한다.

이 방향은 다이버시티 향상, 태스크-aware vocabulary 구축, 데이터 증강 등 확장 여지가 크다.

2. 목표 (Goal)

마이닝을 supervision으로 활용하는 GDL program 제너레이터를 설계하고, 다운스트림과 결합된 end-to-end 셋 학습으로 확장한다.