Fördjupningsarbete i artificiell intelligens II COG En Humanoid Robot ABSTRACT COG är en humanoid robot som har som mål att kunna agera själv utan övervakning av människor. COG har en överkropps, två armar och ett huvud. COG har ett visuellt system som den med hjälp av kan identifiera ansikten. Med COGs armar så kan den bland annat sträcka sig efter saker och hålla i saker. COG lär sig nya saker genom imitation med hjälp sitt visuella system.
2
Innehållsförteckning 1 Inledning...4 2 Vad är COG?...5 2.1 Grundidén men COG... 5 2.2 Hur är COG uppbyggd... 6 2.2.1 COGs Kropp...6 2.2.2 COGs Huvud...9 2.2.3 COGs inlärningssystem...13 3 Slutdiskussion... 16 4 Källor... 18 3
1 Inledning Är det möjligt att bygga en humanoid robot om kan agera i en verklig värld utan att behöva övervaka roboten och dess handling? 1993 så började MIT AI Labs att konstruera en robot som kallades COG. Roboten var tänk att från början simulera ett barn i ett inlärningsstadie. I den här rapporten så kommer jag lägga mest fokus på COGs huvud (främst ögon) och hur armarna fungerar tillsammans med ögonen. COG har ett känslosystem som heter Kismet, jag kommer inte gå in på det systemet i min rapport. Projektet COG avslutades 2003 och det har sedan dess inte publicerats några rapporter om arbetet. 4
2 Vad är COG? 1993 så började MIT artificial intelligence laboratories med ett projekt som kallades COG. Projektet gick ut på att bygga en robot och programmera artificiell intelligens som skulle kunna bli intelligent genom att interagera med och imitera människor som ett spädbarn kan. COG består av en överkropp, ett huvud och två armar som den kan använda för att interagera med objekt och människor i omgivningen. 2.1 Grundidén men COG Det MIT AI Lab vill göra var att konstruera en humanoid robot som kunde agera autonomt och säkert utan övervakning på en arbetsplatsmiljö. De vill inte bygga en robot som står vid ett produktionsband, de vill konstruera en robot som kan fungera likvärdigt i många olika arbetsmiljöer, precis som en riktig människa. COG skulle vara en social robot som kunde agera med människor på ett normalt sätt, respondenten ska inte behöva vara utbildad för att kunna interagera med COG. Utöver att COG ska ha möjligheten att uttrycka sig verbalt så ska den även kunna hålla sig till samtalskonventioner såsom att nicka och hålla ögonkontakt med personen som COG talar med. COG är ett verktyg för att testa psykologiska och kognitionsvetenskapliga modeller på. Genom att testa teorier på ett system som COG så kan man enkelt testa teoriernas trovärdighet. MIT AI Lab vill inte endast skapa en robot som är baserad på biologiska färdigheter utan också kunna utveckla vårt kunnande på dessa färdigheter. 5
2.2 Hur är COG uppbyggd 2.2.1 COGs Kropp COGs kropp består av en överkropp, två armar och ett huvud. Kroppen är uppbyggds på ett sådant sätt att den ska vara så lik en människokropp som möjlig. Kroppens ryggrad kan vrida sig 120 grader och dess nacke kan vrida sig 180 grader, den kan även böja sig framåt och bakåt precis som en mänsklig överkropp. Figur 1 Bilden visar COGs möjligheter att röra sig bortsett från nackens och ryggens vridningsmöjligheter. 2.2.1.1 COGs armar COGs armar är baserade på en mänsklig arms ungefärliga mått. Armarna använder fjädrar som är kopplade till en motor, detta ger armarna ett naturligt rörelsemönster. Till exempel om en rörelse som armen gör bli förhindrad av ett objekt så kommer armen försöka röra sig bort från objektet. COG har möjligheten med sina armar att sträcka sig efter saker. Att den kan göra detta beror på att den kombinera sitt välutvecklade visuella system och sin motorik i armarna. Barn som är fem månader gamla börjar utveckla de första stegen till att sträcka sig efter saker på en 6
grundläggande nivå. Handens position börjar nära ögonen och följer sedan blickens riktning fram till objektet, om barnet missar så kommer armen dras tillbaka och repetera samma procedur tills målet har blivit uppfyllt(diamond 1990). COG utformar en karta som visar relationer mellan positioner i kamerabilden( Saccade Map ) och motorkommandon nödvändiga för att fokusera blicken på en specifik punkt i bilden. Uppgiften utvecklas sedan till att göra en rörelsekarta( Ballistic Map ) som visar relationer mellan ansiktets koordinater och armens koordinater. Figur 2 Att sträcka sig efter objekt är en handling som kräver två stycken underhandlingar. Att fokusera på ett objekt och sedan generera ett rörelsemönster för att ta sig till det målet. Bildsamband kan användas till att hjälpa COG att bygga en karta över positioner( Saccade Map ) i kamerabilden, en karta som kan göra om ögonkoordinater till blickens koordinater(ögats position). Denna karta kan sedan användas till att bygga en karta över rörelser ( Ballistic Map ) som kan göra om blickens koordinater till en utsträckning. Rörelsekartan byggs upp av en algoritm som alltid finns tillgänglig för COG, denna algoritm körs konstant för att alltid ge en uppdatera version av koordinater. Detta krävs eftersom COG jobbar i en dynamisk värld. Denna algoritm jämför armens motoriska kommandon med visuell data för hur armen rör sig. När kartan över positioner har konstruerats så kan COG använda den för att generera felmeddelanden över misslyckade försök till utsträckningar till objekt. Genom att följa armens koordinater kan vi få 7
slutpositionen i bildkoordinater. Denna utsträckningsmetod kan COG utveckla genom en digitalt övervakat inlärningssystem(jordan & Rumelhart 1992). Ett inlärningsförsök går efter följande steg: 1. Hitta det visuella målet. 2. COG anpassar sig till det målat med användning av en karta över positioner. 3. Gör om ögats position till en utsträckning med hjälp av kartan över rörelser. 4. Medan armen rör sig så använder COG rörelsedetektion för att upptäcka armens slut. 5. Använd kartan över kartan över positioner för att för att konstruera ett felmeddelande från bildkoordinater till blickkoordinater, detta kan användas till att träna kartan över rörelser. 6. Drag tillbaka armen till startposition och upprepa alla handlingar. Figur 3 Denna figur visar hur COG använder kartan över rörelser( Ballistic Map ) för att försöka nå en position. När COG märker att den missar målet så skickar den tillbaka ett felmeddelande som uppdatera kartan över positioner( Saccade map ) och sen repeterar den uppgiften till dess att den är klar. 8
Den här inlärningsalgoritmen är kontinuerlig och opererar i realtid i en ostrukturerad riktig miljö utan att använda tidigare inlagda koordinater eller avancerad förprogrammerad kunskap över hur en arm ska röra sig. Den här tekniken kan under tre timmar av övervakad inlärning lära sig ett utsträckningsmönster. Denna inlärning använder en backpropagationalgoritm för att lära sig nya saker under övervakning. För mer information om hur inlärningsmetoden fungerar så hänvisar jag till sista delen i denna rapport som heter inlärningssystem. 2.2.2 COGs Huvud Huvudet på COG består huvudsakligen av sensorer. COG har två ögon, ett öga består av två kameror, en kamera som kan se/filma ett litet område framför COG och en till kamera som kan se en större och bredare yta framför sig. Anledningen till att det är två kameror i varje öga är för att imitera det mänskliga ögat, där det finns periferisyn och fokuserad syn (fovea). 9
Figur 3 Detta är två bilder från de olika kamerorna i COG, den översta bilden är från kameran som ska representera periferiseendet. Den nedre bilden visar en bild från den andra kameran som istället kan ge högupplösta bilder från en liten del av det synfält som den övre bilden visar. Huvudet har två stycken mikrofoner så COG kan uppfatta ljud. Dessa mikrofoner är sammankopplade med de visuella sensorerna och bildar systemet KISMET som är ett system som kan uttrycka känslor. Men om man vill läsa mer om det systemet så kan man gå till wikipedia, då jag inte kommer behandla det i denna rapport. 2.2.2.1 Syn Det som COG kan göra med sina kameror är främst att kunna hitta ansikten, hitta ögonen i ansiktet och se om ögonen kollar på roboten. COG kan även följa ansiktet om det rör sig. Eftersom att det är väldigt krävande av en dator att hitta ansikten på statiska bilder och det fungerar inte i realtid. COG använder istället ett system som är baserat på ett system som kallas ratio-template-method (Sinha 1994). Detta system är designat för att känna igen ansikten framifrån under olika ljusförhållanden. En ratio-template är konstruerad av ett antal regioner och relationer i ett ansikte. Figur 4 Så här kan en ratio-template se ut. Denna är skapad med 16 regioner, dem grå boxarna, och 23 relationer, pilarna i figuren. 10
COG jämför de ratio-templates som den skapar med ett standard template som den har, om nog mycket stämmer så kan COG vara säker på att det är ett ansikte den ser. När ett ansikte har blivit upptäckt så centrerar periferikamera ansiktet på mitten av skärmen så COG kan fokusera på ansiktet. Efter att COG hade lärt sig den här metoden så kunde den börja leta efter ögon i ansiktet. Det var sju stycken testdeltagare som gjorde 140 test där COG hittade ett öga på 131 av bilderna. Figur 5 Ett ansikte där COG har lyckats upptäckt ansiktet och därefter ögat i ansiktet. Som kan se i den vänstra bilden så var det periferiseendet som upptäckte ansiktet och den fokuserade kameran som sedan zoomade in på ansiktet och sedan ögat. Eftersom ett ansikte nästan aldrig är stilla så måste Cog ha möjlighet att följa ansikten som rör sig. När Cog har hittat ett ansikte i periferiseendet så rör den på huvudet och fokuserar på ansiktet med hjälp av sitt deirektseende. Därefter så kollar Cog igen om ansiktet är kvar i direktseendet och om det inte är det så letar den upp ansiktet i periferiseendet igen och fokuserar in på det. Detta gör den med hjälp av en algoritm som hela iden används av Cogs fyra kameror. När COG har lärt sig att upptäcka ögonkontakt så ska MIT AI Lab implementera ett system som gör det möjligt för COG att följa en persons blick för att se vad ögonen tittar på. Detta är möjligt för att precis som människor kan upptäcka om ett par pupiller är riktade mot dig så kan man på samma sett avgöra vilken riktning som pupillen tittar åt och vad personen 11
ser. Det system som MIT AI Labs skulle utveckla för det här syftet skulle vara baserat på forskning som Butterworth(1991) gjorde. Butterworths forskning visade på att ett 6 månader gammalt barn kunde följa en persons blick till rätt sida av kroppen. Vi 9 månaders ålder så kan barnet bedöma vilken riktning som personen tittar åt. Vid 12 månaders ålder så kan barnet bedöma objekt som följer blickens riktning men objektet måste vara framför barnet. Det sista stadiet för den här utvecklingen är vid 18 månaders ålder då kan barnet vända sig som och se vilket objekt som personen tittar på. Eftersom att COG ska likna ett barn i ett tidigt stadie så är denna studie en bra grund att utveckla det redan existerande visuella systemet som COG har. 12
2.2.3 COGs inlärningssystem COGs inlärningssystem bygger på imitation av en annan robot eller i COGs fall en person som COG kan se framför sig. Anledningen till att man gör detta är att det är enklare att låta en robot använda sitt perceptuella system för att lära sig från en annan robot istället för att kopiera kod. Det här beror på att om en robot är skiljer sig lite skulle medföra implementationsproblem om man skulle kopiera koden och felsökningen skulle vara mer mödosam. Om vi vill lära en robot orientera sig i en labyrint så låter man den roboten som ska lära sig labyrinten följa efter en ledarrobot. Efter att roboten ett antal gånger har följt efter ledarroboten så har den lärt sig själv att orientera sig i labyrinten. Detta kan jämföras med ett att om man låter en råtta lära sig en labyrint så kommer inlärningen förbättras dramatiskt om man låter råttan följa en ledarråtta under inlärningsfasen. Även här så kan råttan navigera i labyrinten utan ledarens hjälp vid senare tillfällen. Det stora problemet som finns med denna sort av inlärning är att roboten behöver kunna urskilja vilka percept som är relevanta för inlärningen. Då blir det självklara praktiska problemet datorkraft. Det man får göra är att programmera in enklare sorter av sensorer så roboten inte behöver tolka information fån en hel film utan istället till exempel använda sig av infraröda kameror för att bedöma avstånd. Efter att roboten har gått igenom inlärningsperioden så måste man testa om den faktiskt har lärt sig något. Detta kan man lämpligtvis göra genom att låta roboten navigera hela nya outforskade labyrinter. COG fungerar på ett sådant här sätt där en person får visa COG hur någonting ska utföras och sen får COG försöka själv. http://www.ai.mit.edu/projects/humanoid-robotics-group/cog/cog-video/head nods/clip1/scazimitation-30fps.mov I filmen här ovan har MIT AI Labs spelat in när COG imiterar och lär sig en rörelse, i detta fall att nicka med huvudet. 13
http://www.ai.mit.edu/projects/humanoid-robotics-group/cog/cog-video/head nods/clip2/imitate_human_30fps.mov Vad som är mer intressant är att MIT AI Labs har lärt COG att bara imitera människor, ett exempel på detta visas i filmen ovan. Personen som COG ska imitera håller upp en pappskiva framför ansiktet och då ser man att COG inte imiterar samma rörelse om den inte kan upptäcka ett ansikte på personen som nickar. Det som COG vill se i personens ansikte är ögon, om inte COG hittar ögon så kommer den inte imitera rörelsen. Det finns även filmer som illustrerar detta faktum då COG imiterar leksaksdjur bara för att de har ögon (det finns en länk till fler filmer i källförteckning). Inlärningssystemet som Cog använder för att lära sig nya handlingar är ett feedforward neuralt nätverk och är det enklaste typen av neurala nätverk. Som namnet antyder så kan informationen bara färdas i en riktning, framåt. Denna typ av neurala nätverk bygger på att de olika noderna i nätverket är viktade olika och därför behandlas olika sorters stimuli på olika sätt. I vissa delar av Cog använder MIT AI Labs sig av backpropagation i feedforwardnätverken till exempel när Cog ska lära sig att sträcka sig efter saker. Backpropagation är en övervakad inlärningsmetod som bygger på en förenkling av deltaregeln. Deltaregeln är en optimeringsalgoritm som används för att uppdatera vikterna i varje nod i ett lager av perceptroner i ett neuralt nätverk. Det kräver dessutom att det finns en lärare som vet eller kan räkna ut det utdata som krävs när inlärningens träningsperioder körs. 14
Figur 6: Detta är en typisk bild på ett backpropagationnätverk. Bilden ovan är ett backpropagationnätverk med ett gömt lager, för att det ska vara ett neuralt nätverk måste det finnas ett inputlager, ett outputlager och noll eller flera gömda lager. Notera även att output från varje neuron går till varje neuron i nästa lager. Hur många gömda lager man behöver i ett nätverk kan man inte veta i förväg, man kan börja med ett lager och sedan lägga till flera lager om man vill nätverket ska lära sig bättre. Innan jag går in djupare på detta neurala nätverk så ska jag förklara lite mer om ett par viktiga termer som kommer användas. Vikt: Vikter är reella tal som från början oftast är randomiserade, ett tal mellan 0 och 1. Tröskelvärde: Tröskelvärdet är även det ett reellt värde där experiment har visat att de bästa värdena för tröskelvärdet är mellan 0,25 0ch 1. Både tröskelvärden och vikter justerar man för att optimera det neurala nätverket. s(x)= 1/ (1 + e -a * x ) 15
Detta är Sigmoidfunktionen. Sigmoidfunktionen kan sammanfattas som en funktion som är till för att hantera trösklar i neurala nätverk. Sigmoidfunktionen används på ett neuralt nätverks utdata och gör om värden som är under 0,5 till 0 och värden som är över 0,5 till 1. Ett backpropagationnätverk har en konstant som heter Lambda, lambdakonstanten är inlärningshastigheten. Den är oftast 0,2 för utdatalager och 0,15 för gömda lager. Denna kontant multiplicerar man med vikterna för noderna för att förbättra dem tills nästa repetition. Backpropagationnätverk har två lägen, övervakad träning och produktionsläge. Träningen kan bli sammanfattad i denna lista: 1. Tillför indata i nätverket. 2. Räkna ut utdata. 3. Jämför det resulterade utdata med de förväntade utdata för de givna indata. Detta värde kallas error. 4. Justera vikterna och tröskelvärdet 0, för varje nod med hjälp av error, och med hjälp av lambda. 5. Repetera denna process tills error når ett godtyckligt värde (exempel error < 1%), detta betyder att det neurala nätverket klarade av träningen men om vi istället når en maxnivå av repetitioner så betyder det att träningen inte lyckades. Utmaningen är att hitta en bra algoritm som uppdaterar vikterna och tröskelvärdena vid varje repetition som minskar errorvärdet. 3 Slutdiskussion COG är en robot som kan lära sig genom att imitera och utföra basala rörelser i armarna. Projektet har visat att med nog mycket tid så går det att utveckla robotar som kan vara människolika. Om man skulle utföra samma projekt nu så tror jag man skulle kunna komma 16
väldigt långt, mycket på grund av att vi har ny teknik och mer kunskap inom de flesta områden som COG är inne på. Men även om det skulle någon gång i framtiden skulle vara möjligt att bygga en robot som är så lik människan som COG var tänkt att vara så ser jag inte anledningen till att bygga en sådan robot. Robotar i min uppfattning är till för att utföra arbete som inte människor vill eller kan göra eller som kanske är för riskabelt för oss. För det ändamålet behöver en robot inte kunna uttrycka känslor eller verka mänsklig. Däremot i servicesystem kan de kunskaper som COG har användas, till exempel om en robot sitter i en reception(eller liknande) så kan roboten behöva ha möjlighet att tolka om en kund till exempel är ironisk eller förargad. 17
4 Källor http://www.ai.mit.edu/projects/humanoid-robotics-group/cog/cog-publications/ieee-cog.pdf http://www.cc.gatech.edu/classes/ay2003/cs4803b_spring/readings/brooks99cog.pdf http://www.ai.mit.edu/projects/humanoid-robotics-group/cog/cog-publications/springer-finalscaz.pdf http://org.ntnu.no/smifk/papers/08-a_robot_controller_using_learning_by_imitation.pdf http://www.ai.mit.edu/projects/humanoid-robotics-group/cog/video-visual.html Sinha, P (1994), Object Recognition via Image Invariants: A Case Study, Investigative Ophthalmology and Visual Science 25, 1735-1740. Butterworth, G. (1991), The Ontogeny and Phylogeny of Joint Visual Attention, i A. Whiten, ed. Natural Theories of Mind, Blackwell Diamond, A. (1990), Developmental Time Course in Human Infants and Infants Monkeys, and the Neural Bases, of Inhibitory Control in Reaching, i Development and Neural bases of Higher Cognitive Functions, Vol. 608, New York Academy of Science, pp. 637-676. Jordan, M.I. & Rumelhart, D.E. (1992), Forward Models: Supervised learning with a distal teacher, Cognitive Science 16, 307-354. Alpaydın, Ethem (2010). Introduction to machine learning (2nd ed. ed.). Cambridge, Mass.: MIT Press. p. 250. ISBN 978-0-262-01243-0. Anderson, J. A., 1995, Introduction to Neural Networks (Cambridge, MA: MIT Press) 18