Читать книгу Нейросети. Основы онлайн

else:

return np.argmax(q_table[state]) # Действие с максимальным Q-значением

def update_q_table(state, action, reward, next_state):

best_next_action = np.argmax(q_table[next_state])

td_target = reward + gamma * q_table[next_state][best_next_action]

td_error = td_target – q_table[state][action]

q_table[state][action] += alpha * td_error

# Основной цикл обучения

num_episodes = 500

for episode in range(num_episodes):

state = env.reset()

done = False

while not done:

action = choose_action(state)

next_state, reward, done, _ = env.step(action)

update_q_table(state, action, reward, next_state)

state = next_state

# Тестирование агента после обучения

state = env.reset()

done = False

total_reward = 0

while not done:

action = np.argmax(q_table[state])

state, reward, done, _ = env.step(action)

total_reward += reward

env.render()

print(f"Total reward after training: {total_reward}")

env.close()

```

Объяснение кода

1. Инициализация окружения и параметров:

– Создаем окружение `CliffWalking-v0` из OpenAI Gym.

– Устанавливаем параметры Q-обучения: `alpha` (скорость обучения), `gamma` (коэффициент дисконтирования) и `epsilon` (вероятность выбора случайного действия).

2. Инициализация Q-таблицы:

– Q-таблица инициализируется нулями. Она будет хранить Q-значения для всех пар «состояние-действие».

3. Выбор действия:

– Используем ε-жадную стратегию для выбора действия. С вероятностью `epsilon` выбирается случайное действие, иначе выбирается действие с максимальным Q-значением для текущего состояния.

4. Обновление Q-таблицы:

– Вычисляем целевое значение (TD target), состоящее из текущего вознаграждения и максимального Q-значения для следующего состояния.

– Обновляем Q-значение для текущей пары «состояние-действие» с использованием разности TD (TD error).

5. Основной цикл обучения:

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

– Процесс повторяется до тех пор, пока агент не достигнет конечного состояния.

6. Тестирование агента: