ДонНТУ   Портал магистров

Реферат по теме выпускной работы


Данный реферат относится к ещё незавершенной работе. Примерная дата завершения: февраль 2026г. Обращайтесь к автору после указанной даты для получения окончательного варианта

Содержание

Введение

Эффективность моделей машинного обучения критически зависит от корректного выбора гиперпараметров: скорости обучения, количества и размеров слоев нейронной сети, коэффициентов регуляризации, типа оптимизатора и многих других [1]. Ручной перебор таких параметров (Grid Search) на многомерных пространствах configurations требует prohibitively больших вычислительных ресурсов и времени, что делает его практически неосуществимым для сложных задач.

Базой для создания производительной модели часто является эвристический опыт и интуиция специалиста по data science, которые нарабатываются годами практики. Однако этот процесс неформализуем, субъективен и не гарантирует нахождения глобального оптимума. В частности, для новых архитектур моделей или уникальных datasets даже эксперты оказываются в ситуации, когда пространство поиска неизвестно, и его исчерпывающая проверка невозможна.

Качество итоговой модели напрямую зависит от вычислительных мощностей, временных затрат и perseverance инженера. Человеческий фактор, усталость и необходимость параллельно вести несколько экспериментов часто lead к принятию субоптимальных решений и преждевременной остановке tuning process.

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

1. Актуальность темы

Актуальность автоматизации процесса подбора гиперпараметров машинного обучения с помощью генетических алгоритмов заключается в нескольких ключевых аспектах [3]:

  1. Повышение качества моделей. Использование генетических алгоритмов позволяет значительно улучшить итоговые показатели нейронных сетей и других ML-моделей, так как эволюционный процесс нацелен на нахождение глобального оптимума, что снижает риск застревания в локальных решениях.
  2. Снижение зависимости от экспертов. Автоматизация настройки гиперпараметров уменьшает роль субъективного выбора и интуиции специалистов по data science, что делает процесс более формализованным и воспроизводимым даже в условиях отсутствия большого опыта.
  3. Экономия ресурсов. Генетические алгоритмы обеспечивают более эффективный поиск в высокоразмерных пространствах параметров по сравнению с методами полного перебора (Grid Search), что существенно сокращает временные и вычислительные затраты.
  4. Устойчивость к росту сложности. В условиях стремительного развития машинного обучения и появления новых архитектур моделей генетические алгоритмы легко адаптируются к расширению пространства гиперпараметров, обеспечивая масштабируемое решение для задач оптимизации.
  5. Снижение человеческого фактора. Автоматизация минимизирует влияние усталости, субъективных ошибок и преждевременной остановки экспериментов, что особенно важно при параллельной работе с большим числом моделей.

2. Генетические алгоритмы для автоматизации поиска архитектурных нейронных сетей

2.1 Задачи поиска оптимальной архитектуры нейронной сети

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

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

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

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

Таблица 2.1 – Гиперпараметры алгоритмов машинного обучения

Алгоритм Гиперпараметры Описание
Линейная регрессия Коэффициент регуляризации Избегает переобучения модели
Метод оптимизации Влияет на эффективность обучения
Логистическая регрессия Параметр регуляризации Балансирует точность и обобщение
Скорость обучения Определяет шаг изменения весов
Количество итераций Определяет максимальное число итераций обучения
Нейронные сети Количество слоёв Влияет на способность обучаться сложным паттернам
Количество нейронов в слое Влияет на вычислительную сложность
Функция активации Влияет на нелинейность и обучаемость
Скорость обучения Регулирует изменение весов модели
Параметр регуляризации Предотвращает излишнюю сложность модели
Метод опорных векторов Параметр регуляризации Балансирует сложность модели и ошибки
Ядро Трансформирует данные для улучшения разделимости
Параметры ядра Контролирует гибкость модели
Деревья решений Глубина дерева Ограничивает уровни дерева, предотвращая переобучение
Минимальное количество образцов в листе Помогает избежать подгонки к шуму
Минимальное количество образцов для разделения Контролирует переобучение
Случайный лес Количество деревьев Влияет на точность предсказаний
Максимальная глубина дерева Ограничивает глубину каждого дерева
Минимальное количество образцов в листе Предотвращает мелкие разделения
Максимальное количество признаков для разделения Помогает снизить переобучение
k-средних Количество кластеров Влияет на точность кластеризации
Инициализация центроидов Влияет на сходимость алгоритма
Максимальное количество итераций Ограничивает шаги до завершения алгоритма
Генетические алгоритмы Размер популяции Влияет на разнообразие решений и скорость эволюции
Вероятность мутации Влияет на исследовательский процесс
Вероятность кроссовера Определяет вероятность обмена генетической информацией
Количество поколений Определяет количество поколений для оптимизации

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

