Hierarchical Temporal Memory Maskininlärning
Innehåll Sammanfattning... 3 Inledning... 4 Vad är HTM?... 4 Hur fungerar HTM?... 4 Hierarchical... 4 Temporal... 5 Memory... 5 Hitta orsaker i världen... 5 Dra slutsatsen av orsakerna från nya orsaker... 6 Göra förutsägelser... 6 Använda förutsägelserna till motorik... 7 Hur hittar och drar HTM slutsatser?... 7 Hur hittar och drar varje enskild nod slutsatser?... 8 Vad för problem kan HTM-system användas till?... 8 Exempel på problem... 8 Mönsterigenkänningsproblemet... 8 Träningsdata... 9 Nätverksstruktur... 9 Lärandestegen... 10 Nodernas inlärning... 10 Diskussion... 12 Referenser... 13
Sammanfattning Detta projekt handlar om HTM som står för Hierarchical Temporal Memory. Det är en ny teknik som försöker efterlikna strukturen och dess algoritmiska egenskaper i neocortex, som finns i hjärnbarken i hjärnan hos bland annat människor. I och med detta ger HTM hopp om att datorer ska kunna klara av många kognitiva uppgifter som att till exempel känna igen bilder. Vanligtvis skapas datorprogram för att lösa specifika uppgifter. HTM däremot, är inte programmerat för att lösa ett specifikt problem utifrån vanliga regler. Istället lär sig HTM hur det ska lösa problem.
Inledning Det finns idag inte någon maskin som kan få en bild visad för sig som den tidigare inte sett, och svara på frågan vad det är den ser för något. För människor är detta väldigt enkelt, men ingen maskin klarar av det. Det finns inte heller någon maskin som verkligen förstår mänskligt språk på samma vis som vi gör. Människans hjärna är bland de mest komplexa saker som vi människor känner till, kan det då ens vara möjligt att skapa något liknande artificiellt? I människan görs dessa handlingar mestadels via neocortex (där våra kognitiva förmågor i hjärnan sitter, så som syn, hörsel, känsel, rörelse, språk och planering). När du föds vet inte ditt neocortex någonting, det kan inga språk, det vet inte vad en bil, ett träd och så vidare är. Du kan däremot, eller inte, till exempel lära dig vilket språk som helst. På samma vis som hjärnan gör för att se, gör den även för hörsel, känsel, matematik och så vidare. Denna flexibilitet betyder att det måste finnas några grundprinciper för denna inlärning. Vad är HTM? Målet med HTM är att uppbringa strukturen och de algoritmiska egenskaperna av neocortex. Idag består HTM av ett teoretiskt ramverk för förståelse av neocortex och dess förmågor och den är implementerad med en liten del av detta teoretiska ramverk. Med tiden är det tänkt att mer och mer av de här teorierna ska implementeras. Hur fungerar HTM? Det har länge varit känt att neocortex använder en vanlig algoritm till syn, hörsel, känsel, språkförståelse med mera. Precis som neocortex, skapar HTM en modell genom att lära sig av erfarenhet, vilket den får genom att utsättas för data som den får in genom sensorer. Sensorerna behöver inte vara sensorer som ögon eller öron, utan kan lika gärna vara strukturerade datafiler. HTM är inte programmerat för att lösa ett problem som vanlig programmering gör, där ett program skapas för att lösa ett visst specifikt problem, utan lär sig hur den ska lösa problem istället. Hur bra HTM är beror till stor del på vad den har fått för träningsdata. Hierarchical HTM står för Hierarchical Temporal Memory, och namnet har det inte fått utan orsak. Det första ordet hierarchical kommer från att HTM är organiserat likt ett hierarkiskt träd av noder, där varje nod har en inlärnings- och en minnesfunktion. Med hjälp av hierarki kan HTM utifrån till exempel små byggblock lära sig hur deras olika variationer kan se ut, även lära sig att känna igen större varierade
byggblock som inte setts tidigare. Genom att lära sig hur ett objekt fungerar kan HTM alltså lära sig strukturen på andra objekt. Temporal När HTM tränas, måste programmet bli tilldelat objekt som förändras under tid. Tränas programmet på t.ex. bilder, visas bilderna först uppifrån och nedåt, sedan från vänster till höger, som om bilderna förändrades över tid. Algoritmen är skriven så att det förväntas få indata som stegvis ändras över tid. Därifrån kommer ordet temporal, som kan översättas som tidsbestämd. Den här idén kommer ifrån att människor och andra djur ser och upplever saker över tid. När vi går framåt mot ett hus så ser huset ut att bli större och större, vi ser inte saker som på vykort. Med hjälp av tid kan HTM se skillnad på två stycken objekt. Memory Ordet memory kommer från att det även finns en minnesdel i HTM. Programmet arbetar genom två steg, det tränar minnet, och det använder minnet. När det tränas lär sig HTM att komma ihåg mönster från indata den får in. När HTM sedan tar in objekt från sensorer, kan det avgöra sannolikheten att det objektet är ett redan känt objekt. HTM utför fyra stycken fundamentala funktioner oavsett vilket problem som det tillämpas på. För det första måste programmet hitta orsakerna i världen. Man föds inte som människa med en massa kunskap, ingen programmerade in kunskap i ditt huvud. Intelligens handlar om att hitta orsaker i världen. Den andra saken som systemet gör är, när den har tagit in orsakerna i världen att dra slutsatsen av orsakerna på den nya informationen. Indata till hjärnan är alltid ny, du får aldrig samma information till hjärnan två gånger, det är omöjligt. Den tredje saken som systemet gör är att det förutsäger vad som kommer att ske härnäst. Sätter jag min hand på en varm spisplatta, har jag en förväntning av hur det kommer att kännas. Jag har en förväntning av att det kommer göra ont, och det vore väldigt konstigt om det inte gjorde det. Detta behöver HTM också kunna för att lösa kognitiva problem. Den sista av dessa fyra fundamentala funktioner är att använda förutsägelserna till motoriska rörelser. Neocortex är involverat i motoriska problem, när jag pratar är det neocortex som pratar. Dessa fyra funktioner beskrivs nedan lite mer detaljerat. Hitta orsaker i världen
Figur 1 - Hur HTM relaterar till världen I figuren ovan visas hur HTM-system relaterar till världen. På vänster sida i figuren finns en box som representerar en värld som HTM ska lära sig om. Världen har saker i sig, det finns fysiska saker, som människor, bilar och byggnader. I världen finns även saker som inte är fysiska på samma sätt, som ord sånger och idéer. HTM tar in intryck med hjälp av sinnen som visas i mitten av bilden. Ljud, eller ljus kommer in i dina sinnen och konverteras till mönster av fibrer. När mönstren kommer in i cortex finns det inget ljus, eller ljud. Det är bara mönster, som bär på information om t.ex. ljus. På höger sida är vad vi vill att systemet ska göra, skapa en modell av världen. Att den skapar neuroner som blir aktiva när vissa orsaker i världen är aktiva. Dra slutsatsen av orsakerna från nya orsaker När systemet har hittat orsakerna i världen, kan det dra slutsatser av orsakerna. Givet en ny sensorisk indata, kommer en HTM att dra en slutsats av vilka kända orsaker troligast kommer att vara i världen just då. Om det t.ex. är ett HTM synsystem som får bilder visade för sig, skulle det kunna dra slutsatsen av vad det är för något i bilden. Göra förutsägelser HTM består av en hierarki av minnesnoder, där varje nod lär sig orsaker och skapar en tolkning. En del av inlärningsalgoritmen som görs av varje nod är att spara sannolika mönstersekvenser. Genom att kombinera minnen av sannolika sekvenser med pågående indata, har varje nod förmågan att göra
förutsägelser av vad som sannolikt kommer att ske härnäst. Hela HTM, en samling noder, gör också förutsägelser. Precis som en HTM kan härleda orsakerna av nya indata, kan det också göra förutsägelser av nya händelser. Att HTM kan göra förutsägelser är till stor vikt vid bland annat kreativitet och planering. Förutsägelser i HTM kan användas vid t.ex. priming, fantasi, planering och vanliga beteenden. Att tänka, fantisera, planera framtiden, och tyst repetera saker i våra huvuden är alla samma sak, och uppnås genom att göra en serie av förutsägelser. Detta kan även HTM göra. Att tänka ut framtiden kan vara värdefullt i många program. T.ex. undvika att farliga saker sker i trafiken. Använda förutsägelserna till motorik En HTM som lärt sig orsakerna i världen och hur dessa orsaker beter sig över tid, har i huvudsak skapat en modell av världen. Ett HTM-system skulle kunna vara kopplat till en robot, och kan flytta sina sensorer genom sin värld, och eller manipulera objekt i sin värld. I ett sådant system kan HTM lära sig att skapa ett komplext målmedvetet beteende. Neocortex är faktiskt involverat i motoriska processer. När jag pratar är det neocortex som pratar. Därför behöver även HTM klara av motorik. Hur hittar och drar HTM slutsatser? HTM är uppbyggd som en hierarki av noder där varje nod utför samma lärandealgoritm. Sensorisk data kommer in nerifrån. Varje nod i hierarkin utför samma funktion som samtliga i hierarkin. Vilket betyder att varje nod tittar på tid- och rumsmönster. Enkelt förklarat, varje nod, var den än är i hierarkin, hittar orsakerna för just den nodens indata. Varje nod har in- och utdata samt innehåller algoritmer som vi kan hitta i naturen. Noder i botten av hierarkin får in indata från små areor av den sensoriska informationen. Orsakerna som de hittar är de som är relevanta för den lilla delen av den sensoriska indata-arean. Högre upp i hierarkin får de indata från flera noder under sig själva, och hittar orsaker på dessa indata. Noderna på toppen av hierarkin representerar högre orsaksnivåer som kan uppkomma varsomhelst på hela det sensoriska fältet. Om det till exempel är en visuell slutsats som HTM gör, är det noder på botten som typiskt kommer hitta enkla orsaker som kanter, linjer och hörn. Noder i toppen av hierarkin kommer representera komplexa orsaker som hundar, ansikten och bilar. Det som händer i noderna är att de sparar sekvenser av mönster. Om en nod känner igen ett mönster ur sekvensen från förut, vill den skicka vidare vad mönstret heter upp i hierarkin. Varje nod har alltså ett minne.
Figur 2 - HTM's hierarki Hur hittar och drar varje enskild nod slutsatser? En nod i HTM vet inte vad det gör för något. Den vet inte om den representerar ljus, ljud, eller ord. Den vet inte heller var i hierarkin den sitter. Så hur kan den lära sig vad för orsaker som är ansvarig för dess indata? Det finns två vanliga typer av mönster, rumsliga mönster, och tidsmässiga mönster. Antag då att en nod har ett hundratal indata, och att två av dessa blir aktiva på samma gång. Om detta händer tillräckligt ofta, går det att anta att dessa två delar samma orsak. Det är sunt förnuft, om saker händer tillsammans och ofta, kan vi anta att de har en gemensam orsak utifrån världen. Vad för problem kan HTM-system användas till? HTM är inte designat för att kunna lösa alla problem i världen, det är vissa som passar HTM bättre än andra. HTM teknologi har potential att lösa många svåra problem inom maskininlärning, slutledning, och prognostisering. Några av programmen som företaget Numenta håller på och utforskar är bland annat objektigenkänning, känna igen olika beteenden i videor, identifiera könet på någon som talar och förutspå mönster i trafiken. Exempel på problem Exempel på problem som lösts med hjälp av HTM är mönsterigenkänningsproblem. Figuren nedan visar testbilder som blev igenkända korrekt av HTM. Från en testbild lyckades systemet alltså känna igen bilder som var ganska mycket deformerade, vilket var målet med problemet. Mönsterigenkänningsproblemet Målet här är att använda HTM till att lära invarianta representationer av ett antal enkla binära bilder av en storlek av 32 pixlar x 32 pixlar. Bilden nedan visar några exempel av dessa bilder och problemet
kan man lätt se av att titta på bilden. Tillvänster i bilden är prototyper av en hund, helikopter och taklampa. På höger sida är deformerade bilder av dessa prototyper. För oss människor är det lätt att se vilken deformerad bild som hör till vilken prototyp, men eftersom bilderna är olika skalade och olika deformerade är det väldigt svårt att programmera ett program som klarar av att se vilken bild som hör till vilken kategori. Figur 3 - Exempelbilder från mönsterigenkänningsproblemet Träningsdata I den verkliga världen sker transformationer, rotationer och skalning på grund av relativa rörelser mellan objekt och betraktaren. För att skapa transformationseffekter i deras träning av data, behöver de skapa filmer av binära bilder. Bilderna skapas genom att simulera små mjuka transformationer, som rotationer och skalning. Objekten flyttar sig från vänster till höger, en pixel åt gången. Nätverksstruktur Nätverket för ett sådant här problem är organiserat i en nivå av tre hierarkier. Varje bildsekvens av filmerna visas på en näthinna bestående av 32 x 32 pixlar. Nivå 1 får indata från näthinnan, varje nod på nivå 1 får indata bestående av en 4 x 4 pixlar stor bit. En nod på högre nivå får alltså indata från flera noder av en lägre nivå och ser mer av bilden. I den här hierarkiska strukturen ökar storleken på nodernas mottagande fält allteftersom man går högre upp i hierarkin. Noden på nivå 3 får in hela det visuella fältet genom att ta data från de lägre nivåerna.
Figur 4 - HTM's nätverksstruktur Lärandestegen HTM fungerar med hjälp av två faser, träning och slutledning. När HTM tränas blir nätverket exponerat med filmer på sättet som beskrivits tidigare. Nätverkets noder skapar representationer av världen genom användning av lärandealgoritmer. När lärandet är klart och alla noder har lärt sig det de ska, använder nätverket sig av slutledning istället. I slutledningen får HTM en statisk bild att titta på och ska utifrån den indatabilden identifiera kategorin som bilden tillhör. Det görs från toppen av nätverket. Nodernas inlärning För varje indata av mönster, gör noden tre stycken operationer. Den gör memorering av mönster, lärande övergångssannolikheter och tidsgrupperingar. Memorering av mönster Varje nod har ett minne som sparar mönster i synfältet. Minnet sparar ner mönster permanent och ger varje mönster en etikett, eller mönsternummer. Mönster som dyker upp i nodens synfält jämförs med mönster som redan finns sparade på minnet. Om mönstret inte setts tidigare av noden, läggs mönstret till med ett unikt mönsternummer.
Lärande övergångssannolikheter Noden konstruerar och underhåller en Markov graph. Hörnen på denna graf motsvarar nodens lagrade mönster. Varje hörn ges samma etikett som mönstret som det representerar. När nya mönster läggs till i minnet, läggs nya hörn till i Markov-grafen. Kopplingen mellan två hörn används för att representera det nummer av antal övergångar mellan de mönster som motsvarar dessa hörn. Det vill säga, när inmatning görs av mönstret X, följd av mönstret Y för första gången, skapas en länk mellan hörnen X och Y och antalet övergångar på den länken sätts till ett. Antal övergångar på länken från X till Y ökas sedan varje gång en övergång från mönster X till mönster Y är observerad på nodens synfält. Länkarna i Markov-grafen kan sedan användas som uppskattningar av övergångssannolikheter, med hjälp av normalisering. Den normaliserade grafen uppdateras sedan kontinuerligt för att återspegla de nya sannolikheterna. Figur 5 - Icke-normaliserad Markov-graf Tidsgrupperingar Noden skiljer de olika hörnen på Markov-grafen genom att göra tidsgrupperingar. Varje tidsgruppering är en delmängd av hörnparen i grafen. Grupperingen görs genom att hörnen med samma tidsgruppering har hög sannolikhet att följa varandra. Mönster som är osannolika att följa varandra hamnar i andra grupperingar. Grupperingarna är olika mängder med mönster som har stor sannolikhet att följa varandra i tiden och kallas därför för tidsgrupperingar, eller temporal group.
Diskussion Jag valde att skriva om HTM för att det verkade väldigt intressant med ett system som inte är skapat för att lösa en viss uppgift, utan är skapad mer som en människohjärna. Med en träningsdel, där den lär sig saker, och en minnesdel, där den sparar informationen i ett minne, för att sedan använda informationen till att lösa framtida problem. Jag hade faktiskt inte en aning om att det fanns sådana här system ännu, som kan lära sig nya saker som de inte är programmerade till. Även om det inte är jätteavancerade saker som systemet ännu kan lära sig, är det väldigt spännande. Jeff Hawkins säger att HTM inte är en ny idé eller teori, men att den kombinerar idéer till att efterlikna neocortex med den enklaste designen som ger de bästa möjligheterna. HTM är som sagt ett väldigt nytt system som ännu inte är fullt utvecklat. Det är därför svårt att säga hur pass avancerat HTM kan bli. Men det ser väldigt lovande ut, det finns nog stor chans att det kan bli ett väldigt intelligent system när det är klart utvecklat. Och om det inte blir ett system så är jag säker på att det är ett steg åt rätt riktning mot att skapa riktig artificiell intelligens.
Referenser George, D. (2008). How the brain might work: A hierarchical and temporal model for learning and recognition. Stanford University. Hämtat 29 november 2011 från http://www.numenta.com George, D. & Jaros, B. (2007). The HTM Learning Algorithms. Hämtat 29 november 2011 från http://www.numenta.com Hawkins, J. & George, D. (2007). Hierarchical Temporal Memory: Concepts, Theory, and Terminology. Hämtat 29 november 2011 från http://www.numenta.com