portaldacalheta.pt
  • Основен
  • Подвижен
  • Дизайн На Марката
  • Възходът На Дистанционното
  • Жизнен Цикъл На Продукта
Back-End

Училище Flappy Bird: Учебен урок за подсилване



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

В този урок за обучение за укрепване ще покажа как можем да използваме PyTorch, за да научим невронна мрежа за обучение за подсилване как да играем Flappy Bird. Но първо ще трябва да покрием редица градивни елементи.



Алгоритмите за машинно обучение могат грубо да бъдат разделени на две части: Традиционни алгоритми за обучение и дълбоко обучение алгоритми. Традиционните алгоритми за учене обикновено имат много по-малко научими параметри от алгоритмите за дълбоко обучение и имат много по-малък капацитет за учене.



Също така, традиционните алгоритми за обучение не са в състояние да го направят извличане на функции : Специалистите по изкуствен интелект трябва да измислят добро представяне на данни, което след това се изпраща на алгоритъма за обучение. Примерите за традиционни техники за машинно обучение включват SVM, произволна гора, дърво за решения и $ k $ -средства, докато централният алгоритъм в дълбокото обучение е дълбока невронна мрежа .



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

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



Научими параметри и хиперпараметри

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

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



Алгоритми за учене под надзор, без надзор и подсилване

Един от начините за класифициране на учебните алгоритми е очертаването на граница между контролирани и ненаблюдавани алгоритми. (Но това не е непременно толкова просто: Укрепващо обучение лежи някъде между тези два типа.)

Когато говорим за контролирано обучение, разглеждаме двойки $ (x_i, y_i) $. $ x_i $ е входът на алгоритъма, а $ y_i $ е изходът. Нашата задача е да намерим функция, която да прави правилното картографиране от $ x_i $ на $ y_i $.



За да настроите научимите параметри, така че да дефинират функция, която преобразува $ x_i $ в $ y_i $, трябва да бъдат дефинирани функция за загуба и оптимизатор. Оптимизаторът минимизира функцията на загуба. Един пример за функция на загуба е средната квадратична грешка (MSE):

[MSE = sum_ {i = 1} ^ {n} (y_i - widehat {y_i}) ^ 2 ]

Тук $ y_i $ е основен етикет, а $ widehat {y_i} $ е предвиден етикет. Един оптимизатор, който е много популярен в дълбокото обучение, е стохастичен градиент спускане . Има много варианти, които се опитват да подобрят метода на стохастичен градиент спускане: Адам, Ададелта, Адаград и т.н.



Неуправляваните алгоритми се опитват да намерят структура в данните, без изрично да бъдат снабдени с етикети. $ k $ -означава е един от примерите за ненаблюдавани алгоритми, който се опитва да намери оптимални клъстери в данните. По-долу има изображение с 300 точки с данни. $ k $ -означава алгоритми, намериха структурата в данните и присвоиха етикет на клъстер на всяка точка от данни. Всеки клъстер има свой собствен цвят.

Разделени по цвят клъстери от точки с данни. Клъстерите бяха открити от ненаблюдаван алгоритъм



Подсилващото обучение използва награди: оскъдни, забавени етикети. Агентът предприема действие, което променя средата, от която може да получи ново наблюдение и награда. Наблюдението е стимулът, който агентът възприема от околната среда. Може да е това, което агентът вижда, чува, мирише и т.н.

Наградата се дава на агента, когато предприеме действие. Той казва на агента колко добро е действието. Възприемайки наблюденията и наградите, агентът се научава как да се държи оптимално в околната среда. Ще вляза в това по-подробно по-долу.

Активно, пасивно и обратно обучение за подсилване

Има няколко различни подхода към тази техника. На първо място, има активно обучение за подсилване, което използваме тук. За разлика от това, има пасивно укрепващо обучение, където наградите са просто друг вид наблюдение и вместо това решенията се вземат съгласно фиксирана политика.

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

Обобщение, преоборудване и недооборудване

Всеки фиксиран екземпляр от параметри и хиперпараметри се нарича модел. Експериментите с машинно обучение обикновено се състоят от две части: Обучение и тестване.

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

Ако даден модел е твърде опростен по отношение на данните, той няма да може да побере данните за обучение и ще се представи слабо както на набора от данни за обучение, така и на набора от тестове. В такъв случай казваме, че моделът е такъв недооборудване .

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

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

