Download - Intro to Deep Reinforcement Learning
Deep Reinforcement Learning
Как научить нейросеть играть в игры вместо нас
Марат Зайнутдинов @tsundokum
Моя попытка вопроизвести DQN
https://github.com/tsundokum/DQN
[6]
Human-level control through deep reinforcement learning
Volodymyr Mnih, Koray Kavukcuoglu,David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex Graves, Martin Riedmiller, Andreas K. Fidjeland, Georg Ostrovski, Stig Petersen, Charles Beattie, Amir Sadik,Ioannis Antonoglou, Helen King,Dharshan Kumaran, Daan Wierstra,Shane Legg & Demis Hassabis
Nature
[6]
Задача
● Универсальный алгоритм, способный научиться делать что угодно на основе данных о среде и подкреплении (ИИ)○ Алгоритм, способный играть в видеоигры,
получая на входе видеоизображение и информацию об изменении очков. Цель алгоритма — набрать максимальное количество очков.
[5] [2]
Что мы умеем
● X → Y○ закономерность нелинейная○ X высокой размерность (например, картинка)
● Дифференцируемая ошибка (относительно параметров алгоритма)
● Быстро обрабатывать много данных
[3]
[3]
Мы можем научить НС играть?
Мы можем научить НС играть?
У вас нет и не будет модели!
Динамическое программирование
0 1 5 0
0 1 1 7
10 9 7 0
1 6 9 0
Динамическое программирование
0 1 5 5 0 0
0 1 17 7
10 9 7 0
1 6 9 0
Динамическое программирование
01 6 5 5 0 0
0 1 17 7
10 9 7 0
1 6 9 0
Динамическое программирование
01 6 5 5 0 0
0 11 6 7 7
10 9 7 0
1 6 9 0
Динамическое программирование
01 6 5 5 0 0
0 11 6 7 7
10 9 70 7
1 6 9 0
Динамическое программирование
0 6 1 6 5 5 0 00
1 7 1 6 7 710 9
7 13 0 71 6 9
0 7
Динамическое программирование
0 6 1 6 5 5 0 00 6 1 7 1 6 7 710
9 18 7 13 0 71 6
9 16 0 7
Динамическое программирование
0 6 1 6 5 5 0 00 6 1 7 1 6 7 710
16 9 18 7 13 0 71
6 22 9 16 0 7
Динамическое программирование
0 6 1 6 5 5 0 00 6 1 7 1 6 7 710
16 9 18 7 13 0 7
1 17 6 22 9 16 0 7
Action-Value function (Bellman Eq)
Q(s, a) = Es’[r + ɣ maxa’Q(s’, a’) | s,a]
s — текущее состояниеa — действие на текущее состояниеs’ — состояние, последовавшее s после совершения действия ar — подкрепление на действие a
Action-Value function (Bellman Eq)
Q(s, a) = Es’[r + ɣ maxa’Q(s’, a’) | s,a]
Q(s, a; θ) ≅ Q(s, a)
Q(s, a; θ)[6]
Функция ошибки
Li(θi)=Es,a,s’,r[(r+ɣmaxa’Q(s’,a’,θ-i) - Q(s,a,θi))
2]
Функция ошибки
Li(θi)=Es,a,s’,r[(r+ɣmaxa’Q(s’,a’,θ-i) - Q(s,a,θi))
2]
critic
Функция ошибки
Li(θi)=Es,a,s’,r[(r+ɣmaxa’Q(s’,a’,θ-i) - Q(s,a,θi))
2]
critic actor
Q-learning
Watkins, C.J.C.H. (1989). Learning from
Delayed Rewards. PhD thesis, Cambridge
University, Cambridge, England.
Мы можем научить НС играть?
Мы можем научить НС играть?
Ваша сетка слишком сильно раскачивается!
Стабильность
● База переходов U(D)● Запаздывающее обновление сети
База переходов U(D)
Каждый раз сохраняем (s, a, s’, r)Держим в уме 1 млн переходовДанные для батча выбираются из U(D)
Запаздывающее обновление сети
Li(θi)=Es,a,s’,r[(r+ɣmaxa’Q(s’,a’,θ-i) - Q(s,a,θi))
2]
critic actor
Каждый новые C (=50k) переходов критик обновляется critic := actor
Другие тонкости
● ε-greedy выбор действия (с ε=1→0.1 за 1млн кадров)● Видео сжимается с 210x160 до 84x84● Состояние запоминается в виде 4х кадров● Сглаживание картинок (особенность Atari)● Все подкрепления имеют значения {-1, 0, 1}● Разница между критиком и актором обрезается до
[-1, 1]
Пример обучения в реальном времени
REINFORCE.js
Рекомендуемые ресурсы1. Andrew Ng. Machine Learning (лучшее введение в нейросети)2. Nando de Freitas. Deep Learning (лекции 15-16 про RL и DeepMind)3. Sergey Levine. Deep Learning for Decision Making and Control (другой
подход к Deep RL)4. Peter Norvig. Artificial Intelligence: A Modern Approach. 3ed.5. David Silver. Deep Reinforcement Learning (презентация)6. Mnih at al. Human-level control through deep reinforcement learning7. Andrej Karpathy. REINFORCE.js
Спасибо за внимание!