Учимся играть в нарды (проект) — различия между версиями
Gusakov (обсуждение | вклад) (→Какие будут использоваться технологии?) |
|||
(не показано 14 промежуточных версии 4 участников) | |||
Строка 12: | Строка 12: | ||
=== Что это за проект? === | === Что это за проект? === | ||
Проект заключается в том, чтобы научить компьютер играть в нарды. | Проект заключается в том, чтобы научить компьютер играть в нарды. | ||
− | Делать мы это будем с помощью машинного обучения, причём все знания, которые | + | Делать мы это будем с помощью машинного обучения, причём все знания, которые алгоритм имеет о мире ограничиваются тем, какие ходы возможны из конкретной позиции и тем, какой же получился результат в конце (победа или поражение). |
Оказывается, что за несколько тысяч игр компьютер учится неплохо играть, а при более тщательном подходе обыгрывает человека. | Оказывается, что за несколько тысяч игр компьютер учится неплохо играть, а при более тщательном подходе обыгрывает человека. | ||
+ | |||
+ | [http://www.slideshare.net/katyacherniak/backgammon-57453501 презентация проекта] | ||
=== Чему вы научитесь? === | === Чему вы научитесь? === | ||
− | Основы машинного обучения | + | * Основы машинного обучения |
+ | |||
+ | * Методы линейной регрессии | ||
+ | |||
+ | * Понятие о нейросетях | ||
+ | |||
+ | * Temporal-difference learning | ||
=== Какие начальные требования? === | === Какие начальные требования? === | ||
− | Интерес к машинному обучению | + | * Интерес к машинному обучению. |
+ | |||
+ | * Желание экспериментировать и упорно работать. | ||
+ | |||
+ | Будет прикольно, но не просто. | ||
=== Какие будут использоваться технологии? === | === Какие будут использоваться технологии? === | ||
− | + | * С++; | |
− | scikit-learn | + | |
+ | * gtest; | ||
+ | |||
+ | * scikit-learn. | ||
=== Темы вводных занятий === | === Темы вводных занятий === | ||
+ | * Для начала немного поиграем в нарды. | ||
+ | * Потом обсудим интерфейсы, тесты, базовые решения, time-difference learning. | ||
=== Направления развития === | === Направления развития === | ||
− | + | * Совершенствовать алгоритм машинного обучения, находя/генерируя автоматически факторы. | |
− | + | ||
+ | * Хорошая визуализация игры. | ||
=== Критерии оценки === | === Критерии оценки === | ||
− | 4 | + | 4 балла: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы. |
+ | |||
+ балл (итого 5): Класс хорошо покрыт тестами. | + балл (итого 5): Класс хорошо покрыт тестами. | ||
+ | |||
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма. | + балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма. | ||
+ | |||
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы. | + балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы. | ||
+ | |||
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети. | + 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети. | ||
+ | |||
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой. | + балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой. | ||
Текущая версия на 16:18, 28 июля 2017
Ментор | Алексей Гусаков |
Учебный семестр | Весна 2016 |
Учебный курс | 1-й курс |
Проект можно развивать на летней практике | |
Максимальное количество студентов, выбравших проект: 10 | |
Что это за проект?
Проект заключается в том, чтобы научить компьютер играть в нарды. Делать мы это будем с помощью машинного обучения, причём все знания, которые алгоритм имеет о мире ограничиваются тем, какие ходы возможны из конкретной позиции и тем, какой же получился результат в конце (победа или поражение). Оказывается, что за несколько тысяч игр компьютер учится неплохо играть, а при более тщательном подходе обыгрывает человека.
Чему вы научитесь?
- Основы машинного обучения
- Методы линейной регрессии
- Понятие о нейросетях
- Temporal-difference learning
Какие начальные требования?
- Интерес к машинному обучению.
- Желание экспериментировать и упорно работать.
Будет прикольно, но не просто.
Какие будут использоваться технологии?
- С++;
- gtest;
- scikit-learn.
Темы вводных занятий
- Для начала немного поиграем в нарды.
- Потом обсудим интерфейсы, тесты, базовые решения, time-difference learning.
Направления развития
- Совершенствовать алгоритм машинного обучения, находя/генерируя автоматически факторы.
- Хорошая визуализация игры.
Критерии оценки
4 балла: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.
+ балл (итого 5): Класс хорошо покрыт тестами.
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.
Также между алгоритмами будет проведён турнир на спецприз от ментора :)
Ориентировочное расписание занятий
В идеале - вечер пятницы или утро субботы.