Künstliche Intelligenz fur ortsbasierte Dienste - Lehrstuhl für Mobile ...
Künstliche Intelligenz fur ortsbasierte Dienste - Lehrstuhl für Mobile ...
Künstliche Intelligenz fur ortsbasierte Dienste - Lehrstuhl für Mobile ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Künstliche</strong> <strong>Intelligenz</strong> <strong>für</strong> <strong>ortsbasierte</strong> <strong>Dienste</strong><br />
Raphael Teßmer<br />
Seminar: Trends in mobilen und verteilten Systemen<br />
Sommersemester 2011<br />
<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Mobile</strong> und Verteilte Systeme<br />
Institut <strong>für</strong> Informatik<br />
Ludwig-Maximilians-Universität München<br />
Abstract: In dieser Arbeit soll sich damit befasst werden welchen Nutzen <strong>Künstliche</strong><br />
<strong>Intelligenz</strong> <strong>für</strong> <strong>ortsbasierte</strong> <strong>Dienste</strong> hat. Hierbei soll zuerst eine Einführung in das Thema<br />
<strong>Künstliche</strong> <strong>Intelligenz</strong> gegeben werden. Es wird das Konzept von intelligenten<br />
Agenten beschrieben. Die Lernmethoden unsupervised Learning, supervised Learning<br />
und semi-supervised Learning werden kurz beschrieben. Des Weiteren wird sich mit<br />
Methoden und Arbeitstechniken beschäftigt die im Bereich der <strong>ortsbasierte</strong>n <strong>Dienste</strong><br />
relevant sind. Hierbei wird auf k-Nearest Neighbor Search, Hidden Markov Modelle<br />
und Joint Boosting eingegangen. Zum Schluss sollen konkrete Forschungsarbeiten<br />
beschrieben werden, die sich im Bereich der <strong>ortsbasierte</strong>n <strong>Dienste</strong> bewegen und sich<br />
Lernmechanismen der <strong>Künstliche</strong>n <strong>Intelligenz</strong> zu Nutze machen. Dabei werden zwei<br />
Arbeiten behandelt die unterschiedliche Ansätze verfolgen um menschliche Routinen<br />
zu erkennen. Zum Schluss wird noch auf das Simultaneous Localization and Mapping<br />
Problem eingegangen, bei dem sich ein Roboter auf einer Karte lokalisieren soll, die<br />
er selbst in einer ihm unbekannten Umgebung erstellt.<br />
1 Einführung<br />
1.1 Was ist Wissen?<br />
Ein wichtiger Teil dieser Arbeit soll der <strong>Künstliche</strong>n <strong>Intelligenz</strong> selbst gewidmet werden.<br />
Dabei stellt sich als erstes die Frage, was Wissen überhaupt bedeutet.<br />
Neben der Philosophie haben sich viele andere Wissenschaften wie die Mathematik, die<br />
Psychologie, die Neurologie oder gar die Wirtschaftswissenschaften damit beschäftigt<br />
Wissen zu definieren.<br />
Eine allgemeingültige Definition von Wissen ist daraus nicht hervorgegangen und mag<br />
vielleicht unmöglich zu fassen sein. Wichtige Fragen der Philosophie sind beispielsweise:<br />
• Können mit formalen Regeln richtige Schlüsse gezogen werden?<br />
• Wie kann der Verstand aus dem Gehirn entspringen?<br />
• Woher kommt Wissen?
• Wie führt Wissen zur Tat?<br />
In der <strong>Künstliche</strong>n <strong>Intelligenz</strong> gibt es verschiedene Ansätze mit diesem Begriff umzugehen.<br />
Es wird dabei nicht versucht Wissen nachzuempfinden, sondern vielmehr intelligentes<br />
Verhalten zu modellieren.<br />
Russell und Norvig (2010) beschreiben vier Ansätze von <strong>Künstliche</strong>r <strong>Intelligenz</strong> [RN10]:<br />
• Menschlich handeln.<br />
• Menschlich denken.<br />
• Rational denken.<br />
• Rational handeln.<br />
Der Ansatz des rationalen Handelns bildet dabei <strong>Künstliche</strong> <strong>Intelligenz</strong> auf Modelle ab.<br />
Diese sollen Maschinen darstellen, die intelligent handeln. Die Modelle werden dabei als<br />
Agenten bezeichnet. Hierbei geht es nicht darum nur zu denken, also zu philosophieren.<br />
Vielmehr geht es darum autonom zu agieren, die Umgebung wahrzunehmen, sich neuen<br />
Situationen anzupassen und sich auch in ungewissen Situationen bestmöglich zu verhalten<br />
[RN10].<br />
Diese Form der <strong>Künstliche</strong>n <strong>Intelligenz</strong> soll in dieser Arbeit behandelt werden.<br />
2 <strong>Künstliche</strong> <strong>Intelligenz</strong><br />
2.1 Intelligente Agenten<br />
Agent<br />
Sensoren<br />
?<br />
Aktuatoren<br />
Wahrnehmung<br />
Aktionen<br />
Abbildung 1: Aufbau eines simplen Agenten. Zwischen Sensoren und Aktuatoren befindet sich das<br />
Agentenprogramm, welches die Agentenfunktion ausführt. Quelle: [RN10]<br />
Um <strong>Künstliche</strong> <strong>Intelligenz</strong> zu beschreiben, kommt das Modell der intelligenten Agenten<br />
zum tragen. Diese Agenten erkennen ihre Umgebung durch Sensoren und interagieren mit<br />
Umgebung
Wahrnehmungsfolge Aktion<br />
(A, Sauber) Gehe zu B<br />
(A, Dreckig) Sauge<br />
(B, Sauber) Gehe zu A<br />
(B, Dreckig) Sauge<br />
(A, Sauber), (B, Sauber) Tue nichts<br />
(A, Sauber), (A, Dreckig) Sauge<br />
...<br />
Abbildung 2: Eine mögliche Agentenfunktion <strong>für</strong> die Staubsaugerwelt.<br />
ihr über Aktuatoren. Alles was der Agent über seine Sensoren aufnimmt, wird als Wahrnehmung<br />
bezeichnet. Die Wahrnehmung des Agenten wird mit der Agentenfunktion in<br />
Relation zu seiner Aktion gesetzt. Die Funktion beschreibt also was der Agent mit gegebenem<br />
Input machen soll. Ferner ist die Wahrnehmungsfolge eine Folge von Signalen die<br />
ein Agent über die Zeit wahrnimmt. Beispielsweise die Position und Blickrichtung des<br />
Agenten oder die Folge von Positionen des Agenten nachdem er sich fortbewegt hat.<br />
Ein Beispiel ist die Staubsaugerwelt. Die Staubsaugerwelt ist eine idealisierte Umgebung<br />
mit einem intelligenten Agenten, dem Staubsauger. Diese Umgebung hat zwei benachbarte<br />
Bereiche: A und B. Der Staubsaug-Agent nimmt lediglich zwei Dinge wahr: in welchem<br />
Bereich er ist und ob dieser Bereich dreckig ist. Die einzigen Aktionen, die er ausführen<br />
kann sind: nach links in den Bereich A gehen, nach rechts in B gehen, den Dreck weg<br />
saugen oder nichts tun.<br />
Mit diesen Vorraussetzungen ist der Agent soweit komplett. Um aber die Aufgabe zu<br />
erfüllen die Staubsaugerwelt sauber zu halten, bedarf es einer Agentenfunktion [RN10].<br />
Zwar ist das Saugen die Aufgabe des Agenten, die Agentenfunktion aber, ist der Teil der<br />
die <strong>Künstliche</strong> <strong>Intelligenz</strong> im Agenten ausmacht. Die Funktion entscheidet <strong>für</strong> die Wahrnehmungsfolge,<br />
welche Aktion der Agent ausführen soll. Abbildung 2 zeigt eine angedeutete<br />
Beispielfunktion <strong>für</strong> die Staubsaugerwelt.<br />
Um die Qualität von intelligenten Agenten zu ermitteln, bewertet man ihre Rationalität.<br />
Ein Agent ist rational, wenn er das ” Richtige“ tut. Um zu wissen was das Richtige ist,<br />
betrachtet man die Umgebung des Agenten. Der Agent verrichtet eine Folge von Aktionen<br />
in Abhängigkeit von seiner Wahrnehmung und Agentenfunktion. Ist der Zustand der Umgebung<br />
erwünscht, hat der Agent gut gearbeitet. Um die ” Erwünschtheit“ zu beschreiben,<br />
wird jede Folge von Umgebungszuständen einer Leistungsbewertung unterzogen.<br />
Die Leistungsbewertung kann nicht allgemein <strong>für</strong> eine Aufgabe, sondern muss vielmehr je<br />
nach Umgebung individuell erfolgen. Der Staubsauger kann zum Beispiel danach bewertet<br />
werden wie oft er eine Fläche an einem Tag geputzt hat. Doch vielleicht ist es <strong>für</strong> einen<br />
Familienhaushalt sinnvoller, wenn der Staubsauger nur einmal am Tag saugt, um Nerven<br />
zu schonen und Strom zu sparen. Auch kann der Grad ab dem der Staubsauger eine Fläche<br />
als dreckig ansieht variieren. Soll der Staubsauger lieber kürzer und da<strong>für</strong> ungenauer arbeiten,<br />
oder länger und gründlicher?<br />
Die Leistungsbewertung muss also nicht nur <strong>für</strong> die Umgebung, sondern auch <strong>für</strong> den<br />
Zweck individuell gestaltet werden [RN10].
2.2 Rationale Agenten<br />
Russell und Norvig (2010) definieren einen rationalen Agenten wie folgt [RN10]:<br />
For each possible percept sequence, a rational agent should select an action<br />
that is expected to maximize its performance measure, given the evidence<br />
provided by the percept sequence and whatever built-in knowledge the agent<br />
has.<br />
Auch wenn ein rationaler Agent nie wissen kann was passieren wird, sollte er jedoch aufgrund<br />
seiner Wahrnehmung genau das tun, was wahrscheinlich zu einem richtigen Ergebnis<br />
führt. Angenommen ein Agent soll eine Straße überqueren. Man würde hierbei von<br />
einem Rationalen Agenten verlangen, dass er sich vorher umschaut. Das heißt, es ist zwar<br />
rational die Straße zu überqueren wenn kein Auto in Sicht ist, aber wenn sich der Agent<br />
gar nicht erst umschaut, ist es ihm überhaupt nicht möglich rational zu handeln. Man sollte<br />
also sichergehen, dass der Agent nicht nur richtig schlussfolgert - kommt ein Auto,<br />
überquere ich nicht - sondern, dass er auch die da<strong>für</strong> entscheidenden Dinge wahrnimmt.<br />
Um mit seiner Umgebung interagieren zu können braucht ein Agent eine Vorstellung von<br />
seiner Welt. Es ist möglich dem Agenten strikt seine Welt vorzugeben, was jedoch Probleme<br />
mit sich bringen kann. Wenn sich seine Umgebung verändert, oder gar wenn er selbst<br />
seine Umgebung verändert, kann er die fest definierte Vorstellung seiner Welt dahingehend<br />
nicht anpassen. Dies führt dazu dass seine Leistung beeinträchtigt werden kann.<br />
Wenn ein solcher Roboter beispielsweise ein Ei auf einem Löffel balancieren soll, das Ei<br />
aber auf halben Wege verliert, wird er dies nicht merken und seinen Weg unbeirrt weiter<br />
gehen als sei nichts passiert.<br />
Der Agent kann aber auch ein gewisses Vorwissen von seiner Welt haben, das sich durch<br />
seine Wahrnehmung verändern und erweitern kann. Er lernt wie sich seine Umgebung<br />
verändert [RN10].<br />
2.3 Lernen<br />
Lernen ist eine der wichtigsten Eigenschaften von intelligenten Agenten. Ein Agent lernt,<br />
indem er durch Beobachten seiner Umgebung seine Leistung steigert.<br />
Dies wird notwendig wenn sich ein Agent neuen Situationen und Umgebungen anpassen<br />
soll. Zum Beispiel wenn ein Roboter der eine Rennstrecke abfährt, später auch dazu in der<br />
Lage sein soll neue ihm unbekannte Strecken zu bestehen. Oder wenn ein Agent Zustände<br />
analysieren soll die sich über die Zeit verändern, wie Börsenkurse oder das Verhalten des<br />
Wetters.<br />
Es kann aber auch sein, dass es <strong>für</strong> einen Menschen unmöglich ist, dem Agenten die<br />
gewünschte Funktion selber vorzugeben. Beispielsweise können Menschen selbst zwar<br />
bekannte Gesichter erkennen, aber es gibt keine Möglichkeit dies einem Agenten beizubringen<br />
ohne Lern-Algorithmen zu verwenden [RN10].<br />
Russell und Norvig (2010) teilen Lernmethoden nach den zugrunde liegenden Daten ein<br />
[RN10]. Hierbei ist es wichtig gelabelte Daten und nicht gelabelte Daten voneinander zu
unterscheiden. Ein Label ist als Anweisung eines Lehrers zu verstehen. Es soll <strong>für</strong> den<br />
gelabelten Datenpunkt die erwünschte Ausgabe des Algorithmus angeben. Einem Datenpunkt<br />
oder einem Datenset kann das erwünsche Ergebnis (Label) z.B. in einer Messung<br />
mitgegeben werden [ZG09].<br />
Beim Unsupervised Learning bekommt der Agent eine nicht gelabelte Datenmenge, aus<br />
der er Muster erkennen soll. Er hat aber keine weiteren Informationen über die Datensätze.<br />
Ein Beispiel <strong>für</strong> diese Lernmethode ist Clustering. Beim Clustering sollen Daten aufgrund<br />
ähnlicher Eigenschaften gruppiert werden. Ein Beispiel ist der k-means-Algorithmus. Dieser<br />
funktioniert wie folgt:<br />
Abbildung 3: Prinzip Clustering mit Schwerpunkten <strong>für</strong> k = 3.<br />
Aus n Punkten sollen k Gruppen (Cluster) gebildet werden die ähnliche Objekte enthalten.<br />
Für sie sollen Schwerpunkte definiert werden. Die Schwerpunkte sollen so gewählt<br />
sein, dass sie in der Mitte des Clusters liegen (siehe Abbildung 3). Jeder Punkt der hinzu<br />
kommt, wird dem Cluster zugeordnet, dessen Schwerpunkt ihm am nächsten ist. Die<br />
Schwerpunkte werden aufgrund der neuen Punkte neu berechnet und am Ende werden die<br />
Punkte erneut den Clustern zugewiesen. Dies wird schleifenweise solange wiederholt bis<br />
sich die Schwerpunkte stabilisiert haben [Mac67].<br />
Beim Supervised Learning braucht der Agent genug gelabelte Daten mit denen er übt,<br />
um richtige Schlüsse über alle folgenden Daten schließen zu können. Dabei soll der Agent<br />
mit Input-Output Paaren trainiert werden. Er soll dabei eine Funktion lernen die den Input<br />
auf den Output abbildet:
Für eine Trainingseinheit (x1, y1), (x2, y2), . . ., (xN, yN)<br />
wobei jedes yi von einer unbekannten Funktion y = f(x) erzeugt wurde,<br />
finde eine Funktion h die die echte Funktion f annähert.<br />
Die Funktion h ist eine Hypothese.<br />
Nach Russell und Norvig (2010): “Learning is a search through the space of possible<br />
hypotheses for one that will perform well, even on new examples beyond the training set”<br />
[RN10]<br />
Beim Semi-Supervised Learning gibt es sehr wenige gelabelte Datensätze von denen auf<br />
eine sehr große Menge von Daten geschlossen werden soll. Dies ist nützlich, da es sehr<br />
aufwendig und unter Umständen teuer sein kann an gelabelte Daten zu kommen.<br />
Zhu und Goldberg (2009) definieren neben dem Label die Instanz [ZG09]. Eine Instanz x<br />
bezeichnet ein Objekt, welches von einer Menge Eigenschaften beschrieben wird. Dabei<br />
sollen die Eigenschaften nur die Merkmale beinhalten, die <strong>für</strong> die Aufgabe sinnvoll sind,<br />
und nicht alle die beim Objekt beobachtet werden können.<br />
Zum Beispiel:<br />
Seien die Eigenschaften Gewicht und Körpergröße Eigenschaften der Menschen. Eine<br />
Mögliche Aufgabe wäre es nun, von diesen Daten darauf zu schließen ob es sich um Kinder<br />
oder Erwachsene handelt. Eine Instanz könnte also sein:<br />
x1 = (180cm, 70Kg)<br />
Sei diese Person erwachsen, würde ein gelabeltes Datenset nun so aussehen:<br />
Die Klasse des Alters beschreibe {erwachsen, kind}.<br />
Es gelte: erwachsen = −1 und kind = 1.<br />
z1 = (x1, −1)<br />
Ein weiteres Beispiel sind Spamfilter. Die Instanz hier ist die Email und das Label ist die<br />
Beurteilung des Nutzers. Um den Nutzer nicht zu sehr aufzuhalten, soll dieser nur wenige<br />
Daten labeln müssen und das System daraus lernen, was Spam ist und was nicht [ZG09].<br />
3 Methoden<br />
3.1 Lokalisierungsproblem<br />
Beim Sammeln von ortsbezogegen Informationen ist die Nutzung von GPS weit verbreitet.<br />
Jedoch kann sich ein Agent ohne Satellitenverbindung, beispielsweise in Häusern oder<br />
Straßenschluchten, nicht mehr selbst lokalisieren und ist auf andere Methoden angewiesen.<br />
Die Arbeit von Kawauchi et al. (2009) befasst sich mit der Lokalisierung über die Signalstärke<br />
beziehungsweise den Signaleigenschaften [KKR09]. Hierbei wird versucht die<br />
Entfernung zum W-Lan Access Point festzustellen, dessen Position bekannt sein soll.<br />
Während der Received Signal Strength Indicator (RSSI) nur die Signalstärke beschreibt<br />
die mit dem Signal übermittelt wird, gibt es folgende Verfahren zur Indoor-Positionierung:
Bei Time-of-Arrival (TOA) wird die Ankunftszeit von Signalen in einem mobilen Gerät<br />
gemessen um die Entfernung zum Access Point zu bestimmen. Um dieses Verfahren zu<br />
verbessern basiert TOA auf dem Vergleich der Ankunftszeiten von mehr als drei Access<br />
Points. Diese Methode ist präziser als RSSI, jedoch müssen die Uhren der Access Points<br />
hier sehr präzise aufeinander abgestimmt sein.<br />
Die Angle-of-Arrival (AOA) Methode bezieht den Winkel, mit dem das Signal beim<br />
Gerät ankommt, in die Standortbestimmung mit ein. Ein Gerät muss hierzu einen Sensor<br />
haben, der bei Ankunft eines Signals dessen Richtung feststellen kann. Es ist möglich<br />
die Position eines Gerätes zu bestimmen, wenn man die Signal-Ausrichtung von zwei<br />
Access Points misst. Diese Methode ist zwar robuster als die Analyse der Signalstärke,<br />
braucht aber spezielle Sensorik und ist damit nicht ohne weiteres von bereits existierenden<br />
Geräten nutzbar.<br />
Ähnlich wie AOA bezieht Angle-of-Emission (AOE) den Winkel des Signals mit ein. Jedoch<br />
geht es hier um den Winkel aus dem heraus das Signal gesendet wird. Der Vorteil gegenüber<br />
AOA ist, dass das Endgerät selbst keine Richtungsmessung vornehmen muss. Jedoch<br />
muss die sendende Basisstation hierbei auch über eine gerichtete Antenne verfügen.<br />
Kawauchi und Rekimoto (2009) stellen in ihrer Arbeit ein auf AOE basierendes System<br />
vor, mit dem sie gerichtete W-Lan Signale mit einer sich rotierenden Antenne senden. Die<br />
Antenne sendet mit jedem Signal ihren aktuellen Winkel mit. Somit braucht das Endgerät<br />
keine besonderen Messungen machen, und bekommt den Winkel mit dem eingetroffenen<br />
Signal übermittelt. Zudem fließt in ihr System, welches sie direct beaconing nennen auch<br />
die Signalstärke mittels RSSI ein, die das System zusätzlich stabilisieren soll [KKR09].<br />
In der Arbeit von Bolliger et al. (2009) wird versucht den Standort eines Gerätes mittels<br />
eines Fingerabdruckes der umliegenden W-Lan-Signale zu ermitteln [PBL09]. Ein Punkt<br />
im Raum hat zu seinen umliegenden Access Points ein eindeutiges Empfangsmuster. Dieses<br />
Muster spiegelt sich in den Access Points und deren Signalstärke zu dem Punkt wieder<br />
und wird als Fingerabdruck bezeichnet wie in Abbildung 4 zu sehen. Der Fingerabdruck<br />
ist also eine Kombination aus der Menge der Access Points und deren Empfangsstärken,<br />
die an diesem Punkt eindeutig sind. Ändert sich die Position des Gerätes, ändern sich auch<br />
die Entfernungen zu den Access Points und somit auch die zu messenden Signalstärken.<br />
Der Nachteil dieses Verfahrens ist, dass Fingerabdrücke erst <strong>für</strong> jeden Ort erzeugt werden<br />
müssen, damit diese Muster später wieder den Orten zugewiesen werden können.<br />
Da die Signalstärke von Objekten im Raum beeinflusst wird, muss bei jeder räumlichen<br />
Veränderung neu gemessen werden. Der zweite Schritt ist, den Daten Bedeutung zu geben.<br />
Hier soll ein Fingerabdruck mit der Position, an dem er gemessen wurde gelabelt werden.<br />
In ihrer Arbeit führen Bolliger et al. (2009) das adaPtive Indoor Localization System<br />
(PILS) ein [PBL09]. Es soll das Labeln eines Fingerabdrucks über Endnutzer ermöglichen.<br />
Angenommen ein Benutzer bewegt sich in einer Umgebung die vermessen werden soll.<br />
Anstatt bewusst an einen Punkt zu gehen und diesen zu messen, beschreiben die Forscher<br />
das asynchrone Intervall-Labeln. Dieses funktioniert wie folgt:<br />
Ein Nutzer, der sich in einem zu vermessenden Gebiet befindet, wird erst später die Bereiche<br />
labeln an denen er sich aufgehalten hat (asynchron). Das System misst dazu einen<br />
Fingerabdruck immer nur dann, wenn sich der Nutzer <strong>für</strong> einen gewissen Zeitraum an<br />
einem Punkt aufgehalten hat (Intervall). Somit ist die Fehlerquote beim Labeln geringer,<br />
da sich ein Nutzer nicht an einen genauen Zeitpunkt sondern an einen längeren Zeitraum
Abbildung 4: Drei Fingerabdrücke aus drei verschiedenen Räumen. Die Räume 2212 und 2214 liegen<br />
nebeneinander. Raum 2152 ist weiter entfernt. Die Farben der Signale stellen die verschiedenen<br />
Access Points dar. Quelle: [PBL09]<br />
erinnern soll. Zudem ist das System Nutzerfreundlicher, da die Nutzer nicht direkt ihren<br />
aktuellen Standort benennen sollen, sondern dies später erledigen können [PBL09].<br />
Nachdem die Daten von dem System aufgenommen wurden, kommt der Schritt der Verarbeitung<br />
dieser Daten. Hierbei finden Werkzeuge der Klassifizierung Verwendung, auf die<br />
im Folgenden eingegangen werden soll.<br />
3.2 k-Nearest Neighbor Search (kNN)<br />
Schon im Jahr 2000 beschrieben Bahl und Padmanabhan RADAR, ein System, um mobile<br />
Geräte in Gebäuden mittels W-Lan zu lokalisieren [BP00]. Sie verteilten dazu auf einem<br />
Stockwerk drei Basisstaionen mit bekanntem Ort. Die mobilen Geräte, die sich in dem Gebiet<br />
bewegten, sendeten dabei ständig Pakete an die Basisstationen. Dabei unterteilte sich<br />
das Experiment in zwei Teile: Im off-line-Teil sollten Fingerabdrücke auf dem Stockwerk<br />
erstellt werden, während im real-time-Teil die Position der Nutzer bestimmt werden sollte.<br />
Eine Basisstation maß bei jedem eingehenden Signal die Signalstärke und hielt den Zeitpunkt<br />
fest. Im off-line-Teil wurde zudem von den Nutzern verlangt ihre Position auf einer<br />
Karte des Areals zu markieren. Hiermit wurden die Fingerabdrücke der Funksignale mit<br />
Positionsinformationen verbunden.<br />
Im real-time-Testlauf vergleichen die Forscher die Signalstärken der Nutzer am aktuellen<br />
Punkt mit den gemessenen Fingerabdrücken. Ein Fingerabdruck, bei dem ähnliche<br />
Signalstärken gemessen wurden, ist vermutlich auch nahe an dem Punkt, an dem sich<br />
der Nutzer aktuell befindet (nearest neighbor). Um dieses Verfahren noch zu verbessern<br />
erweiterten sie die Methode und verwendeten den k-Nearest Neighbor Search (kNN) Algorithmus.<br />
Hierbei wird nicht nur ein Nachbar, sondern werden k Nachbarn gesucht. Somit<br />
wird es möglich, einen vermuteten Punkt zu finden der näher am tatsächlichen Punk ist,<br />
als es einer der Nachbarn wäre. Abbildung 5 verdeutlicht dies [BP00].
N 2<br />
W<br />
N 1<br />
V<br />
Abbildung 5: Der vermutete Punkt V ist durch das Einbeziehen von drei Nachbarn(N1, N2, N3)<br />
näher am tatsächlichen Punkt (W) als einer der Nachbarn <strong>für</strong> sich. Quelle: [BP00]<br />
3.3 Hidden Markov Model (HMM)<br />
Sonnig Regen<br />
Bevölkt<br />
Abbildung 6: Markov Model des Wetters. Quelle: [Rab89]<br />
Das Hidden Markov Model (HMM) ist ein Werkzeug der Statistik, welches bei Lernproblemen<br />
sehr häufig zum Einsatz kommt. Die erste große Anwendung fand das Modell bei<br />
der Spracherkennung, wo es darum ging, einen Audio-Datenfluss zu analysieren und dabei<br />
Sprache von Störgeräuschen zu unterscheiden. Ein System sollte also lernen was Sprache<br />
ist und was nicht.<br />
Das HMM basiert auf dem Markov Modell, welches ein Zustandsmodell beschreibt bei<br />
dem zu jedem Zeitpunkt eine gewisse Wahrscheinlichkeit besteht, dass ein Zustand in<br />
einen anderen übergeht. Ein Beispiel hier ist das Wetter. Zu den Zuständen Regen, Wolken<br />
und Sonne würde das Model beschreiben wie die Wahrscheinlichkeiten sind, dass auf<br />
Regen Sonne folgt, auf Wolken Sonne, und so weiter, wie in Abbildung 6 zu sehen.<br />
N3<br />
N 4<br />
N 5
Das HMM geht etwas weiter. Damit soll es möglich sein, Aussagen über das Wetter zu<br />
treffen, ohne die tatsächlichen Zustände überhaupt beobachten zu können. Das heißt, die<br />
eigentlichen Zustände sind nicht sichtbar (hidden). Stattdessen hat man andere Zustände<br />
mit Wahrscheinlichkeitswerten von denen man auf die versteckten Zustände schließen soll.<br />
Im Wetterbeispiel würde man z.B. die Zustände beobachten: sehr trocken, trocken, feucht<br />
und nass. Das Hidden Markov Model darauf angewendet würde nun die<br />
Übergangswahrscheinlichkeiten der Wetter-Zustände darstellen wie in Abbildung 7 [Rab89].<br />
sehr<br />
trocken<br />
trocken feucht nass sichtbar<br />
Sonnig Regen<br />
Bevölkt<br />
Abbildung 7: Hidden Markov Modell welches das Wetter beschreiben soll. Quelle: [Rab89]<br />
verborgen<br />
In ihrer Arbeit nutzen Blanke und Schiele (2009) beispielsweise Hidden Markov Modelle<br />
um Tagesroutinen zu erkennen [BS09]. Sie beobachten dabei aber nur simpelste Aktionen<br />
wie sitzen, essen, laufen, Hände waschen, etc. In diesem Falle sind also die eigentlich<br />
festzustellenden Zustände nicht sichtbar, weil sie selbst gar nicht beobachtet werden. Um<br />
die Erfassung komplexer Aktivitäten zu erkennen, werden hier schichtweise Daten von<br />
HMM zu HMM übergeben (Von Oliver et al. (2002) auch Layered HMM (LHMM) genannt<br />
[NO02]).<br />
Somit war es zum Beispiel möglich, die Aktivität Präsentation halten über Aktionen wie<br />
Sprechen, Schreiben, nichts tun, etc. zu erkennen. Da die HMM normalerweise nur seperate<br />
Ereignisse erkennen können aber nicht die Aktionen selbst einem ganzen Vorgang<br />
zuordnen können, wurden Hirachien der HMM gebildet. Somit war es möglich Vorgänge<br />
zu erkennen, wie sich im Supermarkt oder in der Videothek aufhalten.
3.4 Boosting<br />
Boosting basiert auf der Idee, dass ein schwacher Algorithmus der nur geringfügig besser<br />
ist als der Zufall, zu einem akkuraten und starken Lernalgorithmus verstärkt werden kann<br />
[FS99].<br />
Dabei werden zuerst viele schwache Hypothesen gebildet die eine Sache beschreiben sollen.<br />
Diese werden dann alle gewichtet in eine eigene Hypothese geformt.<br />
Das Grundprinzip ist, eine Menge von Daten zu klassifizieren indem man schwache Regeln<br />
definiert. Diese Regeln alleine beschreiben die Klasse von Objekten, die man erfassen<br />
will noch nicht. Will man beispielsweise die Klasse der Äpfel unter allen Früchten<br />
beschreiben, würde man folgende Regeln treffen:<br />
• Ein Apfel ist rund.<br />
• Ein Apfel ist rot.<br />
Nun schränkt dies die Früchte noch nicht hinreichend ein. Schließlich würden zu dieser<br />
Klassifizierung auch Tomaten oder Kirschen zählen. Auch sind nicht alle Äpfel rot, sie<br />
können auch grün oder gelb sein. Eine genauere und gewichtete Klassifizierung würde so<br />
aussehen:<br />
• Ein Apfel ist rund.<br />
• Ein Apfel ist meistens rot.<br />
• Ein Apfel ist manchmal grün.<br />
• Ein Apfel ist selten gelb.<br />
• Ein Apfel kann einen Stil haben.<br />
Um einen Apfel von einer Tomate abzugrenzen kann man sagen, dass manche Äpfel (noch)<br />
einen Stil haben. Jedoch ist ein Apfel der keinen Stil hat immer noch ein Apfel und keine<br />
Tomate. Diese Regeln beschreiben also <strong>für</strong> sich nicht die Klasse der Äpfel. Doch mithilfe<br />
des Boostings sollen diese <strong>für</strong> sich unzureichenden Annahmen zu einer Hypothese<br />
verbunden werden, die in der Lage ist, die Klasse der Äpfel zu erkennen.
Der AdaBoost Algorithmus von Freund und Schapire (1999) beschreibt Boosting wie<br />
folgt [FS99]:<br />
Der Input sind die Trainingseinheiten der Form (x1, y1), . . ., (xm, ym)<br />
Für t = 1, 2, ..., T gilt:<br />
• Lerne eine schwache Regel ht von den Trainingsdaten.<br />
• Bestimme die Gewichtung wt dieser Regel.<br />
• Hebe die Trainingsdaten hervor die nicht mit ht übereinstimmen (also vermutlich<br />
falsch sind).<br />
Der Algorithmus ruft einen schwachen Lernalgorithmus in t Durchläufen mehrmals auf.<br />
Die Gewichtungen der Trainingseinheiten sind anfangs alle gleich, wobei nach jeder Runde<br />
die falsch klassifizierten Einheiten heruntergestuft werden, so dass sich eine stärkere<br />
Hypothese bildet.<br />
Daraus ergibt sich die Funktion:<br />
H(x) =<br />
T<br />
wtht (x) mit einem normalisierten w. [FS99] (1)<br />
t=1<br />
Ein großer Nachteil des Algorithmus ist der, dass die Klassen alle <strong>für</strong> sich aufgespaltet und<br />
isoliert werden. Jede Klasse hat ihre eigene Menge an Regeln und kann nicht gemeinsame<br />
Regeln mit anderen Klassen teilen.<br />
Zum Beispiel haben wir bei der Klassifizierung von Äpfeln kein Wissen darüber, dass<br />
Äpfel ähnlich aussehen wie Tomaten (also ähnliche Regeln treffen).<br />
Eine Verbesserung, die diese Probleme adressieren soll, ist das Joint Boosting [AZS09].<br />
Hierbei ist es möglich <strong>für</strong> eine Klasse gewisse Attribute (Regeln) aus einem großen Pool<br />
von Attributen auszuwählen die von vielen verschiedenen Klassen verwendet werden können.<br />
Dies ist nicht nur effizienter, da Regeln wiederverwendet werden können, sondern es ist<br />
auch möglich Beziehungen und Abhängigkeiten von Klassen festzustellen [AZS09].<br />
4 Anwendungen<br />
4.1 Aktionserkennung über Low-Level Aktionen<br />
Im folgenden sollen einige konkrete Beispiele gegeben werden.<br />
Aktionserkennung ist eine wichtige Komponente von kontextsensitiven Systemen. Aktionen<br />
können dabei von simplen Gesten bis hin zu komplizierten Tagesroutinen reichen.<br />
Simpelste Aktionen wie Essen, Sitzen, Stehen, Abwaschen, Trinken, etc. werden dabei als<br />
Low-Level-Aktionen bezeichnet. Komplexere Aktivitäten wie Tagesroutinen, die mehrere<br />
Aktionen beinhalten und sich über einen längeren Zeitraum erstrecken, werden High-<br />
Level-Aktivitäten genannt.
Es gibt verschiedene Ansätze und Methoden um Aktionen zu erkennen. Die meisten jedoch,<br />
wie beim Maschinenlernen üblich, nutzen die in Abschnitt 3 beschriebenen Methoden.<br />
Bestimmte High-Level-Aktivitäten anhand der Beobachtung von Low-Level-Aktivitäten<br />
zu erkennen, beschreibt die Arbeit von Blanke und Schiele (2009) [BS09]. Die Arbeit ist<br />
dabei hauptsächlich auf das Auswerten von Daten fokussiert. Hierbei kommen Boosting-<br />
Methoden zum Einsatz. Die Low-Level-Aktionen stellen in diesem Falle die schwachen<br />
Regeln dar, mithilfe derer eine Hypothese gefunden werden soll, die die High-Level-<br />
Aktivität beschreiben kann.<br />
Die Sensordaten auf die sie in ihrer Arbeit zurückgreifen repräsentieren Low-Level-Aktivitäten<br />
und deren Häufigkeit. Als ersten Schritt wenden sie auf die Sensordaten Unsupervised<br />
Learning-Methoden an um die Daten zu clustern. Damit können sie die Aktivitäten ihrem<br />
Aufkommen nach zusammenfassen. Diese werden dann zusätzlich in bestimmte Zeitfenster<br />
zusammengefasst, die dann als Input <strong>für</strong> das Boosting dienen. Sie versuchen hiermit<br />
die Aktivität anhand der in einem gewissen Zeitraum am häufigsten gemessenen Low-<br />
Level Aktionen festzustellen. In ihrer Arbeit stellen die Forscher fest, dass Joint Boosting<br />
in ihren Tests die Rechenleistung signifikant reduziert, da die schwachen Regeln klassenübergreifend<br />
geteilt werden können.<br />
Die Daten erfassen Blanke und Schiele (2009) über dreidimensionale Beschleunigungssensoren,<br />
welche die Probanden sieben Tage am Handgelenk und in ihrer Hosentasche<br />
trugen [BS09]. Dabei sollten die vier Routinen Abendessen, Pendeln, Mittagessen und<br />
Büroarbeiten erkannt werden. Diese sollten anhand von 34 gelabelten Low-Level-Aktionen,<br />
von denen 24 Teil der Routinen waren, erkannt werden. Zum Beispiel gehörten zur Routine<br />
Abendessen die Aktionen: Essen vorbereiten, Essen essen und Abwaschen. Sie kamen<br />
zu dem Schluss, dass diese Methode brauchbare Resultate liefert und, dass schon<br />
überraschend geringe Datenmengen zur Unterscheidung von Routinen wie Abendessen<br />
und Pendeln ausreichen.<br />
4.2 Aktionserkennung über Körper-Modell<br />
Im Gegensatz dazu legen Zinnen et al. (2009) ihren Fokus auf das Messen der Minimal-<br />
Aktionen [AZS09]. Sie stellen fest, dass mit den bisherigen Signal-basierten Methoden,<br />
wie der Messung mit Beschleunigungssensoren gerade kurze und seltene Bewegungen<br />
nur schwer erkannt werden können. Ihre Aktionserkennung basiert auf einem Modell des<br />
menschlichen Körpers und soll dadurch robuster sein, da die zu erkennenden Aktivitäten<br />
schließlich von Körperbewegungen abgeleitet sind. Neben den Körperbewegungen wie<br />
Hand heben, Körper drehen oder Arm drehen beziehen sie ebenfalls die Körperhaltung<br />
sowie Standortinformationen mit ein. Schließlich wollen sie ihre Methode anhand von<br />
Aktionen einer Autoinspektion wie Kofferraum öffnen oder Lack auf Kratzer untersuchen<br />
überprüfen.<br />
Sie plazieren dazu an mehreren Stellen des Körpers eines Probanden Sensoren. Während<br />
Beschleunigungssensoren nur Veränderungen in der Bewegung messen, also ob sich ein<br />
Sensor bewegt, können mit der Erfassung des ganzen Körpers absolute Bewegungen fest-
gestellt werden wie in Abbildung 8 oben zu sehen. So kann die Aktion Hände heben erkannt<br />
werden, egal in welcher Position sich die Hände vorher befanden. Die Testpersonen<br />
Abbildung 8: Oben: Zu sehen ist eine Person von hinten, die gerade den Kofferraum des Autos öffnet.<br />
Unten: Die Bewegungsänderungen des rechten und linken Arms. Bei jedem lokalen Minimum wird<br />
ein SFP oder TP vermutet (rote Kreise). Quelle: [AZS09]<br />
tragen Sensoren an Ober- und Unterarmen sowie am Torso. Eine der größten Schwierigkeiten<br />
ist es, die Bewegungen die <strong>für</strong> die Aktivitäten wichtig sind, von anderen zu trennen.<br />
Um Aktionen voneinander zu trennen, behelfen sie sich zweier Bewegungsmuster. Mit<br />
SFP <strong>für</strong> short but fixed positions bezeichnen sie eine kurzzeitige fixe Position der Hände<br />
die häufig am Anfang und Ende einer Aktivität zu beobachten sei. Mit TP <strong>für</strong> turning<br />
points wollen sie Wendepunkte in Handbewegungen nutzen um Aktionen voneinander zu<br />
unterscheiden. Da zwischen zwei Aktionen die Hände langsamer bewegt werden, sei die<br />
Änderung der Armposition bei SFP und TP gering und somit gut zu erkennen.<br />
Fasst man die Bewegungen der Arme in einem Diagramm zusammen wie in Abbildung<br />
8 unten, welches die Abtastrate gegen die Positionsänderung der Arme abträgt, müssten<br />
sich immer an den lokalen Minima (also dort wo die Änderung der Armposition gering ist)
SFP oder TP ereignen. Die Forscher verifizieren diese Annahme experimentell. Insgesamt<br />
maßen sie 280 Minuten. Die durchschnittliche Länge der Aktivität war 1,4 Sekunden mit<br />
einer Abweichung von 0,95 Sekunden. Ein SFP oder TP dauerte weniger als 0,15 Sekunden.<br />
Um die Bewegung weiter zu abstrahieren definieren die Forscher Bewegungsprimitive.<br />
Beispielsweise sollen Höhenprimitive die Differenz der Personengröße (Hände hoch versus<br />
Ducken) oder Push-Pull-Primitive das Stoßen und Ziehen der Arme abbilden.<br />
Neben der Körperhaltung wird noch die Position der Person mittels Ubisense ermittelt.<br />
Dies erlaubt einen Kontext herzustellen und zu klassifizieren welche Aktion denn an der<br />
aktuellen Position überhaupt möglich ist.<br />
Die Forscher studierten 20 Routinen einer Auto-Inspektion. Sie klassifizierten ihre Daten<br />
mittels Joint Boosting. Zinnen et al. (2009) machen klar, dass das System nur Nutzer-<br />
Abhängig gut funktionieren könne, da sich die exakte Ausführung einer Aktion von Person<br />
zu Person stark unterscheiden kann [AZS09]. Sie kamen zu dem Schluss, dass das System<br />
<strong>für</strong> die Aktionserkennung bei gleichen Testpersonen gute bis sehr gute Ergebnisse lieferte.<br />
Aber auch bei Personen-Unabhängigen Experimenten erbrachte ihre Methode noch gute<br />
Ergebnisse [AZS09].<br />
4.3 Simultaneous Localization and Mapping (SLAM)<br />
Bei Simultaneous Localization and Mapping (SLAM) geht es um ein Problem der Lokalisierung<br />
eines Roboters. Das Problem beschäftigt sich mit der Frage ob es ein mobiler<br />
Roboter, der an einem unbekannten Ort in einer unbekannten Umgebung ausgesetzt wird<br />
schafft, sich sukzessive eine vollständige Karte seiner Umgebung zu bauen während er<br />
simultan seine Position auf dieser Karte bestimmen muss. Eine Lösung dieses Problems<br />
galt <strong>für</strong> die Robotik lange als Weg zu einem tatsächlich autonomen Roboter [DWB06].<br />
Ein Roboter kann mittels seiner Sensoren eine unbekannte Umgebung erkunden und daraus<br />
eine Karte generieren. Jedoch ist es schwierig <strong>für</strong> den Roboter seine eigene Position<br />
in der teilweise erkundeten Karte festzustellen, sowie zu merken, dass er neues Territorium<br />
erreicht hat. Eine Möglichkeit seine Umgebung zu erkennen, wären Merkmale in der<br />
Landschaft mit bekannter Position. Jedoch ist die Vorgabe, dass dem Roboter seine Umgebung<br />
gänzlich unbekannt ist [CN01].<br />
Ein Roboter soll sich also durch eine Umgebung bewegen und dabei subjektive Beobachtungen<br />
von unbekannten Landschaftsmerkmalen mit seinem Sensor machen. Zu einem<br />
Zeitpunkt k seien die folgenden Größen definiert:<br />
• xk: Zustandsvektor der die Position und Blickrichtung des Roboters beschreibt.<br />
• uk: Kontrollvektor, gesetzt zum Zeitpunkt k − 1 um den Roboter zu einem Zustand<br />
xk zum Zeitpunkt k zu bringen.<br />
• mi: Ein Vektor der das i-te Lanschaftsmerkmal beschreibt, dessen Position als zeitunabhängig<br />
angesehen werden soll.<br />
• zik: Beobachtung des Roboters vom i-ten Landschaftsmerkmal zum Zeitpunkt k.
Zudem werden Mengen definiert die den Verlauf der Roboter-Positionen, den Verlauf von<br />
Kontrolleingaben, alle Landschaftsmerkmale sowie alle beobachteten Landschaftsmerkmale<br />
beinhalten [DWB06].<br />
x k-1<br />
uk<br />
x k<br />
m i<br />
m j<br />
x k-1<br />
u k+2<br />
x k+1<br />
Geschätzt<br />
Wahr<br />
x k+2<br />
Roboter<br />
Abbildung 9: Beobachtung des Roboters und dessen tatsächliche Umgebung<br />
Landschafts<br />
merkmal<br />
Hier ist zu sehen, dass der Roboter nie das wahre Bild der Umgebung kennt. Er kann nur<br />
subjektiv bestimmen was um ihn herum ist, hat aber keine anderen Daten um dies zu verifizieren.<br />
Doch auch wenn der Roboter ein um den Messfehler seines Sensors verfälschtes<br />
Bild von seiner Umgebung hat, ist dieser Fehler systematisch und die Karte des Roboters<br />
also nur verschoben. Lösungen dieses Problems sind deshalb wahrscheinlichkeitstheoretisch<br />
begründet.<br />
Auch wenn es noch Schwierigkeiten bei allgemeinen Einsätzen und komplizierten Karten<br />
gibt, gilt das Problem sowohl theoretisch als auch praktisch als gelöst [DWB06].
5 Fazit<br />
<strong>Künstliche</strong> <strong>Intelligenz</strong> ist heute ein wichtiges Forschungsfeld. Nicht nur wird versucht,<br />
einen künstlich denkenden Roboter zu bauen. Vielmehr kommen Werkzeuge und Ideen aus<br />
diesem Gebiet auch anderen Forschungsrichtungen zugute. Kontextbewusstsein ist dabei<br />
wohl einer der größten Trümpfe der KI. <strong>Mobile</strong> <strong>Dienste</strong> sollen einen Nutzer mit Informationen<br />
versorgen, die <strong>für</strong> seine Situation, <strong>für</strong> seinen Standort und <strong>für</strong> seine Vorlieben<br />
sinnvoll sind.<br />
Moderne Smartphones haben heute schon eine umfassende Sensorik verbaut. Beschleunigungssensoren,<br />
Gyroskope und GPS-Empfänger können das Gerät nicht nur lokalisieren,<br />
sondern auch dessen Ausrichtung im dreidimensionalen Raum bestimmen. Mit dieser<br />
Hardware ließen sich schon dank der Methoden der Aktionserkennung aus Abschnitt 4.1<br />
Schlüsse auf das Verhalten und die Tagesroutinen von Nutzern folgern.<br />
Jedoch brauchen diese Verfahren zum Teil noch viel Rechenzeit. Die Anzahl der Boosting-<br />
Runden die es braucht, um eine gute Hypothese zu finden, machen diese Erkennung<br />
noch unpraktikabel <strong>für</strong> Live-Systeme. Aber mit fortschreitender Rechenleistung in mobilen<br />
Geräten und Cloud-Computing wird dies in der Zukunft wohl keine größeren Probleme<br />
mehr darstellen.<br />
Auch das Sammeln von Daten kann problematisch werden. In Abschnitt 4.1 weisen die<br />
Forscher zwar darauf hin, wie wenige Daten doch nötig sind um komplexe Routinen zu<br />
erkennen. In der Arbeit die in Abschnitt 4.2 beschrieben wird, werden jedoch komplexe<br />
dreidimensionale Modelle aufgezeichnet und ausgewertet.<br />
<strong>Künstliche</strong> <strong>Intelligenz</strong> spielt aber nicht nur in der Forschung eine wichtige Rolle. Zum<br />
Beispiel hat künstliche <strong>Intelligenz</strong> auch in der Medizin wichtige Aufgaben. Beispielsweise<br />
können mobile Defibrillatoren die sich in U-Bahn-Stationen befinden dem Benutzer<br />
nicht nur sagen was er tun muss, sondern zum Beispiel auch erst dann einen Stromimpuls<br />
abgeben, wenn sie korrekt platziert sind. Sie handeln bereits rational.<br />
Abschließend lässt sich sagen, dass zwar eine absolut autonom handelnde und denkende<br />
Maschine noch nicht praktisch implementiert werden konnte. Doch, dass vorallem die Methoden<br />
künstlicher <strong>Intelligenz</strong> bereits große Erfolge erzielt haben. HMM, Lernmethoden<br />
und Klassifizierungsverfahren helfen <strong>Intelligenz</strong> in Systeme und <strong>Dienste</strong> zu bringen die<br />
dem Nutzer <strong>ortsbasierte</strong>r <strong>Dienste</strong> eine neue und verbesserte Erfahrung bieten können.<br />
Literatur<br />
[AZS09] C. Wojek A. Zinnen und B. Schiele. Multi Activity Recognition Based on Bodymodel-<br />
Derived Primitives. Location and Context Awareness, 4:1–18, 2009.<br />
[BP00] P. Bahl und V.N Padmanabhan. RADAR: an in-building RF-based user location and<br />
tracking system. INFOCOM, 2:775–784, 2000.<br />
[BS09] U. Blanke und B. Schiele. Daily Routine Recognition through Activity Spotting. Location<br />
and Context Awareness, 4:192–206, 2009.
[CN01] H. Choset und K. Nagatani. Topological Simultaneous Localization and Mapping<br />
(SLAM): Toward Exact Localization Without Explicit Localization. Robotics Automation<br />
Magazine, 17:125–137, 2001.<br />
[DWB06] H. Durrant-Whyte und T. Bailey. Simultaneous localization and mapping: part I. Robotics<br />
Automation Magazine, Seiten 99–110, 2006.<br />
[FS99] Y. Freund und R. Schapire. A short introduction to boosting. Journal of Japanese Society<br />
for Artificial Intelligence, Seiten 771–780, 1999.<br />
[KKR09] T. Miyaki K. Kawauchi und J. Rekimoto. Directional Beaconing: A Robust WiFi Positioning<br />
Method Using Angle-of-Emission Information. Location and Context Awareness,<br />
4:103–119, 2009.<br />
[Mac67] J. MacQueen. Some methods for classification and analysis of multivariate observations.<br />
Proceedings of the fifth Berkeley symposium, 5:281–297, 1967.<br />
[NO02] A. Garg N. Oliver, E. Horvitz. Layered representations for human activity recognition.<br />
Proceedings of the 4th IEEE International Conference on Multimodal Interfaces, 4, 2002.<br />
[PBL09] M. Chu P. Bolliger, K. Partridge und M. Langheinrich. Improving Location Fingerprinting<br />
through Motion Detection and Asynchronous Interval Labeling. Location and<br />
Context Awareness, 4:37–51, 2009.<br />
[Rab89] L.R Rabiner. A Tutorial on Hidden Markov Models and Selected Applications in Speech<br />
Recognition. Proceedings of the IEEE, 77:257–286, 1989.<br />
[RN10] S. Russell und P. Norvig. Artificial Intelligence: A Modern Approach. Pearson Education<br />
Inc., 2010.<br />
[ZG09] X. Zhu und A.B Goldberg. Introduction to Semi-Supervised Learning. Morgan Claypool<br />
Publishers, 2009.