Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Evolutionary Algorithms

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

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

Как работают эволюционные алгоритмы#

Все EA состоят из одних и тех же элементов:

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

В машинном обучении (ML) функцией приспособленности часто служит метрика валидации, например точность или средняя точность (mAP). Поэтому оценка кандидата включает обучение и тестирование модели — это, безусловно, самый затратный этап. Цикл повторяется, пока не закончится бюджет или не прекратится улучшение функции приспособленности:

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

Основные типы эволюционных алгоритмов#

  • Генетические алгоритмы (GA): кандидаты кодируются строками, часто битовыми, а основную роль играет скрещивание. Джон Холланд изложил их основы в своей книге Adaptation in Natural and Artificial Systems, опубликованной в 1975 году.
  • Эволюционные стратегии (ES): оптимизируют векторы вещественных чисел с помощью гауссовых мутаций, шаг которых адаптируется в ходе выполнения. CMA-ES, который обучается полной ковариации распределения мутаций, — один из лучших универсальных методов для непрерывных задач с черным ящиком.
  • Генетическое программирование: эволюционным путем создает программы или математические выражения, представленные в виде деревьев. Применяется для символьной регрессии и автоматического проектирования программ.
  • Нейроэволюция: эволюционным путем оптимизирует веса, а иногда и структуру нейронных сетей. В 2017 году OpenAI показала, что стратегии эволюции, выполняемые более чем на тысяче параллельных рабочих процессов, могут за 10 минут обучить трехмерного человекоподобного робота ходить. Это масштабируемая альтернатива обучению с подкреплением.

Генетический алгоритм в коде#

Задача о рюкзаке состоит в том, чтобы выбрать предметы с максимальной суммарной ценностью, не превышая ограничения по весу. Это дискретная задача без градиента. Этот генетический алгоритм на NumPy эволюционирует 50 геномов в виде битовых строк — по одному биту на предмет — с помощью турнирного отбора, равномерного скрещивания, побитовой мутации и элитизма, а затем сверяет ответ со всеми 1,048,576 возможными наборами предметов:

import itertools

import numpy as np

rng = np.random.default_rng(0)
# Knapsack problem: pick from 20 items to maximize total value within a weight limit of 200
values, weights, limit = rng.integers(10, 100, 20), rng.integers(5, 50, 20), 200


def fitness(pop):
    """Return each selection's total value, or 0 if it exceeds the weight limit."""
    return np.where(pop @ weights <= limit, pop @ values, 0)


population = rng.random((50, 20)) < 0.2  # 50 random genomes, one bit per item
for generation in range(100):
    scores = fitness(population)
    # Tournament selection: each parent is the better of two random genomes
    pairs = rng.integers(50, size=(50, 2))
    parents = population[np.where(scores[pairs[:, 0]] > scores[pairs[:, 1]], pairs[:, 0], pairs[:, 1])]
    # Uniform crossover with the next parent, then flip each bit with probability 0.05
    children = np.where(rng.random((50, 20)) < 0.5, parents, np.roll(parents, 1, axis=0))
    children ^= rng.random((50, 20)) < 0.05
    children[0] = population[scores.argmax()]  # elitism: keep the best genome
    population = children

all_selections = np.array(list(itertools.product([0, 1], repeat=20)))
print(f"GA best: {fitness(population).max()}, true optimum: {fitness(all_selections).max()}")

Он выводит GA best: 811, true optimum: 811. Алгоритм нашел оптимальный набор после 5,000 оценок приспособленности — это около 0.5% от миллиона вариантов, которые пришлось бы проверить полным перебором.

Эволюционная настройка гиперпараметров#

Параметры обучения, такие как скорость обучения, веса функции потерь и интенсивность аугментации, взаимодействуют непредсказуемым образом, а оценка каждого кандидата требует полного цикла обучения. Поэтому для этой задачи хорошо подходит эволюционный поиск. Метод tune() в Ultralytics YOLO использует такой подход для моделей YOLO26: на каждой итерации выбирается родитель из девяти лучших конфигураций на данный момент с вероятностью, пропорциональной функции приспособленности, затем примерно половина из 26 гиперпараметров пространства поиска по умолчанию мутирует с помощью гауссовых шагов, масштабированных по диапазонам поиска. После этого обучается модель и записывается ее показатель приспособленности — mAP50-95 для обнаружения объектов. После 30 результатов часть мутаций также начинает учитывать ковариацию 20% лучших конфигураций. Этот прием заимствован из CMA-ES. В руководстве по настройке гиперпараметров указано полное пространство поиска:

from ultralytics import YOLO

# Загрузи предварительно обученную nano-модель YOLO26
model = YOLO("yolo26n.pt")

# Эволюционная настройка гиперпараметров: 30 итераций, на каждой обучается одна мутировавшая конфигурация в течение 10 эпох
model.tune(data="coco8.yaml", epochs=10, iterations=30, plots=False)

Настройщик записывает каждую конфигурацию и ее показатель приспособленности в tune_results.ndjson, а лучшую конфигурацию сохраняет в best_hyperparameters.yaml. Ее можно передать в полноценный цикл обучения.

Другие области применения#

  • Поиск архитектур нейронных сетей: AmoebaNet от Google была получена с помощью регуляризованной эволюции — EA с турнирным отбором, который исключает самые старые модели, а не худшие. В 2018 году AmoebaNet достигла точности top-1 83.9% на ImageNet.
  • Инженерное проектирование: в 2006 году в рамках миссии NASA Space Technology 5 использовали антенну X-диапазона, спроектированную компьютером эволюционным методом. Ее причудливая форма изогнутой проволоки обеспечивала характеристики, сопоставимые с антенной, спроектированной традиционным способом.
  • Открытие алгоритмов: AlphaEvolve, о котором Google DeepMind объявила в мае 2025 года, объединяет модели Gemini, предлагающие изменения кода, автоматические средства оценки и эволюционную базу программ. Одна из эвристик планирования, разработанных этим методом для центров обработки данных Google, позволяет в среднем высвобождать 0.7% мировых вычислительных ресурсов компании.
  • Градиентный спуск: использует градиент дифференцируемой функции потерь и гораздо эффективнее при обучении весов сети с миллионами параметров. EA подходят для задач с небольшим числом параметров, дорогостоящими оценками или отсутствием градиента.
  • Роевой интеллект: методы, такие как оптимизация роя частиц, перемещают по пространству поиска набор взаимодействующих агентов. Каждый агент корректирует свое положение на основе собственных лучших результатов и результатов соседей; при этом нет смены поколений, скрещивания или мутации.
  • Байесовская оптимизация: строит вероятностную модель целевой функции и выбирает следующий эксперимент в точке, где модель ожидает наибольшее улучшение. На небольших гладких пространствах поиска этот метод требует меньше оценок, чем EA, но хуже масштабируется на большое число параметров и параллельных рабочих процессов.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

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

Компьютерное зрение в аэрокосмической отрасли

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

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

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

Компьютерное зрение в логистике

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

Компьютерное зрение в розничной торговле

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

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

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

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения