Q Обучение на Python: что это такое, определения [примеры кодирования]

Опубликовано: 2020-03-26

Обучение с подкреплением - это когда обучающийся агент учится вести себя оптимально в соответствии с окружающей средой посредством постоянных взаимодействий. Агент проходит через различные ситуации, которые также известны как состояния. Как вы уже догадались, обучение с подкреплением имеет множество применений в нашем мире. Узнайте больше, если вам интересно узнать больше об алгоритмах обработки данных.

Также у него много алгоритмов, среди самых популярных — Q learning . В этой статье мы обсудим, что это за алгоритм и как он работает.

Итак, без лишних слов, приступим.

Оглавление

Что такое Q-обучение?

Q-обучение — это алгоритм обучения с подкреплением, и он фокусируется на поиске наилучшего образа действий для конкретной ситуации. Это не политика, потому что действия, из которых учится функция обучения Q, не входят в существующую политику, поэтому она не требуется. Он фокусируется на изучении политики, которая увеличивает общую награду. Это простая форма обучения с подкреплением, в которой используются значения действия (или Q-значения) для улучшения поведения обучающегося агента.

Q-обучение — один из самых популярных алгоритмов в обучении с подкреплением, поскольку его легко понять и внедрить. «Q» в Q-обучении представляет собой качество. Как мы упоминали ранее, Q-обучение фокусируется на поиске наилучшего действия в конкретной ситуации. А качество показывает, насколько полезно конкретное действие и какую награду оно может вам помочь получить.

Важные определения

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

Q-значения

Q-значения также известны как значения действия. Они представлены как Q(S, A) и дают вам оценку того, насколько хорошим будет действие A в состоянии S. Модель будет вычислять эту оценку итеративно, используя правило обновления временной разницы, которое мы обсудим позже. в этой секции.

Эпизоды и награды

Агент начинает с начального состояния, проходит через несколько переходов, а затем переходит от текущего состояния к следующему в зависимости от своих действий и своего окружения. Всякий раз, когда агент совершает действие, он получает некоторое вознаграждение. И когда переходы невозможны, это завершение эпизода.

TD-обновление (временная разница)

Вот правило TD-Update или Temporal Difference:

Q(S,A) Q(S,A) + (R + Q(S',A')-Q(S,A))

Здесь S представляет текущее состояние агента, тогда как S' представляет следующее состояние. A представляет текущее действие, A' представляет следующее лучшее действие в соответствии с оценкой Q-значения, R показывает текущую награду в соответствии с текущим действием, обозначает коэффициент дисконтирования и показывает длину шага.

Читайте также: Предпосылки для науки о данных. Как она меняется со временем?

Пример Q Изучение Python

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

пип установить тренажерный зал

Теперь мы импортируем библиотеки, которые нам понадобятся для этого примера:

импортный тренажерный зал

импортировать itertools

импортировать matplotlib

импортировать matplotlib.style

импортировать numpy как np

импортировать панд как pd

импорт системы

из коллекций импортировать defaultdict

из windy_gridworld импортировать WindyGridworldEnv

импортировать графику

matplotlib.style.use('ggplot')

Без необходимых библиотек вы не сможете успешно выполнять эти операции. После того, как мы импортировали библиотеки, мы создадим среду:

env = WindyGridworldEnv()

Теперь создадим политику -greedy:

def createEpsilonGreedyPolicy(Q, epsilon, num_actions):

"""

Создает эпсилон-жадную политику на основе

на заданной Q-функции и эпсилон.

Возвращает функцию, которая принимает состояние

в качестве входных данных и возвращает вероятности

для каждого действия в виде массива numpy

длины пространства действия (множество возможных ответов).

"""

def policyFunction (состояние):

Action_probabilities = np.ones (количество_действий,

dtype = float) * epsilon / num_actions

best_action = np.argmax (Q [состояние])

Вероятность_действия[лучшее_действие] += (1,0 – эпсилон)

вернуть Action_probabilities

Политика возвратаФункция

Вот код для построения модели q-обучения:

def qLearning(env, num_episodes, Discount_factor = 1.0,

альфа = 0,6, эпсилон = 0,1):

