| Such Probleme | |||
| Regression | Markov Decision Processes | Constraint Satisfaction Problems | |
| Classifier | Kompetitive Spiele | Bayesian networks | |
| Reflex | Zustände | Variablen | Logik |
![]() |
|||
| "Niedrige Intelligenz" | "Höhere Intelligenz" | ||
Zustandsbasierte Modelle
Zentrales Motto: Lokal modellieren, global optimieren
State / Zustände
Ein Zustand ist eine möglichst kompakte Beschreibung aller vergangenen Aktionen, die ausreicht um in Zukunft optimale Entscheidungen zu treffen.
Zustände bilden einen Graph in dem wir uns bewegen
Wie kann man die 7 Provinzen einfärben (Rot, Blau, Grün), so dass keine benachbarten Provinzen die gleiche Farbe haben?
https://commons.wikimedia.org/wiki/File:Australia_map,_States-simple.svg
Formulierung als Suchproblem
Wir haben mehr Struktur als in Suchproblemen
Nenne ein Land das mit K anfängt und neben einem Land liegt, in dem Slowenisch gesprochen wird.
Factor Graph (Beispiel)
| B oder R |
muss übereinstimmen mit |
B oder R |
sollte übereinstimmen mit |
B oder R |
| besteht auf B | präferiert R |
|
$f_2(x_1, x_2) = 1[x_1 = x_2]$ |
$f_3(x_2, x_3) = 1[x_2 = x_3] + 2$ |
|
Definition: Factor Graph
Beispiel: Map coloring
|
|
Variablen Factors |
Beispiel: Der Scope von $f_1(X) = 1[\text{WA} \neq \text{NT}]$ ist $\{\text{WA}, \text{NT}\}$ (binary factor).
Eine Lösung (Assignment) $x = (x_1, x_2, \ldots, x_n)$ ist eine Zuweisung von Werten $x_i \in \operatorname{Domain}_i$ zu allen Variablen.
Das Gewicht (Weight) einer Lösung ist das Produkt aller Factors: \[ \operatorname{weight}(x) = \prod_{i = 1}^m f_i(x) \]
Unser Ziel ist es, eine Lösung mit maximalem Gewicht zu finden: \[ \operatornamewithlimits{arg\,max}_x \; \operatorname{weight}(x) \]
Das Gewicht ließe sich auch äquivalent als Summe ausdrücken: \[ \log(\operatorname{weight}(x)) = \sum_{i = 1}^m \log(f_i(x)) \]
|
|
|
|
| $x_1$ | $x_2$ | $x_3$ | $\operatorname{weight}(x)$ |
| R | R | R | $0 \cdot 1 \cdot 3 \cdot 2 = 0$ |
| R | R | B | $0 \cdot 1 \cdot 2 \cdot 1 = 0$ |
| R | B | R | $0 \cdot 0 \cdot 2 \cdot 2 = 0$ |
| R | B | B | $0 \cdot 0 \cdot 3 \cdot 1 = 0$ |
| B | R | R | $1 \cdot 0 \cdot 3 \cdot 2 = 0$ |
| B | R | B | $1 \cdot 0 \cdot 2 \cdot 1 = 0$ |
| B | B | R | $1 \cdot 1 \cdot 2 \cdot 2 = 4$ |
| B | B | B | $1 \cdot 1 \cdot 3 \cdot 1 = 3$ |
Assignment:
\[ x = \{ \text{WA}: {\color{red} R}, \text{NT}: {\color{green} G}, \text{SA}: {\color{blue} B}, \text{Q}: {\color{red} R}, \text{NSW}: {\color{green} G}, \text{V}: {\color{red} R}, \text{T}: {\color{blue} B}\} \\[2mm] \operatorname{weight}(x) = 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 = 1 \]
Assignment:
\[ x = \{ \text{WA}: {\color{red} R}, \text{NT}: {\color{red} R}, \text{SA}: {\color{blue} B}, \text{Q}: {\color{red} R}, \text{NSW}: {\color{green} G}, \text{V}: {\color{red} R}, \text{T}: {\color{blue} B}\} \\[2mm] \operatorname{weight}(x) = 0 \cdot 0 \cdot 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 \cdot 1 = 0 \]
Einen Factor $f_i(x) \in \{0,1\}$ nennen wir (harte) Nebenbedingung / (hard) constraint.
Eine Nebenbindung ist erfüllt, wenn $f_i(x)=1$
Ein constraint satisfaction problem (CSP) ist ein factor graph, wo alle factors constraints sind.
Ein CSP ist konsistent / consistent, wenn $\operatorname{weight}(x) = 1$
Teillösung / partial assignment
z.B.: $x = \{ \text{WA}: {\color{red} R}, \text{NT}: {\color{blue} B}\}$
Abhängige Faktoren / dependent factors
$D(x, X_i)$ ist die Menge aller factors, die von $X_i$ und $x$ abhängen, aber von keinen anderen Variablen (oder nur von $x$).
$D(\{ \text{WA}: {\color{red} R}, \text{NT}: {\color{blue} B}\}, \text{SA}) =\\ \{1[\text{WA}\neq\text{SA}], 1[\text{NT} \neq \text{SA}]\}$
Algorithmus: Backtracking Search
Backtrack($x$, $w$, $\text{Domains}$):
Lookahead: Forward Checking
Idee: Wenn wir $X_i$ einen Wert zuweisen, dann entfernen wir inkompatible Werte aus den Domains von den Nachbarn von $X_i$
Wird eine Domain leer, können wir abbrechen
Wahl der nächsten Variable
Idee: Wähle die Variable mit der kleinsten Domain
Welchen Wert probieren wir für $X_i$?
Idee: Nehme den Wert, der die Nachbarn von $X_i$ am wenigsten einschränkt.
![]() |
![]() |
| $2+2+2=6$ verbleibende Werte | $1+1+2=4$ verbleibende Werte |
Arc consistency
Wir wollen die Domains noch weiter einschränken
$\text{Domain}_1 \gets \{2,3\}$
Eine Variable $X_i$ ist arc consistent zu $X_j$,
wenn es für alle
$x_i \in \text{Domain}_i$
ein $x_j \in \text{Domain}_j$ gibt,
so dass
$f(\{X_i: x_i, X_j: x_j\}) \neq 0$,
für alle factors $f$, die $X_i$ und $X_j$ im Scope haben.
$\operatorname{EnforceArcConsistency}(X_i, X_j)$: Entferne Werte aus $\text{Domain}_i$ die verhindern, dass $X_i$ arc consistent zu $X_j$ ist.
Forward checking: Nachdem wir $X_i$ zuweisen, stellen wir arc concistency von $X_j$ zu $X_i$ für alle Nachbarn $X_j$ her.
Algorithmus: AC-3
AC-3 kann auch nicht alles entdecken
Je früher wir eine unmögliche Zuweisung finden, umso besser
Wenn wir factors $f(X) \geq 0$ haben, die nicht nur 0 und 1 ausgeben,
dann suchen wir nicht nur eine zulässige
($\operatorname{weight}(x) > 0$), sondern die optimale Lösung.
Backtracking muss über alle zulässigen Lösungen weiter laufen.
| B oder R |
muss übereinstimmen mit |
B oder R |
sollte übereinstimmen mit |
B oder R |
| besteht auf B | präferiert R |
|
$f_2(x_1, x_2) = 1[x_1 = x_2]$ |
$f_3(x_2, x_3) = 1[x_2 = x_3] + 2$ |
|
Backtracking Search
Greedy Search
Idee: Kein Backtracking, immer die beste nächste Lösung nehmen.
Algorithmus: Greedy Search
Greedy Suche
Beam Search
Idee: Greedy, aber behalte Liste mit mehreren (maximal $K$) besten Kandidaten im Blick.
Algorithmus: Beam Search
Beam Search (K=3)
Such Strategien
|
$f_2(x_1, x_2) = 1[x_1 = x_2]$ |
$f_3(x_2, x_3) = 1[x_2 = x_3] + 2$ |
|
$x = \{X_1: {\color{blue} B}, X_2: {\color{blue} B}, X_3: {\color{blue} B}\}, \operatorname{weight}(x) = 3$
$x' = \{X_1: {\color{blue} B}, X_2: {\color{blue} B}, {\color{orange} X_3}: {\color{red} R}\}, \operatorname{weight}(x') = 4$
Algorithmus: Local Search
Lokales Optimum
|
|
|
$x = \{X_1: {\color{red} R}, X_2: {\color{red} R}\}, \operatorname{weight}(x) = 1$
Idee: Teste Paare (Tripel, ...) von Variablen auf Verbesserungen.
n-opt local search
Algorithmus: Local Search (n-opt)
Rechenaufwand pro Verbesserung: $O((m l)^n)$
($m$: Anzahl Variablen, $l$: Werte je Domain)
Mehr Struktur vom Problem erlaubt bessere Algorithmen
Boolean Satisfiability (SAT)-Problem
$(X_1 \vee \neg X_2) \wedge (\neg X_1 \vee X_3 \vee X_4) \wedge (X_2 \vee \neg X_4)$
SAT-Problem
Conjunctive normal form (CNF)
Beispiel
In meiner Tasche befinden sich
| $X_1$: Uhr | $X_2$: Münze | $X_3$: Büroklammer |
| eine Uhr oder keine Münze: | $X_1 \vee \neg X_2$ |
| eine Münze oder keine Büroklammer: | $X_2 \vee \neg X_3$ |
| eine Büroklammer oder keine Uhr: | $X_3 \vee \neg X_1$ |
| nicht alle 3 Gegenstände zusammen: | $\neg X_1 \vee \neg X_2 \vee \neg X_3$ |
$(X_1 \vee \neg X_2) \wedge (X_2 \vee \neg X_3) \wedge (X_3 \vee \neg X_1) \wedge (\neg X_1 \vee \neg X_2 \vee \neg X_3)$
Map Coloring als SAT-Problem
Conflict-driven clause learning (CDCL)
Idee: Wenn wir einen Konflikt finden, suche generelle Regel, um diesen zu vermeiden.
https://en.wikipedia.org/wiki/Conflict-driven_clause_learning
(Mixed) Integer Programming (MIP)
\[ \begin{align*} \max\quad & c^T x \\ \text{s.t.}\quad & A x \leq b \\ & x \geq 0 \text{ oder } x \in \{0, 1, 2, \ldots\}\\ & \text{ oder } x \in \{0,1\} \end{align*} \]
(Mixed) Integer Programming (MIP)
Map coloring als MIP
Linear Programming Relaxation
Idee: Wenn alle Variablen vom Typ $x\geq 0$ wären, wäre das Problem einfach. Nutze das als Heuristik für das eigentlich Problem.
Selbst wenn wir den MIP solver abbrechen, bevor er die optimale Lösung findet, kennen wir den Abstand zwischen der besten Lösung und der Schranke der Relaxierung
Können Qualtitätssiegel der Form: "Die Lösung ist höchstens x%" vom Optimum entfernt" angeben.
Praktische Hinweise
Spezielle CSP Klassen
Lösungstechniken
Metaheuristiken
In manchen Fällen sind exakte Methoden keine Option
Metaheuristiken sind heuristische Ansätze, die auf generische Problemklassen anwendbar sind.
Heuristische Methoden geben meistens keine Garantie für die Qualität der gefundenen Lösung
No free lunch theorem
Für jeden Heuristik gibt es eine Problemklasse, so dass sie dort schlecht funktioniert.
Konsequenz: Wir müssen mehrere Methoden Testen um ein Gefühl für die Qualität der Lösung zu bekommen.
Simulated Annealing
Idee: Lokale Suche, aber erlaube Verschlechterung mit sinkender Wahrscheinlichkeit.
Inspiriert von der Kristallbildung in abkühlenden Metallen
Simulated Annealing
https://en.wikipedia.org/wiki/File:Hill_Climbing_with_Simulated_Annealing.gif
Abhängig vom Problem:
Nachbarschaft beim Map Coloring zum Beispiel:
Ändere Färbung für eine Territory
(analog zur lokalen Suche)
Übergangswahrscheinlichkeit:
Sei $f(x)$ die Anzahl benachbarter Gleichfärbungen
\[ P(x, x', T) = \begin{cases} 1 & \text{if } f(x') < f(x)\\ e^{-\frac{f(x') - f(x)}{T}} & \text{else} \end{cases} \]
Genetic Algorithms
Idee: Erstelle neue Lösungen als Rekombinationen von alten Lösungen
Inspiriert durch evolutionäre Weiterentwicklung genetischen Erbguts.
Genetic Algorithm
Representation von Lösungen
Eine Lösung muss so kodiert werden, dass leicht eine Crossover Funktion darüber implementiert werden kann.
Zum Beispiel: (binärer) Array konstanter Länge.
Beispiel für das Map Coloring Problem:
Array mit einem Eintrag je Territory. Eintrag entspricht Färbung:
[R, R, R, B, B, G, R]
Selection anhand der "Fitness" einer Lösung
Wir behalten eine Teilmenge der Lösungen. Je "fitter" die Lösung, desto höher die Wahrscheinlichkeit sie zu behalten.
Die Fitness Funktion bestimmt die Qualität einer Lösung.
Beispiel für das Map Coloring Problem:
Minus Anzahl benachbarter Regionen mit gleicher Farbe ($-f(x)$)
Crossover
Für zwei Lösungen bestimme zufällige Rekombination der Lösungen.
Bei Repräsentation als Arrays ("a" und "b") gleicher Länge:
Eltern
Nachwuchs
Mutationen
Mit geringer Wahrscheinlichkeit modifizieren wir eine zufällige Stelle einer Lösung:
[R, R, R, G,
G, R, G]
$\Rightarrow$
[R, B, R, G,
G, R, G]
Eine Metaheuristik kann sehr starke Ergebnisse liefern, aber auch bei unpassenden Problemen komplett versagen.
$\Rightarrow$ Viel Experimentieren nötig
Wenn die Lösung für ein Optimierungsproblem den Kunden nicht zufrieden stellt, gibt es mehrere Möglichkeiten:
Agiles Vorgehen hilft: Kunde kann Probleme an konkreter Lösung meist besser benennen.
Viele nötige Nebenbedingungen fallen erst auf, wenn die konkrete Lösung sie verletzt:
Erste Lösung mit Greedy Search, dann verbessern.