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