При проектировании архитектуры нейронной сети важно учитывать ограничения, такие как доступные вычислительные ресурсы, время обучения и целевые показатели производительности, что определяет баланс между точностью, скоростью работы модели и затратами на её реализацию, а именно [5]:

  1. Ограничения по аппаратным ресурсам (GPU, CPU, RAM) влияют на сложность модели и время оптимизации. Сложные архитектуры требуют больших вычислительных мощностей и памяти, что важно учитывать при ограниченных ресурсах.
  2. Временные ограничения на обучение модели особенно критичны в приложениях с требованием к регулярному обновлению или обработке данных в реальном времени. Это влияет на выбор методов оптимизации, предпочитая более эффективные подходы, такие как генетические алгоритмы или байесовская оптимизация.
  3. Производительность модели оценивается по точности, времени отклика и эффективности использования ресурсов. Ограничения по этим показателям требуют выбора оптимальных гиперпараметров и архитектуры для достижения нужных результатов.

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

2.2 Кодирование архитектуры нейронной сети для генетического алгоритма

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

На рисунке 2.1. представлена структура искусственной нейронной сети и хромосомы, которая кодирует её архитектуру и связи для применения генетического алгоритма.

Структура хромосомы

Рисунок 2.1 – Структура хромосомы

Элемент (a) показывает топологию сети, где каждый узел представляет нейрон, а стрелки обозначают связи между ними, отражая их организацию и направление передачи сигналов. Элемент (б) отображает структуру хромосомы, которая содержит информацию о нейроне, где, например, «N5» – это идентификатор нейрона, «вход 2» обозначает количество входов, а «выход 1» – количество выходов. В свою очередь, элемент (в) представляет структуру хромосомы, которая кодирует данные о связях между нейронами, где «в N5» указывает, что связь ведёт к нейрону N5, «входной порт 1» обозначает входной порт, а «из N3» показывает, что нейрон N3 является источником.

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

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

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

Гиперпараметры также важны для эффективной работы нейронной сети, и их можно закодировать в генах хромосомы [7]. Например, коэффициент обучения, который регулирует скорость обновления весов модели, может быть представлен как вещественное число, указывающее величину шага при оптимизации. Для этого ген может быть вещественным числом, которое будет варьироваться в процессе эволюции. Также можно закодировать параметры регуляризации, такие как коэффициенты L2 или L1 регуляризации, которые будут препятствовать переобучению и улучшать обобщающую способность модели.

Для функций активации, таких как ReLU, Sigmoid или Tanh, генетический код может использовать категориальные переменные, которые указывают, какая именно функция будет применяться в каждом слое. Это позволяет гибко настроить каждый слой сети, выбирая наиболее подходящую функцию активации для различных типов данных.

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

2.3 Основные этапы генетического алгоритма для поиска архитектур

На начальном этапе генетического алгоритма создается набор случайных архитектур нейронных сетей, который будет служить основой для дальнейшего поиска. Эти случайные архитектуры обеспечивают разнообразие начальных решений, что важно для эффективного поиска оптимальной архитектуры [8].

