Optimizacija neuronskih mreža podržanih fizičkim zakonima – PINN
Veštačka inteligencija je oblast koja se razvija vrtoglavom brzinom, ali da li ti novi algoritimi zaista „razumeju“ probleme koje praktično rešavaju? U ovom članku ćemo se pozabaviti Neuronskim mrežama podržanim fizičkim zakonima (eng. Physics Informed Neural Networks – PINN), koje pružaju moćan alat za integraciju pravih fizičkih zakona u neuronsku mrežu. Naučićemo i kako alat Blackfox na inteligentan način optimizuje njihovu arhitekturu i ostale hiper-parametre.
Sadržaj
Mašinsko učenje i nauka
Tradicionalno, svako naučno istraživanje predstavlja cikličnu kombinaciju teorijske postavke i eksperimentalne provere. U poslednjih nekoliko decenija, često se pored pravih eksperimenta koriste i računarske simulacije, koje su takođe zasnovane na utvrđenim teorijskim zakontitostima. U fizici, inženjerstvu, biologiji, ekonomiji i drugim oblastima, zakoni se uglavnom predstavljaju parcijalnim diferencijalnim jednačinama. Na primer, poznata logistička jednačina je tzv. obična diferencijalna jednačina prvog reda koja predstavlja model rasta populacije i glasi:
$$\frac{df}{dt} = R \cdot t(1-t)$$
Funkcija f(t) predstavlja stopu rasta populacije tokom vremena t, dok parametar R određuje maksimalnu stopu rasta. Kako bismo od familije krivih koje zadovoljavaju rešenje ove obične diferencijalne jednačine izabrali jednu krivu kao rešenje, moramo postaviti tzv. granični, tj. početni uslov. Neka to bude:
$$f(t=0) = \frac{1}{2}.$$
Rešenje jednačine sa datim graničnim uslovom je funkcija prikazana na sledećoj slici:
Ovu običnu diferencijalnu jednačinu lako možemo rešiti i analitički, ali i nekom numeričkom metodom, kao što je metoda konačnihih razlika.
Sa druge strane, pristup mašinskog učenja je potpuno drugačiji. Modeli kao što su neuronske mreže, stabla odlučivanja i Support Vector Machines su uglavnom vođeni postojanjem velike količine podataka. Recimo, kriva na gornjoj slici bi mogla verno da se reprodukuje (a time predvidi i rešenje postavljene logističke jednačine) ukoliko imamo nekoliko stotina tačaka koje joj pripadaju. Takav model bi verovatno davao solidne rezultate, ali bez ikakvog znanja o logističkom zakonu koji stoji u pozadini.
Nedostaci pristupa koji koristi samo podatke
Ukoliko bismo pokušali da odredimo vrednost funkcije za neku tačku koja se nalazi van domena koji je korišćen za učenje, rezultati bi po svoj prilici bili loši. Drugo, ukoliko u podacima postoji šum, pitanje koliko bi takva nepravilnost odvela model zasnovan na podacima na pogrešnu stranu. To je poznati problem preučavanja (overfitting) i problem podučavanja (underfitting).
Sa druge strane, ogroman broj pojava je objašnjen i opisan parcijalnim diferencijalnim jednačinama. Zašto ne bismo poznatu nam jednačinu iskoristili kako bismo što vernije „isfitovali“ krivu i sprečili preučavanje? Sledeća slika ilustruje tri realna scenarija dostupnosti podataka:
Većina današnjih modela koji se oslanjaju samo na podatke pripada Big Data tipu (krajnji desni), dok klasični pristupi kao što su metoda konačnih razlika ili metoda konačnih elemenata pripadaju grupi Lots of physics (krajnja leva). Inovativni PINN metod teži da pomiri ova dva krajnja pristupa. U realnom svetu uvek ponešto znamo o fizičkoj prirodi problema, a imamo i neke izmerene podatke. Recimo, možda u našoj logističkoj jednačini ne znamo tačnu vrednost konstante R, ali zato smo izmerili vrednost populacije f(t) u nekoliko vremenskih trenutaka t. To je sasvim realni scenario.
PINN – neuronska mreža podržana fizičkim zakonima
Neuronska mreža podržana fizičkim zakonima (PINN) je tehnika mašinskog učenja koja se može koristiti za aproksimaciju rešenja parcijalne diferencijalne jednačine.
PDE i Cond označavaju same jednačine i granične uslove problema, dok R i I predstavljaju njihove reziduale, koji treba da teže nuli.
Aproksimatorska mreža je „obična“ neuronska mreža koja se podvrgava procesu obuke i daje približno rešenje \(\hat{f}\). Ključ metode je u tzv. rezidualnoj mreži. Ona je poseban deo PINN-a koji se ne obučava, a sposobna je da izračuna izvode izlaza aproksimatorske mreže u odnosu na ulaze, što rezultira kombinovanom funkcijom gubitka, označenom sa MSE.
Čemu model koji za bilo koji ulaz daje 0?
U rezidualnu mrežu su zapravo integrisana pravila u obliku diferencijalnih jednačina i graničnih uslova. Ako su zadata pravila zadovoljena, izlazi iz PINN-a R i I su NULE! S obzirom da su pravila postavljena tako da daju nulu samo ako je je funkcija \(\hat{f}\) koju daje aproksimatorska mreža tačna, onda imamo mehanizam obuke koji će se iterativnim postupkom približavati tom tačnom rešenju.
Podaci za treniranje zapravo nisu pravi podaci kao kod nadgledanog učenja, već se u tzv. kolokacionim tačkama u okviru domena problema računaju gubici MSE, tokom procesa treniranja težeći minimizaciji njihovih vrednosti. U prevodu, tražimo takve vrednosti težinskih koeficijenata da diferencijalna jednačina i granični uslovi budu zadovoljeni u svim postavljenim kolokacionim tačkama.
Automatska diferencijacija je ključni pokretač razvoja PINN-a i glavni je element koji razlikuje PINN od sličnih nastojanja 90-ih godina prošlog veka. Danas se oslanjamo na automatsku diferencijaciju koja je implementirana u okvirima za duboko učenje, kao što su Tensorflow i PyTorch. U prethodnih nekoliko godina pojavilo se i nekoliko biblioteka koje umnogome olakšavaju rad sa PINN-ovima, pa njihov korisnik može da se fokusira na problem koji rešava, a da tehničke detalje ostavi samoj biblioteci. Najpoznatije biblioteke ovog tipa su SciANN i sve popularniji DeepXDE.
Pomoću PINN-ova se mogu rešavati raznorodni problemi od interesa u praksi. Konkretne probleme i rešenja iz oblasti provođenja toplote, oscilacija, akustike, hidrologije i solarne energije možete naći u Web izdanju PINN Praktikuma u izdanju Prirodno-matematičkog fakulteta u Kragujevcu, koji potpisuje autor ovog članka. Rešenja u obliku Python koda se mogu preuzeti sa https://github.com/imilos/pinn-skripta. Autor takođe rado priihvata ispravke i sugestije bilo koje vrste, a najradije pull request-ove.
Koja arhitektura PINN-a je najbolja?
Kao i kod svakog klasifikacionog/regresionog modela iz oblasti mašinskog učenja, tako se i kod PINN postavlja pitanje kojim hiper-parametrima se postižu najbolji rezultati. U hiper-parametre pre svega spada arhitektura izražena brojem slojeva i brojem neurona u svakom sloju, aktivacione funkcije, algoritam obuke, itd. Ovo nije nimalo jednostavan zadatak jer je prostor pretrage obično ogroman, a resursi ograničeni. Pored toga, niko nam ne garantuje da će recimo kompleksnije mreže dati tačnije rezultate, kao što je ilustrovano na slici.
Recimo, ako obuka jedne mreže traje 10 minuta, potrebno nam je 16 sati da isprobamo 100 kombinacija, a obično nije ni približno dovoljno da se pronađe mreža bliska optimalnoj.
Metoda 1: Slučajna pretraga
Jednostavana grid pretraga ili srodna tzv. slučajna pretraga može se lako pokrenuti korišćenjem SciKit Learn funkcija. Ukoliko posedujemo i neki višejezgrani procesor, možemo i značajno ubrzati pretragu paralelizacijom.
Međutim, postoji li neko bolje rešenje od grid i slučajne pretrage?
Pametnija pretraga optimalne arhitekture
U nedostatku boljeg rešenja, danas se čak i ozbiljna istraživanja sprovode metodom eng. Graduate Student Descent, tj. potpuno manuelno i „na osećaj“. Hajde da vidimo da li možemo da nađemo neki optimizacioni algoritam koji nam može pomoći u pretrazi.
Metoda 2: Hyperopt TPE
Dokazana metoda Hyperopt nudi optimizaciju hiper-parametara za raznorodne modele mašinskog učenja (ne samo neuronske mreže). Autori koriste naprednu tehniku Tree-structured Parzen Estimator (TPE) koja tokom pretrage dinamički određuje njen dalji tok, tako da se ispituju one grane strabla kod kojih je pojava boljih modela verovatnija. Konkretne pojedinosti možete saznati u originalnom radu.
Evo primera kako možemo da definišemo prostor pretrage hiper-parametrara, kao pripremu za Hyperopt:
MAX_LAYERS = 10
MIN_UNITS = 16
MAX_UNITS = 32
# Next, define a search space for Hyperopt.
search_space = {
'optimizer': hp.choice('optimizer', ["Adam", "RMSProp", "Adagrad", "Nadam"]),
'activation' : hp.choice('activation', ["tanh", "sigmoid", "selu", "softmax", "relu", "elu"]),
'outputActivation': hp.choice('outputActivation', ["linear", "relu"]),
}
layers_choice = []
for layer_count in range(1, MAX_LAYERS + 1):
options = []
for i in range(1, layer_count + 1):
units = hp.quniform(f'layers_{layer_count}_unit_{i}', MIN_UNITS, MAX_UNITS, 0.9)
options.append(units)
layers_choice.append(options)
search_space['layers'] = hp.choice('layers', layers_choice)
Imamo 4 vrste algoritma pretrage, 6 aktivacionih funkcija 2 aktivacije izlaznog sloja, što i nije previše kombinacija. Međutim, ono što ovu pretragu čini zaista zahtevnom su sve kombinacije arhitektura PINN-ova. Može biti najviše 10 slojeva, a svaki sloj može imati proizvoljan broj neurona (UNITS) od 16 do 32!
Metoda 3: Blackfox pretraga bazirana na genetskom algoritmu (PINN/GA)
Istraživačka grupa Centra za računarsko modelovanje i optimizaciju (CERAMO) na PMF-u u Kragujevcu u saradnji sa kompanijom Vodéna d.o.o. se već nekoliko godina bavi metodama optimizacije raznorodnih modela mašinskog učenja. Jedan od rezultata je projekat Blackfox, koji se koristi u razlličitim praktičnim domenima, kao što je optimizacija proizvodnje i potrošnje električne energije iz obnovljivih izvora, telekom industriji i optimizaciji snabdevanja u maloprodaji.
Hajde da vidimo kako se algoritmi ugrađeni u Blackfox nose sa PINN-ovima. Blackfox bi trebalo da potpuno automatski, svojim genetskim algoritmom specijalizovanim za pretragu prostora koji čine neuronske mreže pronađe optimalni PINN za zadati problem. Blackfox PINN/GA započinje od populacije sasvim jednostavnih PINN mreža, a nove slojeve im dodaje samo ako takav potez rezultuje jasnim dobitkom tačnosti. Na ovaj način bi trebalo da ispunimo i sekundarni cilj, a to je da optimalni PINN bude što jednostavniji. Jednostavnost donosi benefit u performansama, a ne ide na uštrb kvaliteta. Tok procesa optimizacije dat je na sledećoj slici.
U genetskom algoritmu, populacija PINN-ova evoluira ka boljim rešenjima. Svaki PINN ima skup osobina (gena) koji može da bude mutiran tj. izmenjen. Evolucija počinje od populacije nasumično generisanih najjednostavnijih PINN-ova. U svakoj novoj generaciji tačnost svakog PINN-a se posebno evaluira. Što PINN ima bolje rezultate, veće su šanse da preživi i da se ukrsti sa nekim od drugih PINN-ova. Ono što je posebna specijalnost Blackfox-a je promena (mutacija) koja može biti:
- Promena broja neurona u skrivenom sloju
- Umetanje novog skrivenog sloja
- Brisanje skrivenog sloja
- Izbor dugog algoritma obuka
- Izbor druge aktivacione fukcije
Da bi se u jedinici vremena mogao evaluirati što veći broj PINN-ova, Blackfox ima mogućnost da koristi Kubernetes klaster, što znači da može transparentno da distribuira opterećenje na više računara i time višestruko ubrza pretragu.
Postavke testa performansi
Koja od tri navedene metode će naći najbolju neuronsku mrežu za jedan konkretan problem? Hajde da uporedimo performanse sve tri metode na jednom reprezentativnom problemu. Odabrali smo Stefanov problem topljenja leda u jednoj prostornoj dimenziji, koji je detljano opisan u PINN Praktikumu, zajedno sa jednačinama, graničnim uslovima i kodom u Python-u. Ovde ćemo samo dijagramom prikazati šta se modeluje.
Pratimo pomeranje granice između vode i leda s(t) i temperatursko polje u(x,t) u vodi.
Da bismo testirali sve tri metode do krajnjih granica upotrebljivosti, koristimo klaster koji se sastoji od 7 servera sa po 32 procesorska jezgra (dual Intel Xeon E5-2683 v4), što nam daje ukupno 224 procesora koji mogu da rade u paraleli. Slučajna pretraga i Blackfox distribuiraju posao koristeći Kubernetes, dok Hyperopt TPE za paralelizaciju koristi Apache Spark. Pošto svi rade na istom haredveru, rezultati su uporedivi. Ostale detalje testiranja možete pronaći u našoj publikaciji objavljenoj u časopisu Applied Soft Computing .
Rezultati
Koliko koja metoda tokom vremena (120 minuta) može da napreduje u optimizaciji PINN-a? Na levoj Y osi se vidi greška modela, a na desnoj mera kompleksnosti PINN mreže.
Pune linije predstavljaju grešku trenutno najboljeg PINN-a (što manje to bolje), dok isprekidane linije predstavljaju kompleksnost trenutno najboljeg PINN-a (manje je i ovde bolje).
Na samom početku, slučajna pretraga (crvena linija) nalazi vrlo dobru, ali dosta kompleksnu mrežu i to bolju od Hiperopt TPE. Međutim, izostaje sistematsko poboljšanje tokom vremena, jer se algoritam zasniva na slučaju. Hiperopt TPE (zelena linija) pokazuje dobar gradijent na početku, stalno napreduje i nakon 120 minuta završava nešto bolje od slučajne pretrage. S druge strane, Blackfox (PINN/GA) (plava linija) se postepeno i ssitematski poboljšava dodavanjem novih slojeva i ostaje bolji od obe konkurentske metode skoro sve vreme, dok zadržava PINN-ove prilično jednostavnim. Dostiže stabilno stanje nakon otprilike 120 minuta. Zbog specifične implementacije operatora mutacije, postavili smo sve PINN-ove početne populacije na tačno jedan skriveni sloj. Kako Blackfox PINN/GA napreduje, možemo posmatrati kako modeli postaju sve složeniji. Ponekad se složenost čak i i smanjuje kao rezultat operatora brisanja sloja, koji deluje kao određena vrsta mehanizma regularizacije.
Blackfox PINN/GA je pronašao mrežu koja sa samo dva skrivena sloja parira mreži sa čak 7 skrivenih slojeva koju daje Hyperopt TPE.
Na samom kraju, evo optimalnih arhitektura i hiper-parametara koje je svaka od metoda pronašla nakon 2 sata pretrage. Blackfox PINN/GA je pronašao mrežu koja sa samo dva skrivena sloja parira mreži sa čak 7 skrivenih slojeva koju daje Hyperopt TPE.
Hyperparameter | Blackfox PINN/GA | Random search | Hyperopt TPE |
Optimizer | Nadam | Nadam | Nadam |
Activation function | Tanh | Tanh | Sigmoid |
Number of hidden layers | 2 | 8 | 7 |
Neurons in hidden layers | [3,22] | [3,12,16,10,10,18,18,18] | [3,25,21,5,8,28,9] |
Output activation | Linear | Linear | Linear |
Zaključak
Optimizovani Blackfox PINN/GA model pruža vidljivo bolju tačnost od PINN-a koji se dobija paralelnom slučajnom pretragom, kao i Hyperopt TPE metodom, u istom distribuiranom računarskom okruženju. U većini slučajeva Blackfox održava topologiju mreže relativno jednostavnom. Sa tačke gledišta korisnika, zarad boljih performansi, vredi sačekati par sati da bismo dobili optimalnu kombinaciju hiper-parametara.
Korisni linkovi
- https://imi.pmf.kg.ac.rs/~milos/pinn-lat – Neuronske mreže podržane fizičkim zakonima – Praktikum
- https://scidar.kg.ac.rs/handle/123456789/18700 – Identifying optimal architectures of physics-informed neural networks by evolutionary strategy
- https://github.com/imilos/pinn-skripta – repozitorijum praktikuma sa primerima
- https://blackfox.ai/
- https://en.wikipedia.org/wiki/Genetic_algorithm
- http://hyperopt.github.io/hyperopt/
- https://scikit-learn.org/stable/modules/grid_search.html