Alles über informierte Suche in der künstlichen Intelligenz
Veröffentlicht: 2023-03-22Die informierte Suche ist eine Art von Suchalgorithmus, der domänenspezifisches Wissen verwendet, um seine Suche durch einen Problemraum zu führen. Von Navigationssystemen über Spiele, Verarbeitung natürlicher Sprache bis hin zu Lieferkettenmanagement und einer fundierteren Suche in der künstlichen Intelligenz hat die Menge an Zeit und Rechenressourcen, die zur Lösung verschiedener Probleme erforderlich sind, erheblich reduziert.
Durch die Verwendung von domänenspezifischem Wissen zur Steuerung der Suche können informierte Suchalgorithmen schnell irrelevante oder weniger vielversprechende Pfade eliminieren, sodass sich die Suche auf die vielversprechendsten Optionen konzentrieren kann. Zu diesem Zweck verwenden diese Arten von Suchalgorithmen in der KI Heuristiken, um die Effizienz und Geschwindigkeit der Suche zu verbessern.
Melden Sie sich für den Machine Learning-Kurs an den besten Universitäten der Welt an. Erwerben Sie Master-, Executive PGP- oder Advanced Certificate-Programme, um Ihre Karriere zu beschleunigen.
In diesem Artikel werden das Konzept der informierten Suche in der künstlichen Intelligenz, ihre heuristischen Funktionen, Beispiele für Algorithmen und ihre Vor- und Nachteile erörtert.
Inhaltsverzeichnis
Heuristik-Funktion
Einfach ausgedrückt ist eine heuristische Funktion ein Problemlösungsansatz, der eine Faustregel oder eine „beste Schätzung“ verwendet, um die Entfernung oder die Kosten zu einem Zielzustand in einem Suchproblem abzuschätzen. Die heuristische Funktion schätzt, wie weit der Zielzustand vom aktuellen Zustand entfernt ist, was verwendet werden kann, um einen Suchalgorithmus zum Ziel zu führen.
Informierte Suchalgorithmen nutzen diese Funktionen als zusätzliche Informationsquelle, um fundierte Entscheidungen über den einzuschlagenden Weg zu treffen. Aus diesem Grund sind heuristische Funktionen in informierten Suchalgorithmen wesentlich.
Beispiele aus der Praxis für heuristische Funktionen
Um heuristische Funktionen besser zu verstehen, hier einige Beispiele aus der Praxis:
- Beim klassischen Spiel „Sliding Tile Puzzle“ könnte eine einfache heuristische Funktion darin bestehen, die Anzahl der Kacheln zu zählen, die in der aktuellen Konfiguration im Vergleich zur Zielkonfiguration fehl am Platz sind. Je mehr Kacheln fehl am Platz sind, desto weiter ist der aktuelle Zustand vom Zielzustand entfernt.
- Beim Schach könnte eine heuristische Funktion darin bestehen, jeder Figur auf dem Brett basierend auf ihrer relativen Stärke und Position einen Wert zuzuweisen und die Summe dieser Werte zu verwenden, um den Vorteil oder Nachteil des aktuellen Spielers abzuschätzen. Diese heuristische Funktion kann verwendet werden, um einen Suchalgorithmus zu Bewegungen zu führen, die wahrscheinlich zu einer besseren Position führen.
Lassen Sie uns nun fortfahren und einige der am häufigsten verwendeten Beispiele für informierte Suchalgorithmen in der künstlichen Intelligenz verstehen.
Beispiele für informierte Suchalgorithmen
Zwei der am häufigsten verwendeten informierten Suchalgorithmen sind die Best-First-Suche und die A*-Suche. Lassen Sie uns diese beiden Algorithmen zusammen mit einigen Beispielen, Vorteilen, Nachteilen und ihrer Python-Implementierung verstehen:
1. Beste erste Suche
Die Best-First-Suche ist ein Suchalgorithmus, der gemäß einer heuristischen Funktion zuerst den vielversprechendsten Knoten erweitert. Der Algorithmus beginnt am Anfangsknoten und untersucht alle seine untergeordneten Knoten, wobei er den untergeordneten Knoten mit dem niedrigsten heuristischen Wert als den nächsten zu untersuchenden Knoten auswählt. Dieser Prozess wird fortgesetzt, bis der Zielknoten gefunden ist oder alle Knoten untersucht wurden.
Beste erste Suche – ein illustriertes Beispiel
Hier ist ein einfaches Beispiel, um die beste erste Suche zu veranschaulichen:
Angenommen, Sie versuchen, den kürzesten Weg von Ihrem Zuhause zu einem nahe gelegenen Lebensmittelgeschäft zu finden. Sie kennen die Entfernung zum Lebensmittelgeschäft von einigen Orten in der Nähe, aber Sie kennen nicht die genaue Route. Um dieses Problem mit der Best-First-Suche zu lösen, könnten Sie:
- Beginnen Sie an Ihrem Wohnort und berechnen Sie den heuristischen Wert für jeden Standort in der Nähe basierend auf der Entfernung zum Lebensmittelgeschäft.
- Wählen Sie den nahegelegenen Standort mit dem niedrigsten heuristischen Wert als nächsten zu untersuchenden Knoten aus.
- Berechnen Sie den heuristischen Wert für jeden seiner untergeordneten Standorte von diesem nahe gelegenen Standort und wählen Sie den Knoten mit dem niedrigsten heuristischen Wert als nächsten zu untersuchenden Knoten aus.
- Wiederholen Sie diesen Vorgang, bis Sie das Lebensmittelgeschäft erreichen.
Beste erste Suche – Python-Implementierung
So können Sie den besten ersten Suchalgorithmus in Python implementieren:
Heapq importieren
def best_first_search(start_state, goal_state, heuristic_func, actions_func, cost_func):
# Initialisiere die Grenze und den erkundeten Satz
frontier = [(heuristic_func(start_state, goal_state), start_state)]
erkundet = gesetzt()
# Pfad und Kosten initialisieren
Pfad = {}
Kosten = {}
path[start_state] = Keine
Kosten[start_state] = 0
während Grenze:
# Holen Sie sich den Knoten mit dem niedrigsten heuristischen Wert von der Grenze
(h, aktueller_Status) = heapq.heappop(Grenze)
if aktueller_zustand == Zielzustand:
# gibt den Pfad zurück, wenn der Zielzustand erreicht ist
der Weg zurück
Erkundet.add (aktueller_Status)
# Mögliche Aktionen aus dem aktuellen Zustand generieren
für Aktion in actions_func(aktueller_Zustand):
next_state = Aktion (aktueller_Status)
# Berechnen Sie die Kosten des neuen Pfades
new_cost = cost[aktueller_Status] + cost_func(aktueller_Status, Aktion, nächster_Status)
if next_state nicht in explored und next_state nicht in [state for (h, state) in frontier]:
# füge den neuen Staat zur Grenze hinzu
heapq.heappush(Grenze, (heuristische_Funktion(nächster_Zustand, Ziel_Zustand), nächster_Zustand))
Pfad[nächster_Zustand] = aktueller_Zustand
kosten[nächster_zustand] = neue_kosten
# gebe None zurück, wenn der Zielzustand nicht erreichbar ist
Rückgabe Keine
Wie Sie sehen können, müssen Sie die folgenden Funktionen definieren:
- heuristic_func(current_state, goal_state): Diese Funktion nimmt den aktuellen Zustand und den Zielzustand als Eingaben und gibt eine Schätzung der Kosten zum Erreichen des Zielzustands aus dem aktuellen Zustand zurück.
- actions_func(current_state): Diese Funktion nimmt den aktuellen Status als Eingabe und gibt eine Liste von Aktionen zurück, die vom aktuellen Status aus ausgeführt werden können.
- cost_func(aktueller_Zustand, Aktion, nächster_Zustand): Diese Funktion nimmt den aktuellen Zustand, eine Aktion und den nächsten Zustand als Eingaben und gibt die Kosten für das Ergreifen von Maßnahmen vom aktuellen Zustand zum nächsten Zustand zurück.
Beispiel für die beste erste Suche
start_state = (0, 0)
Zielzustand = (4, 4)
def heuristic_func(aktueller_Zustand, Ziel_Zustand):
return abs(aktueller_Zustand[0] – Ziel_Zustand[0]) + abs(aktueller_Zustand[1] – Ziel_Zustand[1])
def actions_func(aktueller_Zustand):
Aktionen = []
wenn aktueller_zustand[0] > 0:
Aktionen.append (Lambda-Zustand: (Zustand[0]-1, Zustand[1]))
wenn aktueller_zustand[0] < 4:
Aktionen.append (Lambda-Zustand: (Zustand[0]+1, Zustand[1]))
wenn aktueller_zustand[1] > 0:
Aktionen.append (Lambda-Zustand: (Zustand[0], Zustand[1]-1))
wenn aktueller_zustand[1] < 4:
Aktionen.append (Lambda-Zustand: (Zustand[0], Zustand[1]+1))
Rückholaktionen
def cost_func(aktueller_Zustand, Aktion, nächster_Zustand):
Rückkehr 1
path = best_first_search(start_state, goal_state, heuristic_func, actions_func, cost_func)
wenn Pfad:
# Den Pfad vom Startzustand zum Zielzustand konstruieren
aktueller_zustand = Zielzustand
while aktueller_zustand != start_zustand:
drucken (aktueller_zustand)
aktueller_zustand = pfad[aktueller_zustand]
print(start_state)
anders:
print("Zielzustand ist nicht erreichbar.")
Vorteile der besten ersten Suche
- Im Vergleich zur Breitensuche ist die zeitliche Komplexität der Best-First-Suche geringer.
- Die beste erste Suche erhält und implementiert die Vorteile sowohl des BFS- als auch des DFS-Algorithmus
Nachteile der Best First Search
- Es kann manchmal mehr Distanz zurücklegen als gedacht.
- Die Chancen, in einer Schleife stecken zu bleiben, sind sehr wahrscheinlich.
Eine Suche
Eine *-Suche ist ein Suchalgorithmus, der sowohl die Kosten zum Erreichen eines Knotens vom Startknoten als auch eine Schätzung der verbleibenden Kosten zum Erreichen des Zielknotens verwendet, um seine Suche zu leiten. Der Algorithmus beginnt am Anfangsknoten und untersucht alle seine untergeordneten Knoten, wobei er den untergeordneten Knoten mit den niedrigsten kombinierten Kosten und den geschätzten verbleibenden Kosten als nächsten zu untersuchenden Knoten auswählt. Dieser Prozess wird fortgesetzt, bis der Zielknoten gefunden ist oder alle Knoten untersucht wurden.
A*-Suche – ein illustriertes Beispiel
Betrachten wir noch einmal das vorherige Beispiel, in dem Sie versuchen, den kürzesten Weg von Ihrem Zuhause zu einem nahe gelegenen Lebensmittelgeschäft zu finden. Nun könnten Sie:
- Beginnen Sie an Ihrem Wohnort und berechnen Sie die Gesamtkosten, um jeden Ort in der Nähe zu erreichen, als Summe der Entfernung von Ihrem Wohnort zu diesem Ort und den geschätzten verbleibenden Kosten, um das Lebensmittelgeschäft von diesem Ort aus zu erreichen.
- Wählen Sie den nahe gelegenen Ort mit den niedrigsten Gesamtkosten als nächsten zu erkundenden Knoten aus.
- Berechnen Sie von diesem nahe gelegenen Standort aus die Gesamtkosten für jeden seiner untergeordneten Standorte als Summe der Entfernung von diesem Standort zum untergeordneten Standort, den Kosten, um diesen Standort vom Startknoten aus zu erreichen, und den geschätzten verbleibenden Kosten, um das Lebensmittelgeschäft zu erreichen von diesem untergeordneten Standort. Wählen Sie den untergeordneten Standort mit den niedrigsten Gesamtkosten als nächsten zu erkundenden Knoten aus.
- Wiederholen Sie diesen Vorgang, bis Sie das Lebensmittelgeschäft erreichen.
Wichtig dabei ist, dass A* Search ein optimaler Suchalgorithmus ist, der garantiert den kürzesten Weg zum Zielzustand findet. Es ist effizient bei Problemen mit einem großen Suchraum und wird häufig in Videospielen, Robotik und Routenplanung verwendet. Es erfordert jedoch eine gut definierte heuristische Funktion, um effektiv zu sein. Aus diesem Grund kann der Algorithmus speicherintensiv sein und bei komplexen Problemen mit vielen Knoten langsamer werden.
A*-Suche – Python-Implementierung
So können Sie den A*-Suchalgorithmus mithilfe der Python-Programmierung implementieren:
Heapq importieren
def astar_search(start_state, goal_state, heuristic_func, actions_func, cost_func):
# Initialisiere die Grenze und den erkundeten Satz
frontier = [(heuristic_func(start_state, goal_state), start_state)]
erkundet = gesetzt()
# Pfad und Kosten initialisieren
Pfad = {}
Kosten = {}
path[start_state] = Keine
Kosten[start_state] = 0
während Grenze:
# Holen Sie sich den Knoten mit dem niedrigsten f-Wert von der Grenze
(f, aktueller_Status) = heapq.heappop(Grenze)
if aktueller_zustand == Zielzustand:
# gibt den Pfad zurück, wenn der Zielzustand erreicht ist
der Weg zurück
Erkundet.add (aktueller_Status)
# Mögliche Aktionen aus dem aktuellen Zustand generieren
für Aktion in actions_func(aktueller_Zustand):
next_state = Aktion (aktueller_Status)
# Berechnen Sie die Kosten des neuen Pfades
new_cost = cost[aktueller_Status] + cost_func(aktueller_Status, Aktion, nächster_Status)
if next_state nicht in explored und next_state nicht in [state for (f, state) in frontier]:
# füge den neuen Staat zur Grenze hinzu
heapq.heappush(frontier, (new_cost + heuristic_func(next_state, goal_state), next_state))
Pfad[nächster_Zustand] = aktueller_Zustand
kosten[nächster_zustand] = neue_kosten
elif next_state in [state for (f, state) in frontier] und new_cost < cost[next_state]:
# Aktualisiere die Kosten des bestehenden Staates an der Grenze
index = [i for (i, (f, state)) in enumerate(frontier) if state == next_state][0]
frontier[index] = (new_cost + heuristic_func(next_state, goal_state), next_state)
Pfad[nächster_Zustand] = aktueller_Zustand
kosten[nächster_zustand] = neue_kosten
# gebe None zurück, wenn der Zielzustand nicht erreichbar ist
Rückgabe Keine
Top-Kurse für maschinelles Lernen und KI-Online-Kurse
Master of Science in Machine Learning & AI von der LJMU | Executive Post Graduate Program in Machine Learning & AI vom IIITB | |
Advanced Certificate Program in Machine Learning & NLP von IIITB | Advanced Certificate Program in Machine Learning & Deep Learning von IIITB | Executive Post Graduate Program in Data Science & Machine Learning von der University of Maryland |
Um alle unsere Zertifizierungskurse zu AI & ML zu erkunden, besuchen Sie bitte unsere Seite unten. | ||
Zertifizierung für maschinelles Lernen |
Beispiel für A*-Suche
Hier ist ein Beispiel dafür, wie Sie die Funktion astar_search mit diesen Funktionen verwenden können:
start_state = (0, 0)
Zielzustand = (4, 4)
def heuristic_func(aktueller_Zustand, Ziel_Zustand):
return abs(aktueller_Zustand[0] – Ziel_Zustand[0]) + abs(aktueller_Zustand[1] – Ziel_Zustand[1])
def actions_func(aktueller_Zustand):
Aktionen = []
wenn aktueller_zustand[0] > 0:
Aktionen.append (Lambda-Zustand: (Zustand[0]-1, Zustand[1]))
wenn aktueller_zustand[0] < 4:
Aktionen.append (Lambda-Zustand: (Zustand[0]+1, Zustand[1]))
wenn aktueller_zustand[1] > 0:
Aktionen.append (Lambda-Zustand: (Zustand[0], Zustand[1]-1))
wenn aktueller_zustand[1] < 4:
Aktionen.append (Lambda-Zustand: (Zustand[0], Zustand[1]+1))
Rückholaktionen
def cost_func(aktueller_Zustand, Aktion, nächster_Zustand):
Rückkehr 1
path = astar_search(start_state, goal_state, heuristic_func, actions_func, cost_func)
wenn Pfad:
# Den Pfad vom Startzustand zum Zielzustand konstruieren
aktueller_zustand = Zielzustand
while aktueller_zustand != start_zustand:
drucken (aktueller_zustand)
aktueller_zustand = pfad[aktueller_zustand]
print(start_state)
anders:
print("Zielzustand ist nicht erreichbar.")
Vorteile der A*-Suche
- Es ist eine der führenden heuristischen Techniken.
- Die A*-Suche kann genutzt werden, um komplexe Suchprobleme zu lösen
Trendige maschinelle Lernfähigkeiten
KI-Kurse | Tableau-Zertifizierung |
Verarbeitung natürlicher Sprache | Deep-Learning-KI |
Nachteile der A*-Suche
- Die A*-Suchleistung hängt stark von der Genauigkeit heuristischer Algorithmen ab.
- Hat eine geringe Sucheffizienz.
Beliebte KI- und ML-Blogs und kostenlose Kurse
IoT: Geschichte, Gegenwart und Zukunft | Lernprogramm für maschinelles Lernen: Lernen Sie ML | Was ist Algorithmus? Einfach & leicht |
Gehalt als Robotikingenieur in Indien: Alle Rollen | Ein Tag im Leben eines Machine Learning Engineers: Was machen sie? | Was ist IoT (Internet der Dinge) |
Permutation vs. Kombination: Unterschied zwischen Permutation und Kombination | Top 7 Trends in künstlicher Intelligenz und maschinellem Lernen | Maschinelles Lernen mit R: Alles, was Sie wissen müssen |
Kostenlose KI- und ML-Kurse | ||
Einführung in NLP | Grundlagen des Deep Learning von neuronalen Netzen | Lineare Regression: Schritt-für-Schritt-Anleitung |
Künstliche Intelligenz in der realen Welt | Einführung in Tableau | Fallstudie mit Python, SQL und Tableau |
Wegbringen
Informierte Suchalgorithmen sind in der künstlichen Intelligenz unerlässlich, da sie es dem Computer ermöglichen, effizient und effektiv nach einem Zielzustand zu suchen. Diese Algorithmen verwenden heuristische Funktionen, um die Kosten jeder möglichen Bewegung abzuschätzen und den Suchprozess in Richtung des Zielzustands zu führen. Best First Search und A* Search sind Beispiele für informierte Suchalgorithmen, die in verschiedenen Bereichen weit verbreitet sind. Eine gut definierte heuristische Funktion ist jedoch entscheidend für den Erfolg informierter Suchalgorithmen.
Wenn Sie mehr über künstliche Intelligenz und maschinelles Lernen erfahren möchten, besuchen Sie das von der Liverpool John Moores University angebotene Programm „Masters in Machine Learning & Artificial Intelligence“ von upGrad . Dieses Programm behandelt verschiedene maschinelle Lern- und KI-Themen, einschließlich Algorithmen wie informierte Suche. Durch die Teilnahme an diesem Programm können Sie die Fähigkeiten und Kenntnisse erwerben, die Sie benötigen, um in einer Vielzahl von KI-bezogenen Karrieren erfolgreich zu sein.
Sie können sich auch unserekostenlosen Kurseansehen,die von upGrad in Management, Datenwissenschaft, maschinellem Lernen, digitalem Marketing und Technologie angeboten werden.Alle diese Kurse verfügen über erstklassige Lernressourcen, wöchentliche Live-Vorträge, Branchenaufgaben und ein Kursabschlusszertifikat – alles kostenlos!
Was ist der Unterschied zwischen informierten und uninformierten Suchalgorithmen?
Informierte Suchalgorithmen verwenden heuristische Funktionen, um den Suchprozess zu leiten, während uninformierte Suchalgorithmen dies nicht tun. Dies bedeutet, dass informierte Suchalgorithmen bei der Suche nach Lösungen für komplexe Probleme effizienter sein können, da sie das Beschreiten aussichtsloser Pfade vermeiden können.
Wie wählt man eine gute heuristische Funktion für einen informierten Suchalgorithmus aus?
Die heuristische Funktion sollte zulässig sein, was bedeutet, dass sie niemals die wahren Kosten zum Erreichen des Zielzustands überschätzt. Idealerweise sollte die heuristische Funktion auch konsistent sein, was bedeutet, dass die geschätzten Kosten zum Erreichen eines Nachfolgezustands niemals größer sind als die geschätzten Kosten zum Erreichen des aktuellen Zustands plus die Kosten zum Erreichen des Nachfolgezustands.
Welche Einschränkungen haben informierte Suchalgorithmen?
Die Qualität der heuristischen Funktion kann informierte Suchalgorithmen einschränken. Der Algorithmus kann schlecht funktionieren, wenn die heuristische Funktion ungenau ist oder nützliche Informationen liefert. Außerdem können informierte Suchalgorithmen rechenintensiv sein, insbesondere wenn der Suchraum groß oder die heuristische Funktion komplex ist.