Въпрос на обучение: Всичко, което трябва да знаете за обучението с усилване



Тази статия предоставя подробни и изчерпателни знания за Q-Learning чрез красива аналогия на Reinforcement Learning чрез Python код.

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

Какво е подкрепящо обучение?

Нека да разгледаме ежедневния ни живот. Ние изпълняваме многобройни задачи в околната среда и някои от тези задачи ни носят награди, докато други не. Продължаваме да търсим различни пътища и се опитваме да разберем кой път ще доведе до награди и въз основа на нашите действия подобряваме стратегиите си за постигане на целите. Това моите приятели са една от най-простите аналогии на Усилващото обучение.





Основни области на интерес:

  • Заобикаляща среда
  • Действие
  • Награда
  • Щат

подкрепящо обучение - q обучение



Укрепващото обучение е клонът на машинното обучение, който позволява на системите да се учат от резултатите от собствените си решения. Той решава определен вид проблеми, когато вземането на решения е последователно, а целта е дългосрочна.

Процес на Q-обучение

Нека разберем какво е Q обучението с нашето твърдение за проблем тук. Това ще ни помогне да определим основните компоненти на решение за засилване на обучението, т.е. агенти, среда, действия, награди и състояния.

рекурсивен фибоначи c ++

Аналогия на автомобилната фабрика:



Ние сме в автомобилна фабрика, пълна с роботи. Тези роботи помагат на работниците във фабриката, като предават необходимите части, необходими за сглобяване на автомобил. Тези различни части са разположени на различни места в рамките на фабриката в 9 станции. Частите включват шаси, джанти, табло, двигател и т.н. Factory Master даде приоритет на мястото, където се инсталира шасито, като най-висок приоритет. Нека да разгледаме настройката тук:

Щати:

Местоположението, на което роботът присъства в даден екземпляр, се нарича неговото състояние. Тъй като е лесно да го кодирате, вместо да го запомните по имена. Нека картографираме местоположението на числа.

Действия:

Действията не са нищо друго, освен движенията, направени от роботите на всяко място. Помислете, роботът е на местоположението L2 и преките местоположения, към които може да се придвижва, са L5, L1 и L3. Нека разберем това по-добре, ако визуализираме това:

Награди:

Наградата ще бъде дадена на робота за преминаване директно от едно състояние в друго. Например можете да стигнете до L5 директно от L2 и обратно. Така че, и в двата случая ще бъде осигурена награда от 1. Нека да разгледаме таблицата с награди:

Спомнете си, когато Factory Master даде приоритет на местоположението на шасито. Това беше L7, така че ще включим този факт в нашата таблица с награди. Така че, ще присвоим много голям номер (999 в нашия случай) в местоположението (L7, L7).

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

Сега да предположим, че роботът трябва да премине от точка А до точка B. Той ще избере пътя, който ще даде положителна награда. За това да предположим, че предоставяме награда от гледна точка на отпечатъка, за да го последва.

Но какво ще стане, ако роботът започне от някъде между тях, където може да види две или повече пътеки. По този начин роботът не може да вземе решение и това се случва главно, защото не притежава памет . Тук се появява уравнението на Белман.