Каждая из архитектур оценивается с помощью фитнес-функции, которая измеряет её производительность и эффективность. Оценка может включать такие критерии, как точность на валидационном наборе данных, время обучения и ресурсоемкость. Этот этап позволяет определить, какие из архитектур являются более подходящими для задачи.

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

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

Операция одноточечного кроссовера заключается в выборе точки пересечения двух родительских хромосом. После этой точки происходит обмен генами, так что один потомок наследует часть генов от первого родителя до точки пересечения и оставшуюся часть от второго, а второй потомок – наоборот. Этот процесс помогает создавать генетическое разнообразие в популяции, увеличивая вероятность нахождения более оптимальных решений.

Мутация – это случайное изменение некоторых генов хромосомы с целью увеличения разнообразия в популяции. Мутация помогает избежать застревания алгоритма в локальных минимумах, способствуя исследованию новых решений, которые могли бы быть упущены в процессе кроссовера. Это расширяет пространство возможных решений и улучшает результаты поиска оптимальных параметров.

После выполнения операций кроссовера и мутации создается новая популяция, состоящая из потомков [9]. Стратегия построения популяции направлена на поддержание разнообразия архитектур, что важно для избегания переобучения и поиска более глобальных решений. В процессе формирования новой популяции могут быть использованы методы отбора лучших особей, такие как элитаризм, при котором сохраняются лучшие решения из предыдущего поколения для дальнейшей эволюции. Это помогает сохранять качественные решения, одновременно позволяя исследовать новые, потенциально более эффективные архитектуры нейронных сетей.

На рисунке 2.2. показан процесс генерации фитнес-функции и её использование в генетическом алгоритме для эволюции нейронных сетей. На начальном этапе генетического алгоритма создается набор случайных архитектур нейронных сетей, который будет служить основой для дальнейшего поиска. Эти архитектуры оцениваются с помощью фитнес-функции, которая измеряет их производительность, точность и другие параметры.

Генерация фитнес-функции и эволюция программы

Рисунок 2.2 – Генерация фитнес-функции и эволюция программы

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

2.4 Преимущества генетических алгоритмов в задачах оптимизации

Генетические алгоритмы представляют собой класс методов оптимизации, основанных на принципах естественного отбора и эволюции, что делает их мощным инструментом для решения сложных многопараметрических задач [10]. В частности, они обладают рядом преимуществ, которые способствуют их широкому применению в различных областях науки и техники.

Одним из ключевых достоинств генетических алгоритмов является их способность эффективно решать многопараметрические задачи оптимизации (см. табл. 2.2). В таких задачах необходимо найти оптимальное решение в пространстве с большим количеством переменных, что традиционные методы часто не способны решить за разумное время, особенно при сложной нелинейности зависимостей и высоких размерностях [11].

Таблица 2.2 – Преимущества генетических алгоритмов

Преимущество Описание Область применения Преимущества для сложных задач Потенциальные ограничения
Гибкость и универсальность Могут решать задачи с различными типами функций цели Оптимизация маршрутов, проектирование, финансовые модели Подходят для задач с различными функциями цели Проблемы с жесткими ограничениями
Глобальный характер поиска Обеспечивают глобальный поиск, избегая локальных минимумов, находя лучшие решения в сложных пространствах Задачи с множеством локальных экстремумов, например, в технике или биоинженерии Эффективный поиск глобального оптимума Большее время сходимости
Параллельность и распределенность Оценка каждого индивида независимо позволяет ускорить процесс поиска через параллельные вычисления Задачи с большими данными, например, обучение машинного обучения Ускоряет поиск решений в многопараметрических задачах Требуется высокая вычислительная мощность
Интерактивность и адаптивность Адаптация к изменяющимся условиям задачи в процессе решения Динамическая оптимизация, прогнозирование, управление запасами Гибкость в решении задач с изменяющимися условиями Может требоваться настройка для быстрой сходимости

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

