Рендзю (семинар): различия между версиями
Нет описания правки |
Нет описания правки |
||
| (не показаны 62 промежуточные версии 6 участников) | |||
| Строка 1: | Строка 1: | ||
Описание [[Рендзю (проект)|проекта]]. | Описание [[Рендзю (проект)|проекта]], последний [[Рендзю_(семинар)#.D0.A1.D0.B5.D0.BC.D0.B8.D0.BD.D0.B0.D1.80.D1.8B|семинар]]. | ||
==Правила игры == | ==Правила игры == | ||
| Строка 17: | Строка 17: | ||
===Правило 2Х=== | ===Правило 2Х=== | ||
У вас есть право на одну ошибку. Следующая - я отказываюсь с вами работать. | У вас есть право на одну ошибку. Следующая - я отказываюсь с вами работать. | ||
===Репозитории=== | |||
Студенты хранят свой код в следующих репозиториях | |||
{| class="wikitable" | |||
|- | |||
| Ментор || https://github.com/dasimagin/renju | |||
|- | |||
| Харламов || https://github.com/gamers5a/renju | |||
|- | |||
| Сопов || https://github.com/PreFX48/renju | |||
|- | |||
| Vodim || https://github.com/EterniusVGM/Renju | |||
|- | |||
| Yuriy || https://github.com/yurriy/renju | |||
|- | |||
| Storozh || https://github.com/storandrew/Renju | |||
|} | |||
===Разбор статьи=== | |||
В рамках проекта студент должен разобрать интересную для него статью и доложить ее на общем семинаре. | |||
{| class="wikitable" | |||
|- | |||
! Студент !! Статья !! Дата | |||
|- | |||
| Харламов || http://web.stanford.edu/~takapoui/linear_bandits.pdf || 16 апреля | |||
|- | |||
| Сопов || https://papers.nips.cc/paper/6068-learning-feed-forward-one-shot-learners.pdf || 26 марта | |||
|- | |||
| Гринберг || https://arxiv.org/pdf/1611.01626.pdf || 9 апреля | |||
|- | |||
| Баранов || https://arxiv.org/pdf/1611.01224.pdf || 2 апреля | |||
|- | |||
| Стороженко || https://arxiv.org/pdf/1511.06581v3.pdf || 19 марта | |||
|} | |||
===Лабораторные=== | |||
Лабораторные проводятся для практического закрепления материала. Их выполнение учитывается в итоговой оценке. | |||
# Результатом работы является jupyter notebook, где сохранен вывод вашего кода, графики и т.п. А так же его импорт в формат .py. Для автоматизации процесса можно настроить jupyter. | |||
# Когда сроки выполнения лабораторной завершены, вы выкладываете ее на ревью, создавая соответствующее задание и запрос на объединение ветки с мастером (не забудьте добавить проверяющего). | |||
# Ваш коллега проводит ревью кода и может оставлять замечания, как в виде комментариев к заданию, так и в файле .py. Оно предполагает проверку стиля и правильность кода, а также конструктивные замечания по производительности. Однако не стремитесь сразу оптимизировать код. Добейтесь лучше того, чтобы все работало правильно. | |||
# Когда ревью завершено, влейтесь в мастер и закройте задание. | |||
===Результаты=== | |||
Текущие результаты можно найти [https://docs.google.com/spreadsheets/d/1VAaIoKGOYkMYKxYMPjHs_TsYabjHo27jA4fiQg_R344/edit?usp=sharing здесь]. Оценка складывается из нескольких частей: | |||
# Работа на семинаре | |||
# Доклад статьи | |||
# Итоговое качество игры | |||
==Семинары== | ==Семинары== | ||
=== | ===H19.03=== | ||
Андрей разобрал статью про DQN, она может пригодиться нам для игр. | |||
'''Задание''' | |||
Реализовать модель, предсказывающую следующий ход соперника. Реализовать простую версию MCST. '''Дедлайн:''' 9 апреля. | |||
===S01.03=== | |||
# Освежили подход TD(0): SARSA, Q-learning и Expected SARSA | |||
# Double Q-learning | |||
# n-step TD и n-step tree backup | |||
# Поговорил про Monte Carlo tree search | |||
'''Дополнительное чтение.''' | |||
Не говорил на семинаре, но можно почитать: | |||
# Sample ratio для TD(0) подхода | |||
# Dyna-Q и Dyna-Q+ | |||
# Prioritized sweeping | |||
===S11.02=== | |||
Посвятили семинар обсуждения игры крестиков и ноликов на основе алгоритма DT(0). | |||
===S01.02=== | |||
Обсудили будущее. Всю дальнейшую теорию будем рассматривать сразу в рамках игры рендзю. Также согласовали формат данных для партии. | |||
'''Формат данных''' | |||
# Каждая партия представляет собой строку в файле (в качестве разделителя используем '\n'). | |||
# В начале строки записан результат ''{black, white, draw, unknown}''. | |||
# Далее через пробельный разделитель перечислены ходы игроков в формате столбец-строка. | |||
# Столбцы пронумерованы строчными буквами латинского алфавита . | |||
# Строки пронумерованы арабскими цифрами, начиная с 1. | |||
# Начало координатной сетки в левом нижнем углу. | |||
# Предполагается, что первый ход делают черные. | |||
'''Пример:''' unknown h8 g9 ... | |||
Скрипт для '''справедливого''' распределения заданий по подготовке данных для обучения можно найти [https://github.com/dasimagin/renju/blob/master/data/task.py здесь]. | |||
===S25.01=== | |||
# Поговорили на тему [https://en.wikipedia.org/wiki/Multi-armed_bandit многоруких бандитов]. | |||
# Начали осваивать [https://en.wikipedia.org/wiki/Reinforcement_learning reinforcment learning]. | |||
Полезная книга может быть найдена [https://webdocs.cs.ualberta.ca/~sutton/book/bookdraft2016sep.pdf здесь]. | |||
===L4=== | |||
{| class="wikitable" | |||
|- | |||
! Ревьюер !! Разработчик !! Оценка | |||
|- | |||
| Сопов || Харламов|| - | |||
|- | |||
| Гринберг || Сопов || - | |||
|- | |||
| Баранов || Гринберг || - | |||
|- | |||
| Стороженко || Баранов || - | |||
|- | |||
| Харламов || Стороженко || - | |||
|} | |||
Появилась очередная лабораторная работа [https://github.com/dasimagin/renju/blob/master/labs/L4%20-%20Reinforcement%20learning.ipynb L4]. | |||
'''Cроки:''' | |||
* Начало ревью: 11 февраля, 00:00. | |||
* Окончание: 16 февраля, 23:59. | |||
===S18.01=== | |||
В связи с болезнью ментора занятие отменено. | |||
===H11.01=== | |||
Произвели разбор L3. Описание модели победителя можно найти [здесь], а baseline доступен [https://github.com/dasimagin/renju/blob/master/labs/L3%20-%20Baseline.ipynb здесь]. | |||
Доклады мне не очень понравились. Постараюсь написать общие замечания. | |||
# Прежде всего у докладчика должна быть хорошая речь. | |||
# Нужно выделить то, что действительно важно и интересно для слушателя. | |||
# Делать на доске четкие и простые рисунки и записи, убедиться, что аудитория тебя понимает. | |||
# Не прыгать с темы на тему, а идти в соответсвии с логическим планом. | |||
===S14.12=== | |||
Начали разбирать нашу [https://storage.googleapis.com/deepmind-media/alphago/AlphaGoNaturePaper.pdf статью]. Есть пара источников на русском: | |||
* [https://ru.wikipedia.org/wiki/AlphaGo Статья] на wikipedia | |||
* [https://habrahabr.ru/post/279071/ Статья] на хабре | |||
===H11.12=== | |||
Занятие было посвящено выполнению второй лабораторной. Интересный ноутбук скоро появится [здесь]. | |||
===S08.12=== | |||
'''1. Известные архитектуры сверточных сетей''' | |||
* [https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf Alexnet] | |||
* [https://arxiv.org/pdf/1409.1556.pdf VGG net] | |||
* [https://arxiv.org/pdf/1409.4842v1.pdf GoogLeNet] | |||
* [https://arxiv.org/pdf/1512.03385.pdf ResNet] | |||
'''2. Поговорили:''' | |||
* На что активируются нейроны в зависимости от слоя | |||
* Генерация 'похожих картинок' | |||
* Послойное обучение сети | |||
* Переобучение или дообучение уже готовой сети | |||
'''3. Изучили примеры для библиотеки Keras''' | |||
* [https://github.com/fchollet/keras/blob/master/examples/mnist_mlp.py Полносвязанная сеть] | |||
* [https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py Сверточная сеть ] | |||
* [https://github.com/fchollet/keras/blob/master/examples/mnist_transfer_cnn.py Переобучение] сверточной сети | |||
===L3=== | |||
{| class="wikitable" | |||
|- | |||
! Студент !! CPU !! RAM !! GPU | |||
|- | |||
| Пример || 6 core, 3,5 GHz || 64GB || NVIDIA TITAN X | |||
|- | |||
| Харламов || 4 core, 3,6 GHz || 16GB || NVIDIA GTX 960m 2GB | |||
|- | |||
| Сопов || 4 core, 2,7 GHz || 8GB || NVIDIA GTX 940m | |||
|- | |||
| Гринберг || 4 core, 3,6 GHz || 16 GB || NVIDIA GTX 1070 8GB | |||
|- | |||
| Баранов || 4 core, 3,5GHz || 8GB || NVIDIA GTX 960m 2GB | |||
|- | |||
| Стороженко || 6 core 3.0 GHz || 16 GB || NVIDIA GTX 1060 6GB | |||
|} | |||
Победить в [https://inclass.kaggle.com/c/ch-ch конкурсе] классификации, срок 3 января, 23:59. | |||
Для этого вам понадобится | |||
* Установить [https://www.tensorflow.org Tensorflow] | |||
* Установить [https://keras.io Keras] | |||
* Запастись терпением | |||
===S01.12=== | |||
'''1. Полносвязанные сети:''' | |||
* Подсчитаны производные для [https://en.wikipedia.org/wiki/Backpropagation Backpropagation], обсуждены тонкости реализации. | |||
* Различные виды нелинейности: [https://en.wikipedia.org/wiki/Rectifier_(neural_networks) ReLu], [https://arxiv.org/pdf/1502.01852v1.pdf PReLu], [https://en.wikipedia.org/wiki/Sigmoid_function Sigmoid]. | |||
* Обучение сетей при помощи [https://en.wikipedia.org/wiki/Autoencoder Autoencoder]. | |||
'''2. Сверточные сети:''' | |||
* Cтруктура [https://en.wikipedia.org/wiki/Convolutional_neural_network CNN]. | |||
* Затронуты: [https://en.wikipedia.org/wiki/Convolution Convolution], [https://en.wikipedia.org/wiki/Convolutional_neural_network#Pooling_layer Pooling]. | |||
* Влияние различных ядер свертки на структуру сети. | |||
* [https://en.wikipedia.org/wiki/Convolutional_neural_network#Choosing_hyperparameters Feature maps]. | |||
* Разобрана архитектура [https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf Alexnet]. | |||
* Сочетание из Convolutional и Dense слоев. | |||
===S24.11=== | |||
'''1. Регуляризация:''' | |||
* Разобрали L1 и L2 регуляризаторы, можно найти [https://en.wikipedia.org/wiki/Regularization_(mathematics) здесь]. | |||
* Используйте простые классификаторы | |||
* Раняя остановка (смотрим качество на отложенном множестве) | |||
* Добавление шума | |||
* Комбинирование классификаторов | |||
'''2. Полносвязанные сети:''' | |||
* Множественная классификация и [https://en.wikipedia.org/wiki/Softmax_function softmax]. | |||
* Метод [http://www.machinelearning.ru/wiki/images/0/0f/karpinskaya-2010.pdf обратного распространения ошибки], проблема при обучении. | |||
* Инициализация весов: и [http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf xavier] и другие [https://arxiv.org/pdf/1502.01852v1.pdf вариации]. | |||
* Кратко о [https://en.wikipedia.org/wiki/Convolutional_neural_network#Dropout dropout]. | |||
===L2=== | |||
Задание можно найти [https://github.com/dasimagin/renju/blob/master/labs/L2%20-%20Nets.ipynb здесь], срок 23:59 11 декабря. | |||
===S02.11=== | |||
# [https://en.wikipedia.org/wiki/Feature_(machine_learning) Признаки] и какие они бывают. Об отборе признаков, кратко [https://habrahabr.ru/post/264915/ тут]. Может помочь на конкурсе. | # [https://en.wikipedia.org/wiki/Feature_(machine_learning) Признаки] и какие они бывают. Об отборе признаков, кратко [https://habrahabr.ru/post/264915/ тут]. Может помочь на конкурсе. | ||
# Задача [http://www.machinelearning.ru/wiki/index.php?title=Линейный_классификатор бинарной классификации]. | # Задача [http://www.machinelearning.ru/wiki/index.php?title=Линейный_классификатор бинарной классификации]. | ||
| Строка 35: | Строка 244: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Ревьюер !! Разработчик | ! Ревьюер !! Разработчик !! Оценка | ||
|- | |- | ||
| | |Харламов || Сопов || 9 | ||
|- | |- | ||
| Сопов || Гринберг | | Сопов || Гринберг || 10 | ||
|- | |- | ||
| Гринберг || Баранов | | Гринберг || Баранов || 8 | ||
|- | |- | ||
| Баранов || Стороженко | | Баранов || Стороженко || 10 | ||
|- | |- | ||
| Стороженко || | | Стороженко || Харламов || 8 | ||
|} | |} | ||
Для первой лабораторной работы вам потребуется: | Для [https://github.com/dasimagin/renju/blob/master/labs/L1%20-%20Gradient%20descent%20and%20linear%20models.ipynb первой] лабораторной работы вам потребуется: | ||
# Настроить себе [https://pip.pypa.io/en/stable/ pip] для Python3 | # Настроить себе [https://pip.pypa.io/en/stable/ pip] для Python3 | ||
# Освоить [http://jupyter.org Jupyter notebook] | # Освоить [http://jupyter.org Jupyter notebook] | ||
# Установить пакеты [http://www.scipy.org scipy]: numpy, scipy, matplotlib | # Установить пакеты [http://www.scipy.org scipy]: numpy, scipy, matplotlib | ||
Текущая версия от 22:42, 19 марта 2017
Описание проекта, последний семинар.
Правила игры
- Ментор: Симагин Денис.
- Место: офис Яндекса (место встречи)
- Время: c 19:00, каждую среду.
Общение с ментором вне занятий приветствуется. Можно задавать вопросы, в том числе философские. Но перед тем, как написать, попробуйте спросить это у Яндекса. Также не обижайтесь, если в ответ вам пришла ссылка на документацию или какую-то статью.
Ключевые точки
Сверху нам спущены ключевые точки выполнения проекта. Для нас они скорее явлются формальными, тем не менее мы должны их соблюдать.
- 12-17 декабря - все включились в работу
- 20-25 марта - реализован объем работ, необходимый для зачета
- 30 мая - 3 июня - окончание проектной работы, вы готовы, как пионеры.
- начало июня - конкурс проектов.
Правило 2Х
У вас есть право на одну ошибку. Следующая - я отказываюсь с вами работать.
Репозитории
Студенты хранят свой код в следующих репозиториях
Разбор статьи
В рамках проекта студент должен разобрать интересную для него статью и доложить ее на общем семинаре.
| Студент | Статья | Дата |
|---|---|---|
| Харламов | http://web.stanford.edu/~takapoui/linear_bandits.pdf | 16 апреля |
| Сопов | https://papers.nips.cc/paper/6068-learning-feed-forward-one-shot-learners.pdf | 26 марта |
| Гринберг | https://arxiv.org/pdf/1611.01626.pdf | 9 апреля |
| Баранов | https://arxiv.org/pdf/1611.01224.pdf | 2 апреля |
| Стороженко | https://arxiv.org/pdf/1511.06581v3.pdf | 19 марта |
Лабораторные
Лабораторные проводятся для практического закрепления материала. Их выполнение учитывается в итоговой оценке.
- Результатом работы является jupyter notebook, где сохранен вывод вашего кода, графики и т.п. А так же его импорт в формат .py. Для автоматизации процесса можно настроить jupyter.
- Когда сроки выполнения лабораторной завершены, вы выкладываете ее на ревью, создавая соответствующее задание и запрос на объединение ветки с мастером (не забудьте добавить проверяющего).
- Ваш коллега проводит ревью кода и может оставлять замечания, как в виде комментариев к заданию, так и в файле .py. Оно предполагает проверку стиля и правильность кода, а также конструктивные замечания по производительности. Однако не стремитесь сразу оптимизировать код. Добейтесь лучше того, чтобы все работало правильно.
- Когда ревью завершено, влейтесь в мастер и закройте задание.
Результаты
Текущие результаты можно найти здесь. Оценка складывается из нескольких частей:
- Работа на семинаре
- Доклад статьи
- Итоговое качество игры
Семинары
H19.03
Андрей разобрал статью про DQN, она может пригодиться нам для игр.
Задание Реализовать модель, предсказывающую следующий ход соперника. Реализовать простую версию MCST. Дедлайн: 9 апреля.
S01.03
- Освежили подход TD(0): SARSA, Q-learning и Expected SARSA
- Double Q-learning
- n-step TD и n-step tree backup
- Поговорил про Monte Carlo tree search
Дополнительное чтение. Не говорил на семинаре, но можно почитать:
- Sample ratio для TD(0) подхода
- Dyna-Q и Dyna-Q+
- Prioritized sweeping
S11.02
Посвятили семинар обсуждения игры крестиков и ноликов на основе алгоритма DT(0).
S01.02
Обсудили будущее. Всю дальнейшую теорию будем рассматривать сразу в рамках игры рендзю. Также согласовали формат данных для партии.
Формат данных
- Каждая партия представляет собой строку в файле (в качестве разделителя используем '\n').
- В начале строки записан результат {black, white, draw, unknown}.
- Далее через пробельный разделитель перечислены ходы игроков в формате столбец-строка.
- Столбцы пронумерованы строчными буквами латинского алфавита .
- Строки пронумерованы арабскими цифрами, начиная с 1.
- Начало координатной сетки в левом нижнем углу.
- Предполагается, что первый ход делают черные.
Пример: unknown h8 g9 ...
Скрипт для справедливого распределения заданий по подготовке данных для обучения можно найти здесь.
S25.01
- Поговорили на тему многоруких бандитов.
- Начали осваивать reinforcment learning.
Полезная книга может быть найдена здесь.
L4
| Ревьюер | Разработчик | Оценка |
|---|---|---|
| Сопов | Харламов | - |
| Гринберг | Сопов | - |
| Баранов | Гринберг | - |
| Стороженко | Баранов | - |
| Харламов | Стороженко | - |
Появилась очередная лабораторная работа L4.
Cроки:
- Начало ревью: 11 февраля, 00:00.
- Окончание: 16 февраля, 23:59.
S18.01
В связи с болезнью ментора занятие отменено.
H11.01
Произвели разбор L3. Описание модели победителя можно найти [здесь], а baseline доступен здесь.
Доклады мне не очень понравились. Постараюсь написать общие замечания.
- Прежде всего у докладчика должна быть хорошая речь.
- Нужно выделить то, что действительно важно и интересно для слушателя.
- Делать на доске четкие и простые рисунки и записи, убедиться, что аудитория тебя понимает.
- Не прыгать с темы на тему, а идти в соответсвии с логическим планом.
S14.12
Начали разбирать нашу статью. Есть пара источников на русском:
H11.12
Занятие было посвящено выполнению второй лабораторной. Интересный ноутбук скоро появится [здесь].
S08.12
1. Известные архитектуры сверточных сетей
2. Поговорили:
- На что активируются нейроны в зависимости от слоя
- Генерация 'похожих картинок'
- Послойное обучение сети
- Переобучение или дообучение уже готовой сети
3. Изучили примеры для библиотеки Keras
- Полносвязанная сеть
- Сверточная сеть
- Переобучение сверточной сети
L3
| Студент | CPU | RAM | GPU |
|---|---|---|---|
| Пример | 6 core, 3,5 GHz | 64GB | NVIDIA TITAN X |
| Харламов | 4 core, 3,6 GHz | 16GB | NVIDIA GTX 960m 2GB |
| Сопов | 4 core, 2,7 GHz | 8GB | NVIDIA GTX 940m |
| Гринберг | 4 core, 3,6 GHz | 16 GB | NVIDIA GTX 1070 8GB |
| Баранов | 4 core, 3,5GHz | 8GB | NVIDIA GTX 960m 2GB |
| Стороженко | 6 core 3.0 GHz | 16 GB | NVIDIA GTX 1060 6GB |
Победить в конкурсе классификации, срок 3 января, 23:59.
Для этого вам понадобится
- Установить Tensorflow
- Установить Keras
- Запастись терпением
S01.12
1. Полносвязанные сети:
- Подсчитаны производные для Backpropagation, обсуждены тонкости реализации.
- Различные виды нелинейности: ReLu, PReLu, Sigmoid.
- Обучение сетей при помощи Autoencoder.
2. Сверточные сети:
- Cтруктура CNN.
- Затронуты: Convolution, Pooling.
- Влияние различных ядер свертки на структуру сети.
- Feature maps.
- Разобрана архитектура Alexnet.
- Сочетание из Convolutional и Dense слоев.
S24.11
1. Регуляризация:
- Разобрали L1 и L2 регуляризаторы, можно найти здесь.
- Используйте простые классификаторы
- Раняя остановка (смотрим качество на отложенном множестве)
- Добавление шума
- Комбинирование классификаторов
2. Полносвязанные сети:
- Множественная классификация и softmax.
- Метод обратного распространения ошибки, проблема при обучении.
- Инициализация весов: и xavier и другие вариации.
- Кратко о dropout.
L2
Задание можно найти здесь, срок 23:59 11 декабря.
S02.11
- Признаки и какие они бывают. Об отборе признаков, кратко тут. Может помочь на конкурсе.
- Задача бинарной классификации.
- Градиентный спуск.
- Стохастический градиентный спуск. На английской вике больше интересной информации.
Для дополнительного чтения:
- Что полезно знать о машинном обучении.
- Английская вика про признаки
- Отбор признаков.
- Мощная теоретическая работа про стохастический градиентный спуск.
L1
| Ревьюер | Разработчик | Оценка |
|---|---|---|
| Харламов | Сопов | 9 |
| Сопов | Гринберг | 10 |
| Гринберг | Баранов | 8 |
| Баранов | Стороженко | 10 |
| Стороженко | Харламов | 8 |
Для первой лабораторной работы вам потребуется:
- Настроить себе pip для Python3
- Освоить Jupyter notebook
- Установить пакеты scipy: numpy, scipy, matplotlib