Lokale Suche: Simulated Annealing
Lokale Suchverfahren: Nur das Ergebnis zählt! Nicht der Weg ist das Ziel, sondern nur das Erreichen des Ziels.
Das Problem bei der Gradientensuche ist, dass man eine Kostenfunktion benötigt und diese auch lokale Minima enthalten kann. Mit der reinen Gradientensuche würde man bei Erreichen lokaler Minima die Suche abbrechen (müssen), da es keine weitere Verbesserung unter den Nachfolgern mehr geben kann. In Anlehnung an das Abkühlen von Metall kann hier eine Variante der lokalen Suche helfen: Simulated Annealing. Man führt einen "Temperatur"-Parameter ein, der im Laufe der Suche immer kleiner wird und schließlich gegen Null geht. In Abhängigkeit von dieser "Temperatur" wird mit einer bestimmten Wahrscheinlichkeit eine Verschlechterung akzeptiert: Bei einer hohen Temperatur ist diese Wahrscheinlichkeit höher, bei einer niedrigen Temperatur niedriger, so dass das Verfahren in ein normales Hill-Climbing übergeht. Damit kann man ein Festfressen in lokalen Minima vermeiden bzw. überwinden.
- (K2) Funktionsweise Simulated Annealing
Motivation
Problem: lokale Maxima und Plateaus
- Lokale Maxima/Minima: Algorithmus findet nur eine suboptimale Lösung
- Plateaus: Hier muss der Algorithmus mit zufälligen Zügen explorieren
Mögliche Lösungen:
- Neustart des Algorithmus, wenn kein Fortschritt erzielt wird
- Rauschen "injizieren"
Gedankenexperiment: Ausweg aus lokalen Minima
- "Drehen der Landschaft": Minimieren statt Maximieren
- Ball wird in Zustandsraum-Landschaft gesetzt.
- Folge:
- rollt steilsten Abstieg hinunter
- rollt evtl. in Tal auf halber Höhe (lokales Minimum) => bleibt dort gefangen
=> "Schütteln der Landschaft" -- Ball springt aus dem Tal und rollt in anderes Tal
Nicht zu stark schütteln -- sonst wird u.U. globales Minimum verlassen!
Analogie Härten von Metall
- Metall erhitzen bis Atome frei beweglich
- Langsam abkühlen
=> stabiles Atomgitter mit minimalem Energiezustand
Übertragen der Idee
- Starkes "Schütteln" (hohe "Temperatur") am Anfang
- Schrittweises "Abkühlen" => "Schütteln" im Laufe der Zeit verringern
=> Simulated Annealing
Pseudocode Simulated Annealing (Minimierungsproblem)
def simulated_annealing(problem):
current = problem.startNode
t = 0; temp = schedule(t)
while temp>0:
temp = schedule(++t)
neighbors = current.expandSuccessors()
if not neighbors: return current
working = random.choice(neighbors)
dE = problem.value(current) - problem.value(working)
if dE > 0 or probability(math.exp(dE/temp)):
current = working
return current
Wenn dE
positiv ist, dann ist der Nachfolger "besser" (hier: kleiner bewertet) als der aktuelle Knoten und wird immer
als nächster Knoten übernommen.
Wenn dE
negativ ist, dann ist der betrachtete Nachfolger "schlechter" (hier: größer bewertet) als der aktuelle Knoten.
Dann wird er mit einer Wahrscheinlichkeit math.exp(dE/temp)
als nächster Knoten übernommen. Diese
Wahrscheinlichkeit ist bei hohen Temperaturen temp
eher hoch, und sinkt, je niedriger die Temperatur temp
wird.
Die Temperatur temp
bewegt sich dabei von hohen positiven Werten auf den Wert Null (wird also nicht negativ).
Detail: Akzeptieren von Verschlechterungen
Quelle: "Exp e.svg" by Marcel Marnitz, reworked by Georg-Johann on Wikimedia Commons (Public Domain)
- Wahrscheinlichkeit zum Akzeptieren einer Verschlechterung:
math.exp(dE/temp)
negativ =>
: geht gegen 0 : 1 : steil (exponentiell) gegen Unendlich ...
Wenn math.exp(dE/temp)
ausgewertet. Damit ergibt sich wegen
- Temperatur
hoch: ist positiv und klein (nahe Null), d.h. nahe 1 (oder größer), d.h. die Wahrscheinlichkeit ist nahe 1 (oder kleiner) - Temperatur
wird kleiner und geht gegen Null: ist positiv und wird größer, d.h. geht schnell gegen Unendlich, d.h. die Wahrscheinlichkeit geht gegen 0
Abkühlungsplan problemabhängig wählen
-
Initiale Temperatur: So hoch, daß praktisch jede Änderung akzeptiert wird
-
Abkühlen:
mit- Ausreichend langsam abkühlen!
- Typisch: jede Stufe so lange halten, daß etwa 10 Änderungen akzeptiert wurden
-
Stop: Keine Verbesserungen in 3 aufeinander folgenden Temperaturen
Der Abkühlungsplan muss problemabhängig gewählt werden. Das Beispiel zeigt typische Elementes eines solchen Abkühlungsplans.
Eigenschaften Simulated Annealing
- Vollständigkeit: ja (mit gewisser Wahrscheinlichkeit)
- Optimalität: ja (mit gewisser Wahrscheinlichkeit)
Voraussetzung: geeigneter Abkühlungsplan
Anwendungen von Simulated Annealing
- Flugplan-Scheduling
- Layout-Probleme (Chipentwurf, Leiterplatten)
- Produktionsplanung
Wrap-Up
Lokale Suchverfahren: Nur das Ergebnis zählt!
- Gradientenverfahren
- Analogie Bergsteigen: Gehe in Richtung des stärksten Anstiegs der Kostenfunktion => Hill-Climbing
- Achtung: Probleme mit lokalen Minima => Simulated Annealing
- [Russell2020] Artificial Intelligence: A Modern Approach
Russell, S. und Norvig, P., Pearson, 2020. ISBN 978-0134610993.
Simulated Annealing: Abschnitt 4.1.2