Рендзю (семинар) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(L1)
 
(не показаны 42 промежуточные версии 6 участников)
Строка 30: Строка 30:
 
| Vodim  || https://github.com/EterniusVGM/Renju
 
| Vodim  || https://github.com/EterniusVGM/Renju
 
|-
 
|-
| Yuriy || https://github.com/yurriy/ml-labs
+
| Yuriy || https://github.com/yurriy/renju
 
|-
 
|-
 
| Storozh || https://github.com/storandrew/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 марта
 
|}
 
|}
  
Строка 50: Строка 68:
  
 
==Семинары==
 
==Семинары==
 +
===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===
 
===S24.11===
 
'''1. Регуляризация:'''
 
'''1. Регуляризация:'''
Строка 63: Строка 224:
 
* Инициализация весов:  и [http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf xavier] и другие [https://arxiv.org/pdf/1502.01852v1.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].
 
* Кратко о [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===
 
===S02.11===

Текущая версия на 01:42, 20 марта 2017

Описание проекта, последний семинар.

Правила игры

Общение с ментором вне занятий приветствуется. Можно задавать вопросы, в том числе философские. Но перед тем, как написать, попробуйте спросить это у Яндекса. Также не обижайтесь, если в ответ вам пришла ссылка на документацию или какую-то статью.

Ключевые точки

Сверху нам спущены ключевые точки выполнения проекта. Для нас они скорее явлются формальными, тем не менее мы должны их соблюдать.

  1. 12-17 декабря - все включились в работу
  2. 20-25 марта - реализован объем работ, необходимый для зачета
  3. 30 мая - 3 июня - окончание проектной работы, вы готовы, как пионеры.
  4. начало июня - конкурс проектов.

Правило 2Х

У вас есть право на одну ошибку. Следующая - я отказываюсь с вами работать.

Репозитории

Студенты хранят свой код в следующих репозиториях

Ментор 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

Разбор статьи

В рамках проекта студент должен разобрать интересную для него статью и доложить ее на общем семинаре.

Студент Статья Дата
Харламов 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 марта

Лабораторные

Лабораторные проводятся для практического закрепления материала. Их выполнение учитывается в итоговой оценке.

  1. Результатом работы является jupyter notebook, где сохранен вывод вашего кода, графики и т.п. А так же его импорт в формат .py. Для автоматизации процесса можно настроить jupyter.
  2. Когда сроки выполнения лабораторной завершены, вы выкладываете ее на ревью, создавая соответствующее задание и запрос на объединение ветки с мастером (не забудьте добавить проверяющего).
  3. Ваш коллега проводит ревью кода и может оставлять замечания, как в виде комментариев к заданию, так и в файле .py. Оно предполагает проверку стиля и правильность кода, а также конструктивные замечания по производительности. Однако не стремитесь сразу оптимизировать код. Добейтесь лучше того, чтобы все работало правильно.
  4. Когда ревью завершено, влейтесь в мастер и закройте задание.

Результаты

Текущие результаты можно найти здесь. Оценка складывается из нескольких частей:

  1. Работа на семинаре
  2. Доклад статьи
  3. Итоговое качество игры

Семинары

H19.03

Андрей разобрал статью про DQN, она может пригодиться нам для игр.

Задание Реализовать модель, предсказывающую следующий ход соперника. Реализовать простую версию MCST. Дедлайн: 9 апреля.

S01.03

  1. Освежили подход TD(0): SARSA, Q-learning и Expected SARSA
  2. Double Q-learning
  3. n-step TD и n-step tree backup
  4. Поговорил про Monte Carlo tree search

Дополнительное чтение. Не говорил на семинаре, но можно почитать:

  1. Sample ratio для TD(0) подхода
  2. Dyna-Q и Dyna-Q+
  3. Prioritized sweeping

S11.02

Посвятили семинар обсуждения игры крестиков и ноликов на основе алгоритма DT(0).

S01.02

Обсудили будущее. Всю дальнейшую теорию будем рассматривать сразу в рамках игры рендзю. Также согласовали формат данных для партии.

Формат данных

  1. Каждая партия представляет собой строку в файле (в качестве разделителя используем '\n').
  2. В начале строки записан результат {black, white, draw, unknown}.
  3. Далее через пробельный разделитель перечислены ходы игроков в формате столбец-строка.
  4. Столбцы пронумерованы строчными буквами латинского алфавита .
  5. Строки пронумерованы арабскими цифрами, начиная с 1.
  6. Начало координатной сетки в левом нижнем углу.
  7. Предполагается, что первый ход делают черные.

Пример: unknown h8 g9 ...


Скрипт для справедливого распределения заданий по подготовке данных для обучения можно найти здесь.

S25.01

  1. Поговорили на тему многоруких бандитов.
  2. Начали осваивать reinforcment learning.

Полезная книга может быть найдена здесь.

L4

Ревьюер Разработчик Оценка
Сопов Харламов -
Гринберг Сопов -
Баранов Гринберг -
Стороженко Баранов -
Харламов Стороженко -

Появилась очередная лабораторная работа L4.

Cроки:

  • Начало ревью: 11 февраля, 00:00.
  • Окончание: 16 февраля, 23:59.

S18.01

В связи с болезнью ментора занятие отменено.

H11.01

Произвели разбор L3. Описание модели победителя можно найти [здесь], а baseline доступен здесь.

Доклады мне не очень понравились. Постараюсь написать общие замечания.

  1. Прежде всего у докладчика должна быть хорошая речь.
  2. Нужно выделить то, что действительно важно и интересно для слушателя.
  3. Делать на доске четкие и простые рисунки и записи, убедиться, что аудитория тебя понимает.
  4. Не прыгать с темы на тему, а идти в соответсвии с логическим планом.

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. Полносвязанные сети:

L2

Задание можно найти здесь, срок 23:59 11 декабря.

S02.11

  1. Признаки и какие они бывают. Об отборе признаков, кратко тут. Может помочь на конкурсе.
  2. Задача бинарной классификации.
  3. Градиентный спуск.
  4. Стохастический градиентный спуск. На английской вике больше интересной информации.

Для дополнительного чтения:

  1. Что полезно знать о машинном обучении.
  2. Английская вика про признаки
  3. Отбор признаков.
  4. Мощная теоретическая работа про стохастический градиентный спуск.

L1

Ревьюер Разработчик Оценка
Харламов Сопов 9
Сопов Гринберг 10
Гринберг Баранов 8
Баранов Стороженко 10
Стороженко Харламов 8

Для первой лабораторной работы вам потребуется:

  1. Настроить себе pip для Python3
  2. Освоить Jupyter notebook
  3. Установить пакеты scipy: numpy, scipy, matplotlib