Q Learning: все, что вам нужно знать об обучении с подкреплением



В этой статье представлены подробные и всесторонние сведения о Q-Learning через прекрасную аналогию обучения с подкреплением через код Python.

и - это несколько доменов, которые входят в число самых популярных модных словечек в отрасли и не без оснований. ИИ собирается создать к 2020 году 2,3 миллиона рабочих мест, учитывая, что его главная цель - позволить машинам имитировать человеческое поведение. Странно, правда? Итак, сегодня мы собираемся обсудить Q Learning, строительный блок обучения с подкреплением, в следующем порядке:

Что такое обучение с подкреплением?

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





Ключевые области интересов:

приведение типов в java с примером
  • Окружающая среда
  • Действие
  • Награда
  • государство

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



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

Q-Learning процесс

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

Аналогия с автомобильным заводом:



Мы на автомобильном заводе, заполненном роботами. Эти роботы помогают заводским рабочим, доставляя необходимые детали, необходимые для сборки автомобиля. Эти разные части расположены в разных местах на заводе на 9 станциях. Детали включают шасси, колеса, приборную панель, двигатель и так далее. Factory Master отдает приоритет месту установки шасси как наивысший приоритет. Давайте посмотрим на настройку здесь:

Состояния:

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

Действия:

Действия - это не что иное, как движения роботов в любое место. Предположим, робот находится в местоположении L2, а прямые местоположения, в которые он может перемещаться, - это L5, L1 и L3. Давайте поймем это лучше, если представим себе это:

Награды:

Награда будет вручена роботу за переход непосредственно из одного состояния в другое. Например, вы можете подключиться к L5 напрямую из L2 и наоборот. Таким образом, в любом случае будет предоставлена ​​награда в размере 1. Давайте посмотрим на таблицу вознаграждений:

Помните, когда мастер фабрики определил приоритет расположения шасси. Это был L7, поэтому мы собираемся включить этот факт в нашу таблицу вознаграждений. Итак, мы присвоим очень большое число (в нашем случае 999) в ячейке (L7, L7).

Уравнение Беллмана

Теперь предположим, что роботу нужно перейти из точки А в точку Б. Он выберет путь, который принесет положительную награду. Для этого предположим, что мы предоставляем вознаграждение в виде занимаемой площади.

Но что, если робот стартует где-то посередине, где он может видеть два или более путей. Таким образом, робот не может принять решение, и в первую очередь это происходит потому, что он не обладает объем памяти . Именно здесь на сцену выходит уравнение Беллмана.

