Реализация Q-таблицы в Python
Простой пример Q-обучения
«Реализация Q-таблицы в Python» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 5 уроков всего.
Реализация Q-обучения на Python
Реализация Q-обучения на Python
В этом уроке мы реализуем простой алгоритм Q-обучения на Python. Агент научится перемещаться по сеточному миру, чтобы максимизировать получаемые вознаграждения.

Определение среды
Определение среды
Мы определим простой сеточный мир размером 4×4, в котором агент начинает движение из верхнего левого угла и должен достичь нижнего правого угла, чтобы получить вознаграждение.
import numpy as np
# Define the environment
num_states = 16 # 4x4 grid
num_actions = 4 # Up, Down, Left, Right
# Define rewards (-1 for each step, +10 for the goal)
rewards = np.zeros(num_states)
rewards[-1] = 10Инициализация Q-таблицы
Инициализация Q-таблицы
Q-таблица инициализируется нулевыми значениями для всех пар состояний и действий.
# Initialize the Q-Table
q_table = np.zeros((num_states, num_actions))
print("Initial Q-Table:")
print(q_table)Реализация алгоритма Q-обучения
Реализация алгоритма Q-обучения
Мы используем следующие параметры:
- α (Скорость обучения): Определяет, насколько новая информация заменяет старую.
- γ (Коэффициент дисконтирования): Определяет вес будущих вознаграждений относительно немедленных.
- ε (Коэффициент исследования): Обеспечивает баланс между исследованием среды и использованием лучших действий.
# Parameters
alpha = 0.1 # Learning rate
gamma = 0.9 # Discount factor
epsilon = 0.1 # Exploration rate
# Q-Learning loop
num_episodes = 1000
for episode in range(num_episodes):
state = 0 # Start at the first state
done = False
while not done:
# Exploration or exploitation
if np.random.rand() < epsilon:
action = np.random.randint(num_actions) # Explore
else:
action = np.argmax(q_table[state]) # Exploit
# Transition to the next state
next_state = (state + action) % num_states # Simplified transition logic
reward = rewards[next_state]
# Update Q-value
q_table[state, action] = q_table[state, action] + alpha * (
reward + gamma * np.max(q_table[next_state]) - q_table[state, action]
)
# Move to the next state
state = next_state
done = state == num_states - 1Оценка выученной стратегии
Оценка выученной стратегии
После обучения мы оцениваем стратегию, следуя оптимальным действиям, сохранённым в Q-таблице:
# Evaluate the policy
state = 0
optimal_path = [state]
while state != num_states - 1:
action = np.argmax(q_table[state])
state = (state + action) % num_states # Simplified transition logic
optimal_path.append(state)
print("Optimal Path:", optimal_path)Визуализация Q-таблицы
Визуализация Q-таблицы
Мы можем визуализировать Q-таблицу, чтобы понять выученные значения для каждой пары состояния и действия:
import matplotlib.pyplot as plt
import seaborn as sns
# Visualize Q-Table
plt.figure(figsize=(10, 8))
sns.heatmap(q_table, annot=True, fmt=".2f", cmap="coolwarm")
plt.title("Q-Table Heatmap")
plt.xlabel("Actions")
plt.ylabel("States")
plt.show()Преимущества Q-обучения
Преимущества Q-обучения
Q-обучение предоставляет несколько преимуществ:
- Простое и удобное в реализации.
- Может работать со стохастическими средами.
- Сходится к оптимальной стратегии при достаточном исследовании.
Ограничения Q-обучения
Ограничения Q-обучения
У Q-обучения есть некоторые ограничения:
- Оно плохо масштабируется на среды с большими пространствами состояний и действий.
- Обучение в сложных средах может проходить медленно.
- Требуется чётко заданное представление пар состояний и действий.
Итоги и дальнейшие шаги
Итоги и дальнейшие шаги
На этом уроке мы:
- Реализовали простой алгоритм Q-обучения на Python.
- Обучили агента перемещаться по сеточному миру с помощью Q-таблицы.
- Оценили выученную стратегию и визуализировали Q-таблицу.
Далее мы изучим глубокое Q-обучение, в котором для работы со средами с большими пространствами состояний и действий используются нейронные сети.

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