Введение 5
1. Обзор существующих задач, методов и фреймворков 7
1.1. Существующие задачи и методы их решения 7
1.2. Математическая постановка задачи 10
1.3. Фреймворки автоматического машинного обучения ... 14
2. Цель и задачи 17
3. Описание решения 19
3.1. Общая архитектура решения 19
3.2. Выбор инструментов разработки 19
4. Реализация библиотеки генерации нейронных сетей 26
4.1. Особенности разработки 26
4.1.1. Модуль Equations 28
4.1.2. Модуль Networks 28
4.1.3. Модуль ExperimentEnviroment 30
4.1.4. Поиск по шаблонам 31
4.2. Тестирование 31
4.2.1. Утечка памяти 32
4.2.2. Влияние параметров обучения на результат .... 33
5. Методы поиска в пространстве нейронных сетей 36
5.1. Кодирование нейронных сетей 37
5.2. Линейный поиск 39
5.3. Случайный поиск 39
5.4. Поиск методом имитации отжига 40
6. Эксперименты 42
6.1. Дизайн экспериментов 42
6.2. Результаты экспериментов 45
7. Экспертная система 49
7.1. Архитектура 49
7.2. Реализация 49
7.3. Пример 51
Заключение 54
Список литературы 55
Необходимость моделирования динамических систем возникает во многих современных областях физики [1, 14, 6, 9], экономики [3], биологии [19, 17] и математики [5, 4]. При этом авторов указанных работ не устроили существующие численные методы нахождения решения дифференциальных уравнений и они прибегли к методам машинного обучения, в частности нейронным сетям (НС).
Актуальность аппроксимации вычислительно сложных функций с помощью нейронных сетей обусловлена свойством универсальной аппроксимации, что означает, что они могут аппроксимировать любую непрерывную функцию при наличии достаточного количества данных и архитектуры сети, также нейронные сети хорошо поддаются парал- лелизации, что позволяет им выполнять вычисления на CPU или GPU. При этом нейронные сети могут адаптироваться к изменяющимся данным и устойчивы к шуму, что делает их подходящими для аппроксимации функций в реальном мире, которые часто бывают шумными и неполными.
На данный момент большинство инструментов нахождения решений ДУ с помощью нейронных сетей разрабатываются под конкретную динамическую систему и не приспособлены для моделирования других [18, 5, 4]. А существующие фреймворки автоматического машинного обучения, позволяющие быстро пользоваться таким подходом, обладают весомыми недостатками, ограничивающими их использование в реальных задачах.
Так, к примеру, фреймворки optuna и auto-sklearn, решающие проблему комбинированного выбора алгоритмов и оптимизации метапараметров, сосредотачиваются на поиске глобального оптимума сильно не-выпуклого пространства метапараметров. Fedot и Tpot, использующие генетический подход к оптимизации модели, в результате своей работы получают большую и сложно вычислимую модель. А дистилляционные фреймворки фокусируются на обработке текста и изображений с помощью машинного обучения.
Проведённая работа посвящена разработке решения для предсказывания топологии и параметров обучения нейронных сетей для аппроксимации решений заданных дифференциальных уравнений. В главе 1 описана актуальность разработки такого решения. В главе 3 описана основная архитектура решения и выделены главные составляющие модули, также выбран инструмент для работы с нейронными сетями. В качестве модулей были выделены: библиотека генерации нейронных сетей, алгоритмы поиска в пространстве топологий НС и экспертная система для автоматического предсказания параметров алгоритмов поиска по заданному дифференциальному уравнению; реализация которых описана в главах 4, 5 и 7 соответственно.
В рамках работы над проектом было спроектировано решение, включающее библиотеку для генерации нейронных сетей, алгоритмы поиска в пространстве топологий нейронных сетей и экспертную систему для автоматического определения метапараметров алгоритмов.
Реализована и опубликована библиотека генерации нейронных сетей по заданным параметрам (использована библиотека Tensorflow), при этом заложена возможность реализации нейронных сетей с использованием других фреймворков.
Определено пространство топологий нейронных сетей, введён язык описания топологий нейронных сетей и реализованы метод имитации отжига, линейный и случайный алгоритмы поиска в полученном пространстве топологий, а также алгоритм поиска по задаваемым пользователем параметрам нейронной сети.
Выполнено экспериментальное исследование, показавшее, что метод имитации отжига на функциях с несколькими независимыми переменными и функциях вида синусоиды получает требуемый результат в 3-4 раза чаще, чем случайный поиск, но при работе обучает в среднем большее количество нейронных сетей и дольше работает.
Создана экспертная система на языке программирования Python с графическим интерфейсом, реализованным на PyQt6, автоматически предлагающая топологии и параметры обучения нейронных сетей для аппроксимации заданного дифференциального уравнения с указанными параметрами. Экспертная система вместе с библиотекой для генерации нейронных сетей оформлена в виде Python пакета DEGANN.
Библиотека DEGANN и соответствующий Python-пакет для работы с данной библиотекой свободно доступны здесь: https://github.com/ Krekep/degann и https://pypi.org/project/degann/.