Programació diferenciable

paradigma de programació en el qual un programa d'ordinador numèric es pot diferenciar mitjançant la diferenciació automàtica From Wikipedia, the free encyclopedia

Programació diferenciable

La programació diferenciable és un paradigma de programació en el qual un programa d'ordinador numèric es pot diferenciar mitjançant la diferenciació automàtica.[1][2][3][4] Això permet l'optimització basada en el gradient dels paràmetres del programa, sovint mitjançant el descens del gradient, així com altres enfocaments d'aprenentatge que es basen en informació derivada d'ordre superior. La programació diferenciable ha trobat ús en una gran varietat d'àrees, especialment la informàtica científica i l'aprenentatge automàtic. Una de les primeres propostes per adoptar aquest marc de manera sistemàtica per millorar els algorismes d'aprenentatge va ser feta per l'equip de conceptes avançats de l'Agència Espacial Europea a principis de 2016.[5]

Thumb
Mostra com la diferenciació en:automàtica es relaciona amb la diferenciació simbòlica, les dues caixes superiors representen un codi font en qualsevol llenguatge de programació, mentre que les caixes inferiors representen la idea abstracta d'una funció matemàtica.

Enfocaments

La majoria dels marcs de programació diferenciables funcionen mitjançant la construcció d'un gràfic que conté el flux de control i les estructures de dades del programa. Els intents generalment es divideixen en dos grups:

  • Gràfic estàtic compilat enfocaments basats en com ara TensorFlow, Theano i MXNet. Acostumen a permetre una bona optimització del compilador i una escala més fàcil a sistemes grans, però la seva naturalesa estàtica limita la interactivitat i els tipus de programes que es poden crear fàcilment (per exemple, els que impliquen bucles o recursivitat), a més de dificultar el raonament dels usuaris. eficaçment sobre els seus programes. Una cadena d'eines del compilador de prova de concepte anomenada Myia utilitza un subconjunt de Python com a interfície i admet funcions d'ordre superior, recursivitat i derivades d'ordre superior.
  • Sobrecàrrega d'operadors, enfocaments basats en gràfics dinàmics com ara PyTorch i el paquet autograd de NumPy. La seva naturalesa dinàmica i interactiva permet que la majoria dels programes s'escriguin i es raonin amb més facilitat. Tanmateix, donen lloc a una sobrecàrrega de l'intèrpret (sobretot quan es redacten moltes operacions petites), una escalabilitat més pobra i un benefici reduït de l'optimització del compilador. Un paquet per al llenguatge de programació Julia  Zigot  funciona directament a la representació intermèdia de Julia, la qual cosa permet que encara sigui optimitzada pel compilador just-in-time de Julia.

Una limitació dels enfocaments anteriors és que només són capaços de diferenciar el codi escrit d'una manera adequada per al marc, limitant la seva interoperabilitat amb altres programes. Els enfocaments més nous resolen aquest problema mitjançant la construcció del gràfic a partir de la sintaxi o IR del llenguatge, permetent diferenciar codi arbitrari.[6]

Aplicacions

La programació diferenciable s'ha aplicat en àrees com la combinació d'aprenentatge profund amb motors físics en robòtica, resoldre problemes d'estructura electrònica amb teoria funcional de densitat diferenciable, [7] traçat de raigs diferenciables, [8] processament d'imatges, [9] i programació probabilística.

Aplicació multidisciplinària

La programació diferenciable està fent avenços significatius en diversos camps més enllà de les seves aplicacions tradicionals. En ciències de la salut i de la vida, per exemple, s'està utilitzant per a l'aprenentatge profund en el modelatge de mecanismes moleculars basat en biofísica. Això implica aprofitar la programació diferenciable en àrees com la predicció de l'estructura de proteïnes i el descobriment de fàrmacs. Aquestes aplicacions demostren el potencial de la programació diferenciable per contribuir a avenços significatius en la comprensió de sistemes biològics complexos i la millora de les solucions sanitàries.[10]

Referències

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.