Графики за недостатъчно, балансирано и преоборудване. Балансираната функция следва общата тенденция на точките с данни достатъчно добре, без да се придържате твърде близо до отделните точки от данни

Мащабируемост

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

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

Невронни мрежи

Невронните мрежи се състоят от множество слоеве. Изображението по-долу показва проста невронна мрежа с четири слоя. Първият слой е входният слой, а последният слой е изходният слой. Двата слоя между входния и изходния слой са скрити слоеве.

Графика на невронната мрежа, показваща всеки възел на входния слой, съотнесен към всеки възел на скрит слой 1, от своя страна картографиран към всеки възел на скрит слой 2 и след това накрая картографиран към изходния слой, който се състои от един възел

Ако невронната мрежа има повече от един скрит слой, ние я наричаме дълбока невронна мрежа. Входният набор $ X $ се дава на невронната мрежа и се получава изходът $ y $. Обучението се извършва с помощта на алгоритъм за обратно разпространение, който комбинира функция за загуба и оптимизатор.

Обратното размножаване се състои от две части: подаване напред и назад. При пряко преминаване входните данни се поставят на входа на невронната мрежа и се получават изходи. Загубата между основната истина и прогнозата се изчислява и след това в обратния проход се настройват параметрите на невронните мрежи по отношение на загубата.

Конволюционна невронна мрежа

Един вариант на невронна мрежа е конволюционна невронна мрежа . Използва се предимно за задачи с компютърно зрение.

Най-важният слой в конволюционните невронни мрежи е конволюционният слой (оттук и името). Неговите параметри са направени от научими филтри, наричани още ядра. Конволюционните слоеве прилагат операция на конволюция към входа, предавайки резултата на следващия слой. Конволюционната операция намалява броя на научимите параметри, функционирайки като вид евристика и улесняваща невронната мрежа за обучение.

По-долу е описано как работи едно конволюционно ядро ​​в конволюционен слой. Ядрото се прилага към изображението и се получава обърната функция.

Анимацията, подчертаваща ядрото и неговата работа като изображение, се обработва и съответната извита функция се извежда

ReLU слоевете се използват за въвеждане на нелинейности в невронната мрежа. Нелинейностите са важни, защото с тях можем да моделираме всякакви функции, не само линейни, превръщайки невронната мрежа в универсален апроксиматор на функции. Това прави функцията ReLU да бъде дефинирана по следния начин:

[ReLU = max (0, x) ]

ReLU е един от примерите за т.нар активиращи функции използва се за въвеждане на нелинейности в невронните мрежи. Примери за други активиращи функции включват сигмоидни и хипер-допирателни функции. ReLU е най-популярната функция за активиране, тъй като е показано, че тя кара невронната мрежа да тренира по-ефективно в сравнение с други функции за активиране.

По-долу е даден график на функция ReLU.

Образец на документ за техническа спецификация за уеб разработка

Функция ReLU, подобна на простия диагонал на графика y = x, но с всички отрицателни x стойности, картографирани на нула

Както можете да видите, тази функция ReLU просто променя отрицателните стойности на нули. Това помага за предотвратяване на проблема с изчезващия градиент . Ако градиентът изчезне, това няма да има голямо влияние при настройката на теглото на невронната мрежа.

Конволюционната невронна мрежа се състои от множество слоеве: Конволюционни слоеве, ReLU слоеве и напълно свързани слоеве. Напълно свързани слоеве свързват всеки неврон в един слой с всеки неврон в друг слой, както се вижда с двата скрити слоя в изображението в началото на този раздел. Последният напълно свързан слой извежда изходи от предишния слой, в този случай, number_of_actions стойности.

Приложения

Дълбокото обучение е успешно и превъзхожда класическите алгоритми за машинно обучение в няколко подполета за машинно обучение, включително компютърно зрение, разпознаване на реч и засилване на обучението. Тези области на задълбочено обучение се прилагат в различни реални области: финанси, медицина, развлечения и др.

Подсилващо обучение

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

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

През 2013 г. лондонският AI стартиращ DeepMind създаде голям пробив в обучението за контрол на агенти директно от сензорни входове с високи размери. Те публикуваха вестник, Игра на Atari с обучение за дълбоко усилване , в която те показаха как са научили изкуствена невронна мрежа да играе Atari игри само от поглед към екрана. Те бяха придобити от Google и след това публикуваха нова статия в Природата с някои подобрения: Контрол на човешко ниво чрез задълбочено обучение за подсилване .