V (s) = max (R (s, a) + & # 120632V (s ’))

Куда:

  • s = определенное состояние
  • а = действие
  • s '= состояние, в которое робот переходит из s
  • & # 120632 = коэффициент скидки
  • R (s, a) = функция вознаграждения, которая принимает состояние (я) и действие (a) и выводит значение вознаграждения
  • V (s) = ценность пребывания в определенном состоянии

Теперь блок, расположенный ниже пункта назначения, будет иметь награду 1, что является наивысшей наградой. Но как насчет другого блока? Что ж, вот где вступает в силу фактор дисконтирования. Предположим, что коэффициент дисконтирования равен 0,9, и заполним все блоки один за другим.

Марковский процесс принятия решений

Представьте, что робот находится на оранжевом блоке и ему нужно добраться до места назначения. Но даже при небольшом сбое в работе робот не сможет подняться, а не поймет, какой путь выбрать.

Поэтому нам нужно изменить процесс принятия решений. Он должен Частично случайно и Частично под контролем робота . Отчасти случайно, потому что мы не знаем, когда робот выйдет из строя, а отчасти под контролем, потому что решение остается за роботом. И это составляет основу Марковского процесса принятия решений.

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

Итак, мы собираемся использовать наше исходное уравнение Беллмана и внести в него изменения. Мы не знаем следующего состояния, т.е. s ’. Мы знаем все возможности поворота, и давайте изменим уравнение.

V (s) = max (R (s, a) + & # 120632 В (s ’))

V (s) = max (R (s, a) + & # 120632 &Сигмаs ’P (s, a, s ’) V(s’))

P (s, a, s ’): Вероятность переезда из штата s к s ’ с действием к

&Сигмаs ’P (s, a, s ’) V(s’) : Ожидания случайности от робота

завершить программу на java

V (s) = max (R (s, a) + & # 120632 ((0,8 В (комнатавверх)) + (0,1 В (комнатнаявниз) +….))

Теперь перейдем к Q Learning. Q-Learning представляет собой идею оценки качества действия, которое предпринимается для перехода в состояние, а не определения возможного значения состояния, в которое оно перемещается.

Это то, что мы получим, если включить идею оценки качества действий для перехода в определенное состояние s '. Из обновленного уравнения Беллмана, если мы удалим их Максимум компонент, мы предполагаем только одно место для возможного действия, которое является не чем иным, как Качественный действия.

Q (s, a) = (R (s, a) + & # 120632 &Сигмаs ’P (s, a, s ’) V(s’))

В этом уравнении, которое количественно определяет качество действия, мы можем предположить, что V (s) является максимальным из всех возможных значений Q (s, a). Итак, давайте заменим v (s ’) функцией Q ().

Q (s, a) = (R (s, a) + & # 120632 &Сигмаs ’P (s, a, s ’) макс Q (s ’, a’))

Мы всего на один шаг ближе к нашему окончательному уравнению Q Learning. Мы собираемся представить Временная разница для расчета значений Q с учетом изменений в окружающей среде с течением времени. Но как мы наблюдаем изменение Q?

TD (s, a) = (R (s, a) + & # 120632 &Сигмаs ’P (s, a, s ’) макс Q (s ’, a’)) - Q (s, a)

Мы пересчитываем новый Q (s, a) по той же формуле и вычитаем из него ранее известное Q (s, a). Итак, приведенное выше уравнение становится:

Qт(s, a) = Qт-1(s, a) + α TDт(с, а)

Qт(s, a) = Текущее значение Q

Qт-1(s, a) = Предыдущее значение Q

Qт(s, a) = Qт-1(s, a) + α (R (s, a) + & # 120632 max Q (s ’, a’)-Qт-1(с, а))

Q Learning Demo: NumPy

Я собираюсь использовать NumPy, чтобы продемонстрировать, как работает Q Learning.

Шаг 1. Импорт, параметры, состояния, действия и награды

import numpy as np gamma = 0,75 # Коэффициент дисконтирования альфа = 0,9 # Скорость обучения location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} действия = [0,1,2,3,4,5,6,7,8] награды = np.array ( [[0,1,0,0,0,0,0,0,0], [1,0,1,0,0,0,0,0,0], [0,1,0,0, 0,1,0,0,0], [0,0,0,0,0,0,1,0,0], [0,1,0,0,0,0,0,1,0] , [0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,0,1,0], [0,0,0,0, 1,0,1,0,1], [0,0,0,0,0,0,0,1,0]])

Шаг 2. Сопоставьте указатели с местоположениями

state_to_location = dict ((состояние, местоположение) для местоположения, состояние в location_to_state.items ())

Шаг 3. Получите оптимальный маршрут с помощью процесса обучения Q

def get_optimal_route (start_location, end_location): rewards_new = np.copy (rewards) end_state = location_to_state [end_location] rewards_new [end_state, end_state] = 999 Q = np.array (np.zeros ([9,9])) # Q- Процесс обучения для i в диапазоне (1000): # Выбор случайного состояния current_state = np.random.randint (0,9) # Python исключает верхнюю границу playable_actions = [] # Итерация по новой матрице вознаграждений для j в диапазоне ( 9): if rewards_new [current_state, j]> 0: playable_actions.append (j) # Выберите случайное действие, которое приведет нас к следующему состоянию next_state = np.random.choice (playable_actions) # Вычисление временной разницы TD = rewards_new [current_state , next_state] + gamma * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # Обновление Q-значения с помощью уравнения Беллмана Q [current_state, next_state] + = alpha * TD # Инициализировать оптимальный маршрут с начальным местоположением route = [start_location] #Initialize next_location с начальным местоположением next_location = star t_location # Мы не знаем точного количества итераций, необходимых для достижения конечного местоположения, поэтому цикл while будет хорошим выбором для итераций while (next_location! = end_location): # Получить начальное состояние start_state = location_to_state [start_location] # Получить максимальное значение Q, относящееся к начальному состоянию next_state = np.argmax (Q [start_state,]) # Мы получили индекс следующего состояния. Но нам нужно соответствующее письмо. next_location = state_to_location [next_state] route.append (next_location) # Обновить начальное местоположение для следующей итерации start_location = next_location return route

Шаг 4: Распечатайте маршрут

печать (get_optimal_route ('L1', 'L9'))

Вывод:

На этом мы подошли к концу Q-Learning. Я надеюсь, что вы познакомились с работой Q Learning, а также с различными зависимостями, такими как временная разница, уравнение Беллмана и многое другое.

для строкового метода в java

Эдурека позволяет овладеть такими методами, как контролируемое обучение, неконтролируемое обучение и обработка естественного языка. Он включает в себя обучение новейшим достижениям и техническим подходам в области искусственного интеллекта и машинного обучения, таких как глубокое обучение, графические модели и обучение с подкреплением.