Читать книгу Искусственный интеллект. Машинное обучение онлайн

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. Он утверждает, что оптимальные значения функций ценности удовлетворяют принципу оптимальности, то есть оптимальное значение функции ценности для каждого состояния равно максимальной сумме награды, которую агент может получить, начиная с этого состояния и действуя оптимально в дальнейшем.