V (s) = макс. (R (s, a) + & # 120632V (s ’))

Където:

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

Сега блокът под дестинацията ще има награда от 1, което е най-високата награда. Но какво ще кажете за другия блок? Е, тук се появява дисконтовият фактор. Нека приемем дисконтовия фактор 0,9 и попълним всички блокове един по един.

Процес на решение на Марков

Представете си, че робот е на оранжевия блок и трябва да стигне до дестинацията. Но дори и да има лека дисфункция, роботът ще се обърка по кой път да поеме, вместо да се качва нагоре.

java преобразуване двойно в int

Затова трябва да модифицираме процеса на вземане на решения. Трябва Отчасти на случаен принцип и Отчасти под контрола на робота . Отчасти на случаен принцип, защото не знаем кога роботът ще дисфункционира и Частично под контрол, защото все пак това е решението на робота. И това формира основата за процеса на вземане на решения по Марков.

Процесът на вземане на решения по Марков (MDP) е процес на стохастичен контрол с дискретно време. Той предоставя математическа рамка за моделиране на вземането на решения в ситуации, при които резултатите са отчасти случайни и отчасти под контрола на вземащия решение.

Така че ще използваме нашето оригинално уравнение на Белман и ще направим промени в него. Това, което не знаем, е следващото състояние, т.е. с'. Това, което знаем, са всички възможности за завой и нека променим уравнението.

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

V (s) = max (R (s, a) + & # 120632 & Сигмас'P (s, a, s ’) Срещу'))

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

& Сигмас'P (s, a, s ’) Срещу '): Очаквания на случайността на робота

V (s) = max (R (s, a) + & # 120632 ((0.8V (стаянагоре)) + (0,1V (стаянадолу) + ....))

Сега, нека да преминем към Q обучение. Q-Learning създава идея за оценка на качеството на действие, което се предприема, за да се премине към състояние, вместо да се определя възможната стойност на състоянието, в което се премества.

Това получаваме, ако включим идеята за оценка на качеството на действията за преместване в определено състояние. От актуализираното уравнение на Белман, ако ги премахнем макс компонент, ние приемаме само един отпечатък за възможно действие, което не е нищо друго освен Качество на действието.

Q (s, a) = (R (s, a) + & # 120632 & Сигмас'P (s, a, s ’) Срещу'))

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

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

java class loader интервю въпроси

Ние сме само една крачка близо до окончателното ни уравнение на Q обучение. Ще въведем a Времева разлика за изчисляване на Q-стойностите по отношение на промените в околната среда с течение на времето. Но как да наблюдаваме промяната в Q?

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

Преизчисляваме новото Q (s, a) със същата формула и изваждаме от него по-рано познатото Q (s, a). И така, горното уравнение става:

Въпрос:т(s, a) = Qt-1(s, a) + α TDт(s, a)

Въпрос:т(s, a) = Текуща Q-стойност

Въпрос:t-1(s, a) = Предишна Q-стойност

Въпрос:т(s, a) = Qt-1(s, a) + α (R (s, a) + & # 120632 макс. Q (s ’, a’)-Въпрос:t-1(s, a))

Q Демонстрация за обучение: NumPy

Ще използвам NumPy, за да демонстрира как работи Q Learning.

Стъпка 1: Импортиране, параметри, състояния, действия и награди

импортиране на numpy като np гама = 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,0,0,0], [0,1,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,1,0,1], [0,0,0,0,0,0,0,0,1,0]])

Стъпка 2: Индексиране на местоположенията

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

Стъпка 3: Вземете оптимален маршрут, като използвате Q Learning Process

def get_optimal_route (start_location, end_location): rewards_new = np.copy (rewards) final_state = location_to_state [end_location] rewards_new [final_state, final_state] = 999 Q = np.array (np.zeros ([9,9]))] Процес на обучение за i в обхват (1000): # Вземане на случайно състояние current_state = np.random.randint (0,9) # Python изключва горната граница playable_action = [] # Итерация през новата матрица за награди за j в обхват ( 9): ако rewards_new [current_state, j]> 0: playable_action.append (j) # Изберете произволно действие, което ще ни отведе до следващото състояние next_state = np.random.choice (playable_actions) # Изчисляване на временна разлика TD = rewards_new [current_state , next_state] + гама * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # Актуализиране на Q-стойността с помощта на уравнението на Белман Q [current_state, next_state] + = alpha * TD # Инициализирайте оптималния маршрут с началното местоположение route = [start_location] #Инициализирайте next_location с начално местоположение next_location = star t_location # Не знаем за точния брой итерации, необходими за достигане до крайното местоположение, следователно 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 връщащ маршрут

Стъпка 4: Отпечатайте маршрута

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

Изход:

С това стигаме до края на Q-обучението. Надявам се, че сте се запознали с работата на Q Learning, заедно с различните зависимости, като временната разлика, уравнението на Белман и др.

Edureka’s ви прави владеещи техники като контролирано обучение, ненаблюдавано обучение и обработка на естествен език. Включва обучение за най-новите постижения и технически подходи в областта на изкуствения интелект и машинното обучение като дълбоко обучение, графични модели и обучение за подсилване.