Читать книгу Искусственный интеллект. Машинное обучение онлайн
if np.random.rand() < epsilon:
action = np.random.randint(num_actions) # Случайное действие
else:
action = np.argmax(Q_table[state]) # Действие с наибольшим Q-значением
# Взаимодействие со средой и получение награды
reward = -1 # Негативная награда за каждый шаг
# Обновление Q-значения
next_state = (state[0] + 1, state[1]) # Пример следующего состояния (движение вниз)
max_next_Q = np.max(Q_table[next_state]) if next_state[0] < num_states else 0 # Максимальное Q-значение для следующего состояния
target_Q = reward + discount_factor * max_next_Q # Целевое Q-значение
Q_table[state][action] += learning_rate * (target_Q – Q_table[state][action]) # Обновление Q-значения
# Обучение
num_episodes = 1000
for _ in range(num_episodes):
state = (0, 0) # Начальное состояние
while state[0] < num_states – 1: # Пока не достигнута конечная позиция
q_learning_step(state)
state = (state[0] + 1, state[1]) # Переход к следующему состоянию
# Вывод Q-таблицы
print("Q-таблица:")
print(Q_table)
```
Этот код создает простую среду блоков и обучает агента методу Q-обучения на основе ее в течение определенного числа эпизодов. В результате обучения мы получаем Q-таблицу, которая содержит оценки Q-функций для каждой пары состояние-действие.
Таким образом, метод Q-обучения позволяет агенту научиться выбирать оптимальные действия в зависимости от текущего состояния среды, минимизируя количество шагов до достижения цели.
Динамическое программирование
Динамическое программирование (DP) в обучении с подкреплением (RL) – это метод, используемый для решения задач, в которых среда представляет собой марковский процесс принятия решений (MDP). Основная идея DP заключается в рекурсивном вычислении оптимальных значений функций ценности для каждого состояния или пары состояние-действие. Эти значения оптимальной функции ценности используются для выбора оптимальных действий в каждом состоянии, что позволяет агенту принимать решения, максимизирующие суммарную награду в долгосрочной перспективе.
Принцип оптимальности Беллмана является основой динамического программирования в RL. Он утверждает, что оптимальные значения функций ценности удовлетворяют принципу оптимальности, то есть оптимальное значение функции ценности для каждого состояния равно максимальной сумме награды, которую агент может получить, начиная с этого состояния и действуя оптимально в дальнейшем.