Первая лекция демонстрирует принципы работы генетических алгоритмов. Кстати, еще в домашней работе Михаил решил попробовать делать генетику не на двух родителях, а на трех. Это результат Михаилу очень понравился. Но углубляясь в саму задачу при подготовке вебинара, удалось наглядно показать, что намного эффективнее работает генетика не на двух родителях, а на большем количестве лучших! И это удалось показать и доказать(!), применив хитрость! Михаил применил генетику к генетике.
Да - генетику к генетику - это примерно как студенты применяли генетику к поиску лучшей нейронной сети на лекции УИИ. И подобный поиск наглядно показал, что генетический алгоритм эффективнее на многих лучших родителях, что приближает его к поиску частных производных в нейронной сети. Далее стало понятно, что у генетики в ряде задач есть минус. И это скорость!
При подготовке первой лекции Михаила озадачил данный вопрос. Обычно генетика считается циклами, и их так много, что не позволяет ускорить процесс. Изучив подробнее, ему удалось переписать алгоритм генетики в основном на методах numpy, что само по себе работает быстрее, но может быть еще ускорено через numba. А далее остается только сделать прямой шаг от numpy-массива к тензорам и уже считать генетику на графических ускорителях. Также в первой лекции удалось показать, как можно строить генетику на мегапопуляциях и делать соревнования более сложными.
Многое из первой лекции было важным шагом, прологом ко второй лекции. Вторая лекция была посвящена генетическому алгоритму для поиска нейронной сети. Ранее в домашнем задании Михаилу удалось построить алгоритм для поиска случайной НС. Результат впечатлил Михаила, и он решил развивать его при подготовке к лекции. Во время подготовки к лекции удалось решить много задач, которые являются шагами в более амбициозном проекте "Эволюционной машины", над котором время от времени работает Михаил.