"""

Алгоритм Q-Learning: управление TD вне политики.

Находит оптимальную жадную политику при улучшении

следуя эпсилон-жадной политике»»»

# Функция значения действия

# Вложенный словарь, отображающий

# состояние -> (действие -> действие-значение).

Q = defaultdict (лямбда: np.zeros (env.action_space.n))

# Отслеживает полезную статистику

статистика = график.EpisodeStats(

Episode_lengths = np.zeros(num_episodes),

Episode_rewards = np.zeros(num_episodes))

# Создать эпсилон-функцию жадной политики

# правильно для пространства действия окружающей среды

policy = createEpsilonGreedyPolicy(Q, epsilon, env.action_space.n)

# Для каждого эпизода

для ith_episode в диапазоне (num_episodes):

# Сбросить среду и выбрать первое действие

состояние = env.reset()

для t в itertools.count():

# получить вероятности всех действий из текущего состояния

action_probabilities = политика (состояние)

# выбрать действие в соответствии с

# распределение вероятностей

действие = np.random.choice (np.arange (

len (вероятность_действия)),

p = вероятность_действия)

# выполнить действие и получить награду, перейти в следующее состояние

next_state, награда, выполнено, _ = env.step(действие)

# Обновление статистики

stats.episode_rewards[i_episode] += награда

stats.episode_lengths[i_episode] = t

# Обновление ТД

best_next_action = np.argmax (Q [следующее_состояние])

td_target = вознаграждение + коэффициент_скидки * Q[следующее_состояние][лучшее_следующее_действие]

td_delta = td_target – Q[состояние][действие]

Q[состояние][действие] += альфа * td_delta

# done равно True, если эпизод завершен

если сделано:

перерыв

состояние = следующее_состояние

возврат Q, статистика

Теперь обучим модель:

Q, статистика = qLearning(env, 1000)

После того, как мы создали и обучили модель, мы можем построить ее основные характеристики:

plotting.plot_episode_stats (статистика)

Используйте этот код для запуска модели и построения графика. Какие результаты вы видите? Поделитесь с нами своими результатами, и если вы столкнетесь с какой-либо путаницей или сомнениями, сообщите нам об этом.

Читайте также: Алгоритмы машинного обучения для науки о данных

Изучите курсы по науке о данных в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Последние мысли

Когда вы построите график, вы увидите, что награда за эпизод постепенно увеличивается с течением времени. И после некоторых эпизодов сюжет также отражает, что он выравнивает высокий предел вознаграждения за эпизод. Что это означает?

Это означает, что ваша модель научилась увеличивать общее вознаграждение, которое она может получить в эпизоде, обеспечивая оптимальное поведение. Вы, должно быть, также поняли, почему q изучение Python находит применение во многих отраслях и областях.

Каковы недостатки обучения с подкреплением?

1. Чрезмерное обучение с подкреплением может привести к избытку состояний, что снизит качество результатов.
2. Обучение с подкреплением не рекомендуется для простого решения проблем.
3. Обучение с подкреплением требует большого объема данных и вычислений.
4. Обучение с подкреплением имеет свой собственный набор уникальных и очень сложных препятствий, таких как сложная настройка дизайна обучения и проблемы с балансом исследования и подкрепления.

Основана ли модель обучения Q?

Нет, обучение Q не зависит от моделей. Q-обучение — это не модельный метод обучения с подкреплением для определения ценности определенного действия в данном состоянии. Q-обучение — один из нескольких современных алгоритмов обучения с подкреплением, который не требует моделей, что означает, что его можно использовать в различных контекстах и ​​быстро адаптировать к новым и неизвестным условиям. Он может обрабатывать проблемы, связанные со стохастическими переходами и вознаграждениями, без необходимости адаптации и не требует модели среды. Q-обучение — это алгоритм обучения, основанный на ценностях. Алгоритмы на основе значений используют уравнение для обновления функции значения (в частности, уравнение Беллмана).

Чем Q Learning и SARSA отличаются друг от друга?

SARSA изучает почти оптимальную политику во время исследования, тогда как Q-обучение изучает оптимальную политику напрямую. SARSA вне политики изучает значения действий в отношении политики, которой он следует, тогда как SARSA в соответствии с политикой изучает значения действий в отношении политики, которой он следует. Что касается жадной политики, Q-Learning делает это. Обе они сходятся к функции действительного значения при одних и тех же условиях, но с разной скоростью. Для сходимости Q-Learning требуется немного больше времени, но он может продолжать учиться, пока правила меняются. В сочетании с линейной аппроксимацией сходимость Q-Learning не гарантируется. SARSA будет учитывать штрафы за исследовательские шаги при приближении к конвергенции, а Q-learning — нет. Если есть вероятность значительного отрицательного вознаграждения на идеальном пути, Q-обучение попытается вызвать его во время исследования, однако SARSA попытается избежать рискованного оптимального пути и научится использовать его только после того, как параметры исследования будут уменьшены.