PINN (Physics-informed neural networks) и с чем их едят

от автора

Известный, и во многом печальный, факт: Реальные физические системы обсчитываются сложными численными методами за очень большое время на суперкомпьютерах.

Менее известный, но более радостный, факт: Есть нейронные сети, которые делают это быстрее (пусть и с меньшей точностью).

В реальных сложных производствах, вроде создания тонких пленок, разработке мембран и т.д., требуются либо сакральные знания технологов, передающиеся из поколений в поколения, либо хотя бы какие то приблизительные оценки на входные параметры процессов, которые необходимы для производства (параметры установки, ее геометрия, соотношения веществ, etc). К сожалению, сколь-нибудь адекватные физические оценки получить можно лишь с помощью длительных расчетов динамики происходящих процессов. И валидны они будут в лучшем случае для одной конкретной установки и конкретных условий. Что же делать? Аппроксимировать!

Типичная задача физика-программиста

Допустим, мы захотели посмотреть, как себя будет вести сильно разряженный газ в каких то конкретных условиях.

Подобные явления описываются некоторыми дифференциальными уравнениями с граничными условиями. Т.е. задачей Коши.

Для примера: одномерное уравнение Больцмана без столкновений

\frac{\partial f}{\partial t} + v\frac{\partial f}{\partial x} = 0,

где f — функция распределения, v — скорость.

Для решения подобных задач вводятся так называемые разностные сетки, в узлах которых мы определяем параметры нашей системы, вводим сеточные функции, вычисляем дискретизованные производные и ищем решения наших уравнений. Типичная дискретизованная версия уравнения Больцмана выглядит так:

\frac{f^{j+1}_{i} - f^{j}_{i}}{t} + v\frac{f^{j}_{i} - f^{j}_{i-1}}{h} = 0

где t — шаг по временной сетке, h — шаг по пространственной.

Точность итоговых вычислений зависит от размерности сеток, и от них же зависит длительность и сложность вычислений.

Типичное число точек для сетки координатной для реальных задач — порядка сотен тысяч точек. Такие сетки вводятся для всех переменных. Для многомерных задач ситуация драматично ухудшается — необходимо вводить сетки для каждой из координат.

Подобные вычисления для реальных задач обычно затрачивают месяца на суперкомпьютерах.

Аппроксимируем аппроксимацию

В бытность мою студентом, мы часто шутили про то, что публикации в физических журналах о нейронных сетях — это обычно попытка аппроксимировать какой то приближенный метод нейронной сетью. Т.е. получить приближение в квадрате.

Ну, в целом, мы не то чтобы ошибались.

Итак. У нас есть нейронные сети и множество различных архитектур для них. Наивное решение: Возьмем произвольную архитектуру и прогоним через нее наши данные.

На выходе мы получим некоторую нейронную сеть, которая будет играть роль нашей функции распределения.

f' = NN(x, t)

Допустим даже, что данная нейронная сеть имеет очень низкую ошибку в том числе и на тестовом датасете.

Но вот проблема: для ряда случаев нарушаются законы сохранения, пусть и не сильно. Гарантированно избежать этого мы не можем.

К сожалению, это означает, что такая аппроксимация становится абсолютно бесполезной, ибо решения с нарушением законов сохранения — нефизичны и ведут к появлению абсолютно магических явлений вроде взявшихся неоткуда источников энергии в системе. Динамические системы достаточно чувствительны к таким проблемам, так что почти все решение становится бесполезным.

Другой ландшафт

С формальной точки зрения мы решали задачу оптимизации произвольной функции распределения по произвольному пространству параметров.

Но что, если мы заранее зададим в функцию потерь в таком виде, чтобы удовлетворялись законы сохранения?

Например: Напрямую добавим в лосс функцию слагаемое, которое будет зануляться только в случае выполнения законов сохранения.

Loss = MSE(f, f') + L_{phys}

Таким образом мы ограничили пространство параметров только теми, которые лежат в некотором подпространстве — считай, выделили поверхность, на котором выполняются законы сохранения.

Достаточное ли это решение?

Ну, почти. На самом деле, мы в качестве дополнительного слагаемого нужно выбрать такое, которое будет учитывать все свойства аппроксимируемых уравнений, которые мы знаем. Граничных условий, законов сохранения, etc. То есть:

L_{phys} = L_{BC} + L_{DE}

где BC — boudary condition — граничные условия, а DE — differential equation — дифференциальное уравнение. Таким образом такая функция потерь должна минимизироваться на тех решениях, для которых выполняются и граничные условия, и само дифференциальное уравнение.

Нейронная сеть с таким типом Loss функцией и называется PINN — Physics-informed neural network.

Такой тип функции потерь решает сразу несколько проблем:

  1. Сохранение физичности решения.

  2. Ускорение обучения — за счет уменьшения пространства поиска параметров сети.

  3. Уменьшение количества необходимых для обучения данных — ведь мы напрямую заложили в сеть априорные сведения о свойствах решения.

А что же дальше?

На самом деле PINN — это частный случай более глубокой идеи, которая сейчас активно развивается в нейронных сетях.

Добавление дополнительных членов, связанных не только с самими признаками, которые мы изучаем, но и с их производными (в данном случае — дифференциальными уравнениями) порождает требование к нейронной сети учитывать гладкость пространства решений. Таким образом мы как бы учитываем некоторые инварианты нашего многообразия. Конструировать сети с учетом геометрических свойств изучаемой задачи можно разными способами. Подробности, не связанные с PINN, можно посмотреть в достаточно спорной, но интересной статье: линк.


ссылка на оригинал статьи https://habr.com/ru/articles/748538/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *