Skip to main content
QUICK REVIEW

[논문 리뷰] The Three Pillars of Machine Programming

Justin Gottschlich, Armando Solar-Lezama|arXiv (Cornell University)|2018. 03. 20.
Scientific Computing and Data Management참고 문헌 95인용 수 5
한 줄 요약

이 논문은 기계 프로그래밍을 위한 개념적 프레임워크를 제안하며, 세 가지 기둥을 중심으로 한다: 의도(자연어 입력을 통해 인간의 의도를 이해함), 발명(기계학습을 활용해 알고리즘과 시스템 구성 요소를 자동으로 생성하거나 개선함), 적응(기계학습을 이용해 소프트웨어를 자율적으로 진화시킴). 주요 기여는 기계학습을 통한 소프트웨어 개발 및 유지보수의 자동화를 위한 체계적인 비전을 제시하는 것으로, 전문가가 아닌 이들에게 프로그래밍을 접근 가능하고 효율적으로 만들며, 저수준의 복잡성을 줄이고자 한다.

ABSTRACT

In this position paper, we describe our vision of the future of machine programming through a categorical examination of three pillars of research. Those pillars are: (i) intention, (ii) invention, and(iii) adaptation. Intention emphasizes advancements in the human-to-computer and computer-to-machine-learning interfaces. Invention emphasizes the creation or refinement of algorithms or core hardware and software building blocks through machine learning (ML). Adaptation emphasizes advances in the use of ML-based constructs to autonomously evolve software.

연구 동기 및 목표

  • 디펜더 스케일링 이후 시대의 증가하는 복잡성과 프로그래밍의 인지적 부담을 해결하기 위해, 하드웨어가 점점 더 이질적이고 복잡해지는 상황에서의 대응.
  • 전문 프로그래머에 대한 의존도를 줄이기 위해 기계가 소프트웨어의 작성, 최적화, 유지보수를 보조할 수 있도록 하기 위해.
  • 자동화된 프로그래밍 분야의 최근 연구를 통합하는 개념적 프레임워크를 구축하기 위해.
  • 데이터 프라이버시, 라이프사이클 관리, 기계학습을 전통적 프로그래밍 시스템과 통합하는 데 있어 핵심 과제를 특정하고 해결하기 위해.
  • 비프로그래머 및 도메인 전문가가 자연어 형태로 계산 목표를 표현할 수 있도록 하고, 기계가 자동으로 정확한 소프트웨어를 생성하고 유지보수할 수 있도록 하기 위해.

제안 방법

  • 딥 러닝과 자연어 이해 기술의 발전을 활용해, 텍스트, 음성, 제스처와 같은 자연적 입력으로부터 사용자의 의도를 해석한다.
  • 프로그램 합성 및 자동 추론 기법(예: SAT/SMT 솔버)을 사용해 고수준의 명세에서 정확한 코드를 생성한다.
  • 대규모 코드베이스와 성능 데이터에서 학습함으로써, 기계학습을 활용해 새로운 알고리즘과 시스템 구성 요소(예: 하드웨어-소프트웨어 공동 설계 포함)를 발명한다.
  • 소프트웨어 동작을 모니터링하고 새로운 하드웨어, 버그, 보안 취약점에 대응해 코드를 자율적으로 진화시키는 기계학습 기반 적응 메커니즘을 개발한다.
  • 기계학습 모델 학습을 위한 훈련 데이터로, 공개 코드 저장소(예: GitHub)와 웹에 통합된 코드(예: JavaScript)에서 유래한 대규모 데이터를 활용한다.
  • 데이터, 모델, 소프트웨어의 라이프사이클 관리 전략을 통합해 기계 프로그래밍 시스템의 장기적 안정성, 보안성, 진화를 확보한다.

실험 결과

연구 질문

  • RQ1기계 프로그래밍 시스템은 자연어나 제스처와 같은 인간에게 친화적인 입력으로부터 사용자의 의도를 효과적으로 해석할 수 있는가?
  • RQ2데이터에서 학습함으로써 자동으로 핵심 알고리즘과 시스템 구성 요소(예: 컴파일러, 가속기)를 발명하거나 개선하는 데 사용할 수 있는 기계학습 기법은 무엇인가?
  • RQ3기계학습 기반 시스템은 요구사항 변화, 하드웨어 플랫폼 변화, 또는 발견된 취약점에 대응해 소프트웨어를 시간이 지남에 따라 자율적으로 적응할 수 있는가?
  • RQ4실제 코드와 합성 코드 데이터를 기계 프로그래밍 모델 학습에 사용할 경우의 영향은 무엇이며, 데이터 품질과 프라이버시는 어떻게 확보할 수 있는가?
  • RQ5하드웨어와 소프트웨어 생태계가 진화함에 따라 기계 프로그래밍 시스템을 지속적으로 유지하고 진화시키기 위해 필요한 라이프사이클 관리 전략은 무엇인가?

주요 결과

  • 딥 러닝과 프로그램 합성의 통합은 기계가 자연적 입력에서 고수준의 사용자 의도를 이해하고, 정확하고 효율적인 코드를 생성할 수 있도록 한다.
  • 기계학습은 대규모 코드베이스와 성능 트레이스에서 학습함으로써 컴파일러 최적화나 하드웨어 가속기와 같은 알고리즘 및 시스템 구성 요소를 발견하거나 개선하는 데 사용될 수 있다.
  • 적응형 기계 프로그래밍 시스템은 기계학습 기반 추론과 변환을 통해 버그를 자동으로 탐지하고 수정하고, 취약점을 패치하며, 새로운 하드웨어 플랫폼에 소프트웨어를 재구성할 수 있다.
  • GitHub와 같은 공개 코드 저장소와 웹 기반 코드의 광범위한 양은 기계 프로그래밍 모델 학습을 위한 핵심 데이터 기반을 제공한다.
  • 데이터 프라이버시와 지적 재산권 문제는 여전히 중요한 열린 과제이며, 특히 저작권 코드를 기반으로 훈련된 모델에서 생성된 코드의 저작권 상태에 대해 특히 그렇다.
  • 데이터, 모델, 소프트웨어의 라이프사이클 관리는 기계 프로그래밍 시스템의 장기적 안정성과 진화를 확보하기 위해 필수적이며, 지속적인 모니터링과 개선이 필요하다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.