Kolonnproblemet med ett hierarkiskt synsätt. Fredrik Stavfors

Relevanta dokument
TAMS79: Föreläsning 10 Markovkedjor

Grafer och grannmatriser

Föreläsningsanteckningar F6

Föreläsning 5: Grafer Del 1

Informationsfusion - en nyckelteknologi för informationsöverlägsenhet. Per Svensson

Markovkedjor. Patrik Zetterberg. 8 januari 2013

Stokastiska processer

Markovprocesser SF1904

Datastrukturer och Algoritmer D0041D

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

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

Föreläsning 5: Dynamisk programmering

Markovprocesser SF1904

TNK049 Optimeringslära

Markovprocesser SF1904

Markovprocesser SF1904

UPPGIFT 1 WILL ROGERS FENOMEN

Markovprocesser SF1904

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

SF1901: Sannolikhetslära och statistik Föreläsning 2. Betingad sannolikhet & Oberoende

DAB760: Språk och logik

Föreläsninsanteckningar till föreläsning 3: Entropi

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Bayesianska numeriska metoder II

P(X nk 1 = j k 1,..., X n0 = j 0 ) = j 1, X n0 = j 0 ) P(X n0 = j 0 ) = etc... P(X n0 = j 0 ) ... P(X n 1

Teoretisk del. Facit Tentamen TDDC (6)

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

TANA17 Matematiska beräkningar med Matlab

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

1 LP-problem på standardform och Simplexmetoden

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.


Regression med Genetiska Algoritmer

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Tillvägaghångssätt för skattning av körkortsmodell

Konvergens för iterativa metoder

Föreläsning 5 Innehåll

de var svåra att implementera och var väldigt ineffektiva.

Graärgning och kromatiska formler

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens Erik Claesson

Sitter och klurar på jordtag; Hur skulle en matematisk uppställning av ett jordtag se ut med homogen mark?

Källkodning. Egenskaper hos koder. Några exempel

a = a a a a a a ± ± ± ±500

Tentamen Datastrukturer för D2 DAT 035

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Obemannade flygplan. Namn: Hampus Hägg. Datum: Klass: TE14B. Gruppmedlemmar: Gustav, Emilia, Henric och Didrik

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

TENTAPLUGG.NU AV STUDENTER FÖR STUDENTER. Kursnamn Fysik 1. Datum LP Laboration Balkböjning. Kursexaminator. Betygsgränser.

Övningshäfte 2: Induktion och rekursion

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

2D Potentialen i en nervcell definieras normalt som skillnaden i spänning mellan dess axon och dendrit.

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

1 Minkostnadsflödesproblem i nätverk

Tentamen, Algoritmer och datastrukturer

Tentamen: Programutveckling ht 2015

HKGBB0, Artificiell intelligens

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

1, 2, 3, 4, 5, 6,...

Lutande torn och kluriga konster!

Tentamen Datastrukturer (DAT036)

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Deadlocks. detektera och undvik

729G04 - Diskret matematik. Lektion 4

Exempel ode45 parametrar Miniprojekt 1 Rapport. Problemlösning. Anastasia Kruchinina. Uppsala Universitet. Januari 2016

Den räta linjens ekvation

Övning 1(a) Vad du ska kunna efter denna övning. Problem, nivå A. Redogöra för begreppen diskret och kontinuerlig stokastisk variabel.

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Föreläsning 9: NP-fullständighet

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

1 De fyra fundamentala underrummen till en matris

4 Fler deriveringsregler

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Hierarchical Temporal Memory Maskininlärning

Föreläsning 7 Datastrukturer (DAT037)

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Om plana och planära grafer

Ma7-Per: Algebra. Det andra arbetsområdet handlar om algebra och samband.

Föreläsning Datastrukturer (DAT037)

Stokastiska processer och simulering I 24 augusti

Den räta linjens ekvation

Prestanda och skalbarhet

DEL I. Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604 för D, den 5 juni 2010 kl

Lektionsanteckningar 11-12: Normalfördelningen

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Föreläsning 13 Innehåll

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

Ordinära differentialekvationer,

TDDI16: Datastrukturer och algoritmer

1 Duala problem vid linjär optimering

Transkript:

Kolonnproblemet med ett hierarkiskt synsätt Fredrik Stavfors Examensarbete i datalogi vid Stockholms universitet 2006

Kolonnproblemet med ett hierarkiskt synsätt Fredrik Stavfors Examensarbete i datalogi om 20 poäng vid Matematisk-datalogiska linjens datalogiinriktning Stockholms universitet år 2006 Handledare vid Nada var Lars Arvestad Examinator var Stefan Arnborg TRITA-CSC-E 2006:067 ISRN-KTH/CSC/E--06/067--SE ISSN-1653-5715 Institutionen för numerisk analys och datalogi KTH 100 44 Stockholm

Sammanfattning Rapporten beskriver vad som händer när man inför ett hierarkiskt synsätt på kolonnproblemet. Kolonnproblemet går att beskriva på följande sätt; Du har uppgifter om en militär enhet som förflyttar sig längs en väg. Du har också förhandsinformation om samtliga befintliga fiendetrupper. Du skall nu svara på vilken militär enhet du har observerat samt vilken taktik den kan tänkas ha. Hierarkiska-dolda-Markov-modeller, som är grunden till alla algoritmer i denna rapport, utnyttjar att militära förband ställer upp enligt en hierarkisk struktur. En bataljon innehåller flera kompanier som i sin tur innehåller flera plutoner och så vidare. Det visade sig att det är många fördelar med att ta hänsyn till problemets hierarkiska struktur. Det behövs mycket mindre förhandsinformation för att algoritmerna skall fungera. Algoritmerna går dessutom mycket snabbare

Abstract A Hierarchical Approach on the Column Problem This report describes what will happen when you apply a hierarchical approach on the column problem. The column problem can be described in the following way; You have information about a military formation moving on a road. You also have knowledge about the available enemy forces and you want to know which military unit that was observed and what tactic they might use. Hidden Markov Models are the base for all algorithms in this report. They make use of the fact that military companies are arranged in a hieratical way. One battalion consists of several companies and one company contains several platoons and so on. The report shows that there are many advantages with the hierarchical approach; You need much less information for the algorithms to work properly and the calculation becomes much faster.

Innehåll Inledning och syfte...1 Kolonnproblemet...1 Problem...2 Dolda Markovmodeller...3 Inlärning och klassificering...4 Plutongraf...4 Kompanigraf...5 Inlärning med Baum-Welch metod...6 Felaktigt förenklade grafer och inlärning med Baum-Welch...9 Tabortnoder...10 Fördelar...10 Nackdelar...10 Hur man tar bort tabortnoderna...11 Metodbeskrivningar...12 Framåt-Bakåt-Algoritmen...12 Framåt-Algoritmen...12 Bakåt-Algoritmen...13 Framåt-Bakåt-Algoritmen...14 Cubic-time Inference...15 Algoritmen...15 Bayesianska nätverk...17 Översättningen...18 Utförande...20 Beräkningar och testresultat...21 Beräkningar...21 Tester...21 Experimenten...22 Testresultat...23 Slutsatser...24 Hierarki kontra ej hierarki...24 Metodval...24 Referenser...25

Inledning och syfte I alla tider har militära beslutsfattare försökt att ta reda på så mycket om fiendens uppställning och taktik som möjligt. Förr i tiden var det stora problemet att man inte hade någon information eller i bästa fall ytters bristfällig sådan. På grund av detta kunde de egna befälen inte fatta korrekta beslut. Nu för tiden är det på sätt och vis omvänt, en besluts-fattare kan få in väldigt mycket information. Problemet är att informa-tionen inte är överskådlig, vilket gör att det är så gott som omöjligt att utnyttja alla data. Ett typiskt sådant problem är kolonnproblemet. Kolonnproblemet Kolonnproblemet är att analysera information om en militärkolonn som är i rörelse längs en väg. Man vill få svar på ett antal frågor så att korrekt beslut om motåtgärder kan fattas. Den viktigaste frågan är självklart vilken militärkolonn är det som man har fått information om. När den frågan väl är löst uppkommer andra följdfrågor. Hur har kolonnen ställt upp, varför den har ställt upp på detta sätt och vilken taktik har den? Det är också intressant att kunna svara på vad det är som skiljer den observerade uppställningen jämfört med hur fienden normalt ställer upp. För att kunna svara på dessa frågor krävs en gedigen kunskap om hur fienden brukar ställa upp sina kolonner beroende på vilken taktik han har. Man måste också veta vilka fordon fienden har tillgång till. En lösning på dessa frågor har beskrivits av Johan Björnfot [1] men problemet är att algoritmen tar mycket lång tid att använda sig av. Framförallt så kräver algoritmen att man har tillgång till orimligt mycket förhandsinformation. Lösningen går i stora drag ut på följande tillvägagångssätt. Man observerar ett fientligt förband som rör sig längs en väg via t.ex. ett flygfotografi. Sedan tar en människa eller ett igenkänningsprogram och prickar in typen på de olika fordonen, till exempel pansarvagn, bandvagn mm. Detta får vi som indata. För att ta reda på vilket förband det är så undersöker man vilken känd fientlig enhet som bäst stämmer överens med den givna observationen. När sedan detta är gjort återstår det att försöka ta reda på vilken taktik enheten har. Detta gör man på samma sätt. Man jämför vilken taktisk uppställning som stämmer överens med de givna indata. Denna rapport handlar om hur det går att förbättra denna algoritm så att de kräver mindre förhandsinformation samt går snabbare. Detta åstadkommer vi genom att vi inte bara har förhandsinformation om hur fordon normalt ställer upp inom en militär enhet, till exempel en bataljon, utan att vi också vet hur underenheterna i detta fall kompanier och plutoner ställer upp. 1

Problem Problemet är att man har observationer av en formation. Dessa observationer behandlas av en typbestämmare. Det vi då får fram är en sträng av fordon f 1 f n samt vilken typ dessa är. Om ett fordon inte kan typbestämmas anges en sannolikhetsfördelning över de olika typerna som fordonet kan anta. Det som vi skall svara på är vilken formation det är. Antag för enkelhetens skull att en formation normalt bara ställer upp i en viss bestämd ordning, till exempel pansarvagn tank pansarvagn. Den inbördes ordningen av fordon av samma typ kan dock variera. Den första och sista pansarvagnen kan byta plats. Denna ordning kan också skifta lite om det tillkommer respektive saknas enstaka fordon. Det kan också förekomma felaktiga observationer eller att typbestämmaren har gjort fel. 2

Dolda Markovmodeller Vi är intresserade av att lagra all kunskap om en fiendes militära enheter på något bra sätt så att man senare, utifrån uppgifter om någon okänd militär formation, snabbt kan få fram vilken enhet det är och hur dom har ställt upp.[3,5,7,8,10,12]. För att lagra denna information använder vi DMM:er (Dolda Markovmodels) även kallade Hidden Markov Models (HMM). För att förstå vad en Dold Markovmodell är bör man veta vad en Markovmodell är En Markovmodell innehåller riktade grafer. En riktad graf är en mängd noder (cirklarna i bilderna). Från varje nod utgår ett antal kanter (strecken i bilderna) som går till andra noder. Varje sådan kant har en sannolikhet att man följer just den kanten. Denna sannolikhet kallas för kantvikt. Summan av alla kantvikter för kanterna som utgår från en nod är 1. Vi kan nu betrakta Markovkedjan som en maskin som går framåt ett steg åt gången. Om vi efter ett antal steg befinner oss i en nod n och är intresserade av att ta ytterligare ett steg framåt sker detta slumpartat. Sannolikheten att vi följer en viss kant är just den kantens kantvikt. Eftersom kantvikterna alltid kommer att summera till 1 kommer vi alltid att följa en kant. I nästa steg görs nu samma sak igen fast nu utgår vi från noden vi just har kommit till. Från början startar vi med en sannolikhetsfördelning g, där g n svarar mot hur stor sannolikheten är att vi startar i en viss given nod n. Maskinen stannar när vi har kommit till en viss slutnod. Dolda Markov-kedjor fungerar på samma sätt som Markovkedjor. Skillnaden är att varje gång vi kommer till en nod n kommer noden att generera en symbol i ett alfabet. Sannolikheten att noden n genererar bokstaven p är B n (p). Till exempel kan en nod ha sannolikheten 0,7 att generera symbolen pansarvagn och 0,3 att generera symbolen bandvagn. En pluton som alltid ställer upp på ett och endast ett sätt, till exempel först 2 pansarvagnar och sedan en bandvagn kan få följande graf. Se figur 1. Start Pa Pa Ba End Figur 1. Graf av en pluton som jämt ställer upp först en pansarvagn sedan en pansarvagn och sist en bandvagn Grafen startar med en startnod. Därefter kommer i tur och ordning de noder som representerar den första pansarvagnen, den andra pansarvagnen och bandvagnen. Grafen avslutas sedan med en slutnod. Dock är inte alla militära formationer så enkla. För mer komplicerade formationer krävs en viss struktur på graferna. Graferna består av tre stycken typer av noder: huvudnoder, läggtillnoder och tabortnoder [9]. 3

Huvudnoder (H n ) genererar normalfallet. Om enheten är en pluton, som normalt ställer upp med typen t 1 (t.ex. pansarvagn) som första fordon så kommer H 1 alltid att generera en pansarvagn. Läggtillnoder (L n ) genererar de fordon som normalt inte tillhör enheten och som klämt sig in före en huvudnod (H n ). Detta kan till exempel uppkomma då en pansarvagnspluton eskorterar ett fordon. Tabortnoder (T n ) är noder där det inte sker någon emission det vill säga noderna genererar inga symboler. T i används för att representera fallet där inte H i finns med. Detta kan till exempel uppkomma då fordonet som huvudnoden (H i ) representerar har skjutits sönder. Då T n är icke genererande noder så används dessa även för att markera startnod (T 0 ) och slutnod (T n+1 ). Figur 2. Standard HMM för att behandla en pluton som innehåller tre fordon. Inlärning och klassificering Det man nu vill göra är att skapa en HMM som har så stor sannolikhet som möjligt att generera givna observationer. Detta gör man genom att bestämma de olika övergångssannolikheterna med hjälp av träningsdata. För varje förband och taktik finns det separata träningsdata. Plutongraf Anta att vi är intresserade av att skapa en graf som lagrar informationen över hur en viss typ av enhet, pluton, med längden n ser ut. Plutonen ställer jämt upp på liknande sätt t 1, t 2, t n. t i och t j kan vara samma eller olika typer av fordon. Det kan som sagt förekomma förändringar i upp- 4

ställningen. Det kan ha tillkommit fordon. Det kan ha bytts ut fordon och det kan ha fallit bort fordon. Alla grafer startar med en startnod T 0. Från T 0 är det möjligt att gå till T 1, H 1 eller L 1. Att gå till H 1 täcker upp det förväntade fallet där det första fordonet är av typen t 1. Att gå till T 1 täcker upp det fallet där t 1 inte finns med. Att gå till L 1 täcker upp för det fallet där det har tillkommit oväntade fordon före t 1. Från L 1 kan man sedan gå till H 1, T 1 (om t 1 inte finns med) eller ånyo till L 1 (om ytterligare ett extra fordon finns med). Från H 1 och T 1 går man sedan vidare till H 2, T 2 eller L 2 och så vidare. Se figur 2. Ovanstående graf klarar dock bara av att plutonen ställer upp på liknande sätt hela tiden. Det vill säga att t 1, t 2,t 3 är givna typer av fordon. Om vi däremot bara vet att en pluton innehåller 2 stycken pansarvagnar och en bandvagn så blir grafen mer komplicerad. Då skapar man en fix graf för varje möjlig uppställning. I detta fall skulle det bli 3 stycken delgrafer (Pansarvagn pansarvagn bandvagn), (pansarvagn bandvagn pansarvagn) och (bandvagn pansarvagn pansarvagn). För var och en av dessa uppställningar skapar man en graf enligt ovanstående. Sedan kopplar man dom samman med en gemensam startnod och en gemensam slutnod genom att lägga till en kant från den gemensamma startnoden till var och en av grafernas startnod. Lägg också till en kant från de olika grafernas slutnoder till den gemensamma slutnoden. Kompanigraf Den vedertagna metoden att skapa en kompanigraf fungerar på samma sätt som när man skapar grafer för plutoner. Skillnaden mellan ett kompani och en pluton är att kompaniet är större. Det leder till att ett kompani kan ställa upp många fler kombinationer än en pluton. För varje möjlig uppställning krävs det nya träningsdata. Detta leder dock till att man måste ha tillgång till orimligt många träningsobservationer. Om vi i stället utnyttjar att vi vet hur plutonsuppställningen fungerar hierarkiskt och att plutoner håller ihop inom ett kompani kan vi skapa kompanigrafen på liknande sätt som när vi förut skapade plutonsgrafen. Vi låter kompanigrafen generera plutoner i stället för fordon. Ett exempel: Om vi skall göra en graf över ett kompani som innehåller två stycken pansarplutoner och en signalpluton och vi antar att den inbördes plutonsordningen inte är bestämd (Antagandet kan vara observerat i testdata,), finns då tre möjliga uppställningar beroende på var signalplutonen infogar sig i kompaniet. För varje sådan uppställning skapar vi en delgraf. Sedan sätter vi ihop delgraferna med en slutnod och en startnod. Observera dock skillnaden att nu genererar huvudnoderna plutoner och inte fordon. Se figur 3. 5

Figur 3. Ett kompani som innehåller tre stycken plutoner, två pansarvagnsplutoner och en signalpluton. Ordningen mellan de olika plutonerna kan skifta. Inlärning med Baum-Welch metod Baum-Welch metod är en inlärningsalgoritm. Det vill säga algoritmen bestämmer övergångsannolikheterna samt emissionssannolikheterna i grafen, så att de på bästa sätt stämmer med givna träningsdata. Emissionssannolikheterna är de olika sannolikheterna noderna har att genererar de olika fordonen. Detta gör att grafen kommer att få en så hög sannolikhet som möjligt att generera de olika sekvenserna som man har till träningsdata. Vi har en mängd med träningsdata O 1 O n. Dessa utgör iakttagelser av n stycken uppställningar. Vi är intresserade av att skapa en övergångsmatris för grafen. Det vill säga vilken sannolikhet som man har att följa de olika kanterna i varje nod. Denna övergångsmatris kallar vi för A. Värdet A ij står för sannolikheten att följa kanten från nod i till nod j. Om det inte går någon kant från i till j så sätts A ij till 0. 1 B j (t) står för sannolikheten att generera typen t i den genererande noden j. I algoritmens ursprungliga utformning sätts startvärdena på alla parametrar i grafen till slumpmässiga värden. Vi kommer dock att utnyttja att vi vet en hel del om grafen. Vi kan till exempel få en hygglig bild av sannolikheten att ett fordon tas bort respektive läggs till genom att titta på träningsdata och se hur mycket varje observation varierar i antalet symboler 1 Observera att inte hela matrisen behöver lagras. Det räcker med att lagra de värden som är större än 0. 6

räknat. Därefter kan vi beräkna ett medeltal över detta. Vi vet dessutom att sannolikheterna att de olika huvudnoderna genererar respektive elementtyp alltid är 1. Genom att stoppa in denna förhandsinformation i A ij och B j (t) underlättar vi för Baum-Welch vilket gör att vi sannolikt får bättre slutresultat. Baum-Welch Algoritm Från början har vi alltså våra n stycken träningsexempel som vi kallat O 1, O 2,, O n. [1,2].Vi är intresserade av att hålla reda på hur många gånger vi förväntar oss att en viss övergång sker. Vi inför därför C kl som är det förväntade antalet övergångar från nod k till nod l. Vi inför också E k (t) som är det förväntade antalet gånger noden k genererar typen t. Vi använder sedan dessa för att skatta nya värden på övergångssannolikheterna A kl och B j (t). N är antalet noder i grafen. T är antalet typer noden B j kan generera. A kl och B j (t) skattas på följande sätt. A < kl C N i kl C ki B ( t) < j E ( t) T i j E ( i) j Algoritmen fungerar på följande sätt. Först skattas C kl och E k (t) genom att beräkna möjliga stigar för träningssekvenserna utifrån de för närvarande gällande värdena på A kl och B j (t). Sedan används formlerna ovan för att skatta nya värden på A kl och B j (t). Denna process itereras sedan till ett stoppvillkor är uppfyllt. Stoppvillkoret baseras på log likelihood-värdet och beräknas på följande sätt för n stycken oberoende träningssekvenser. Algoritmen stannar när likelihood-värdet är tillräckligt stort. log P(O K n = = 1,O 2,,O n A, B) log P(O, ) i 1 i A B Det går att bevisa att processen konvergerar mot ett lokalt maximum. Det är dock något som inte kommer att tas upp i denna rapport utan det går med fördel att läsa i [2]. Läsaren bör dock känna till att det ofta finns ett flertal olika lokala maxima. Det är till stor del startvärdena som bestämmer vilket lokalt maximum metoden konvergerar mot. För att räkna ut C kl räknar man först ut hur stor sannolikhet det är att en viss övergång sker (k till l) när ett visst element (j) genereras på en viss träningssekvens (r). 7

r Numret på den för tillfället aktuella träningssekvensen. L r Längden på aktuella träningssekvens r. r α Denna variabel står för sannolikheten att man befinner kj sig i noden k när det j:te elementet i träningssekvensen r precis har blivit genererat. Denna variabel beräknas med Framåt-Algoritmen. Se Framåt-Algoritmen under rubriken Framåt-Bakåt-Algoritmen. 2 r β Denna variabel står för sannolikheten att man befinner l, j sig i noden j när det är kvar l stycken element att generera i träningssekvens r. Denna variabel beräknas med Bakåt-Algoritmen. Se Bakåt-Algoritmen under Rubriken Framåt-Bakåt-Algoritmen för mer information. 1 A kl Den just nu förväntade sannolikheten att vi följer kanten från nod k till nod l P(O r ) Detta element är till för att jämna ut värdena så att sannolikheten att följa någon kant från k alltid summerar till 1. C = 1 N l = 1 kl P( X j = k, X α kj + 1 = l O, A, B) = j * A kl * β P(O) l, j+ 1 När man väl vet sannolikheten att C kl används på ett visst ställe j för en viss träningssekvens r. Blir det totala antalet övergångar i Summan över samtliga element och exempel. C kl = r r Lr kj kl k, j+ 1 r = 1 j = 1 r n α * A * β P(O ) På liknande sätt kan vi beräkna det förväntade antalet gånger symbolen c genereras från tillstånd k. E ( c) = k r r Lr kj l, j+ 1 r = 1 j = 1 r n α * β P(O ) 2 Läsaren bör observera att det inte finns några regler på den exakta betydelsen av α och β. Det går därför inte att läsa Framåt-Bakåt-Algoritmen i någon annan rapport och förutsätta att formlerna precis skall stämma överens. 8

Felaktigt förenklade grafer och inlärning med Baum-Welch Detta avsnitt innehåller information om hur man inte bör bygga upp sina grafer, framförallt inte om man använder Baum-Welch som inlärningsalgoritm. Avsnittet finns med för att det tyvärr var detta sätt jag först utnyttjade och programmerade. Ett tidsmässigt dyrköpt misstag skulle det visa sig. Antag att man skall lära in en graf över en pluton som innehåller två pansarvagnar (pa) och en tank (ta) som kan ställa upp i varierande ordning. Det rätta sättet är då att skapa 3 delgrafer, en för vardera uppställning, för att sedan lära in en delgraf i taget. Det går dock att tänka sig att vi i stället bara har en delgraf och försöker att lära in alla tre uppställningarna. Man kan ju nämligen tänka sig att väldigt mycket är gemensamt mellan de olika riktiga delgraferna som tillexempel sannolikheterna att gå till respektive huvudnoder, tabortnoder och läggtillnoder. Grafernas läggtillnoder har nog också liknande sannolikhetsfördelningar när det gäller vilka fordon de genererar. Om vi skulle bygga en gemensam delgraf för alla plutonsuppställningar skulle alla huvudnoderna ha sannolikheten 1/3 att generera en tank och 2/3 att generera en pansarvagn. Vad är det då för fel att göra på detta sätt? För det första om inlärningen skulle fungera till belåtenhet skulle det ändå bli trassel. Antag att vi bara rör oss genom huvudnoderna vi vill då ha sannolikheten 1/3 att generera (ta,pa,pa), (pa,ta,pa) respektive (pa,pa,ta). Det är dock inte det som är fallet. Sannolikhetsfördelningen om man bara går genom huvudnoder ser i stället ut på följande sätt. 1/27 för (ta,ta,ta) 2/27 för (ta,ta,pa), (ta,pa,ta) och (pa,ta,ta) 4/27 för (ta,pa,pa), (pa,ta,pa) och (pa,pa,ta) 8/27 för (pa,pa,pa). Detta är givetvis inte speciellt lyckat eftersom det är större sannolikhet att det genereras en felaktig kombination än en korrekt. Det visade sig att det skulle bli ännu värre när man lär in graferna med Baum-Welch. Baum- Welch-inlärningsalgoritm tar ingen hänsyn till att läggtillnoderna, tabortnoderna respektive huvudnoderna har skilda teoretiska betydelser. Algoritmen försöker bara att hitta de sannolikheter som gör att så många träningsfall som möjligt får så stor sannolikhet som möjligt att genereras. Så det som händer är att algoritmen tar av läggtillnoderna och tabortnoderna för att på så sätt skapa tre huvudvägar, en för varje korrekt uppställning (ex ta,pa,pa). Detta i sin tur gör att Baum-Welch kommer att fastna i något icke önskvärt lokalt maximum vilket leder till att sanno- 9

likheten att generera (ta,pa,pa) kan skilja sig markant från sannolikheten att generera (pa,pa,ta). Detta är verkligen inte vad vi vill ha. Tabortnoder Dolda Markov Modeller innehåller normalt inte tabortnoder utan alla noder är genererande noder. Vi har, tråtts att dom krånglar till den del algoritmer, låtit dom vara kvar i Framåt-Bakåt-Algoritmen samt Cubictime Inference. När man utnyttjar Bayesianska Nätverk måste man dock ta bort tabortnoderna, i de andra algoritmerna kan dessa noder vara kvar. Vad finns det då för fördelar och nackdelar med tabortnoderna och vad är alternativen? Fördelar Det finns egentligen bara en fördel med tabortnoderna och det är att graferna får mycket färre kanter. Detta ger i sin tur flera fördelar: Graferna tar mindre plats. Framåt-Bakåt-Algoritmen går också mycket snabbare. Algoritmen får en tidskomplexitet på θ(n*d) i stället för θ(n 2 *D). Se avsnittet Hur man tar bort tabortnoderna för att förstå varför det blir fler kanter utan tabortnoderna. Nackdelar Det finns två nackdelar med tabortnoderna. Algoritmerna blir svårare att förstå och programmera. Icke genererande noder är något som normalt inte finns med i HMMer. Algoritmer som är utvecklade måste därför justeras. Det uppkommer fel när man använder sig av loopar av tabortnoder. Dessa felaktigheter beror på att Framåt-Bakåt-Algoritmen fungerar stegvis. Först räknar man ut hur stor sannolikheten är för att vi skall befinna oss i en viss nod. Därefter går man vidare. Har man en loop av tabortnoder är det dock inte lätt att beräkna hur stor sannolikhet man har att vara i en specifik nod. Om vi bara tänker oss en loop av enbart tabortnoder som har sannolikhet 1 att gå till nästa nod så går det inte att säga vad sannolikheten är att man befinner sig i en viss nod. Felen som uppkommer av dessa loopar är inget bekymmer för oss. De uppkommer nämligen bara när en kompanigraf befinner sig i en läggtillnod där den lägger till en plutons-graf där man bara går genom tabortnoderna. Detta har dock så liten in-verkan på beräkningarna att det inte utgör något problem för oss. Observera att om man utnyttjar dessa algoritmer för att studera probleminstanser där sannolikheten att komma till tabortnoder är stor bör man ta dock bort tabortnoderna. 10

Hur man tar bort tabortnoderna Vi kan vara intresserade av att ta bort tabortnoderna av flera skäl. Dels att ovanstående nackdelar helt enkelt är större än ovanstående fördelar. Dels förutsätter Bayesianska nätverk att dessa noder tas bort. Om vi antar att vi inte har loopar av tabortnoder (vilket vi kan ha) så kan vi gå till väga på följande sätt. Starta med den sista tabortnoden. Anta att den noden har k stycken utgående kanter och har l stycken ingående kanter med vardera sannolikhet P ut (k) och P in (l). För varje l så skapar man k stycken nya kanter som går från l:s startnod till k:s slutnod och har kantvikten P ut (k)*p in (l). När detta är gjort med den sista tabortnoden så gör man likadant med den näst sista tabortnoden och så vidare. Om vi inte längre utgår från antagandet att vi inte har loopar av tabortnoder så är man hänvisad till en numerisk metod. För varje nod n: starta i noden gör en bredden-först-sökning i p stycken steg och håll reda på hur stor sannolikhet det är att du kommer till de olika noderna. (Bredden-förstsökningen kan bara fortsätta att gå vidare från en nod om noden är en icke genererande nod.) Dra sedan en kant till alla noder som man hade en sannolikhet större en noll att komma till och sätt kantens kantvikt att bli den framberäknade sannolikheten. 11

Metodbeskrivningar I detta kapitel går det bland annat att läsa om tre olika algoritmer för att lösa kolonnproblemet samt dess för och nackdelar. Framåt-Bakåt-Algoritmen För tillfället har man plutonsgrafer som genererar fordon, kompanigrafer som genererar plutoner och så vidare. Vi är nu intresserade av att skapa en jättestor graf där vi har kompanier som genererar fordon. I alla noder som genererar en pluton i kompanigrafen sätter vi i stället in plutonens graf. Formellt ser detta ut på följande sätt. Starta med en kompanigraf. För varje genererande nod (i): Skapa ytterligare en ickegenererande nod (e). Koppla om alla i:s utgående kanter så att dom går från e i stället. För varje pluton (p) som noden (i) kan generera: 1. Kopiera p:s plutonsgraf. 2. Dra en kant från i till p:s startnod som har kantvikten B i (p). 3. Dra en kant från p:s slutnod till e och sätt kantvikten till 1. Avsluta det hela med att göra i till en icke genererande nod. Framåt-Algoritmen Man vill beräkna hur stor sannolikhet det är att en viss graf, som innehåller n stycken noder, genererar en utdatasträng D med en viss kombination av S stycken element. Med andra ord har man observerat en viss formation och vill ha reda på hur väl den stämmer överens med en känd graf. H ij står för sannolikheten att man befinner sig i den icke genererande noden i efter j stycken element är genererade. M ij står för sannolikheten att man befinner sig i den genererande noden i efter j stycken element är genererande. M ij om i är en genererande nod. α ij = H ij om i är en icke genererande nod. Vi startar med att befinna oss i grafens startillstånd med sannolikhet 1, H 10 =1 Sedan räknar vi sannolikheten att ta oss till alla de andra icke genererande noderna på följande sätt. H N = = i0 H k 1 k 0 * A ki 12

Nu kan vi successivt via följande rekursion räkna ut sannolikheterna att vi befinner oss i de olika noderna efter att j=1,2,...,s stycken fordon i data är genererade. Rekursion över j För de genererande tillstånden: M ij = B i N ( D ) = H 1 * A + M, j k 1 k, j ki k j 1 * A ki För de icke genererande tillstånden: H ij N = = M * A + H k 1 kj kj kj * A kj Värdet H NS står för sannolikheten att man har kommit till slutnoden efter att S stycken fordon i indata är genererade. Bakåt-Algoritmen Bakåt-Algoritmen fungerar i stort sett på samma sätt som Framåt- Algoritmen men nu börjar man i stället bakifrån och räknar sig mot startnoden. Metoden i sig ger ingen ny information utan man får bara fram vilken sannolikhet grafen har att generera indata. När man kombinerar Bakåt-Algoritmen med Framåt-Algoritmen får man fram hur stor sannolikhet det är att en viss nod genererar en viss enhet. När man sedan summerar över alla fordon får man fram hur stor sannolikhet det är att en nod i grafen har besökts. HB ij står för sannolikheten man befinner sig i den icke genererande noden i då j stycken element är kvar att generera, räknat bakifrån. MB ij står för sannolikheten att man befinner sig i den genererande noden precis före det j element är kvar att generera, räknat bakifrån. HBij om i är en icke genererande nod β ij = MBij om i är en genererande nod Vi startar med att befinna oss i grafens sluttillstånd med sannolikhet 1, H N0 =1 Sedan räknar vi sannolikheten att därifrån ta oss till alla de andra icke genererande noderna på följande sätt. HB 1 is = = HB N S * k k A ik 13

Och till de genererande tillstånden på följande sätt. MB 1 is = = HB N S * k k A ik Nu kan vi successivt via följande rekursion räkna ut sannolikheterna att vi befinner oss i de olika noderna efter att j=0,1,...,s-1 stycken fordon i data är genererade. Rekursion över j För de icke genererande tillstånden. HB ij = 1 = MB + + N, 1 * * ( ) * k k j Aik Bk DS j HBkj A ik För de genererande tillstånden. MB ij = 1 = HB * + N, + 1 * * ( ) k kj Aik MBk j Aik Bk DS j Framåt-Bakåt-Algoritmen Räkna ut både Framåt-Algoritmen och Bakåt-Algoritmen. Sannolikheten att en nod i är besökt är FB i. FBi N = = α * k ik β ik 1 Tidskomplexitet: Framåt-Bakåt-Algoritmen har normalt en tidskomplexitet på θ(n 2 *S) där N=antal noder i grafen och S=antal element i indata. Dock är inte detta ett normalfall eftersom grafen är mycket gles, antal kanter är ungefär lika med 3N. Detta gör att vi får en tidskomplexitet på θ(n*s) Resultat: Vad får man nu fram för information genom Framåt-Bakåt- Algoritmen? Man får dels fram vilken sannolikhet grafen har att generera en viss följd av element. Man får också fram hur stor sannolikhet man har att besöka de olika noderna. Genom att veta detta kan man först jämföra vilken kompaniuppställning som var den mest sannolika. Sedan kan man betrakta sannolikheterna för de olika plutonerna i denna specifika uppställning och därigenom se om lägg till noderna och tabortnoderna har förhållandevis hög sannolikhet att besökas. Genom att veta detta går det 14

att dra slutsatser om hur den riktiga plutonsuppställningen ser ut. Om vi har en bataljongraf så får vi fram dels kompaniuppställningen och dels plutonsuppställningen för varje kompani. Fördelar: Denna metod är förhållandevis lätt att programmera. Man får fram mycket information angående formationens uppställning. Nackdelar: Tidskomplexiteten är θ(n*s) och eftersom N är mycket stort är algoritmen långsam. Man är tvungen att lagra mycket stora grafer. Viket kan leda till prestandaproblem på grund av att RAM-minnet tar slut. Cubic-time Inference Cubic-time Inference är en variant på Framåt-Algoritmen. Dess stora fördel är att den går mycket fort. Algoritmen ger samtidigt svar på så gott som alla frågor vi vill ha svar på. Vi får ut vilken fiendeformation som bäst stämmer överens med observationsdata. Vi kan också få ut vilken uppställning som formationen har en hierarkisk nivå neråt. Om kompaninivån är den högsta får vi också ut plutonsuppställningen och om bataljonsnivån är den högsta får vi ut kompaniuppställningen. Det står en del om denna metod i [4]. Algoritmen är en utvidgning av Framåt-Algoritmen så att den fungerar på hierarkiska strukturer. Algoritmen fungerar nivåvis där första nivån är plutonsnivån, den andra kompaninivån och så vidare. Första nivån räknar man ut med hjälp av Framåt-Algoritmen. Nivå två kan nu räknas ut baserat på de framberäknade data för nivå ett. På detta sätt fortsätter man sedan till den högsta nivån är uträknad. När man räknat ut en nivå så utnyttjar man det nyss framräknade data för att räkna ut nästa nivå och så vidare tills man har räknat ut den översta nivån och därigenom är klar. Algoritmen Till varje delgraf kommer det att finnas en stor tabell. Tabellen används för att mellanlagra resultat så att algoritmen kan arbeta sig framåt en nivå i taget. Tabellerna har storleken D 2. Tabellerna numreras efter vilken nivå dom befinner sig på samt vilken delgraf i ordningen just den tabellen står för. Med H 23 menas tabellen för den tredje delgrafen på nivå 2 (kompaninivån). Värdet H 23 (n,m) står för sannolikheten att om delgrafen startar i sitt startillstånd genererar den alla indata från n och till och med m och därefter befinner sig i sitt sluttillstånd. På raden H 23 (n) står de olika sannolikheterna för att delgrafen befinner sig i sin slutnod efter att den har startat med att generera fordon n. 15

Första nivån: På plutonsnivån går detta enkelt att beräkna tabellen i med Framåt- Algoritmen. För att skapa raden H 1i (n),och därigenom räkna ut alla sannolikheterna H 1i (n,m) n m D går vi till väga på följande sätt. Starta med att räkna ut H 1i (n,n). Använd Framåt-Algoritmen och beräkna sannolikheten att grafen bara genererar fordonet f n. För att nu beräkna H 1i (n,n+1) så behöver vi inte börja om från börja vi tar bara ytterligare ett steg framåt med Framåt-Algoritmen. Vi har då totalt räknat ut sannolikheterna att vi befinner oss i delgrafens olika noderna efter att ha genererat fordonen f n och f n+1. Sannolikheten H 1i (n,n+1) går då att läsa av som sannolikheten att vi befinner oss i slutnoden. På samma sätt får vi stegvis fram de andra sannolikheterna. Den allmänna nivån (o): Algoritmen som vi nu skall använda skiljer sig inte mycket från den vanliga Framåt-Algoritmen. För att vi skall kunna räkna ut nivån o så måste nivån o-1 vara färdiguträknad. Det vill säga alla tabeller för nivån o-1 är uträknade. När vi nu kommer till en genererande nod utnyttjar vi att den genererar nivå o-1 grafer. Vi är intresserade av att hålla reda på hur många fordon nodens nivå o-1 grafer kommer att generera för att veta när vi skall hoppa vidare till nästa nod. Detta är dock redan framräknat. Vi låter varje nod (n) ha D stycken sannolikheter R. R nt står för sannolikheten att någon av nivå o-1 graferna som n genererar befinner sig i sitt slutillstånd efter t stycken fordon är genererande. Ett steg går till på följande sätt. Räkna ut hur stor sannolikhet (S nt ) det är att vi kommer till en viss nod n efter att t fordon är genererade på följande sätt. S nt N = = j 1 R jt * A jn N är antalet noder i grafen. A är övergångsmatrisen för grafen. Vi är nu intresserade av att få fram hur mycket sannolikheterna R n,t-1 + ökar med när det t:te elementet genereras. Vi kallar ökningen för R nt. Noden n kan generera K stycken delgrafer med sannolikheterna B(k). R + nt = S nt * K = B( i) * H 1 1, (,D) i o i t 16

När vi har räknat ut + R nt för alla noder uppdaterar vi R n,t-1. R nt = R + nt + Rn, t 1 På detta sätt tar vi oss fram ett steg i taget. Tidskomplexitet: Denna metod har en tidskomplexitet på θ(d 3 *G) där D är storleken på indata och G är antalet grafer. Det vill säga antalet plutoner + antalet kompanier + antalet bataljoner och så vidare. Fördelar: Metoden ger svar på det mesta vi kan tänkas vara intresserade av. Den svarar på vilket förband som har högst sannolikhet att passa med indata samt vilka dess huvudbeståndsdelar är. Om vi till exempel tittar på bataljonsnivån så får vi fram den mest sannolika bataljonen samt vilka kompanier den består av. Algoritmen är snabbare än Framåt-Bakåt- Algoritmen. Nackdelar: Man får inte fram lika mycket information med Cubic-time Inference som med Framåt-Bakåt-Algoritmen. Man får fram sannolikheten att en militär formation matchar mot observationsdata och man får fram vilken förväntad uppställning formationen sannolikt har. Man får dock inte fram om läggtillnoder eller tabortnoder har används. Bayesianska nätverk Denna metod startar med att lära upp graferna på samma sätt som förut. Det vill säga man lär upp varje plutonsgraf för sig, varje kompanigraf för sig och så vidare. Sedan tar man bort alla tabortnoder. Se Hur man tar bort tabortnoder. Efter att en graf är upplärd med till exempel Baum-Welch inlärningsalgoritm och tabortnoderna är borttagna så översätts den till ett bayesianskt nätverk. Se avsnitet nedan. När man väl detta är gjort så går det att utnyttja ett flertal olika snabba algoritmer till, exempel J-tree [6,11], för att beräkna vilken militär enhet som har störst sannolikhet att passa med given observation. Förutom denna översättning kommer inga Bayesianska algoritmer att tas upp. Läsaren bör veta att detta algoritm-paket är mycket omfattande och genomarbetat. 17

d Figur 4: En HMM representerad som Bayesianskt nätverk. Qt är var man befinner sig i tid t på nivån d; F =1 om HMM:en har nått sin slutnod på nivå d i annat fall är F =0. d t Översättningen Vi börjar med att skapa en övergångsmatris på följande sätt. Alla olika plutonsgrafer läggs på en rad. Sedan numrerar vi alla olika noder på plutonsnivån från ett och framåt. Detta kallar vi lager D. Sedan numrerar vi alla olika kompaninoder och kallar dessa för nivå D-1 och så vidare till det högsta lagret som blir lager ett. Vi skapar en ny stor övergångsmatris per lager. Där står det hur sannolika de olika övergångarna är mellan de olika tillstånden. Observera att de flesta av dessa övergångar har sanno-likhet 0. Detta på grund av att det inte skall gå att följa en kant mellan två olika plutoner. Vi skapar också en matris för varje nivå där det står vilka d starttillstånden är. Detta är beroende på de högre nivåerna. Qt står för hur sannolikt det är att man befinner sig i de olika noderna på nivå d efter att t indata är beräknade. Med tidssteget t menar man att man har genererat t-1 stycken enheter i indata och håller på att beräkna vad som händer när man genererar det t:te indata tecknet. Vilket i vårat fall skulle vara fordon nummer t. Vi kan nu beskriva vårt läge i grafen med en vektor Q 1:D. Vi d lägger nu till indikatorvariabler F t. Indikatorvariabeln är 1 om grafen i nivå d har nått sitt sluttillstånd. Det vill säga om man befinner sig på nivå k i grafen och sannolikheten är p att man härifrån kommer till sluttillståndet för nivån, och därigenom hoppar till nivån ovanför för att i den nivån ta ett steg framåt, är sannolikheten p att indikatorvariabel F k blir satt till 1. d t 18

Ett konkret exempel skulle vara att man befinner sig i en plutons sluttillstånd. Då förväntar vi ju oss att vi kommer upp till kompaninivån och där tar ett steg framåt. Observera att om F k =1 så kommer F k-1 också att vara 1 för att om vi befinner oss i kompaninivåns sluttillstånd så innebär det också att vi är befinner oss i plutonsnivåns sluttillstånd. Vilket också innebär att om F k = 0 så kommer F b = 0 för alla b>k. Q D är det understa lagret. Vektorn Q 1:D-1 t beskriver hur den ser ut högre upp i grafen. Om Q D kommer till sitt sluttillstånd så kommer F D att bli 1. Detta betyder just att Q D är klar och kommer att skicka vidare den signalen till högre nivåer. Dessa nivåer kan först nu ändra tillstånd. Detta betyder också att nästa värde på Q D skall komma från ett initieringsvärde. I vårt fall kommer vi bara att ha ett begränsat antal initieringsvärden nämligen våra startnoder. Formellt ser det ut så här. P( Q D t D D = j Qt = i, Ft 1 1 = f, Q 1:D-1 t A = k) = g D k D k ( i, j) om ( j) om f f = 0 = 1 Vi har här antagit att i,j Q D D :s slutnod. A k är övergångsmatrisen för nivån D givet att positionen på de lagren som ligger högre upp är lika med vektorn k. g D k är initierings vecktorn för de olika noderna på lagar D återigen givet att lagren 1:D-1 befinner sig i position k. Initieringsvektorn och övergångsmatrisen kommer att vara beroende på föräldrarna (alla lagren som ligger ovanför det lager vi för tillfället beräknar) olika föräldrar har olika sannolikheter att generera de olika plutonerna och därigenom har dom olika sannolikheter för att komma till de olika starttillstånden. Ekvationen för F D kan formellt skrivas på följande sätt. D 1:D 1 D P( Ft = 1 Qt = k, Qt = i) = A D k ( i, slut) Från början hade vi visserligen flera olika slutnoder på varje nivå, till exempel hade varje pluton sin egen slutnod, det är dock ekvivalent med en gemensam slutnod. I alla fall om man följer dessa algoritmer. d d Vi skall nu beskriva det allmänna fallet. Q t är som förut beroende av Qt 1 d och Ft 1. Vi får nu också en signal från d+1 lagret som vi kallar f. Om f =0 så innebär det att lagret under inte är klart och vi skall därför inte byta tillstånd på denna nivå. Om däremot f=1 så skall vi byta tillstånd och samma 19

regler gäller nu för denna nivå som för D nivån. Formellt kan detta skrivas på följande sätt. 3 P( Q d t = j Q d t 1 = i, F d + 1 t 1 = b, F d t 1 = f, Q 1: d 1 t 0 om b = 0 d = k) = Ak ( i, j) om b = 1och d g k ( i, j) om b = 1och f f = 0 = 1 F d blir 1 endast om nivån under har kommit till sitt sluttillstånd och om vi dessutom har kommit till sluttillståndet för denna nivån. Detta kan skrivas på följande sätt. P( F d t = 1 Q d t 1 = i, Q 1: d 1 t = k, F d + 1 t 0 om b = 0 = b) = d Ak ( i, slut) om b = 1 För den översta nivån gäller det att den inte har några föräldrar och Q 1:d-1 =k kommer därför att falla bort. Initieringsvärdena när t=1 för den översta nivån är 1/(antalet formationer på den översta nivån) om inget annat anges. Fördelar: Genom att använda denna översättning får man tillgång till ett mycket stort antal algoritmer. Det finns både långsamma exakta metoder samt mycket snabba heuristiska metoder. Ett flertal av dessa finns redan färdigprogrammerade. Nackdelar: Översättningen är omständlig och svårprogrammerad. Tidskomplexitet: Själva översättningen går fort, och enligt [4] går det sedan att utföra de nödvändiga beräkningarna θ(d). Utförande Jag valde att implementera Framåt-Bakåt-Algoritmen av tre skäl. För det första verkade denna metod enklare att programmera. För det första andra går det, som jag redan nämnt, att få fram mer information ur Framåt- Bakåt-Algoritmen. Jag programmerade i MatLab och C. Jag skrev allting i MatLab förutom det de tidskritiska delarna som jag skrev i C. Inlärningen, som är den mest tidskrävande delen, fanns redan från början skriven i C. 3 Mycket av informationen till denna översättning hämtades i [4]. Denna formel skiljer sig dock lite från källan. I källan stod det att det fanns en chans att komma till j om b=0. 20

Beräkningar och testresultat Beräkningar De olika algoritmerna har visserligen olika tidskomplexitet men det är ändå inte lätt att säga vilken algoritm som är den snabbaste på grund av att de är beroende av olika faktorer. Nedan följer ett exempel på hur många beräkningar/tidssteg det tar för de olika algoritmerna att räkna ut vilken bataljon som bäst stämmer överens med en given observation. Antag att Varje pluton innehåller 4 fordon. Varje kompani innehåller 4 plutoner Varje bataljon innehåller 4 kompanier Det finns 10 plutonstyper Det finns 8 kompanityper. Det finns 15 bataljontyper. Indatasträngen är 64 fordon lång. Då tar Framåt-Bakåt-Algoritmen,och det gamla sättet att skapa graferna, 3,6*10 92 beräkningssteg. Framåt-Bakåt-Algoritmen och man tar hänsyn till hierarkin 200*10 9 beräkningssteg. Cubic-time Inference har 2,5*10 9 beräkningssteg. Tester Testet [12] testar om det gamla sättet att bygga upp grafer ger samma resultat som om man bygger upp graferna på det nya sättet då man tar hänsyn till plutonerna. Man testar också skillnaden mellan att tillåta att hela plutoner läggs till och tas bort kontra att man inte tillåter detta. Experimentet tvingas tyvärr att vara mycket litet, detta beroende på att inlärningen tar mycket lång tid om man gör på det gamla sättet. Experimentet såg ut på följande sätt. Det fanns ett kompani och det bestod av tre stycken plutoner, två av typ A och en av typ B. Plutonen A innehöll två fordon av typ a och ett av typ b, och pluton B innehöll ett fordon av typ b och två av typ c. Den här strukturen lärdes in på tre sätt. Två sätt där man tar hänsyn till plutonsuppställningen men där det skiljer på hur mycket förändringar det är på plutonsnivå. Samt ett sätt där man lär in det gamla sättet. I samtliga fall används 120 träningsdata per möjlig uppställning. 21

Träningstiden för att lära in de hierarkiska strukturerna var 4 minuter var, medan det tog 10 timmar att lära in den platta modellen på en Pentium2 900 MHz. Hierarkisk 1 De 6 skilda uppställningarna på den lägsta nivån aab, aba, baa, för pluton A och bcc, cbc, ccb för pluton B lärdes in separat. På samma sätt lärdes sekvenserna AAB, ABA, BAA, in separat på kompaninivån. För varje organisationstyp, pluton eller kompani, parallellkopplades de tre möjliga uppställningarna vardera med sannolikheten 1/3 vid beräkningarna. Träningssekvenserna var genererade på följande sätt. Sannolikheten att ett fordon hade tillkommit, var bortaget eller hade bytts ut var 0,08. Detta innebär att sannolikheten att det normala fordonet kommer på en given plats är 0,7728. Sannolikheten att generera en helt normal pluton blir då (0,7728) 3 =0,4615. Träningssekvenserna för kompaniet hade sannolikheten 0,01 att ta bort respektive lägga till plutoner och 0 för att byta ut plutoner. Sannolikheten att generera ett kompani med en normal sammansättning av plutoner blir då 0,9411. Till slut blir sannolikheten att generera ett helt normalt kompani med normala plutoner 0,9411*(0,4615) 3 = 0,0925. Hierarkisk 2 I detta fall ser plutonerna ut på samma sätt som ovan. Nu har dock kompaniet sannolikheten 0,08 att ta bort plutoner, lägga till plutoner, samt att byta ut plutoner. Detta gör att sannolikheten att kompaniet har en normal sammansättning av plutoner blir 0,4615. Sannolikheten att hela kompaniet har en normal sammansättning blir då (0,4615) 4 = 0,045. Platt Det gamla sättet att skapa kompanier har 81 olika sekvenser att lära in. Varje pluton kan ställa upp på 3 olika sätt och det finns 3 plutoner i ett kompani. Bara detta gör att det finns 27 olika möjliga uppställningar. Sen kan plutonerna också ha varierande ordning vilket gör att det totalt blir 81 olika sekvenser att lära in. Varje sådan sekvens tränades med 120 stycken träningssekvenser. Sannolikheten att ta bort, lägga till eller byta ut ett fordon var 0,08. Detta gör att sannolikheten att ett fordon dyker upp på sin förväntade plats blir 0,7728 och sannolikheten att en pluton blir normal är 0,4615. Detta gör att kompaniet har en sannolikhet på 0,0983 att bli normal. Experimenten Jag gjorde fem stycken jämförelser mellan de tre fallen. I testet perfekt undersökte jag skillnaden mellan de tre fallen om de får helt förväntade indata. I läggtill 1 och 2 läggs det till ett respektive två fordon från de per- 22

fekta indata, i tabort tas det bort ett fordon och i läggtill-pluton läggs en hel pluton till. För att underlätta jämförelser normaliseras varje test så att summan av fall1, fall2, fall3 blir ett. Värdet som står under vardera test står för vilket värde summan av fall 1,2 och tre är. Resultatet av testerna går att läsa i figur 5. 0,6 0,5 0,4 0,3 0,2 Platt Hierarkisk 1 Hierarkisk 2 0,1 0 Perfekt 0.36 Lägg till 1 0.0037 Ta bort 1 0.13 Lägg till 2 0.0022 Lägg till Pluton 0.0027 Figur 5. Diagrammet visar hur stor sannolikhet det är att de tre olika fallen genererar vissa testfall. Platt är ett icke hierarkiskt fall. Skillnaden mellan de två hierarkiska fallen är att Hierarkisk 2 tillåter att hela plutoner byts ut. Talen som står under Perfekt, Lägg till 1 mm är en normaliseringsfaktor. Vid lägg till 1 har det lagts till ett fordon till det förväntade testfallet. Testresultat Resultatet visar att det inte är så stor skillnad mellan de olika fallen så länge vi inte tar bort hela plutoner då dom hierarkiska fallen ger bättre resultat. Eftersom vi vet att det platta fallet ger korrekt resultat [1] och vi får samma svar med de hierarkiska fallen, kan vi dra slutsatsen att de hierarkiska fallen också ger korrekt resultat. Att de två hierarkiska fallen ger mycket högre sannolikhet när vi lägger till en hel pluton är inte att förvånas över då dessa fall just är framtagna för att ta hänsyn till hela plutoner. Det kan kanske tyckas märkligt att Hierarkiskt 2 är så pass lite bättre en Hierarkiskt 1 när vi lägger till en hel pluton. Detta beror på att plutonerna är så pass små att det går att lägga till tre fordon i stället för en hel pluton utan att ha alltför stort sannolikhets fall. 23

Slutsatser Hierarki kontra ej hierarki Fördelar med att använda en hierarkisk struktur. Vi behöver mycket minde träningsdata eftersom vi tränar upp mycket mindre enheter. Träningen går därför mycket snabbare. Vi kan också få ut mycket mer information. Vi kan inte bara som förut få fram vilken militär fiendeformation som vi har fått information om. Vi kan nu också få information om hur den har ställt upp från högsta nivån till plutonsnivån. Vi kan fram informationen mycket snabbare. Nackdelar med hierarkisk struktur: Det förutsätter att fiendearmén är formerad med hierarkisk struktur för att det överhuvudtaget skall vara möjligt att utnyttja något som helst hierarkisk synsätt. Metodval Vilken av de tre metoderna bör man nu välja? Ja, det beror mycket på vilka frågor man vill ha svar på. Är man bara intresserad av vilken militär enhet det är och hur dess största underenheter har ställt upp, och tycker att metodens hastighet är kritisk bör man välja Cubic-time Inference-algoritmen. Den går helt enkelt snabbare än Framåt-Bakåt-Algoritmen. Är man intresserad av att komma åt ett stort och välbeprövat metodpaket där det bland annat finns mycket snabba heuristiska metoder bör man översätta problemet till Bayesianska Nätverk Är man intresserad av att få fram all information, inte bara vilken militär enhet som är den eftersökta eller hur just den enheten i stort har ställt upp. Utan man också är intresserad av hur den ställt upp på de lägsta nivåerna. Då är man tvungen att utnyttja Framåt-Bakåt-Algoritmen. Man bör också observera att man måste ha god förståelse för hur algoritmen fungerar för att kunna tillgodogöra sig den information som överskrider det man får fram ur Cubic-time Inference-metoden. En sidokommentar är att det kanske inte är omöjligt att skapa en kombination av Framåt-Bakåt-Algoritmen och Cubic-time Inferencealgoritmen så att man får alla fördelar från båda metoderna. Detta behöver inte vara svårt. Det är dock något som inte har gjorts än. 24

Referenser 1 Modellering av kolonnproblemet J. Björnfot. Mars 2000 FOA-R 00-01448-505 SE ISSN 1104-9154 2 Hidden Markov Models and Probabilistic Learning with Applications to Bioinformatics T. Koski. Maj 1999 ISSN 1237-2889 ISBN 951-29-1455 3 The hierarchical Hidden Markov Model: Analysis and applications. S. Fine, Y. Singer and N. Tishby. 1998 Machine Learning 32:41 4 Linear time inference in hierarchical HMMs. K. Murphy and M. Paskin in Proc NIPS 2001. 5 Hierarchical Hidden Markov Models with general state hierarchy. H. H. Bui, D. Q. Phung and S. Venkatesh in Proc AAA1 2004 6 Dynamic Bayesian networks: Representation, inference and learning. K. Murphy 7 A new implementation of Hierarchical Hidden Markov Models, Ch. 5 in Statistical models for non-markovian control task. D. Wiersta INF/SCR-04-06. Institute of Information and Computing Sciences. Utrecht University. 8 Using Hierarchical HMMs in dynamic behavior modeling. S.Y. Chiao. and C.S. Xyderas. Proc FUSION 2004. pp 576-582. International Society of Information Fusion. Sunnyvale.CA 9 A generalized Hidden Markov Models for the recognition of human genes in DNA. D. Kulp, D. Haussler, M.G. Reese and F.H. Eeckman. Prac ISMB 4. pp. 134-142. 25