В сравнении с другими методами оптимизации можно выделить следующие особенности генетических алгоритмов [12]:

  1. Одним из основных ограничений градиентного спуска является его зависимость от выбора начальной точки и возможность попадания в локальные минимумы, что особенно проблематично в задачах с нелинейными функциями цели или многими экстремумами. Генетические алгоритмы, напротив, не требуют наличия градиента и могут эффективно искать решения в глобальной области.
  2. Локальные методы оптимизации, такие как алгоритмы Ньютона или квази-Ньютона, хороши для решения задач с гладкими и хорошо определенными функциями, но часто оказываются неэффективными при решении сложных многопараметрических или высокоразмерных задач. Эти методы могут быстро сходиться к локальному оптимуму, не гарантируя нахождения глобального минимума.
  3. В отличие от чисто статистических методов или методов машинного обучения, генетические алгоритмы используют концепции эволюции и отбор, что позволяет им быть менее чувствительными к выбору начальных условий и параметров, чем многие другие подходы. Они способны выявлять неожиданные и непредсказуемые решения, что дает им преимущество при решении задач с большим числом переменных или сложной, неочевидной структурой.
  4. В некоторых случаях для ускорения процесса оптимизации используются метамодели, которые приближают истинную функцию цели. Однако такие методы часто страдают от неточностей и могут привести к субоптимальным решениям. Генетические алгоритмы, выполняя более широкий поиск, могут с большей вероятностью находить оптимальные решения, несмотря на вычислительные затраты.

3. Проектирование программного продукта

3.1 Схема генетического алгоритма

Генетический алгоритм начинается с создания популяции, где каждая особь – это объект определённого класса, унаследованный от списка с атрибутом указанного фитнеса [13]. Для каждой особи создаётся набор значений, которые будут изменяться в ходе эволюции. Сначала популяция инициализируется случайными значениями через функцию, которая вызывает генератор индивидуальных особей.

Далее к каждой особи применяется функция оценки, которая вычисляет её приспособленность. Эта функция возвращает число или кортеж чисел, используемых для сравнения особей между собой. После оценки применяется селекция, где из популяции выбираются кандидаты для размножения на основании их приспособленности. Отобранные особи клонируются, чтобы изменения не затрагивали оригиналы, и к ним применяются генетические операторы.

Скрещивание выполняется двухточечным методом, когда два родителя обмениваются частями своих генов, создавая комбинацию характеристик обоих. После этого на потомков вызывается кастомная мутация, которая случайно изменяет отдельные гены с заданной вероятностью. Мутация может менять числовые значения или целые подсписки генов, что позволяет алгоритму исследовать новое пространство решений.

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

В итоге генетический алгоритм строится как последовательность действий: инициализация популяции, оценка особей, селекция, скрещивание, мутация, обновление популяции и сбор статистики, повторяемые в цикле по поколениям. Это обеспечивает поиск оптимальных решений методом случайного разнообразия, отбора лучших и комбинирования их свойств. На рисунке 3.1. можно наблюдать общую схему генетического алгоритма.

Схема генетического алгоритма

Рисунок 3.1 – Схема генетического алгоритма

3.2 Диаграммы вариантов использования UML

Для того, чтобы понять, какие функциональные возможности будут предоставлены пользователю в модуле – была спроектирована диаграмма вариантов использования UML, которая представлена на рисунке 3.2.

Диаграмма вариантов использования UML

Рисунок 3.2 – Диаграмма вариантов использования UML

Диаграмма показывает одного внешнего актора – «Пользователь», который напрямую инициирует сценарии в трёх функциональных подсистемах: «Генетический алгоритм для MLP», «K-ближайших соседей (KNN)» и «K-средних (K-Means)». Вся модель выстроена слева направо и подчёркивает, что взаимодействие идёт исключительно через пользователя, без промежуточных акторов. Каждая подсистема заключена в отдельный прямоугольник, что визуально отделяет предметные области, но при этом повторяет общий паттерн: сначала данные загружаются, затем настраиваются параметры, после чего запускается вычислительный процесс, который при необходимости можно остановить, а затем доступны результаты и их визуализация.

