Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Сфера искусственного интеллекта показательна тем, что здесь успешно развиваются множество проектов с открытым исходным кодом. Это отличная тенденция, поскольку позволяет сторонним исследователям лучше понять особенности работы моделей, использовать их в собственных разработках в области ИИ или применять для обработки данных в своей предметной сфере.
Уделяя много внимания подготовке специалистов и развитию проектов в области искусственного интеллекта, Университет ИТМО поддерживает этот курс на открытость. В этой статье мы собрали небольшую подборку уже реализованных библиотек с открытым исходным кодом, предназначенных для решения различных задач машинного обучения. Сотрудники лабораторий ИТМО создают универсальные решения, не ограниченные своей предметной областью. И готовы развивать их, расширяя спектр возможных применений.
Все эти проекты написаны на Python с использованием стандартного стека технологий для задач обработки данных и графов: numpy, scipy, networkx. Их можно найти на GitHub и даже поучаствовать в дальнейшем развитии.
GOLEM — оптимизация графовых структур
Граф как способ представления данных широко используется не только в разработке, но и в других предметных областях. Графовые структуры позволяют описывать математические модели (пайплайны машинного обучения, уравнения, вероятностные модели) и структуру физических объектов (дамбы, волнорезы, мосты) или их динамику (от поведения клеточных автоматов до движения манипуляторов роботов).
Хотя задачи, сводящиеся к применению графов, относятся к различным сферам, проблема поиска подходящей структуры и ее оптимизации с точки зрения логики выглядит везде одинаково (и, откровенно говоря, проблема это не новая). Для ее решения в ИТМО разработали библиотеку GOLEM (Graph Optimization and Learning by Evolutionary Methods). Она позволяет строить и оптимизировать композитные графовые структуры, в том числе довольно экзотические, например, совмещающие байесовские сети, алгоритмы машинного обучения и дифференциальные уравнения.
В отличие от аналогичных нишевых разработок, библиотека ориентирована на универсальное применение в любых предметных областях, где может потребоваться оптимизация графовых структур — в робототехнике, ИИ, инженерном проектировании. Используемые в ней алгоритмы не привязаны к конкретным задачам. А сама библиотека включает в себя ядро с алгоритмами оптимизации и набор модулей специализации под конкретные предметные области, которые обеспечивают кастомизацию под конкретную задачу.
Основа ядра — эволюционный алгоритм поиска графов. Библиотека обеспечивает автоматическое обучение моделей, поддерживая различные стратегии обучения —эволюционные, роевые, жадные.
О примененных в библиотеке алгоритмах можно прочитать по ссылке: https://doi.org/10.1016/j.future.2021.08.022.
Ниже показаны пример оптимизации структуры графа (для синтетической задачи) и архитектура библиотеки.
Библиотека GOLEM — проект исследовательского центра "Сильный искусственный интеллект в промышленности" (ИЦ СИИП) ИТМО, реализуемый командой ученых, разработчиков и студентов-стажеров, в которую входят Григорий Киргизов, Любовь Ямщикова (студент магистратуры факультета цифровых трансформаций), Майя Пинчук (студент бакалавриата факультета информационных технологий и программирования) и к. т. н., руководитель группы научно-технического развития исследовательского центра Николай Никитин.
У библиотеки уже есть первый стабильный релиз, который используется в некоторых проектах ИТМО. GOLEM позволяет сократить время, необходимое на поиск подходящих моделей. В частности, библиотека применяется во фреймворках автоматического машинного обучения FEDOT и структурного обучения байесовских сетей BAMT — проектах той же NSS Lab, которые имеют и коммерческие применения.
Продолжается активная работа по развитию функциональности библиотеки. Создатели планируют расширить спектр модулей специализации под предметные области, а также включить в библиотеку иные методы оптимизации. Адаптивный эволюционный алгоритм мог бы подсказать, какие мутации будут эффективными для заданной предметной области и параметров искомого графа. Однако здесь еще требуется проверка некоторых гипотез.
Познакомиться с проектом можно по ссылке: https://github.com/aimclub/GOLEM. В него можно внести свой вклад: помочь как с задачами по разработке, так и с постановками экспериментов. Кроме того, группа заинтересована в обсуждении научного сотрудничества и применении библиотеки в новых прикладных областях.
GEFEST — генеративный дизайн физических объектов
В одной из предыдущих статей мы рассказывали о применении генеративного дизайна для сокращения веса цилиндрических лопастей ветрогенератора на эффекте Магнуса. Но в том проекте речь шла об оптимизации готовой структуры — ее нужно было просто улучшить (облегчить). С такими задачами справляются многие инструменты, например, средства для генеративного дизайна от Autodesk. А вот для решения задачи с нуля, то есть оптимизации структуры и расположения нового объекта, в ИТМО разрабатывают библиотеку GEFEST (Generative Evolution For Encoded STructures). Ее задача — проработка физических объектов “с чистого листа” под конкретные внешние условия, а именно — сокращение затрат времени на начальные этапы проектирования, а заодно расширение пространства поиска возможных решений.
Фреймворк универсален, он позволяет разработать все, что можно поместить в сплошную среду. При этом GEFEST предназначен для геометрического проектирования на разных масштабах. На макроуровне это может быть создание волнозащитных сооружений или оптимизация планировки нефтяного месторождения. На микроуровне — разработка структуры искусственной селезенки, имеющей размеры порядка микрометров (все примеры— из реальных применений GEFEST).
В основе GEFEST — эволюционные алгоритмы. В библиотеке реализованы модули вычислительной геометрии, работы с полигональными структурами, “коннекторы” для различных моделей, а также блок оптимизации. Ускорение достигается за счет применения методов глубокого обучения для быстрого порождения решений и предсказания значений целевой функции.
Фреймворк позволяет подключать внешние модели динамики сплошных сред, а также глубокие нейросети для суррогатного моделирования целевой функции. Кроме того, планируется интегрировать ее с описанной выше библиотекой GOLEM.
Разработкой библиотеки занимается Николай Никитин, а также студенты магистратуры факультета цифровых трансформаций и одновременно сотрудники NSS Lab ИТМО — Никита Стародубцев и Денис Сидоренко.
Научная группа выпустила статью, где описаны алгоритмы GEFEST и продемонстрирована их эффективность для ряда прикладных задач в Q1-журнале Engineering Applications of Artificial Intelligence (Starodubcev N. O. et al. Generative design of physical objects using modular framework //Engineering Applications of Artificial Intelligence. – 2023. – Т. 119. – С. 105715.).
Hidden text
Про частные применения фреймворка можно почитать:
Grigorev G. V. et al. Single Red Blood Cell Hydrodynamic Traps via the Generative Design //Micromachines. – 2022. – Т. 13. – №. 3. – С. 367. Статья посвящена оптимизации “искусственных селезенок”. Опубликована совместно с представителями Беркли (University of California in Berkeley) и ряда других университетов.
Starodubcev N. O., Nikitin N. O., Kalyuzhnaya A. V. Surrogate-Assisted Evolutionary Generative Design Of Breakwaters Using Deep Convolutional Networks //2022 IEEE Congress on Evolutionary Computation (CEC). – IEEE, 2022. – С. 1-8.и статья описывает решение задачи суррогатной оптимизации волнозащитных сооружений.
Репозиторий проекта: https://github.com/aimclub/GEFEST. Текущую версию библиотеки уже можно использовать при решении конкретных инженерных задач. Но активное развитие продолжается: API для конечного пользователя и документация еще будут дорабатываться. Еще одно направление работы — повышение алгоритмической эффективности для конкретных прикладных задач.
Проект развивается за счет гранта РНФ для молодых ученых, полученного в 2022 году. Группа открыта для научного взаимодействия и вклада в библиотеку со стороны сообщества.
iOpt — контролируемый подбор гиперпараметров для МL
Целевые метрики качества алгоритмов машинного обучения могут существенно варьироваться в зависимости от начальных параметров. Так что перед исследователями стоит задача выбора оптимального набора этих параметров, и она актуальна в любой предметной области, где в принципе применяется машинное обучение — и в математике, когда нужно адаптировать модели под имеющиеся данные, и в рамках исследований в области ИИ, когда нужно добиться максимально возможного качества используемых методов. Для подбора оптимальных параметров в ИЦ СИИП разработали фреймворк iOpt, который помогает выбирать их значения в рамках широкого класса процессов и алгоритмов, например для методов машинного обучения или эвристической оптимизации.
Как и две предыдущие библиотеки, iOpt ориентирована на широкий класс процессов и алгоритмов, в то время как существующие аналоги в основном предназначены для решения специализированных задач.
Попытки создать универсальное решение уже предпринимались. Но в отличие от реализованных инструментов, где для выбора гиперпараметров сложных моделей машинного обучения были использованы имитационные алгоритмы, iOpt основана на не зависящих от предметной области подходах — на идее липшицевой глобальной оптимизации — и позволяет искать оптимальные параметры за приемлемое время (даже в сложных случаях). При этом для решения задачи используется схема редукции размерности на основе кривых, заполняющих пространство (кривых Пеано), специальные правила выбора перспективных и отсеивания бесперспективных подобластей поиска, а также процедуры локального уточнения найденной оценки глобального оптимума.
Про алгоритмы, использованные в библиотеке, можно прочитать по ссылке: https://doi.org/10.1007/978-1-4615-4677-1.
На данный момент фреймворк работает только с оптимизацией непрерывных параметров. В будущем планируется расширить ее возможности на задачу подбора значений из дискретного множества и задействовать параллельные вычисления, так как решение прикладных задач требует больших вычислительных ресурсов.
Основная разработка iOpt ведется сотрудниками, совмещающими работу в ИТМО и ННГУ им. Н.И. Лобачевского. В составе команды — Александр Сысоев, Евгений Козинов, Илья Лебедев, Антон Штанюк, Марина Усова, Денис Карчков, Дарья Черных, Янина Силенко, Денис Родионов и Виктор Москаленко. Также в работе участвуют и студенты ИТМО — например, Любовь Ямщикова, решающая задачу интеграции iOpt и фреймворка FEDOT.
Репозиторий проекта: https://github.com/aimclub/iOpt. Библиотека готова к использованию, в том числе коммерческому, но продолжает развиваться.