За разлика от другите парадигми за машинно обучение, обучението за подсилване няма супервизор, а само сигнал за награда. Обратната връзка се забавя: Тя не е мигновена, както при контролираните алгоритми за обучение. Данните са последователни и действията на агент влияят върху последващите данни, които получава.

Сега агент е разположен в своята среда, която е в определено състояние. За да опишем това по-подробно, използваме процес на решение на Марков, който е формален начин за моделиране на тази подкрепяща учебна среда . Състои се от набор от състояния, набор от възможни действия и правила (например вероятности) за преминаване от едно състояние в друго.

Графика на процеса на вземане на решения по Марков: Държави (маркирани

Агентът е в състояние да извършва действия, трансформирайки околната среда. Ние наричаме наградата $ R_t $. Това е скаларен сигнал за обратна връзка, показващ колко добре се справя агентът на стъпка $ t $.

Агент на невронна мрежа решава кое действие да предприеме на всяка стъпка въз основа на наблюдения и награди.

За добро дългосрочно представяне трябва да се вземат предвид не само незабавни награди, но и бъдещи награди. Общата награда за един епизод от времевата стъпка $ t $ е $ R_t = r_t + r_ {t + 1} + r_ {t + 2} + ldots + r_n $. Бъдещето е несигурно и колкото по-напред вървим в бъдещето, толкова повече бъдещи прогнози могат да се разминават. Поради това се използва намалена бъдеща награда: $ R_t = r_t + gamma r_ {t + 1} + gamma ^ 2r_ {t + 2} + ldots + gamma ^ {nt} r_n = r_t + gamma R_ {t + 1} $. Агентът трябва да избере действието, което максимизира намалената бъдеща награда.

Дълбоко Q-обучение

Функцията $ Q (s, a) $ представлява максималната намалена бъдеща награда, когато действие $ a $ се извърши в състояние $ s $:

[Q (s_t, a_t) = max R_ {t + 1} ]

Оценката за бъдеща награда се дава от уравнението на Белман: $ Q (s, a) = r + gamma max_ {a ’} Q (s’, a ’) $. С други думи, максималната бъдеща награда, дадена на щат $ s $ и действие $ a $, е непосредствената награда плюс максималната бъдеща награда за следващото състояние.

Апроксимацията на Q-стойностите с помощта на нелинейни функции (невронни мрежи) не е много стабилна. Поради това се използва повторно преживяване за стабилност. Опитът по време на епизоди в тренировъчна сесия се съхранява в паметта за повторение. Случайни мини-партиди от паметта за повторно използване се използват вместо да се използва най-скорошният преход. Това нарушава сходството на следващите учебни проби, които иначе биха насочили невронната мрежа до локален минимум.

Има още два важни аспекта, които трябва да споменем относно дълбокото Q-обучение: Проучване и експлоатация. С експлоатацията се взема най-доброто решение предвид текущата информация. Изследването събира повече информация.

Когато алгоритъмът изпълнява действие, предложено от невронната мрежа, той извършва експлоатация: Той използва научените знания на невронната мрежа. За разлика от това, алгоритъмът може да предприеме произволно действие, изследвайки нови възможности и въвеждайки потенциални нови знания в невронната мрежа.

„Алгоритъмът за дълбоко Q-обучение с възпроизвеждане на опит“ от хартията на DeepMind Игра на Atari с обучение за дълбоко усилване е показано по-долу.

Дълбокото Q-обучение с алгоритъм за възпроизвеждане на опит в псевдокод

DeepMind се отнася до конволюционните мрежи, обучени с техния подход, като Deep Q-мрежи (DQN).

Пример за дълбоко Q-обучение с помощта на Flappy Bird

Flappy Bird е популярна мобилна игра, първоначално разработена от виетнамския художник на видеоигри и програмист Донг Нгуен. В него играчът контролира птица и се опитва да лети между зелени тръби, без да ги удря.

По-долу е екранна снимка от клонинг Flappy Bird, кодиран с помощта на PyGame :

Екранна снимка от FlapPyBird, клонинг на Flappy Bird, кодиран с помощта на PyGame

Оттогава клонингът е раздвоен и модифициран: Фонът, звуците и различните стилове птици и тръби са премахнати и кодът е коригиран, така че лесно може да се използва с прости учебни рамки за подсилване. Модифицираният двигател на играта е взет от този проект на TensorFlow :

Екранна снимка на DeepLearningFlappyBird, вилица на клонинга с опростена графика

Но вместо да използвам TensorFlow, аз изградих дълбока рамка за обучение с помощта на PyTorch. PyTorch е дълбока рамка за обучение за бързо, гъвкаво експериментиране. Той осигурява тензори и динамични невронни мрежи в Python със силно ускорение на GPU.

Архитектурата на невронната мрежа е същата като DeepMind, използвана в статията Контрол на човешко ниво чрез задълбочено обучение за подсилване .

Слой Вход Размер на филтъра Крачка Брой филтри Активиране Изход
conv1 84x84x4 8x8 4 32 ReLU 20x20x32
conv2 20x20x32 4х4 2 64 ReLU 9 х 9 х 64
conv3 9 х 9 х 64 3 х 3 един 64 ReLU 7 х 7 х 64
FC4 7 х 7 х 64 512 ReLU 512
fc5 512 2 Линейна 2

Има три конволюционни слоя и два напълно свързани слоя. Всеки слой използва активиране на ReLU, с изключение на последния, който използва линейно активиране. Невронната мрежа извежда две стойности, представляващи единствените възможни действия на играча: „Полети нагоре“ и „не прави нищо“.

Входът се състои от четири последователни 84x84 черно-бели изображения. По-долу е даден пример за четири изображения, които се подават към невронната мрежа.

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

Четири последователни черно-бели рамки на клонира Flappy Bird, подадени директно към невронна мрежа

Можете също така да забележите, че изображението е изрязано, така че подът е пропуснат, защото е без значение за тази задача. Всички пиксели, които представляват тръби и птицата, са бели, а всички пиксели, които представляват фона, са черни.

Това е част от кода, който определя невронната мрежа. Теглата на невронните мрежи се инициализират, за да следват равномерното разпределение $ mathcal {U} (- 0,01, 0,01) $. Частта на пристрастие на параметрите на невронните мрежи е настроена на 0,01. Няколко различни инициализации бяха изпробвани (Xavier униформа, Xavier нормална, Kaiming униформа, Kaiming нормална, еднаква и нормална), но горната инициализация накара невронната мрежа да се сближи и да тренира най-бързо. Размерът на невронната мрежа е 6.8 MB.

class NeuralNetwork(nn.Module): def __init__(self): super(NeuralNetwork, self).__init__() self.number_of_actions = 2 self.gamma = 0.99 self.final_epsilon = 0.0001 self.initial_epsilon = 0.1 self.number_of_iterations = 2000000 self.replay_memory_size = 10000 self.minibatch_size = 32 self.conv1 = nn.Conv2d(4, 32, 8, 4) self.relu1 = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(32, 64, 4, 2) self.relu2 = nn.ReLU(inplace=True) self.conv3 = nn.Conv2d(64, 64, 3, 1) self.relu3 = nn.ReLU(inplace=True) self.fc4 = nn.Linear(3136, 512) self.relu4 = nn.ReLU(inplace=True) self.fc5 = nn.Linear(512, self.number_of_actions) def forward(self, x): out = self.conv1(x) out = self.relu1(out) out = self.conv2(out) out = self.relu2(out) out = self.conv3(out) out = self.relu3(out) out = out.view(out.size()[0], -1) out = self.fc4(out) out = self.relu4(out) out = self.fc5(out) return out

В конструктора ще забележите, че има дефинирани хиперпараметри. Оптимизирането на хиперпараметри не се прави за целите на тази публикация в блога. Вместо това хиперпараметрите се използват предимно от документите на DeepMind. Тук някои от хиперпараметрите се мащабират, за да бъдат по-ниски, отколкото в хартията на DeepMind, тъй като Flappy Bird е по-малко сложен от игрите Atari, които те използваха за настройка.

Също така, epsilon е променен, за да бъде много по-разумен за тази игра. DeepMind използва епсилон от един, но тук използваме 0.1. Това е така, защото по-високите епсилони принуждават птицата да се люшка много, което изтласква птицата към горната граница на екрана, като винаги в крайна сметка птицата се срива в тръба.

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

optimizer = optim.Adam(model.parameters(), lr=1e-6) criterion = nn.MSELoss()

Играта трябва да бъде инстанцирана:

game_state = GameState()

Повторната памет се дефинира като списък на Python:

replay_memory = []

Сега трябва да инициализираме първото състояние. Действието е двуизмерен тензор:

  • [1, 0] представлява „не правете нищо“
  • [0, 1] представлява „полет нагоре“

frame_step метод ни дава следващ екран, награда и информация дали следващото състояние е терминално. Наградата е 0.1 за движение на всяка птица, без да умре, когато не минава през тръба, 1 ако птицата успешно премине през тръба и -1 ако птицата катастрофира.

resize_and_bgr2gray функция изрязва пода, преоразмерява екрана до изображение 84x84 и променя цветовото пространство от BGR на черно-бяло. image_to_tensor функция преобразува изображението в тензор PyTorch и го поставя в паметта на GPU, ако е налице CUDA. И накрая, последните четири последователни екрана се обединяват и са готови за изпращане в невронната мрежа.

action = torch.zeros([model.number_of_actions], dtype=torch.float32) action[0] = 1 image_data, reward, terminal = game_state.frame_step(action) image_data = resize_and_bgr2gray(image_data) image_data = image_to_tensor(image_data) state = torch.cat((image_data, image_data, image_data, image_data)).unsqueeze(0)

Първоначалният epsilon се задава с помощта на този ред код:

epsilon = model.initial_epsilon

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

Алгоритъмът взема проби от мини партиди от паметта за повторно възпроизвеждане и актуализира параметрите на невронната мрежа. Действията се изпълняват с помощта на епсилон алчно проучване . Епсилон е отгрял с течение на времето. Функцията за загуба, която се минимизира, е $ L = frac {1} {2} left [ max_ {a ’} Q (s’, a ’) - Q (s, a) right] ^ 2 $. $ Q (s, a) $ е основната стойност на истината, изчислена с помощта на уравнението на Белман и $ max_ {a ’} Q (s’, a ’) $ се получава от невронната мрежа. Невронната мрежа дава две Q-стойности за двете възможни действия и алгоритъмът предприема действието с най-високата Q-стойност.

while iteration

Сега, когато всички части са на мястото си, ето преглед на високо ниво на потока от данни, използващ нашата невронна мрежа:

Окончателен преглед на високо ниво на потока от данни, използващ нашата невронна мрежа: Състоянието на въвеждане се състои от четири последователни екрана. От това невронната мрежа дава две Q-стойности за двете възможни действия (

Ето една кратка последователност с обучена невронна мрежа.

Анимация на клонира Flappy Bird, която се играе от получената обучена невронна мрежа

Показаната по-горе невронна мрежа беше обучена с помощта на графичен процесор от висок клас Nvidia GTX 1080 за няколко часа; използвайки вместо това решение, базирано на процесор, тази конкретна задача ще отнеме няколко дни. FPS на игралния механизъм бяха настроени на много голям брой по време на тренировка: 999 ... 999 - с други думи, колкото се може повече кадъра в секунда. Във фаза на тестване FPS беше настроен на 30.

По-долу има диаграма, показваща как максималната Q-стойност се е променила по време на итерации. Показва се на всеки 10 000-та итерация. Намаляващ скок означава, че за определен кадър (една итерация е един кадър) невронната мрежа прогнозира, че птицата ще получи много ниска награда в бъдеще - т.е. тя ще се срине много скоро.

възвръщаемостта на инвестицията мярка за изпълнение:

Диаграма, показваща как максималната Q-стойност се е променила по време на итерации. Започвайки от нула и с няколко спадове надолу, той показва обща тенденция към Q-стойност максимум около 12 или 13 след около милион повторения.

Наличен е пълният код и предварително обучен модел тук .

Дълбоко укрепващо обучение: 2D, 3D и дори реален живот

В този урок за обучение за подсилване на PyTorch показах как компютър може да се научи да играе Flappy Bird без никакви предварителни знания за играта, използвайки само подход на проба и грешка, както би направил човек, когато се сблъска с играта за първи път.

Интересно е, че алгоритъмът може да бъде реализиран в няколко реда код с помощта на рамката PyTorch. Документът, върху който се основава методът в този блог, е сравнително стар и има много по-нови статии с различни модификации, които позволяват по-бързо сближаване. Оттогава дълбокото укрепване се използва за игра на 3D игри и в реални роботизирани системи.

Компании като DeepMind , Малууба , и Викарий работят интензивно върху дълбоко укрепващо обучение. Подобна технология беше използвана в AlphaGo, който победи Лий Седол, един от най-добрите играчи в света в Go. По това време се смяташе, че ще отнеме поне десет години, докато машините могат да победят най-добрите играчи в Go.

Потокът от интерес и инвестиции в обучение за задълбочено укрепване (и в изкуствения интелект като цяло) може дори да доведе до потенциален изкуствен общ интелигентност (AGI) - интелигентност на човешко ниво (или дори отвъд нея), която може да бъде изразена под формата на алгоритъм и симулирана на компютри. Но AGI ще трябва да бъде предмет на друга статия.


Препратки:

  • Демистифициране на обучение за дълбоко подсилване
  • Дълбоко подсилване на обучение за Flappy Bird
  • „Конволюционна невронна мрежа“ в Уикипедия
  • „Укрепващо обучение“ в Уикипедия
  • „Процес на решение на Марков“ в Уикипедия
  • Курс на University College London по RL
Свързани: Урок за дълбоко обучение: От перцептрони до дълбоки мрежи

Разбиране на основите

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

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

Какво е обучение за пасивно укрепване?

При учене на пасивно укрепване агентът учи и следва политика. Той получава „награди“, но може да ги наблюдава само независимо дали са добри или не. За разлика от това, активното укрепващо обучение кара агентите да се научат да предприемат най-добрите действия за всяко състояние, за да максимизират кумулативните бъдещи награди.

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

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

Какви са видовете невронни мрежи?

Много типове невронни мрежи се основават на комбинациите от слоеве, които използват, напр. конволюционни слоеве, напълно свързани слоеве и LSTM слоеве. Видовете невронни мрежи включват конволюционни невронни мрежи (CNN), повтарящи се невронни мрежи (RNN) и многослойни персептрон (MLP или „ванилия“) невронни мрежи.

Какво представлява DeepMind AI?

DeepMind Technologies Limited е базирана в Лондон компания за изкуствен интелект. Те разработиха AlphaGo, който победи Лий Седол, световен шампион в Go. Компанията е придобита от Google през 2014 г.

Първи стъпки с езика за програмиране Elm

Уеб Интерфейс

Първи стъпки с езика за програмиране Elm
Сортиране на карти: По-добра информационна архитектура чрез привеждане в съответствие с умствените модели на потребителите

Сортиране на карти: По-добра информационна архитектура чрез привеждане в съответствие с умствените модели на потребителите

Процес На Проектиране

Популярни Публикации
Създавайте данни от случаен шум с генерални състезателни мрежи
Създавайте данни от случаен шум с генерални състезателни мрежи
Миналото все още присъства - преглед на вечния дизайн
Миналото все още присъства - преглед на вечния дизайн
Финансово бедствие в криза: Не можете да предскажете, можете да подготвите
Финансово бедствие в криза: Не можете да предскажете, можете да подготвите
Бруталистки уеб дизайн, минималистичен уеб дизайн и бъдещето на Web UX
Бруталистки уеб дизайн, минималистичен уеб дизайн и бъдещето на Web UX
Разширени съвети и хакове за презентация на PowerPoint
Разширени съвети и хакове за презентация на PowerPoint
 
Архитект отпред
Архитект отпред
Студената технологична война: все още тук и все още се използва
Студената технологична война: все още тук и все още се използва
Въведение в Apache Spark с примери и случаи на употреба
Въведение в Apache Spark с примери и случаи на употреба
Комодитизирани смартфони: Привеждане на 4G в развиващите се страни
Комодитизирани смартфони: Привеждане на 4G в развиващите се страни
Как да създам API за Secure Node.js GraphQL
Как да създам API за Secure Node.js GraphQL
Популярни Публикации
  • потърсете информация за кредитна карта
  • кой от следните принципи не е важен принцип, който трябва да се вземе предвид при персонализиране на система
  • какво се случи с компанията Blackberry
  • защо разработката на android е толкова сложна
  • как да използвате приложението invision
  • принципи на дизайна в изкуството
Категории
  • Подвижен
  • Дизайн На Марката
  • Възходът На Дистанционното
  • Жизнен Цикъл На Продукта
  • © 2022 | Всички Права Запазени

    portaldacalheta.pt