В блоке для MLP логика опирается на генетический алгоритм как основной способ подбора гиперпараметров. Пользователь загружает CSV-файл, настраивает параметры ГА и запускает эволюцию; остановка предусмотрена отдельным вариантом использования. Результаты MLP и визуализация матрицы ошибок доступны только после запуска ГА, что зафиксировано зависимостями «requires» от сценария выполнения. Раздел «Настроить параметры ГА» раскрыт на четыре включаемых подтемы: отдельно конфигурируется архитектура MLP, отдельно выбираются функции активации, отдельно задаются операторы ГА, и отдельно определяются диапазоны параметров. Такое разбиение на «includes» показывает, что полная настройка состоит из нескольких обязательных частей, каждая из которых может иметь собственные экраны или диалоги, но логически входит в общий шаг подготовки к запуску.

Подсистема KNN дублирует общую композицию, но делает акцент на двух режимах вычислений: прямой запуск метода k-ближайших соседей и запуск генетического алгоритма для подбора его параметров. Зависимости в этой области сделаны таким образом, что предварительная загрузка данных необходима для любого запуска, а последующие действия – визуализация результатов и просмотр лучших параметров – привязаны именно к выполнению ГА для KNN. Это подчёркивает идею, что именно эволюционный поиск формирует «пакет» артефактов для анализа: лучшие k, метрика и схема взвешивания, которые затем можно посмотреть и изобразить. Настройка параметров KNN также детализирована через «includes»: пользователь выбирает метрику расстояния, тип весов и задаёт диапазон k, из которого ГА будет отбирать значения, или который будет использован при переборе в базовом запуске.

В подсистеме K-Means структура аналогична: пользователь загружает данные, настраивает параметры, запускает сам алгоритм или его версию с генетическим поиском, может прервать эволюцию и после этого получает инструменты для визуализации кластеризации и просмотра её метрик. Как и в случае KNN, итоговые действия завязаны на выполнение ГА для K-Means, а не на одиночный запуск алгоритма, что отражено зависимостями «requires». Настройка параметров здесь разворачивается в выбор количества кластеров, способа инициализации центров и критериев остановки, и все три аспекта включены в общий шаг конфигурирования, подчёркивая обязательность их проработки перед запуском.

Помимо пользовательских сценариев в диаграмму введён слой системных вариантов использования, которые не инициируются напрямую пользователем, а «расширяют» ключевые шаги конфигурирования и запуска. Инициализация особи MLP подключается к настройке параметров и отвечает за формирование хромосомы по выбранной архитектуре и диапазонам. Оценка особи, применение операторов ГА, ведение лога выполнения и сохранение результатов расширяют этап запуска, что указывает на автоматическое срабатывание этих процедур в цикле эволюции: каждая популяция оценивается на метриках, к ней применяются селекция, кроссовер и мутация, ход процесса протоколируется, а найденные решения и отчёты сохраняются без дополнительных действий со стороны пользователя. Таким образом, «extends» фиксирует внутреннюю механику, которая сопровождает видимые пользователю шаги и обеспечивает воспроизводимость, трассируемость и сохранность артефактов.

3.3 Проектирование диаграммы компонентов

В данном подразделе с помощью диаграммы компонентов будет спроектирован модуль на физическом уровне (см. рис. 3.3).

Диаграмма компонентов UML

Рисунок 3.3 – Диаграмма компонентов UML

Диаграмма компонентов отражает архитектуру приложения, в центре которого находится основной модуль GeneticAlgorithmApp, связывающий между собой графический интерфейс, алгоритмы машинного обучения, вспомогательные утилиты и специализированные модули для оценки качества решений [14]. Главный компонент выступает в роли связующего ядра, он управляет загрузкой и выполнением функциональных блоков и обеспечивает координацию работы между подсистемами.

