Neptun

Neptun

https://github.com/tyzegt
Пикабушник
Дата рождения: 1 января
122К рейтинг 234 подписчика 2 подписки 124 поста 62 в горячем
Награды:
С Днем рождения, Пикабу!10 лет на Пикабу
47

Мой пет-проект: самообучающаяся нейросеть, играющая в змейку на C#

Всем привет! Попробую разбавить волны авторским контентом.

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

Ну так вот. В какой-то момент времени я стал интересоваться нейросетями и решил их поизучать. Почитал кое-какие книги, статьи и запилил свою первую нейросеть на python. Язык очень простой в освоении, но мне в первом приближении совсем не понравился, и я решил переписать всё на C#, чтобы лучше закрепить новые знания. Так появилась первая итерация моей библиотеки, которая умеет самые базовые вещи: стоить нейросети с заданной топологией, выполнять запросы и обучаться методом обратного распространения ошибки.

Второй итерацией я в топорно-экспериментальном режиме подключил возможность вычисления на GPU, а именно на CUDA. Эксперименты показали забавный результат: небольшие матрицы на CPU перемножаются намного быстрее, чем на GPU, а большие - наоборот, несравнимо быстрее перемножаются на GPU.

Третьей итерацией я написал консольную змейку и попытался обучать её методом обратного распространения ошибки. Результат был довольно-таки слабым, т.к. я не придумал способа эффективно собирать датасеты для обучения в автоматическом режиме, а обучать нейросеть вручную мне не хотелось, т.к. это противоречило самой идее того, что я хотел сделать.

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

Кому интересно посмотреть или пощупать мой говнокод - милости прошу на гитхаб: https://github.com/tyzegt/NeuralNetworkLib/tree/snake-geneti...

Ниже несколько гифок, иллюстрирующих прогресс обучения:

Показать полностью 5
26

Исходный код "зрячего" бота для браузерной игры с использованием Emgu CV

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


Обычного кликера, кликающего по предустановленным координатам было недостаточно, так как цепочка нажатий должна зависеть от наличия и положения интерактивных элементов на экране, а просчитывать все варианты и пытаться это всё закостылить мне не хотелось. В итоге было принято решение сделать бота "зрячим", и искать эти элементы на экране. Для этой задачи была задействована библиотека Emgu CV.


В итоге родился "умный" и "зрячий" кликер, который ищет в окне игры определённые элементы (кнопки, иконки, двери, сундуки) и кликает на них в определённом порядке.


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


Спасибо за внимание!
https://github.com/tyzegt/HwBuddy

Показать полностью
784

Лига для тех, кому нужна помощь с компьютером2

Лига для тех, кому нужна помощь с компьютером

Всем привет. Очень часто в лигу программистов люди пишут посты, которые к программированию отношения не имеют вообще. Обычно такие посты сводятся к чему-то вроде "Как отключить такую-то штуку в винде?".

Понятно, что многие люди с компьютером "на вы", и не особо-то умеют свою проблему сформулировать для гугла. Так что я решил создать "Лигу тыжпрограммистов", в которой можно задать любой вопрос связанный с компьютерами.
Сам я работаю в IT уже больше 10 лет, из которых немалую часть работал эникейщиком и объяснял бабушкам в офисе "куда нужно нажать, чтобы создать табличку в экселе". Постараюсь помочь по мере сил. Ну и приглашаю вступить тех, кто сам не против поотвечать на такие вопросы.

Лига тыжпрограммистов

Показать полностью
21

Клон Bomberman на Unity - Часть 3, заключительная

Привет, товарищи!


Совсем забыл, что нужно было выложить заключительную часть роликов!


В следующих трёх видео мы обучаем врагов бомбермена поиску пути при помощи A* алгоритма, а так же заставляем всех умирать от взрывов.

Показать полностью 3
40

Клон Bomberman на Unity - Часть 2

И снова здравствуйте!

Продолжаем семимильными шагами двигаться в направлении успешного клона древнего Бомбермена на Юнити!

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


Учитывая, что практически в каждом моём посте кто-нибудь спрашивает "Как/где в это поиграть?", даже несмотря на то, что геймплей ещё полностью не реализован, я решил вывалить всё это дело в "играбельном" виде. Ссылка будет в комментариях.

Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества