Reinforcement Learning:

Relevanta dokument
GRIDWORLD OCH MDP PROJEKTRAPPORT 729G43 MICHAEL JONASSON

Förstärkande inlärning med fokus på Q-learning

Roboten. Sida 1 av 11

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

Lärande genom interaktion

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

Regression med Genetiska Algoritmer

Systemskiss. Joachim Lundh TSRT10 - SEGWAY 6 december 2010 Version 1.0. Status:

med hjälp av Deep Reinforcement Learning

Felsökande av en Lego Mindstorm robot

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning]

Programmering av en Lego robot

Genetisk programmering i Othello

Lego Robot [ ] [ ] [ ]

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Laboration i datateknik

Xtreme Fickparking Real Time Systems - FRTN01 Project supervisor: Karl Berntorp

Laboration i datateknik

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 INLEDNING... 4 ATT ANVÄNDA MOTORERNA... 9 LOOP (UPPREPANDE) FUNKTIONEN SKAPA EN EGEN KLOSS...

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

Optimering av en Yatzytur genom utvärdering av alla inom turen nåbara tillstånd

4 augusti (G) Programmering: Lego

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Första sidan är ett försättsblad (laddas ned från kurshemsidan) Alla frågor som nns i uppgiftstexten är besvarade

Laboration - Programmering av LEGO Mindstorm robot

Legorobot. Lär dig programmera en legorobot. Teknikåttan Ola Ringdahl Lena Kallin Westin

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Konstruera, styra, reglera och programmera en röd tråd F-9

EV3 Roboten. Sida 1 av 13

Planering av ett större program, del 2 - for och listor. Linda Mannila

Personifierad Netflix

Introduktion till programmering SMD180. Föreläsning 9: Tupler

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot

IRIS Integrerat Dynamiskt Prognostiserande Underhållsstöd

AI utmaningar inom kvalitetssäkring. Henrik Emilsson Teststrateg, Nordic Medtest AB

AI-Tekniker. För domänspecifika problemområden i StarCraft 2. Mattias Tiger Fredrik Präntare

Om NXTprogrammering. Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT?

KUNGLIGA TEKNISKA HÖGSKOLAN. Linefollower. Med LEGO Mindstorms och NXC. Paul Coada Introduktion i datateknik II1310

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Föreläsningsanteckningar F6

Programmeringspalett. Pr o gr a mvar a

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

Micro:bit och servomotorer

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Laboration 2. Artificiell Intelligens, Ht Lärare: Christina Olsén Handledare: Therese Edvall Daniel Ölvebrink

Scanner Detektor lärarhandledning Mojäng

Laborationer i SME094 Informationsteknologi I för

729G43 Artificiell intelligens / Maskininlärning 1. Marco Kuhlmann

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Fyra-i-rad med förstärkt inlärning

Dependensregler - Lathund

Kontrollera att följande punkter är uppfyllda innan rapporten lämnas in: Första sidan är ett försättsblad (laddas ned från kurshemsidan)

Q-learning för fyra i rad. OLLE HASSEL och PETTER JANSE

Vad händer efter klick? Av Eva Bertilsson och Emelie Johnson Vegh, publicerad i Canis 2004

Extramaterial till Matematik Y

Labbrapport - LEGO NXT Robot

Extramaterial till Matematik Y

Edison roboten som går at bygga ihop med LEGO

kl Tentaupplägg

Problemlösning och funktioner Grundkurs i programmering med Python

Robotar i NXc. En laboration med Mindstormrobotar. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Användarhandledning Version 1.2

SÄKERHETSINSTRUKTIONER SKALL LÄSAS FÖRE ANVÄNDNING

MMA132: Laboration 2 Matriser i MATLAB

FlyBot. Copyright Sagitta Pedagog AB

Cake-cutting. att fördela resurser på ett rättvist sätt. Ebba Lindström

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

Hur fungerar en dator?

3 augusti (G) Programmering: Lego

Robot Educator En introduktion

Effekt från beteende- och fysisk faktor på vibrationsexponering

Simulering av Poissonprocesser Olle Nerman, Grupprojekt i MSG110,GU HT 2015 (max 5 personer/grupp)

Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken

Regler för sumo under Stockholm Robot Championship 2013

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Utbildningsplaner för kandidat-, magister och masterprogram. 1. Identifikation. Avancerad nivå

1. Vi satte ut ett körblock med standardinställningar 2. Ett till körblock sattes men varaktighet en ställdes istället på 3,55 rotationer (se bild)

Föreläsning 5: Grafer Del 1

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Introduktion i programmering med språket NXC

Programmering av LEGO NXT Robot

Vad behövs för att skapa en tillståndsrymd?

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

Optimering av depåpositioner för den minimala bensinförbrukningen i öknen

Neurala nätverk och språkigenkänning. Henrik Linnarsson. Linköping University

Värmedistribution i plåt

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

LPP i teknik. Varför läser vi teknik Vad skall vi gå igenom? Vilka är våra mål? Så här ser planen ut Hur skall vi visa att vi når målen?

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Planering Programmering grundkurs HI1024 HT TIDAA

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Extramaterial till Matematik Y

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

FORD ST _ST_Range_V2_ MY.indd FC1-FC3 27/06/ :24:01

Lektion 1: Möt Robo! Områden: Robotteknik, ingenjörsteknik mekanisk design

Hur fungerar en dator? Lektionen handlar om att förstå hur datorer styrs av program. Hur fungerar en dator? Lektionsförfattare: Boel Nygren

Transkript:

Reinforcement Learning: Balanserande EV3 Lego Robot genom Q-learning. Introduktion Maskininlärning blir mer och mer populärt och användningsområden utvecklas på många fronter inom olika industrier. Reinforcement learning är en av tre huvudsakliga grenar av maskininlärning. Denna infallsvinkel till maskininlärning är baserad i tanken att en agent utforskar och utnyttjar sin omgivning utan en helt konkret statistisk modell att förhålla sig till. På så sätt skiljer denna förgrening sig från supervised learning och unsupervised learning. Denna rapport detaljerar en studie- och implementationsprocess av en specifik algoritm inom reinforcement learning som kallas för Q-Learning. Syfte & Frågeställning Genom att ha format ett projekt efter en algoritm har detta arbete givit upphov till djupare förståelse av inte bara algoritmen i fråga, men också dess konstituenter och variationer. Det huvudsakliga målet med projektet var att djupdyka på ett ämne och på så vis lära sig om dess användningsområden samt hur man kan gå tillväga för att utforma lösningar på programmeringsproblem som har intelligenta agenter i fokus. Rapporten är en redovisning av inlärningsprocessen och dess efterföljande implementation av Q-Learning. Genom att använda en form av Q-learning och ett Lego Mindstorm EV3 kit att bygga en robot som kan balansera som en enhjuling.

Metod Projektet skulle använda programmeringsspråket Python för att lära en Lego Mindstorm EV3 robot att balansera. De teoretiska kunskaper som applicerades i den praktiska delen av projektet är baserad huvudsakligen på läsning av Artifical Intelligence: A Modern Approach (Russel & Norvig, 2014) men också på undersökning av andra implementationer och informationssökning via internet. För att kunna applicera en Q-Learning algoritm på roboten krävdes förståelse av de olika drivande delarna av algoritmen. Underrubrikerna i denna rapport förklarar dessa aspekter och hur de spelade in i robotens inlärning samt arbetets process. Reinforcement Learning Denna form av inlärning av agenter kan i teorin liknas till psykologins klassiska konditionering. Genom att ge belöning för handlingar som leder till önskat tillstånd och bestraffning (mindre belöning i fallet av maskininlärning) för handlingar som tar agenten längre från önskat tillstånd kan agenten lära sig genom repetition. I praktiken kan vi alltså då förstärka beteende genom belöning och lära agenter att göra val som ger de maximala värdena för framtida tillstånd. Agenten kan maximera värdet av sina handlingar genom att lägga ihop värdena som estimeras att tilldelas från framtida tillstånd med de värden av belöning från sitt nuvarande tillstånd. Genom detta kan agentens val av handling i ett nuvarande tillstånd formas av belöningar från potentiella framtida tillstånd. (Russel & Norvig, 2014) Q-Learning Q-learning är en algoritm som alltid kommer att hitta en policy som är optimal, givet att den har oändligt med tid på sig. Eftersom den inte behöver en modell av omgivningen så verkade den vara en passande algoritm för just detta projekt.

Vid formulering av projektet behövde jag hålla i åtanke några huvudsakliga egenskaper av denna typ av maskininlärning. För att roboten skulle ha en chans att lära sig behövdes någon form av exploration. Roboten skulle behöva ta slumpmässiga handlingar för att kunna hitta fler nya och bättre tillstånd. Algoritmen baseras på vad som kallas för state-action pairs [Q(a,s)] som används i en action-utility function för att avgöra det maximala värdet från att utföra en handling i ett tillstånd (Russel & Norvig, 2014). Själva inlärningen sker genom en tabell som kartlägger tillstånd och de belöningar som de möjliga handlingarna från dessa tillstånd ger. En så kallad Q-Table. Varje gång en handling i ett tillstånd genomförs uppdateras tabellen med ett nytt värde Kod & Implementation Indata från robotens sensorer är avståndet mellan sensorn och underlaget. Eftersom jag vill att roboten skall lära sig balansera är det viktigt att avgöra gränsavstånden för lutning. Sensorn behöver kalibreras till underlaget eftersom det går efter ljus. Klassen Balancer innehåller all kod för programmet som körs på EV3 roboten. Klassen tar argument för gränsavstånden åt båda hållen som roboten kan luta sig, fail_distance_max och fail_distance_min samt antalet states i q-tabellen. Suffixen min och max används för att lutningen kan representeras som fram och bak på en axel. Varje tillstånd har två potentiella handlingar, åk fram eller åk bak. Ett startavstånd definieras för att kunna avgöra differens mellan optimalt tillstånd och nuvarande tillstånd.

Observationer av miljön, alltså avståndet som sensorn mäter representeras som ett tillstånd. Avståndet vid starttillståndet subtraheras mot nuvarande avståndet. Differensen blir avståndet som jämförs mot gränsvärdena. Då kartläggs varje tillstånd som den siffra från divisionen av differensen mellan nuvarande tillståndet och det negativa gränsvärdet med differensen av det positiva gränsvärdet och negativa gränsvärdet. För att hitta den handling som är bäst för tillståndet som roboten befinner sig i behöver vi kolla igenom q-tabellen för att hitta det högsta värdet för det tillståndet. Algoritmen kördes i episoder. Slutet av varje episod betecknades med en lågfrekvent ton. Alltså när roboten lutar sig för långt från ett upprätt tillstånd. Varje episod hade en loop som uppdaterar q-tabellen och dess reward. Tabellen uppdaterades med tillstånd baserade på nya mått av nuvarande avståndet från upprätt position. Detsamma gäller handlingarna som var tillgängliga för detta tillstånd. Värdet för ett par av tillstånd och handling uppdateras med funktionen för value iteration update. Det är i denna loop som motorn kör. Motorn kör och hjulen rörde sig framåt eller bakåt i korrelation med vilken handling som var bäst att ta. I korrelation med belöningen så pep roboten för att signalera om den tog handling som förde den närmare eller längre ifrån ett upprätt tillstånd. Resultat & Diskussion Roboten hann tyvärr inte lära sig att balansera. Eftersom inlärningen skedde per körning av programmet och inte genom en stor mängd simulationer på datorn så tog inlärningen betydligt längre än förväntat. Hårdvarans begränsningar kan också ha spelat in i tidskravet. Jag provade

olika specifikationer på mängden slumpmässiga handlingar och inlärningsfaktorn i försök att minska tiden för inlärning. Metoddiskussion Mycket tid gick åt att försöka förstå implementationen av algoritmen. Istället kunde mer tid ha lagts undan för overhead. Det var inte självklart att det skulle uppkomma så pass många problem som det gjorde med EV3 Lego kittet, men en planering av eventuella risker hade varit till fördel under projektets gång. Träningen av roboten skulle ha haft mer tid undansatt till sig.