Diferansiye edilebilir programlama - Differentiable programming

Diferansiye edilebilir programlama bir programlama paradigması sayısal bir bilgisayar programının olabileceği farklılaşmış boyunca otomatik farklılaşma.[1][2][3][4] Bu izin verir gradyan tabanlı optimizasyon programdaki parametrelerin, genellikle dereceli alçalma. Farklılaştırılabilir programlama çok çeşitli alanlarda, özellikle bilimsel hesaplama ve yapay zeka.[4]

Yaklaşımlar

Farklılaştırılabilir programlama çerçevelerinin çoğu, kontrol akışını içeren bir grafik oluşturarak çalışır ve veri yapıları programda.[5] Daha önceki girişimler genellikle iki gruba ayrılır:

  • Operatör aşırı yükleme dinamik grafik gibi temelli yaklaşımlar PyTorch ve AutoGrad. Dinamik ve etkileşimli yapıları, çoğu programın daha kolay yazılmasına ve gerekçelendirilmesine olanak tanır. Ancak, yol açarlar çevirmen ek yük (özellikle birçok küçük işlem oluştururken), daha zayıf ölçeklenebilirlik ve derleyici optimizasyonundan fayda sağlamak için mücadele eder.[6][7][4]

Bu erken yaklaşımların her ikisi de, yalnızca çerçeve için uygun bir şekilde yazılmış kodu ayırt edebilir ve diğer programlarla birlikte çalışabilirliklerini sınırlayabilir.

Daha yeni paketler Julia Programlama dili - Zigot, Swift Programlama dili - TensorFlow için Swift ve yeni bir programlama dili - Myia, dilin sözdizimini grafik olarak ele alarak daha önceki girişimlerde karşılaşılan sorunları çözün. ara temsil keyfi kodlar daha sonra doğrudan ayırt edilebilir, optimize edilmiş ve derlendi.[5][8][6]

Başvurular

Birleştirme gibi alanlarda farklılaştırılabilir programlama uygulanmıştır. derin öğrenme ile fizik motorları içinde robotik, farklılaştırılabilir Işın izleme, görüntü işleme, ve olasılıklı programlama.[9][10][11][12][4]

Ayrıca bakınız

Notlar

  1. ^ TensorFlow 1, statik grafik yaklaşımını kullanırken, TensorFlow 2 varsayılan olarak dinamik grafik yaklaşımını kullanır.

Referanslar

  1. ^ Baydin, Atılım Güneş; Pearlmutter, Barak; Radul, Alexey Andreyevich; Siskind Jeffrey (2018). "Makine öğreniminde otomatik farklılaşma: bir anket". Makine Öğrenimi Araştırmaları Dergisi. 18: 1–43.
  2. ^ Wang, Fei; Decker, James; Wu, Xilun; Essertel, Gregory; Rompf, Tiark (2018), Bengio, S .; Wallach, H .; Larochelle, H .; Grauman, K. (editörler), "Geri Çağırma ile Geri Yayınlama: Verimli ve Etkileyici Farklılaştırılabilir Programlamanın Temelleri" (PDF), Sinirsel Bilgi İşleme Sistemlerindeki Gelişmeler 31, Curran Associates, Inc., s. 10201–10212, alındı 2019-02-13
  3. ^ Innes, Mike (2018). "Makine Öğrenimi ve Programlama Dillerinde" (PDF). SysML Konferansı 2018.
  4. ^ a b c d Innes, Mike; Edelman, Alan; Fischer, Keno; Rackauckas, Chris; Saba, Elliot; Viral B Shah; Tebbutt, Will (2019), ∂P: Makine Öğrenimi ile Bilimsel Hesaplamayı Köprülemek için Farklılaştırılabilir Bir Programlama Sistemi, arXiv:1907.07587
  5. ^ a b c Innes, Michael; Saba, Elliot; Fischer, Keno; Gandhi, Dhairya; Rudilosso, Marco Concetto; Joy, Neethu Mariya; Karmali, Tejan; Pal, Avik; Şah, Viral (2018-10-31). "Flux ile Modaya Uygun Modelleme". arXiv:1811.01457 [cs.PL ].
  6. ^ a b c "Miyada Otomatik Farklılaşma" (PDF). Alındı 2019-06-24.
  7. ^ a b "TensorFlow: Statik Grafikler". Alındı 2019-03-04.
  8. ^ Innes, Michael (2018-10-18). "Adjoint Kaydını Kaldırmayın: SSA-Form Programlarını Farklılaştırma". arXiv:1810.07951 [cs.PL ].
  9. ^ Degrave, Jonas; Hermans, Michiel; Dambre, Joni; wyffels, Francis (2016-11-05). Robotikte Derin Öğrenme için "Farklılaştırılabilir Bir Fizik Motoru". arXiv:1611.01652 [cs.NE ].
  10. ^ "Kenar Örneklemesiyle Farklılaştırılabilir Monte Carlo Işını İzleme". people.csail.mit.edu. Alındı 2019-02-13.
  11. ^ "SciML Scientific Machine Learning Açık Kaynak Yazılım Organizasyonu Yol Haritası". sciml.ai. Alındı 2020-07-19.
  12. ^ "Halide'de Görüntü İşleme ve Derin Öğrenme için Farklılaştırılabilir Programlama". people.csail.mit.edu. Alındı 2019-02-13.