Задать вопрос
@BashkaMen
C# программист

Генетический алгоритм. Как делается жизнь?

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

Расскажу немного о себе
Я программирую уже около 5 лет 3 года их них на C# мне всегда нравилось делать ботов, но последнее время много смотрю о обучении машин и наткнулся на генетический алгоритм.
Я разобрался и реализовал генетический алгоритм который собирает указанное слово, но больше похоже на подбор с оценкой, но не суть.
Я наткнулся на такое https://www.youtube.com/watch?v=SfEZSyvbj2w

И вроде мне все понятно как реализовано но не понятна одна мелочь. У них 64 слота действий, как я понял действия делаются по порядку и тут у меня возникли вопросы:
1. Если в мире все рандомно, а оно делает все по списку, выживать оно не научится, или каким образом выполняются команды?
2. Когда команды заканчиваются, список начинается заново? если да то тогда я тем более не пойму как они все же "учатся" ибо одни и те же действия в одном и том же порядке
3. Есть ли условия между условиями? Например у него есть команда "посмотри туда" эта команда по идее может вернуть нам новую команду в зависимости от того что "там" есть или это нарушит принцип генетического алгоритма.
  • Вопрос задан
  • 2186 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 4
@MadridianFox
Web-программист, многостаночник
1) да, рандомно, но теоретически существует такой алгоритм (последовательность команд), которая позволяет организму выживать как можно дольше в этом рандомном мире. Ну например: если сделать последовательность ходов такой, что траектория движения будет покрывать как можно большую площадь, и разбавить её операциями поедания с разных сторон, то шансы организма на выживание гораздо выше чем у организма, который ходит в одну сторону и ожидает пищу только слева.
2) Да, последовательность команд зациклена. Дело в том, что обучение производит не организм, а... программа, которая отбирает те организмы, которые выжили. Малая часть выбранных и размноженных организмов подвергается мутации, т.е. их последовательность команд изменяется. если изменение удачное, то этот организм, вероятно, попадёт в следующее поколение, и организмов с такой мутацией станет больше. Повторяя это много раз можно найти оптимальный алгоритм поведения бота. Скорее всего он будет коррелировать с алгоритмом генерации мира.
3) генетическое программирование это... не конкретный алгоритм, это скорее идея, которая имеет обязательные для выполнения шаги, но каждый шаг можно реализовать совершенно различными способами. Условия и команды здесь могут быть какими угодно, это всего лишь описание среды в которой производится оптимизация.
Ответ написан
@evgeniy_lm
Генетический алгоритм по сути это и есть подбор с оценкой, но в отличии от тупого перебора создаются несколько наборов данных (популяция) из них выбираются те у которых значение целевой функции лучшие. Затем из выбранных наборов данных (особей) формируются новые особи путем скрещивания, объединения частей данных (генов). Все повторяется до тех пор пока не будет достигнут результат. Так же каждое новое поколение должно мутировать, необходимо вносить изменения в гены случайным образом. Это необходимо чтобы не возникло вырождение популяции т.е. может возникнуть ситуация когда следующее поколение будет хуже предыдущего

Твое видео не очень хорошо иллюстрирует суть ГА. Это видео более грамотное
Ответ написан
Комментировать
@xdgadd
ML/Python/Cpp
Это почти нейронка. Представьте, что каждое число в ячейке - это коэффициент 64х мерной прямой. По сути, здесь происходит аппроксимация функции оптимального поведения с помощью генетических алгоритмов.
Ответ написан
Комментировать
@SolidMinus
генетические алгоритмы - это не алгоритмы обучения, это алгоритмы оптимизации. Наподобии градиентного спуска, адама и прочих. И, к слову, один из самых неэффективных. Он просто очень красиво показывает эволюцию и не более. Хотите заниматься машинным обучением - почитайте про стохастический градиентный спуск, градиентный бустинг, рандомные леса, и SVM-машины. Ну и про нейронки почитайте. но только после всего этого
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы