Neuronové sítě se učí z dat. Klasické řešiče počítají z rovnic. Fyzikálně informované neuronové sítě (PINN) umí obojí zároveň a právě v tom je jejich smysl.
Představte si kovovou desku, kterou v jednom místě zahříváme. Chceme znát teplotu v každém bodě a v každém okamžiku. Fyzika nám k tomu dává rovnici vedení tepla, tedy vztah, který teplota musí splňovat. A dejme tomu, že navíc máme z několika míst desky naměřené hodnoty.
Klasický řešič rovnici umí, ale rozsypaná měření ze senzorů do výpočtu nevezme. Obyčejná síť naopak použije měření a o fyziku se nestará.
PINN na to jde takto: teplotu bude počítat neuronová síť. Zadáte jí místo a čas, ona vrátí teplotu. Při učení se ale hlídají dvě věci naráz – jak dobře její odpovědi sedí na naměřené hodnoty a jestli zároveň splňují rovnici. Tam, kde měření nemáte, drží výsledek fyzika.
Vytvořil jsem open source toolbox pro pochopení práce s PINN v prostředí MATLAB. Obsahuje aktuálně 19 komentovaných příkladů, v češtině i angličtině, interaktivní aplikaci (opět CZ/EN) a k běhu potřebuje Deep Learning Toolbox. Můj PINN Toolbox je učební materiál i použitelný nástroj pro snadnou tvorbu vlastních PINN úloh. Při vývoji toolboxu mi pomohl Claude Code a MATLAB Agentic Toolkit.
Klasické řešiče potřebují výpočetní síť (mesh). Pozor, s neuronovou sítí nemá nic společného. Metoda konečných prvků (MKP) a další klasické metody si oblast a čas rozdělí na malé kousky a kvalita výsledku pak stojí a padá na kvalitě tohoto rozdělení. U složitého tvaru bývá příprava sítě delší práce než samotný výpočet.
PINN nic takového nepotřebuje. Stačí mu body rozsypané po oblasti, ve kterých se vynucuje rovnice, tzv. kolokační body. Body nemusí nijak souviset se svými sousedy a nemusí tvořit žádnou strukturu.
Při učení se hlídají dvě věci zároveň:
Z toho plynou dvě věci, které klasické řešiče neumí tak snadno. Za prvé, složité geometrie nemusíte dělit na kousky, stačí umět rozhodnout, jestli bod leží v oblasti, nebo ne. Za druhé, úloha se dá obrátit – když naopak máte měření a neznáte materiálový parametr, hledáte ho společně s řešením. Tomu se říká inverzní úloha.
Metodu PINN v dnešní podobě zavedli Raissi, Perdikaris a Karniadakis v roce 2017; nejcitovanější je jejich navazující článek v Journal of Computational Physics z roku 2019.
Následující obrázek je výstupem jednoho příkladu z toolboxu – ustálené vedení tepla v desce s kruhovým otvorem.
Vlevo nahoře je všechno, co PINN o oblasti ví: 2000 náhodně rozsypaných bodů a body na okraji. Vpravo nahoře nalezené řešení, vlevo dole jeho odchylka od přesného. Vpravo dole je vidět, jak se během učení srovnávají obě složky.
Za pozornost stojí panel vlevo nahoře. Otvor v desce nevznikl žádnou přípravou geometrie. Body se rozsypaly po celém čtverci a ty, které padly do otvoru, se prostě zahodily. V kódu je to jeden řádek. Zbytek je běžné nastavení: tři vrstvy po 20 neuronech a 1500 kroků učení. Výsledná chyba proti přesnému řešení je 0.75 %.
Rozhraní toolboxu je záměrně malé. Skládá se ze tří částí, které do sebe zapadají: síť, popis toho, co se má minimalizovat, a optimalizátor.
net = PINN.core.NeuralNetwork(2, 1, [20 20 20], Activation=„tanh“);
lf = PINN.core.LossFunction(@heatResidual);
opt = PINN.core.Optimizer(MaxIterations=2000, LearnRate=0.01);
args = PINN.utils.trainingInputs(Data=dataCoords, Targets=dataU, Collocation=colCoords);
[net, history] = opt.train(net, lf, args);
u = net.predict([x; t]); % teplota v zadaných bodech
Vaši diferenciální rovnici zadáte v rámci funkce, v příkladu výše je to funkce heatResidual. Funkce vrací, o kolik výstup sítě rovnici nesplňuje, tzv. reziduum. Derivace, které v ní potřebujete, dopočítá MATLAB sám. Vyměníte tuhle jednu funkci a řešíte jinou úlohu – zbytek kódu zůstává.
PINN může různými způsoby selhat. Nejnepříjemnější je ten, kdy učení vypadá úspěšně a výsledek je přitom úplně mimo.
Toolbox proto obsahuje příklady, které selhání nejprve předvedou a pak změří, kolik z něj která náprava zachrání. Podrobný průvodce ve formátu příznak → diagnóza → náprava je součástí repozitáře.
Tato úloha je pro praxi asi nejzajímavější a je to přesně ta situace ze začátku článku – máte data i rovnici. Znáte tvar rovnice, máte naměřenou trajektorii, ale neznáte v ní jeden nebo více koeficientů: tlumení, viskozitu, tepelnou vodivost. PINN je najde společně s řešením.
Příklad s kyvadlem používá reálná data z akcelerometru telefonu (MATLAB Mobile) a určí z nich tlumení s chybou 3.27 %, samotnou trajektorii s chybou 2.13 %.
Klasické řešiče postupují v čase krok za krokem a chyba se jim mezi kroky nasčítává. PINN dostane čas jako další vstup a celý časový průběh najde jedním výpočtem.
Vedení tepla ve 2D desce v čase. Podmínky na začátku a na okrajích jsou splněny přesně už samotnou konstrukcí modelu, chyba v prostoru i čase je 0.059 %.
Požadavky jsou: MATLAB R2025a nebo novější a Deep Learning Toolbox. Nic víc – Simulink a Simscape jsou potřeba jen pro dva doplňkové příklady. Vývoj a ověřování probíhaly ve verzi R2026a, výhradně na CPU.
Všechny příklady jsou české Live Scripty s vloženými výstupy a ke každému je i anglická verze. Každý ukazuje jeden koncept a na konci porovnává výstupy s výsledkem známým odjinud, buď s přesným vzorcem, nebo s klasickým řešičem. Toolbox pokrývá 142 automatických testů, které proběhnou do minuty.
Kdo si chce s PINN nejprve pohrát, nemusí psát ani řádek. Příkaz
PINN.tools.launchTrainerApp otevře interaktivní aplikaci:
vyberete si přednastavenou úlohu nebo napíšete vlastní rovnici, nastavíte
model a spustíte učení. Rozhraní je česky i anglicky.
Na závěr jedna poznámka. PINN nejsou náhrada MKP ani klasických řešičů – pokud jen potřebujete vyřešit známou rovnici a máte na ni dobrou výpočetní síť, klasický řešič bude rychlejší i přesnější. Silné jsou tam, kde klasické metody narážejí: neznámý parametr z měření, složité tvary bez přípravy sítě, spojení měření s rovnicí. Za tuhle pružnost se platí tím, že učení je citlivé. Proto jsou v toolboxu příklady, jak selhání poznat a odstranit.
Jan Studnička, 21.8.2026