0Pricing
Python Academy · Урок

Реализация Q-таблицы в Python

Простой пример Q-обучения

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

Реализация Q-обучения на Python

Реализация Q-обучения на Python

В этом уроке мы реализуем простой алгоритм Q-обучения на Python. Агент научится перемещаться по сеточному миру, чтобы максимизировать получаемые вознаграждения.

Реализация Q-таблицы в Python — иллюстрация 1

Определение среды

Определение среды

Мы определим простой сеточный мир размером 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 — иллюстрация 10

Часто задаваемые вопросы

Урок «Реализация 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основные понятия обучения с подкреплением
  2. Понятие Q-таблицы
  3. Реализация Q-таблицы в Python
  4. Глубокое Q-обучение
  5. Знакомство с OpenAI Gym
← Назад к Python Academy