Statistisk mönsterigenkänning Jonas Sandström Artificiell intelligens II Linköpings universitet HT 2011
Innehållsförteckning 1. Innehållsförteckning sid 2 2. Inledning sid 3 3. Statistisk mönsterigenkänning sid3 4. Ett exempel sid 4 5. En första överblick sid 4 6. Teori sid 5 7. Inlärning sid 7 7.1 Övervakad inlärning sid 8 7.2 Icke övervakad inlärning sid 8 8 Input och normalisering sid 9 9. Diskussion sid 10 10. Referenser sid 12 2
Inledning Till en början var min tanke att denna rapport skulle handla om hur bildigenkänningssystem fungerar. Det var när jag började läsa om bildigenkänning som jag förstod att en och samma igenkänningsteknik kan användas för igenkänning av många olika typer av information. Mönsterigenkänningstekniker ligger till grunden för system som kan känna igen allt ifrån bilder och ljud till vibrationer och dofter, Statistisk mönsterigenkänning är en av de vanligaste teknikerna. Därför valde jag att fördjupa mig inom denna teknik. Min förhoppning med denna rapport är att tydliggöra hur ett Statistiskt mönsterigenkänningssystem är uppbyggt. Till grund för denna rapport ligger material skrivet på engelska, jag har därför valt att översätta alla uttrycken till svenska. Nedan följer några av det för läsaren viktigaste uttrycken och deras svenska översättning. Pattern = mönster Features (i ett mönster)= nyckelpunkter Cluster (samling av punkter) = Kluster Statistisk mönsterigenkänning När vi lagrar en bildfil eller en ljudfil i en digital databas lagrar vi i information om ett objekt. När det gäller bildobjekt är informationen sammansättningen av olika pixlar som på dataskärmen ger upphov till den givna bilden. För ljudobjekt består informationen av sammansättningen av olika ljudvågorna som ger upphov till det givna ljudet. När objekt som liknar varandra sparas i en digital databas så lagras därmed två uppsättningar information som lika varandra. I statistiska mönsterigenkänningssystem omvandlas informationen för objekten till mönster. Statistisk mönsterigenkänningsteknik handlar om att söka bland dessa mönster som tillhör objekten i en databas. Tekniken kan sammanfattas på detta sätt: Man utgår ifrån att liknande information har liknande mönster och att liknande mönster kan härledas till varandra genom statistiska metoder som behandlar probabilistisk logik. Statistisk mönsterigenkänningsteknik kan bara används när liknande objekt ger upphov till liknande mönster. Vad som menas med att ett objekts mönster liknar ett annat objekts mönster beror på hur det statistiska mönsterigenkänningssystemet är uppbyggt, hur det läser 3
av olika inputs och hur det har tränats till att kategorisera olika typer av mönster. (mer om inlärning, mönster och klassificering senare i rapporten) Ett exempel Vi antar att vi har en databas bestående av tusen bilder. Ingen av bilderna har tilldelats namn som antyder vad de föreställer. När vi sitter och tittar igenom några av dessa bilder hittar vi en bild på en liten fågel. Vi gillar fågeln och vill därför hitta fler bilder på den. Eftersom vi inte har någon aning om var i databasen vi ska leta efter fler bilder på fågeln och efter att en sökning på ordet Fågel inte gett oss några träffar är den enda information vi har det bildobjekt som vi nyss hittat. I detta läge skulle ett söksystem som byggde på statisk mönsterigenkänning vara oss till stor hjälp. Ett sådant system skulle tillåta oss att söka efter bilder i databasen som har liknande mönster som den fågelbild vi hittat. Har vi tur finner vi därmed fler liknande bilder på fågeln. Exemplet illustrerar en situation som läsaren förhoppningsvis kan relatera till. I verkligheten finns det mängder av andra användningsområden för ett statistiskt mönsterigenkänningssystem, särskilt inom maskininlärning. En första överblick Ett system som bygger på statistisk mönsterigenkänning innehåller tre grundläggande delar: 1. Datainsamling (bearbetning av någon form av information så att den kan läsas av systemet) 2. Datarepresentation (omvandling av informationen till punkter i en vektor) 3. Beslutsfattande (slutgiltigt igenkänning baserad på algoritmer som behandlar probabilistisk logik) bild 1 4
Det tre boxarna som finns på bilden ovan är var och en fyllda med olika tekniker som passar olika bra för olika typer av statiska mönsterigenkänningsproblem. Redan nu framgår det alltså att denna teknik kan vara utformad på många olika sätt. Jag kommer i denna rapport börja med att ge en allmän bild av statistisk mönsterigenkänning för att slutligen landa i mer ingående beskrivningar av tekniken. Teori Vi utgår ifrån en liten databas med tre objekt. Objekten: O₁, O₂ och O₃. De tre objekten har alla sitt eget mönster. Ett mönster innebär i detta fall en samling punkter i en vektor med obegränsat många dimensioner. Vi kallar vektorn X. Den samling punkter som kommer från ett objekt On kallar vi nyckelpunkterna n. Dessa nyckelpunkter representeras i vektorn som Xn. Xn = en viss samling nyckelpunkter n i vektorn X. Vidare antar vi att Xn tillhör kategorin Cz. Kategorin Cz är den kategori i vilken alla inputs med nyckelpunkter som liknar objektet Oz:s nyckelpunkter kategoriseras. Om X₁ och X₂ är nyckelpunkter som tillhör klassen Cz så innebär detta att X₁ och X₂ har likartade nyckelpunkter. Uttryckt i ord innebär detta att både X₁ och X₂ är nyckelpunkter som kommer från två olika mönster som båda två har liknande kriterier för att sorteras in i klassen Cz. Därmed är sannolikheten stor att X₁ och X₂ härstammar från liknande mönster och därmed också från två input som båda liknar objektet Oz mer än något annat av objekten i databasen. För att ett statistiskt mönsterigenkänningssystem ska kunna fatta beslut angående vilka nyckelpunkter Xn, som tillhör en kategori Cz, så användes probabilistisk logik. Olika varianter av Bayes teorem tillåter ett system att fatta beslut om klassindelning grundat på observerad sannolikhet: 5
Bayes teorem P(Xa Cb) = P(Cb Xa)*P(Xa) P(Cb) Sannolikheten för nyckelpunkterna Xa givet sannolikheten för kategorin Cb. Vi behöver här ha sanningsvärden för Xa och Cb, värden som systemet behöver hämta någonstans ifrån. Bayes rule of minimum error C P(Xa Cb) = P(Xa Cb)*P(Ci) i=1 Risken för att Xa inte tillhör kategorin Cb kan räknas ut med hjälp av ovanstående algoritm. Värdet användas sedan när systemet ska fatta beslut om kategorisering av nyckelpunkterna Xa. För att ett system ska veta vilka punkter i ett mönster son den skall bryta ut och omvandla till nyckelpunkter används ofta en metod som kallas Principal Component Analysis (PCA). PCA omvandlar punkter från en vektor med flera dimensioner till punkter i en vektor med två dimensioner. Utifrån detta kan sedan nyckelpunkterna utkristalliseras. bild 2 6
Givet teorin ovan är utmaningen för ett statistiskt mönsterigenkänningssystem att: 1. Skapa kategorier Cn för objekten On i databasen 2. Omvandla mönster till nyckelpunkter 3.räkna ut sannolikheten för nyckelpunkterna och tilldela dem kategorier Inlärning Trotts att två stycken statistiska mönsterigenkänningssystem kan vara identiska i det avseendet att de använder precis samma databas och precis samma beslutsfattningsalgoritmer kan deras beslutsfattning variera. Detta beror på att kategorierna inom ett statistiskt mönsterigenkänningssystem formas av systemets inlärning. Inlärning innebär i princip att ett system - med hjälp av träningsobjekt i en databas skapar mallar för objekten i databasens mönster, dessa mallar används sedan vid kategoritilldelning av en inputs nyckelpunkter. Hur kategorierna i ett mönsterigenkänningssystem ser ut påverkas alltså av träningen. Bilden nedan beskriver hur detta sker. bild 3 Dålig träning eller dålig träningsdata kan leda till att kategorierna blir dåliga. En dålig kategori innebära (enligt Anil, K m.fl., 2000) att kategorin är: - För ospecifik, den filtrerar inte bort nyckelpunkter som inte hör hemma i den. 7
- Den är för specifik, den filtrerar bort nyckelpunkter trotts att den borde ha tillhört kategorin. För att undvika ovanstående problem med kategorier är målet med kategoriskapande att finna en bra ballans mellan antalet träningsobjekt vid inlärning och det sammanlagda antalet objekt som sedan ingår i den databas som användas för mönsterigenkänning. Vad som är en bra ballans beror på vilken typ av objekt som ska behandlas av mönsterigenkänningssystemet, närmare bestämt hur många och hur skilda särdrag objekten har. Övervakad inlärning Innebär att en person är med vid utformningen av kategorierna. Objekten i databasen tilldelas då kategorier för hand, av en person. Denna inlärningsmetod kan vara bra om mönsterigenkänningssystemet ska arbeta med abstrakta kategorier, dvs. kategorier som för en dator inte har något tydlig sammanhängande struktur. Exempel på en sådan kategori är stjärntecken. Vi antar att vi ska skapa ett system som ska söker efter stjärntecken utifrån en bild föreställande himlavalvet. Om vi vill hitta stjärntecknet lilla björn så vet vi att tecknet består av sju olika stjärnor, tillsammans bildar de ett mönster. För oss människor är det ett kulturellt mönster men för en dator är mönster abstrakt. För att kategorierna ska kunna hitta de mönster som ger upphov till stjärntecken behöver systemets utformas med hjälp av övervakad inlärning. Problemet med övervakad inlärning är att det är allt för tidskrävande, ofta mycket opraktiskt om en genomförbart för stora datamängder. Icke övervakad inlärning Innebär att kategoriseringen enbart påverkas av mönstret hos objekten i databasen. Den vanligaste metoden för att skapa kategorier ur mönster är klustring vilket innebär att mönster som liknar varandra kategoriseras i samma klass. Vad som menas med att ett mönster liknar ett annat mönster påverkas i sin tur av vilken typ av klustringsmetod som användes. Mönster 1 och Mönster 2 är liknande. De passar båda två in på mallen nedan och hamnar därför i samma kategori. 8
bild 4 Mönster 1 Mönster 2 Mall Att ovanstående två mönster liknar mallen är enkelt för en människa att förstå, men för att en dator ska kunna se likheten i mönstret måste den använda sig av någon form av beräkning. Inom statistisk mönsterigenkänning används ofta Gauss funktion. bild 5 Algoritmen används både för att normalisera mönster vid skapandet av kategorier och till att normalisera mönster som ska matchas mot kategorin. Oavsett vilken typ av inlärning som har använts för att skapa kategorier så kommer kategoriseringsproblem att uppstå om det finns en stor mängd kategorier, eller om databasen har allt för många säregna objekt. Input och normalisering Den information som matas in för sökning i mönsterigenkänningssystemet kallas input. Jag har redan nämnts att inputen måste ha ett mönster som liknar mönstren hos objekten i databasen för att systemet ska kunna kategorisera det korrekt. Med hjälp av Gauss funktion eller Bayes teorem kan systemet på matematisk väg bryta ut nyckelpunkterna i en input och skapa ett normaliserat mönster. 9
En input kan behöva mer eller mindra normalisering beroende på hur bra sensorisk hårdvara mönsterigenkänningssystemet har till sitt förfogande. Se exemplen nedan: Vi tänker oss följande; vi vill söka i en databas som innehåller olika typer av ljud, vi har två olika inspelningar på det ljud som vi vill använda som input (alltså det ljud som kommer bearbetas av systemet). Den ena inspelningen är gjord med en bra mikrofon, den andra med en dålig mikrofon. Använder vi den bra inspelningen som input ger vi systemet ett mindre brusigt input att behandla, och därmed ökar vi chansen för att systemet ska göra en korrekt kategorisering av inputens mönster. Ett annat exempel är att vi letar efter en bild på bokstaven D. Följande bilder ska symbolisera olika input föreställande bokstaven D som har scannats in i en databas. Ett statistiskt mönsterigenkänningssystem riskerar att kategorisera några av dessa input i en felaktiga kategori om de inte först normaliseras. bild 6 Diskussion Den statistiska mönsterigenkänningstekniken största fördel är kanske främst att den kan implementeras i många olika typer av system och därför användas i vitt skilda sammanhang. Eftersom tekniken bygger på probabilistisk logik krävs inget avancerat neuralt nätverk för att skapa ett statistisktmönsterigenkänningssystem och därmed kan även mycket simpla system använda teknik. Eftersom Bayers teorem är en välkänd sats kan den vara bra att använda om man vill skapa ett mönsterigenkänningssystem som ska vara enkelt för användaren att förstå. Den mest väsentliga skillnaden mellan olika statistiska mönsterigenkänningssystem är ifall systemet har använt sig av övervakad eller icke övervakad inlärning. Övervakad inlärning passar bäst för igenkänning av mer abstrakta mönster medans icke övervakad inlärning med 10
fördel kan användas vid enklare mönsterigenkänning, exempelvis igenkänning av tvådimensionella bilder. Det jag ser som den största nackdelen med statistisk mönsterigenkänning är att tekniken inte kan användas för abstrakt mönsterigenkänning av stora mängder data eftersom övervakad inlärning är allt för tidskrävande. Statistiska mönsterigenkänningssystem kommer troligtvis alltid att användas för att lösa enklare mönsterigenkänningsuppgifter, men för svårare mönsterigenkänningsuppgifter finns bättre metoder (neurala nätverk) som ligger utanför statistisk mönsterigenkänningsteknik. Jag antar att om man i framtiden lyckas kombinera ett system som har kunskap om kulturella mönster (stjärntecken och liknande) med en icke övervakad inlärningsteknik, kan detta leda till ett genombrott för användandet av statistisk mönsterigenkänning. 11
Referenser Böcker Russel,S & Norvig,P Artificial Intelligence, A Modern Approach 2:nd edition (2003) K, Fukunaga Introduction to statistical pattern recognition (1990) Artikel: Anil, K mfl Statistical Pattern recognition: A review (2000) Internet Pattern recognition http://en.wikipedia.org/wiki/pattern_recognition (2011-09-19, 10:00) Bayes theorem http://en.wikipedia.org/wiki/bayes%27_theorem (2011-09-19, 10:01) Cluster analysis http://en.wikipedia.org/wiki/cluster_analysis (2011-09-19, 10:02) Bild Bild 5 http://crop.unl.edu/claes/salta/gaussianfunction.jpg (2011-09-19, 12:43) 12