Вступ до глибокого Q-навчання

Глибоке навчання з підкріпленням у Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Що таке Deep Q Learning?

 

 

Зображення Q(state, action): стан як Земля, дія як джойстик

Глибоке навчання з підкріпленням у Python

Повторення Q-навчання

 

Функція цінності дії Q_pi(s,a): сума майбутніх винагород, якщо виконати дію a у стані s, за умови подальшого дотримання політики pi. Q_pi(s,a) = сподіване значення майбутніх траєкторій за політикою pi для R_tau за умов s_t=s та a_t=a

 

 

  • Знання $Q$ дає оптимальну політику: $$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Мета Q-навчання: навчитися $Q$ з часом

Глибоке навчання з підкріпленням у Python

Повторення Q-навчання

Рівняння Беллмана (в Q-навчанні) у детермінованому середовищі: Q_pi(s_t, a_t) = винагорода r_t+1 + коефіцієнт знижки gamma * max за a_t+1 від Q_pi(s_t+1, a_t+1))

Ціль різниці за часом (TD-target, або Q-target): права частина рівняння Беллмана, використовується як цільове значення для оновлення в Q-навчанні. r_t+1 + gamma * max за a_t+1 від Q_pi(s_t+1, a_t+1))

  • Рівняння Беллмана: рекурсивна формула для $Q$
  • Права частина рівняння Беллмана: «TD-target»
  • Використовуйте TD-target з рівняння Беллмана, щоб оновлювати $\hat{Q}$ після кожного кроку

Правило оновлення Q-навчання: Q_new = (1-alpha) Q_old + alpha * TD-target

Глибоке навчання з підкріпленням у Python

Q-мережа

Q-таблиця з 4 станами і 4 діями — 16 комірок для заповнення

Глибоке навчання з підкріпленням у Python

Q-мережа

Q-таблиця з 9 станами і 4 діями — 36 комірок для заповнення

Глибоке навчання з підкріпленням у Python

Q-мережа

Q-таблиця з десятками станів і 4 діями, близько ~100 комірок для заповнення

Глибоке навчання з підкріпленням у Python

Q-мережа

  • Основа Deep Q Learning: нейронна мережа

Ілюстрація повнозв'язної нейронної мережі з двома прихованими шарами

Глибоке навчання з підкріпленням у Python

Q-мережа

  • Основа Deep Q Learning: нейронна мережа

Ілюстрація повнозв'язної нейронної мережі з двома прихованими шарами; зображення Землі з попереднього слайду подається на вхідний шар

Глибоке навчання з підкріпленням у Python

Q-мережа

  • Основа Deep Q Learning: нейронна мережа, що відображає стан у Q-значення

Ілюстрація з попереднього слайду: кожен вузол вихідного шару відповідає дії як напрямку джойстика. Вгору — дія 0, праворуч — 1, вниз — 2, ліворуч — 3.

  • Мережу, що апроксимує функцію цінності дії, називають «Q-мережею»
  • Q-мережі типові для алгоритмів Deep Q Learning, як-от DQN.
Глибоке навчання з підкріпленням у Python

Реалізація Q-мережі

class QNetwork(nn.Module):

def __init__(self, state_size, action_size): super(QNetwork, self).__init__()
self.fc1 = nn.Linear(state_size, 64) self.fc2 = nn.Linear(64, 64) self.fc3 = nn.Linear(64, action_size)
def forward(self, state): x = torch.relu(self.fc1(torch.tensor(state))) x = torch.relu(self.fc2(x)) return self.fc3(x)
q_network = QNetwork(8, 4)
optimizer = optim.Adam(q_network.parameters(), lr=0.0001)
  • Розмір входу визначається станом
  • Розмір виходу визначається кількістю можливих дій

  • У цьому прикладі:

    • 2 приховані шари по 64 вузли
    • Активація ReLU
Глибоке навчання з підкріпленням у Python

Давайте потренуємось!

Глибоке навчання з підкріпленням у Python

Preparing Video For Download...