Учимся играть в нарды (проект): различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к навигации Перейти к поиску
Новая страница, с помощью формы Новый_проект
 
Нет описания правки
 
(не показано 15 промежуточных версий 4 участников)
Строка 12: Строка 12:
=== Что это за проект? ===
=== Что это за проект? ===
Проект заключается в том, чтобы научить компьютер играть в нарды.
Проект заключается в том, чтобы научить компьютер играть в нарды.
Делать мы это будем с помощью машинного обучения, причём все знания, которые мы передаём алгоритму минимальные - он знает, какие ходы возможны из какой позиции, а в конце игры узнаёт результат.
Делать мы это будем с помощью машинного обучения, причём все знания, которые алгоритм имеет о мире ограничиваются тем, какие ходы возможны из конкретной позиции и тем, какой же получился результат в конце (победа или поражение).
Оказывается, что за несколько тысяч игр компьютер учится неплохо играть, а при более тщательном подходе обыгрывает человека.
Оказывается, что за несколько тысяч игр компьютер учится неплохо играть, а при более тщательном подходе обыгрывает человека.
[http://www.slideshare.net/katyacherniak/backgammon-57453501 презентация проекта]


=== Чему вы научитесь? ===
=== Чему вы научитесь? ===
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.
* Основы машинного обучения
 
* Методы линейной регрессии
 
* Понятие о нейросетях
 
* Temporal-difference learning


=== Какие начальные требования? ===
=== Какие начальные требования? ===
Интерес к машинному обучению, желание экспериментировать и упорно работать.
* Интерес к машинному обучению.
 
* Желание экспериментировать и упорно работать.
 
Будет прикольно, но не просто.


=== Какие будут использоваться технологии? ===
=== Какие будут использоваться технологии? ===
c++, gtest
* С++;
scikit-learn
 
* gtest;
 
* scikit-learn.


=== Темы вводных занятий ===
=== Темы вводных занятий ===
* Для начала немного поиграем в нарды.


* Потом обсудим интерфейсы, тесты, базовые решения, time-difference learning.


=== Направления развития ===
=== Направления развития ===
Можно совершенствовать алгоритм машинного обучения, находя/генерируя автоматически факторы.
* Совершенствовать алгоритм машинного обучения, находя/генерируя автоматически факторы.
Ещё одним развитием проекта является хорошая визуализация игры.
 
* Хорошая визуализация игры.


=== Критерии оценки ===
=== Критерии оценки ===
4 балл: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.
4 балла: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.
 
+ балл (итого 5): Класс хорошо покрыт тестами.
+ балл (итого 5): Класс хорошо покрыт тестами.
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.



Текущая версия от 13:18, 28 июля 2017

Ментор Алексей Гусаков
Учебный семестр Весна 2016
Учебный курс 1-й курс
Проект можно развивать на летней практике
Максимальное количество студентов, выбравших проект: 10



Что это за проект?

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

презентация проекта

Чему вы научитесь?

  • Основы машинного обучения
  • Методы линейной регрессии
  • Понятие о нейросетях
  • Temporal-difference learning

Какие начальные требования?

  • Интерес к машинному обучению.
  • Желание экспериментировать и упорно работать.

Будет прикольно, но не просто.

Какие будут использоваться технологии?

  • С++;
  • gtest;
  • scikit-learn.

Темы вводных занятий

  • Для начала немного поиграем в нарды.
  • Потом обсудим интерфейсы, тесты, базовые решения, time-difference learning.

Направления развития

  • Совершенствовать алгоритм машинного обучения, находя/генерируя автоматически факторы.
  • Хорошая визуализация игры.

Критерии оценки

4 балла: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.

+ балл (итого 5): Класс хорошо покрыт тестами.

+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.

+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.

+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.

+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.

Также между алгоритмами будет проведён турнир на спецприз от ментора :)

Ориентировочное расписание занятий

В идеале - вечер пятницы или утро субботы.