Слева направо архитектура выстраивается в виде нескольких пакетов, каждый из которых выполняет определённую роль. Пакет «Tab Modules» содержит три компонента, отвечающие за работу отдельных вкладок интерфейса: mlp_tab, knn_tab и kmeans_tab. Эти модули используют возможности графической библиотеки, чтобы отрисовывать элементы интерфейса, строить графики и связываться с основной логикой приложения. Все три вкладки работают с одинаковым набором внешних зависимостей – библиотек tkinter, customtkinter и matplotlib, – что подчеркивает единую модель построения GUI. Через эти же библиотеки вкладки обеспечивают визуализацию графиков внутри интерфейса с помощью FigureCanvasTkAgg, связанного с matplotlib.

Внутри пакета «Machine Learning» сосредоточены алгоритмы, на которых строится вычислительная часть приложения. Для задач классификации используется MLPClassifier и KNeighborsClassifier, для задач кластеризации – KMeans, а для оценки качества кластеров применяется метрика silhouette_score. Эти компоненты служат строительным материалом, который затем используется в модулях-оценщиках.

Пакет «Evaluation Modules» включает три специализированных компонента: MLPEvaluator, KNNEvaluator и KMeansEvaluator. Каждый из них работает с соответствующим алгоритмом машинного обучения, обеспечивая запуск вычислений, обработку результатов и передачу метрик обратно в основное приложение. При этом модули для MLP и KMeans дополнительно используют silhouette_score для оценки качества моделей, что показывает ориентацию не только на обучение, но и на количественную валидацию результатов.

Важной частью архитектуры является «Operators Module», представленный компонентом GAOperators. Он связан с модулем random, поскольку использует генерацию случайных чисел для операций генетического алгоритма, таких как кроссовер или мутация. Таким образом, данный модуль выполняет ключевую роль в реализации эволюционной оптимизации.

Пакет «Utilities» объединяет вспомогательные библиотеки общего назначения: threading обеспечивает многопоточность и возможность параллельного выполнения задач, time и datetime используются для работы со временем и логированием, random отвечает за стохастические процессы, copy позволяет копировать объекты. Все эти модули напрямую связаны с главным приложением, что указывает на их использование как инфраструктурных инструментов для корректного функционирования алгоритмов и интерфейса.

Пакет «GUI Framework» объединяет инструменты для построения интерфейса. Tkinter и customtkinter реализуют визуальные элементы и взаимодействие с пользователем, matplotlib.pyplot обеспечивает построение графиков, а FigureCanvasTkAgg выступает связующим звеном между matplotlib и окнами tkinter, позволяя интегрировать графическую визуализацию внутрь приложения.

3.4 Проектирование диаграммы классов

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

Диаграмма классов UML

Рисунок 3.4 – Диаграмма классов UML

Диаграмма отражает архитектуру объектно-ориентированной системы, где ядром выступает класс GeneticAlgorithmApp. Он инкапсулирует все ключевые данные, управление жизненным циклом экспериментов и взаимодействие с остальными модулями. У этого класса есть поля, отвечающие за хранение исходных и разделённых на выборки данных, текущую популяцию и лучших особей, инструменты эволюции, текущее поколение и логирование, а также за различные параметры и настройки. Внутри него сосредоточены методы для построения графического интерфейса, создания отдельных вкладок для MLP, KNN и K-Means, загрузки данных, ведения журналов сообщений, построения матриц ошибок, регистрации операторов, запуска и остановки как основного генетического алгоритма, так и эволюции для KNN и K-Means. Сюда же входят методы для инициализации особей, логирования поколений, обновления лучших решений и построения вспомогательных визуализаций. Таким образом, этот класс является управляющим центром, через который проходят все потоки данных и управление процессами.

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

Класс MLPEvaluator реализует логику оценки решений для многослойного перцептрона. Он получает доступ к данным и параметрам через экземпляр основного приложения, а затем предоставляет методы для вычисления качества особи и запуска обучения модели. Аналогично устроен KNNEvaluator, который фокусируется на k-ближайших соседях и обеспечивает запуск оценки конфигураций этого алгоритма. Оба класса связаны с GeneticAlgorithmApp двусторонними ассоциациями: они получают доступ к данным через приложение, а само приложение вызывает их методы для проведения экспериментов.

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

