Programowanie różniczkowalne

Programowanie różniczkowe to paradygmat programowania , w którym numeryczny program komputerowy może być różnicowany poprzez automatyczne różnicowanie . Pozwala to na parametrów w programie opartą na gradiencie , często poprzez opadanie gradientu , a także inne podejścia do uczenia się, które są oparte na informacjach pochodnych wyższego rzędu. Programowanie różniczkowe znalazło zastosowanie w wielu różnych dziedzinach, zwłaszcza w obliczeniach naukowych i sztucznej inteligencji . Jedna z pierwszych propozycji systematycznego przyjęcia takich ram w celu ulepszenia algorytmów uczenia się została złożona przez zespół ds. zaawansowanych koncepcji w Europejskiej Agencji Kosmicznej na początku 2016 r.

Podchodzi do

Większość struktur programowania różniczkowego działa na zasadzie konstruowania grafu zawierającego przepływ sterowania i struktury danych w programie. Próby generalnie dzielą się na dwie grupy:

  • Statyczne, skompilowane podejścia oparte na grafach , takie jak TensorFlow , Theano i MXNet . Zwykle pozwalają na dobrą optymalizację kompilatora i łatwiejsze skalowanie do dużych systemów, ale ich statyczny charakter ogranicza interaktywność i typy programów, które można łatwo tworzyć (np. te obejmujące pętle lub rekurencję ), a także utrudnia użytkownikom rozumowanie skutecznie o swoich programach. Łańcuch narzędzi kompilatora sprawdzającego koncepcję o nazwie Myia wykorzystuje podzbiór Pythona jako interfejs użytkownika i obsługuje funkcje wyższego rzędu, rekursję i pochodne wyższego rzędu.

Ograniczeniem wcześniejszych podejść jest to, że są one w stanie odróżnić kod napisany w sposób odpowiedni dla frameworka, co ogranicza ich interoperacyjność z innymi programami. Nowsze podejścia rozwiązują ten problem, konstruując wykres na podstawie składni języka lub IR, umożliwiając rozróżnienie dowolnego kodu.

Aplikacje

Programowanie różniczkowe zostało zastosowane w takich dziedzinach, jak łączenie głębokiego uczenia się z silnikami fizyki w robotyce , rozwiązywanie problemów ze strukturą elektronową za pomocą teorii funkcjonału gęstości różniczkowej, śledzenie promieni różniczkowalnych , przetwarzanie obrazu i programowanie probabilistyczne .

Zobacz też

Notatki