차별화 가능한 프로그래밍

Differentiable programming

미분 가능 프로그래밍은 수치 컴퓨터 프로그램이 자동 [1][2][3][4]미분 기능을 통해 분화할 수 있는 프로그래밍 패러다임입니다.이를 통해 프로그램에서 종종 경사 강하를 통해 매개 변수를 경사 기반 최적화할 수 있습니다.차별화 가능한 프로그래밍은 특히 과학 컴퓨팅과 인공지능 [4]등 다양한 분야에서 사용되고 있습니다.

접근

대부분의 차별화 가능한 프로그래밍 프레임워크는 프로그램 [5]내의 제어 흐름과 데이터 구조를 포함하는 그래프를 구성함으로써 작동합니다.시행은 일반적으로 다음 두 가지 그룹으로 나뉩니다.

  • TensorFlow,[note 1] TheranoMXNet같은 정적 컴파일된 그래프 기반 접근법.컴파일러의 최적화와 대규모 시스템으로의 확장이 용이해지는 경향이 있지만, 정적 특성으로 인해 인터랙티브성과 쉽게 작성할 수 있는 프로그램 유형(루프재귀와 관련된 프로그램 등)이 제한될 뿐만 아니라 사용자가 효과적으로 프로그램을 [5]추론하는 것도 어려워집니다.Myia라는 개념 증명 컴파일러 툴 체인은 프런트 엔드로 Python의 서브셋을 사용하며 고차 함수, 재귀 및 고차 [6][7][8]파생 모델을 지원합니다.
  • 연산자 오버로드, PyTorch AutoGrad와 같은 동적 그래프 기반 접근 방식.동적이고 인터랙티브한 특성으로 인해 대부분의 프로그램을 보다 쉽게 작성하고 추론할 수 있습니다.그러나 인터프리터 오버헤드(특히 많은 소규모 작업을 구성할 경우), 확장성 저하 및 컴파일러 최적화의 [7][8]이점 감소로 이어집니다.Julia 프로그래밍 언어용 패키지인 Zygote는 Julia의 중간 표현에서 직접 작동하므로 Julia의 Just-In-Time [5][9][4]컴파일러에 의해 최적화될 수 있습니다.

이전 접근법의 한계는 프레임워크에 적합한 방법으로 작성된 코드를 구별할 수 있을 뿐 다른 프로그램과의 상호운용성을 제한할 수 있다는 것입니다.새로운 접근 방식은 언어의 구문 또는 IR에서 그래프를 구성하여 임의 코드를 구분할 [5][7]수 있도록 함으로써 이 문제를 해결합니다.

적용들

미분 가능한 프로그래밍은 로봇 공학에서 딥 러닝과 물리 엔진 결합, 미분 가능한 밀도 함수 이론으로 전자 구조 문제 해결, 미분 가능한 광선 추적, 화상 처리확률론적 [10][11][12][13][14][4]프로그래밍과 같은 분야에 적용되어 왔다.

「 」를 참조해 주세요.

메모들

  1. ^ TensorFlow 1은 정적 그래프 접근법을 사용하는 반면, TensorFlow 2는 기본적으로 동적 그래프 접근법을 사용한다.

레퍼런스

  1. ^ Baydin, Atilim Gunes; Pearlmutter, Barak; Radul, Alexey Andreyevich; Siskind, Jeffrey (2018). "Automatic differentiation in machine learning: a survey". Journal of Machine Learning Research. 18: 1–43.
  2. ^ Wang, Fei; Decker, James; Wu, Xilun; Essertel, Gregory; Rompf, Tiark (2018), Bengio, S.; Wallach, H.; Larochelle, H.; Grauman, K. (eds.), "Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming" (PDF), Advances in Neural Information Processing Systems 31, Curran Associates, Inc., pp. 10201–10212, retrieved 2019-02-13
  3. ^ Innes, Mike (2018). "On Machine Learning and Programming Languages" (PDF). SysML Conference 2018.
  4. ^ a b c d Innes, Mike; Edelman, Alan; Fischer, Keno; Rackauckas, Chris; Saba, Elliot; Viral B Shah; Tebbutt, Will (2019), ∂P: A Differentiable Programming System to Bridge Machine Learning and Scientific Computing, arXiv:1907.07587
  5. ^ a b c d Innes, Michael; Saba, Elliot; Fischer, Keno; Gandhi, Dhairya; Rudilosso, Marco Concetto; Joy, Neethu Mariya; Karmali, Tejan; Pal, Avik; Shah, Viral (2018-10-31). "Fashionable Modelling with Flux". arXiv:1811.01457 [cs.PL].
  6. ^ Merriënboer, Bart van; Breuleux, Olivier; Bergeron, Arnaud; Lamblin, Pascal (3 December 2018). "Automatic differentiation in ML: where we are and where we should be going". Proceedings of the 32nd International Conference on Neural Information Processing Systems. 31: 8771–8781.
  7. ^ a b c "Automatic Differentiation in Myia" (PDF). Retrieved 2019-06-24.
  8. ^ a b "TensorFlow: Static Graphs". Retrieved 2019-03-04.
  9. ^ Innes, Michael (2018-10-18). "Don't Unroll Adjoint: Differentiating SSA-Form Programs". arXiv:1810.07951 [cs.PL].
  10. ^ Degrave, Jonas; Hermans, Michiel; Dambre, Joni; wyffels, Francis (2016-11-05). "A Differentiable Physics Engine for Deep Learning in Robotics". arXiv:1611.01652 [cs.NE].
  11. ^ Li, Li; Hoyer, Stephan; Pederson, Ryan; Sun, Ruoxi; Cubuk, Ekin D.; Riley, Patrick; Burke, Kieron (2021). "Kohn-Sham Equations as Regularizer: Building Prior Knowledge into Machine-Learned Physics". Physical Review Letters. 126 (3): 036401. arXiv:2009.08551. Bibcode:2021PhRvL.126c6401L. doi:10.1103/PhysRevLett.126.036401. PMID 33543980.
  12. ^ "Differentiable Monte Carlo Ray Tracing through Edge Sampling". people.csail.mit.edu. Retrieved 2019-02-13.
  13. ^ "SciML Scientific Machine Learning Open Source Software Organization Roadmap". sciml.ai. Retrieved 2020-07-19.
  14. ^ "Differentiable Programming for Image Processing and Deep Learning in Halide". people.csail.mit.edu. Retrieved 2019-02-13.