마이닝(mining) 은 데이터에 이미 존재하는 패턴을 뽑아오는 것이고, 제너레이션(generation) 은 없던 것을 리얼리스틱하게 새로 만들어내는 것이다. ProgNet [Interpretable Graph Classification 참조]을 포함한 지금까지의 GDL program 기반 연구는 전부 마이닝에 해당한다.
마이닝-only 접근에는 두 가지 한계가 있다.
핵심 아이디어는 프로그램을 마이닝 대신 제너레이션으로 만들어보는 것이다. 마이닝 결과를 타겟/레이블처럼 주고 그것을 만들어내는 제너레이터를 학습하면, 마이닝으로 추출한 것 외에 더 다양한 형태의 프로그램을 생성할 수 있다. 셋이 풍성해지고, 그중 좋은 것을 골라 쓰면 성능이 어디서든 올라갈 여지가 생긴다.
나아가 엔드 투 엔드 구성도 가능하다: 셋에 학습 가능한 파라미터(크기 K)를 넣어두고 다운스트림 태스크와 함께 업데이트하며 셋을 만들어 나간다. 이때 마이닝 결과와 유사하도록 constraint를 부여하여, 비현실적인 프로그램이 마구 생성되지 않게 가이드한다.
이 방향은 다이버시티 향상, 태스크-aware vocabulary 구축, 데이터 증강 등 확장 여지가 크다.
마이닝을 supervision으로 활용하는 GDL program 제너레이터를 설계하고, 다운스트림과 결합된 end-to-end 셋 학습으로 확장한다.