Глубокое Q-обучение
Использование нейронных сетей для обучения с подкреплением
«Глубокое Q-обучение» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 5 уроков всего.
Что такое глубокое Q-обучение
Глубокое Q-обучение
Глубокое Q-обучение — это расширение Q-обучения, в котором нейронная сеть приближённо вычисляет Q-таблицу. Благодаря этому обучение с подкреплением можно масштабировать на среды с большими или непрерывными пространствами состояний и действий.

Зачем нужно глубокое Q-обучение
Зачем нужно глубокое Q-обучение
Глубокое Q-обучение устраняет ограничения традиционного Q-обучения:
- Работает с пространствами состояний высокой размерности, например с изображениями.
- Устраняет необходимость хранить большие Q-таблицы в памяти.
- Обобщает знания на разные состояния с помощью нейронных сетей.
Алгоритм DQN
Алгоритм DQN
В глубоком Q-обучении для приближённого вычисления Q-значений используется нейронная сеть, называемая Q-сетью. Основные шаги:
- Инициализируйте Q-сеть случайными весами.
- Взаимодействуйте со средой, чтобы собирать кортежи опыта
(state, action, reward, next_state). - Обновляйте Q-сеть с помощью уравнения Беллмана:
Q(s, a) ≈ r + γ max(Q(s', a'))
Создание Q-сети
Создание Q-сети
Q-сеть — это простая полносвязная нейронная сеть, которая принимает текущее состояние на вход и выдаёт Q-значения для всех возможных действий:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# Define the Q-Network
q_network = Sequential([
Dense(24, activation='relu', input_shape=(state_space_size,)),
Dense(24, activation='relu'),
Dense(action_space_size, activation='linear')
])
q_network.compile(optimizer='adam', loss='mse')Повторное использование опыта
Повторное использование опыта
В глубоком Q-обучении для повышения эффективности обучения используется метод, называемый повторным использованием опыта:
- Сохраняйте опыт
(state, action, reward, next_state)в буфере памяти. - Случайным образом выбирайте пакеты опыта с помощью sample для обучения Q-сети.
from collections import deque
# Initialize replay memory
memory = deque(maxlen=2000)
# Add experience to memory
memory.append((state, action, reward, next_state, done))Обучение Q-сети
Обучение Q-сети
Мы обучаем Q-сеть на основе опыта из буфера памяти:
import numpy as np
# Sample a batch of experiences
batch_size = 32
batch = random.sample(memory, batch_size)
# Train the Q-Network
for state, action, reward, next_state, done in batch:
target = reward
if not done:
target += gamma * np.max(q_network.predict(next_state[np.newaxis, ...]))
q_values = q_network.predict(state[np.newaxis, ...])
q_values[0][action] = target
q_network.fit(state[np.newaxis, ...], q_values, epochs=1, verbose=0)Целевые сети
Целевые сети
Для стабилизации обучения DQN использует целевую сеть:
- Поддерживайте отдельную сеть для вычисления целевых Q-значений.
- Периодически копируйте веса из Q-сети в целевую сеть.
Преимущества глубокого Q-обучения
Преимущества глубокого Q-обучения
Глубокое Q-обучение имеет несколько преимуществ:
- Работает с пространствами состояний высокой размерности, например с изображениями.
- Обобщает знания на разные состояния с помощью нейронных сетей.
- Позволяет решать сложные задачи, например играть в игры Atari и управлять роботами.
Итоги и дальнейшие шаги
Итоги и дальнейшие шаги
В этом уроке мы:
- Изучили основы глубокого Q-обучения.
- Создали Q-сеть для приближённого вычисления Q-значений.
- Обсудили повторное использование опыта и целевые сети для стабильного обучения.
Далее мы изучим OpenAI Gym и применим обучение с подкреплением в моделируемых средах.

Часто задаваемые вопросы
Урок «Глубокое Q-обучение» бесплатный?
Да — полный текст урока «Глубокое Q-обучение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 5 уроков всего.
Чему я научусь в уроке «Глубокое Q-обучение»?
Использование нейронных сетей для обучения с подкреплением Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 5.
Сколько времени занимает урок «Глубокое Q-обучение»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основные понятия обучения с подкреплением
- Концепция Q-таблицы
- Реализация Q-таблицы в Python
- Глубокое Q-обучение
- Изучение OpenAI Gym