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