3.5 Проектирование диаграммы взаимодействия

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

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

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

Диаграмма взаимодействия UML

Рисунок 3.5 – Диаграмма взаимодействия UML

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

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

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

Аналогичным образом работает вкладка кластеризации. Пользователь инициирует поиск оптимального числа кластеров, приложение вызывает модуль оценки кластеризации, который подбирает параметры алгоритма K-Means и передает результаты в систему обучения для вычисления качества группировки. Итог визуализируется в интерфейсе как найденные кластеры, что позволяет сравнить полученные группировки с исходным распределением данных.

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

Выводы

В реферате рассмотрены задачи автоматизированного проектирования нейронных сетей и использование генетических алгоритмов для оптимизации их архитектур. Генетические алгоритмы позволяют эффективно искать оптимальные архитектуры нейронных сетей, настраивая гиперпараметры, такие как количество слоёв, нейронов, функции активации и другие, с учётом ограничений по вычислительным мощностям и времени обучения.

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

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

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

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

Список источников

  1. Васильев, А.Н. Тархов Д.А. Принципы и техника нейросетевого моделирования / А.Н. Васильев. – Москва: Наука, 2017. – 999 c.
  2. Галушкин, А. И. Нейрокомпьютеры. Учебное пособие / А.И. Галушкин. – М.: Альянс, 2018. – 528 c.
  3. Гелиг, А. Х. Введение в математическую теорию обучаемых распознающих систем и нейронных сетей. Учебное пособие / А.Х. Гелиг, А.С. Матвеев. – М.: Издательство СПбГУ, 2018. – 224 c.
  4. Кащенко, С. А. Модели волновой памяти / С.А. Кащенко, В.В. Майоров. – М.: Либроком, 2019. – 288 c.
  5. Круглов, В. В. Искусственные нейронные сети. Теория и практика / В.В. Круглов, В.В. Борисов. – М.: Горячая линия - Телеком, 2019. – 382 c.
  6. Соколинский, Л.Б. Машинное обучение / Л.Б. Соколинский. – Лекция № 5: Кафедра системного программирования ЮУрГУ. – 2018. – 19 с.
  7. Хант, Э. Искусственный интеллект / Э. Хант. – М.: Мир, 2018. – 560 c.
  8. Ясницкий, Л. Н. Введение в искусственный интеллект / Л.Н. Ясницкий. – М.: Академия, 2018. – 176 c.
  9. Воронова, Л.И. Machine Learning: регрессионные методы интеллектуального анализа данных: Учебное пособие / Л.И. Воронова, В.И. Вороновю. – МТУСИ. – М., 2018. – 83 с.
  10. Гудфеллоу, Я. «Глубокое обучение» / Я. Гулфедоу, И. Бенджи, А. Курвилль. – пер. с англ. А.А. Слинкина. 2-ое изд., искр. – М.: ДМК Пресс, 2018. – 652 с.
  11. Сабиров, А.И. Компьютерные исследования и моделирование / А.И. Сабиров, А.С. Катасёв, М.В. Дагаева. – 13, 2, 2021. – 429-435.
  12. Емельянов, С.В. Искусственный интеллект и принятие решений / С.В. Емельянов. – Москва: Огни, 2018. – 484 c.
  13. Жданов, А.А. Автономный искусственный интеллект / А.А. Жданов. – М.: Бином. Лаборатория знаний, 2020. – 213 c.
  14. Набродова И.Н., Иванов А. Д. Сравнение способов вычисления производной активации «выпрямитель» при обучении нейронной сети // Известия ТулГУ. Технические науки. – 2018. – №9. – С. 79-84.
  15. Игнатьева С. А. Сравнительный анализ функций активации и их влияние на точность реидентификации людей с использованием сверточных нейронных сетей // Cовременные проблемы математики и вычислительной техники. – Брест: Издательство БрГТУ, 2021. – С. 44-48.