Огромное спасибо за то, что взялись осветить на простых и понятных примерах эту тему! Это огромная мотивация, чтобы наконец-то понять принципы работы ГА!
Спасибо за видео! По вашему примеру попробовал написать генетический алгоритм для поиска минимального покрывающего множества и все получилось. Мне кажется, что на 6:30 отбор трех кандидатов из популяции можно сделать с помощью random.sample. Возможно, так было бы проще.
В строчке 75 у вас есть : mutant[indx] = If mutant[indx] == 1 else 1 Я бы заменил на обычный mutant[indx] = abs(mutant[indx]-1) Так когда у нас 1 то будет | 1-1 |= 0 А когда у нас 0 то будет | 0 - 1 | = 1 Впринцепи тоже самое, просто красивее )
Вы не могли бы пояснить, что означает запятая после return() в определении функции oneMaxFitness? Также для меня необычна нотация последней строки в определении функции mutFlipBit() - ее можно как-то другим (обычным) образом записать? Спасибо
Небольшое дополнение (вдруг кому-то поможет). При RANDOM_SEED = 42 у меня отбор завершается на 33-м поколении: Поколение 33: Макс приспособ. = 100, Средняя приспособ. = 97.59 Результат как в финале видео получается если запустить исходную версию программы (до перезалива).
Здравствуйте, Сергей! Скорее всего, я уже надоел вам своими вопросами, но все же я хотел бы уточнить один момент: если в функциях нет return, то как мы оттуда получаем измененные/новые значения?
Через ссылки на объекты, которые передаем в качестве параметров. Например, если передать список, то он изменяемый объект и если внутри функции его поменять, то он поменяется и в основной программе.
Здравствуйте, спасибо за классные уроки! Я сам разработчик, недавно начал интересоваться нейросетями, посоветуйте пожалуйста литературу для начинающего, чтобы более-менее разобраться в фундаментальных основах. Книг нашел штук 100, но не охота все подряд покупать))
@@СомалиЛеснойдух разве что процесс обучения пользователя) Юпитер - просто удобная среда для Data Science. Там удобно заниматься анализом данных и разработкой ИИ. Но все что касается скриптов - лучше делать в стандартной IDE
Почему при турнирном отборе популяция того же размера получается? Выходит все особи кандидаты в родители или дубликаты образуются чтобы сами с собой размножаться?
Да, при отборе у нас могут получаться одинаковые особи, но мы потом делаем скрещивание и мутацию, так что разнообразие сохраняется, хотя несколько сужается за счет отбраковки худших особей.
странно, у меня не получилось при помощи этого алгоритма достичь максимума и за 100 поколений, хотя на графике устойчивый рост приспособленности. еще: на мой взгляд есть более интересный вариант турнирного отбора: дать КАЖДОМУ индивидууму поучаствовать в турнире с 2 случайными индивидуумами. У автора в турнире участвуют 3 СЛУЧАЙНЫХ индивидуума. В моей версии нет вероятности отбраковки боле приспособленных индивидуумов. еще: в данном примере увеличение вероятности мутации приводит к ускорению приспособленности популяции
А что в этом ущербного? Если руки прямые, можно писать оптимизированный код, который будет исполняться достаточно быстро. Но главной его особенностью является обширный набор библиотек, который позволяет делать удобно и, что самое главное, читабельно, что угодно в области машинного обучения (зачастую эти библиотеки написаны на С), анализа данных и их визуализации. А с использованием чего ещё вы собрались заниматься машинным обучением? C++? Похвально, но там можно застрелиться
Огромное спасибо за то, что взялись осветить на простых и понятных примерах эту тему!
Это огромная мотивация, чтобы наконец-то понять принципы работы ГА!
Это просто нереально) Все доходчиво и понятно, да ещё и код на github. Спасибо!
Просто супер!. Четко. ясно. понятно. Спасибо.
Спасибо за видео! По вашему примеру попробовал написать генетический алгоритм для поиска минимального покрывающего множества и все получилось. Мне кажется, что на 6:30 отбор трех кандидатов из популяции можно сделать с помощью random.sample. Возможно, так было бы проще.
Супер вообще! Спасибо!
очень круто!!!! спасибо
за ролик спасибо, но на код без слез не взглянешь
спасибо за видео!
Спасибо за ролик. Но зачем изобретать велосипед?
Разве deep_copy не сможет клонировать объект?
В строчке 75 у вас есть :
mutant[indx] = If mutant[indx] == 1 else 1
Я бы заменил на обычный mutant[indx] = abs(mutant[indx]-1)
Так когда у нас 1 то будет | 1-1 |= 0
А когда у нас 0 то будет | 0 - 1 | = 1
Впринцепи тоже самое, просто красивее )
можно же просто 1 - mutant[index[
👍
Вы не могли бы пояснить, что означает запятая после return() в определении функции oneMaxFitness? Также для меня необычна нотация последней строки в определении функции mutFlipBit() - ее можно как-то другим (обычным) образом записать? Спасибо
Это основы Python. Если пишем return 1, 2, то создается кортеж.
Пожалуйста, соблюдайте PEP8: названия калассоа в Camel case, функции через _
Небольшое дополнение (вдруг кому-то поможет).
При RANDOM_SEED = 42 у меня отбор завершается на 33-м поколении:
Поколение 33: Макс приспособ. = 100, Средняя приспособ. = 97.59
Результат как в финале видео получается если запустить исходную версию программы (до перезалива).
а какой был сид до перезалива?
Здравствуйте, Сергей! Скорее всего, я уже надоел вам своими вопросами, но все же я хотел бы уточнить один момент:
если в функциях нет return, то как мы оттуда получаем измененные/новые значения?
Через ссылки на объекты, которые передаем в качестве параметров. Например, если передать список, то он изменяемый объект и если внутри функции его поменять, то он поменяется и в основной программе.
@@selfedu_rus большое спасибо за помощь и ответы на возникающие вопросы!
Здравствуйте, спасибо за классные уроки! Я сам разработчик, недавно начал интересоваться нейросетями, посоветуйте пожалуйста литературу для начинающего, чтобы более-менее разобраться в фундаментальных основах. Книг нашел штук 100, но не охота все подряд покупать))
На мой взгляд, лучшая на русском - это Николенко С., Кадурин А., Архангельская Е. Глубокое обучение. - СПб.: Питер, 2018. - 480 с.
@@selfedu_rus Как смотрите на то, чтобы дополнять курсы списком рекомендуемой литературы?
@@sergeyv1534 подумаю
Далее этого канала можно на ютуб не ходить
Можно попросить снять серию видео по работе с Ubuntu?)
У меня нет такого опыта, поэтому не получится.
@@selfedu_rus Эх, очень печально...
Но спасибо тебе за твои старания) всего доброго
@@selfedu_rus а jpyter notebook как обстоят дела?
Потому что в некоторых видео слышал, что это сильно помогает и ускоряет процесс обучения
@@СомалиЛеснойдух разве что процесс обучения пользователя) Юпитер - просто удобная среда для Data Science. Там удобно заниматься анализом данных и разработкой ИИ. Но все что касается скриптов - лучше делать в стандартной IDE
а почему перезалив?
были ошибки в реализации, поправил, теперь вроде все верно :)
Почему при турнирном отборе популяция того же размера получается? Выходит все особи кандидаты в родители или дубликаты образуются чтобы сами с собой размножаться?
Да, при отборе у нас могут получаться одинаковые особи, но мы потом делаем скрещивание и мутацию, так что разнообразие сохраняется, хотя несколько сужается за счет отбраковки худших особей.
странно, у меня не получилось при помощи этого алгоритма достичь максимума и за 100 поколений, хотя на графике устойчивый рост приспособленности.
еще: на мой взгляд есть более интересный вариант турнирного отбора: дать КАЖДОМУ индивидууму поучаствовать в турнире с 2 случайными индивидуумами. У автора в турнире участвуют 3 СЛУЧАЙНЫХ индивидуума. В моей версии нет вероятности отбраковки боле приспособленных индивидуумов.
еще: в данном примере увеличение вероятности мутации приводит к ускорению приспособленности популяции
Можно добавить лекции на ту же тему, но не на Python, а на Common Lisp?
Как можно ваще на пайтон программировать, это же просто ущербно
А что в этом ущербного? Если руки прямые, можно писать оптимизированный код, который будет исполняться достаточно быстро.
Но главной его особенностью является обширный набор библиотек, который позволяет делать удобно и, что самое главное, читабельно, что угодно в области машинного обучения (зачастую эти библиотеки написаны на С), анализа данных и их визуализации.
А с использованием чего ещё вы собрались заниматься машинным обучением? C++? Похвально, но там можно застрелиться
🤡