Backgammon
Здесь будет появляться код по проекту. Что нужно сделать ко 2 контрольной точке:
Реализовать стратегию, которая бьёт рандом в 90% случаев
Сравнить стратегию, обученную при помощи линейной регресии и градиентного спуска
К 3 контрольной точке:
+1 Реализовать визуализацию (частично готово)
+1 Сбор датасета и прогон на нейронных сетях (готово)
+1 Реализация стратегии time-difference learning и нейронных сетей (готово).
+1 реализовать и сравнить несколько вариантов количество скрытых слоёв в нейросети (готово).
+1 Релизовать стратегию с нейронными сетями, которая бьёт уже существующую с линейной регрессией (винрейт <50%) (готово)
#Что готово:
+Линейная модель с 78% винрейта
+Градиентный спуск, который бьёт рандом в 79% случаев.
Вывод: сравнивая эти стратегии, получили, что метод градиентного спуска опережает линейную регрессию. При этом на сбор датасета для обучения линейной регресии ушло около 12 часов, тогда как для градиентного спуска хватило и 10 минут.
+Стратегия с нейронной сетью "из коробки" (использовалась библиотека PyBrain) и теми же факторами. При этом винрейт в сравнении с рандомом оказался равен 81%.
Таким образом, можно утверждать, что нейронная сеть опережает линейную модель.
+Градиентный спуск+нейронные сети.
+Полученная стратегия побеждает линейную регрессию в 52% случаев, что опять доказывает утверждение выше.
+Была также запущена нейронная сеть из sklearn (MLPRegressor) с 1 и 2 слоями. Винрейт против рандома 86%.
+Реализована простейшая визуализация.
+Сравнивая нейронку с 2 слоями с градиентным спуском, убеждаемся, что количество слоёв решает.
#По итогам проекта
Я ознакомился (в теории и на практике) с основами машинного обучения и нейронных сетей
Получен бесценный опыт работы над нетривиальным и довольно громоздким проектом
Получен некоторый минимальный опыт работы с библиотеками PyBrain, sklearn, numpy, scipy, openNN
Значительно улучшены навыки программирования