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

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

А теперь представьте себе это, но с искусственным интеллектом…! Не волнуйтесь, это не означает, что роботы будут развиваться и захватывать людей ... Это означает, что мы можем использовать эту способность ИИ для развития самих себя. Как и люди, генетический алгоритм позволяет ИИ развиваться и использовать конкуренцию (выживание наиболее приспособленных) в качестве движущей силы для достижения цели.

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

При реализации этого в реальной программе у нас есть определенная совокупность (в данном случае кластер точек). В этой группе мы хотим определить лучших из лучших, увидев, насколько хорошо они достигают своей цели. В этом случае все точки запрограммированы для достижения одной и той же цели - достичь красной точки в верхней части экрана. Функция фитнеса - это то, что мы используем для вызова точек, которые приближают его к красной точке, не задевая препятствие (синяя линия). В эволюции естественный отбор - это когда «лучшие» и более адаптированные организмы выживают и размножаются. Это тот же процесс, который используется в генетическом алгоритме; точки с наивысшей функцией приспособленности выживают и воспроизводятся. Это сделано для того, чтобы будущие поколения точек лучше достигли своей цели и избавились от всех точек, которые находятся в худшем состоянии и не адаптированы к окружающей среде (извините!: /). Теперь, с новым поколением, мы просто продолжаем повторять процесс естественного отбора, и все больше и больше точек популяции смогут без труда добраться до красной точки.

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

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

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

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

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

Вот видео с основным кодом и живая демонстрация программы, если вы хотите ее проверить: https://youtu.be/jDV1VgdrTeg