Maschinelles Lernen und neuronale Netze - Seite 17

 

PyTorch for Deep Learning & Machine Learning – Vollständiger Kurs (Beschreibung der Teile 25-26)


PyTorch für Deep Learning & maschinelles Lernen – Vollständiger Kurs


Teil 25

  • 24:00:00 In diesem Abschnitt des Kurses „PyTorch for Deep Learning & Machine Learning“ erörtert der Kursleiter Verlustkurven und ihre Bedeutung für die Bewertung der Leistung eines Modells im Laufe der Zeit. Eine Verlustkurve sollte einen Trend zu abnehmendem Verlust im Laufe der Zeit und zunehmender Genauigkeit zeigen. Es gibt verschiedene Formen von Verlustkurven, und eine ideale Verlustkurve zeigt, dass der Trainings- und der Testverlust mit einer ähnlichen Rate abnehmen. Eine Unteranpassung tritt auf, wenn der Verlust des Modells geringer sein könnte, während eine Überanpassung auftritt, wenn das Modell die Trainingsdaten zu gut lernt, was zu einem geringeren Trainingsverlust als dem Testverlust führt. Der Kursleiter stellt einen zusätzlichen Lehrplan aus dem Loss Curve Guide von Google bereit und erläutert Methoden zur Bekämpfung von Overfitting, z. B. Regularisierungstechniken und Reduzierung der Modellkomplexität.

  • 24:05:00 einige Möglichkeiten zur Reduzierung von Overfitting in Ihrem Deep-Learning-Modell, die in diesem Abschnitt besprochen wurden. Mehr Daten durch Datenerweiterung oder bessere Datenqualität zu erhalten, kann Ihrem Modell dabei helfen, mehr verallgemeinerbare Muster zu lernen. Auch der Einsatz von Transfer-Lernen, indem Muster, die aus vortrainierten Modellen gelernt wurden, auf Ihren eigenen Datensatz angewendet werden, kann effektiv sein. Es kann auch hilfreich sein, Ihr Modell zu vereinfachen, indem Sie die Anzahl der Schichten oder verborgenen Einheiten reduzieren. Der Lernratenabfall kann helfen, indem er die Lernrate im Laufe der Zeit verringert, und ein frühes Beenden kann den Trainingsprozess stoppen, bevor eine Überanpassung auftritt.

  • 24:10:00 In diesem Abschnitt wird das Konzept des frühen Stoppens als Methode zum Umgang mit Überanpassung beim maschinellen Lernen erörtert. Bevor der Testfehler zu steigen beginnt, wird der Testfehler des Modells verfolgt und das Modell wird vom Training angehalten oder die Gewichte/Muster werden dort gespeichert, wo der Verlust des Modells am geringsten war. Es werden auch verschiedene Methoden zum Umgang mit Underfitting untersucht, z. B. das Hinzufügen weiterer Schichten/Einheiten zum Modell, das Optimieren der Lernrate, das längere Training und die Verwendung von Transfer Learning. Das Gleichgewicht zwischen Overfitting und Underfitting wird betont, und die Bedeutung der Bewertung der Leistung eines Modells im Laufe der Zeit unter Verwendung von Verlustkurven wird hervorgehoben. Abschließend werden Wege diskutiert, um eine Überregulierung des Modells und das Ende einer Unteranpassung zu verhindern, und das Ziel, ein genau richtiges Gleichgewicht zwischen Unteranpassung und Überanpassung zu erreichen, wird betont.

  • 24:15:00 In diesem Abschnitt des Videos zu PyTorch für Deep Learning und maschinelles Lernen erläutert der Kursleiter das Konzept der Überanpassung und Unteranpassung in Modellen sowie Möglichkeiten, damit umzugehen. Die Datenerweiterung ist eine der Methoden, die eingeführt wurden, um mit Überanpassung umzugehen, bei der Bilder manipuliert werden, um die Vielfalt des Trainingsdatensatzes zu erhöhen. Anschließend demonstriert der Kursleiter, wie eine Transformation mit Datenerweiterung erstellt und Daten mithilfe dieser Transformationen geladen werden, um Trainings- und Testdatensätze und Datenladeprogramme zu erstellen. Das Video betont, wie wichtig es ist, verschiedene Modelle mit verschiedenen Optimierungen und Transformationen auszuprobieren, um die beste Lösung für ein bestimmtes Problem zu finden.

  • 24:20:00 In diesem Abschnitt des Videos führt der Kursleiter durch den Prozess der Erstellung eines Datensatzes und eines Datenladers mit PyTorch-Transformationen und der ImageFolder-Klasse. Sie stellen Codebeispiele bereit und ermutigen die Zuschauer, es selbst zu testen, wenn sie möchten. Der Datensatz wird aus Bildern von Pizza, Steak und Sushi sowohl für die Schulungs- als auch für die Testordner erstellt. Der Kursleiter erläutert auch, wie wichtig es ist, mit Variablennamen klar zu sein, wenn im gesamten Notizbuch mit ähnlichen Namen gearbeitet wird. Sie richten die Datenladeprogramme sowohl für die Trainings- als auch für die Testdatensätze ein, wobei der Trainingsdatensatz mit der trivialen Augment-Wide-Funktion erweitert wird. Der Ausbilder schlägt dann vor, dass die Zuschauer ein Modell bauen und trainieren, indem sie die winzige VGG-Klasse und die Zugfunktion verwenden.

  • 24:25:00 In diesem Abschnitt des vollständigen PyTorch-Kurses führt der Kursleiter den Zuschauer durch den Prozess des Erstellens und Trainierens eines neuen Modells unter Verwendung derselben Architektur wie zuvor, jedoch mit erweiterten Trainingsdaten. Das Ziel besteht darin, die Leistung dieses Modells mit dem Basismodell ohne Datenerweiterung zu vergleichen. Der Ausbilder verwendet die zuvor für das winzige VGG-Modell erstellte Klasse und legt einen manuellen Startwert für die Reproduzierbarkeit fest. Dann definieren sie die Verlustfunktion und den Optimierer, stellen die Hyperparameter ein und starten den Timer. Schließlich trainiert der Ausbilder das Modell, indem er die zuvor erstellte Trainingsfunktion aufruft, das Modell und die Datenladeprogramme übergibt und die Ergebnisse auswertet.

  • 24:30:00 In diesem Abschnitt setzt der Ausbilder das Training des zweiten Modells mit Datenaugmentation fort und zeigt, dass es nicht so gut abschnitt wie das erste Modell ohne Datenaugmentation, da der Verlust bereits abnahm war nicht viel Overfitting. Der Ausbilder führt dann eine Funktion zum Zeichnen von Verlustkurven ein und verwendet sie, um die Leistung des zweiten Modells zu bewerten. Die Verlustkurve zeigt, dass das Modell unter- und möglicherweise überangepasst ist, was durch den höheren Testverlust im Vergleich zum Trainingsverlust angezeigt wird. Der Kursleiter stellt dann die Frage, was getan werden kann, um sowohl Underfitting als auch Overfitting im Modell anzugehen, und schlägt Optionen vor, wie z. B. mehr Daten zu erhalten, das Modell zu vereinfachen, Transfer Learning zu verwenden oder weitere Ebenen hinzuzufügen.

  • 24:35:00 In diesem Abschnitt erörtert der Kursleiter die Bedeutung des Vergleichs von Modellergebnissen und stellt einige Tools wie PyTorch plus TensorBoard sowie Gewichtungen und Bias bereit, um verschiedene Experimente zu verfolgen. Er betont jedoch, dass sich dieser Kurs vorerst nur auf reines PyTorch konzentrieren wird. Der Kursleiter erstellt dann ein Diagramm, um die Modellergebnisse nebeneinander zu vergleichen, wobei Datenrahmen für jedes der Modellergebnisse verwendet werden. Er schlägt auch vor, ein Experiment auszuprobieren, um Model Zero für eine längere Dauer zu trainieren, um zu sehen, ob es sich verbessert. Letztendlich ist der visuelle Vergleich verschiedener Experimente und ihrer Metriken entscheidend für die Verbesserung der Modelle.

  • 24:40:00 In diesem Abschnitt verwendet der Kursleiter Subplots, um verschiedene Metriken in zwei Modellen zu vergleichen, mit denen er experimentiert hat. Sie beginnen mit der Erstellung eines Bereichs für die Anzahl der Epochen und erstellen dann mithilfe von PLT.subplot() und PLT.plot() eine Darstellung für Zugverluste. Sie tun dasselbe für den Testverlust und die Genauigkeit sowohl für Trainings- als auch für Testdaten. Der Ausbilder weist darauf hin, dass Modell eins, das Datenerweiterung implementiert hat, in diesem Stadium anscheinend überangepasst ist, während Modell Null in Bezug auf Verlust besser abschneidet. Der Kursleiter schlägt vor, dass er, wenn er mehr Modelle zum Vergleichen hätte, dies möglicherweise in eine Funktion umwandeln könnte, merkt aber auch an, dass Tools wie TensorBoard, Gewichtungen und Bias und MLflow dabei helfen können, diese Diagramme zu verstehen, wenn zahlreiche Experimente durchgeführt werden.

  • 24:45:00 In diesem Abschnitt erörtert der Referent die Bedeutung der Bewertung von Modellen basierend darauf, wie gut sie mit dem Testdatensatz und nicht nur mit dem Trainingsdatensatz abschneiden. Sie schlagen vor, dass die Metriken im Trainingsdatensatz zwar gut sind, das ultimative Ziel jedoch darin besteht, dass das Modell bei unsichtbaren Daten eine gute Leistung erbringt. Der Referent empfiehlt, die Modelle länger zu trainieren und möglicherweise mehr versteckte Einheiten zu jeder Schicht hinzuzufügen, um bessere Ergebnisse zu erzielen. Anschließend demonstrieren sie am Beispiel einer Lebensmittelerkennungs-App, wie Vorhersagen für benutzerdefinierte Bilder getroffen werden können, die nicht im Trainings- oder Testdatensatz enthalten sind. Sie erklären den Arbeitsablauf zum Herunterladen eines benutzerdefinierten Bildes und zum Erstellen einer Vorhersage mithilfe eines trainierten PyTorch-Modells, weisen jedoch darauf hin, dass das aktuelle Modell möglicherweise keine hervorragende Leistung aufweist.

  • 24:50:00 In diesem Abschnitt zeigt der Kursleiter, wie er ein benutzerdefiniertes Bild einer Pizza herunterlädt und es mithilfe des von ihm trainierten Modells für die Vorhersage vorbereitet. Das Bild wird mit einer unformatierten GitHub-URL heruntergeladen und im Datenordner gespeichert. Der Kursleiter weist darauf hin, dass das benutzerdefinierte Bild das gleiche Format haben muss wie die Daten, die zum Trainieren des Modells verwendet wurden, insbesondere Tensorform mit dem Datentyp Torch Float 32 und einer Form von 64 mal 64 mal drei. Sie demonstrieren, wie das Bild mithilfe des Torch-Vision-Pakets und der read_image-Funktion, die ein JPEG oder PNG in einen dreidimensionalen RGB- oder Graustufen-Tensor liest, in PyTorch geladen wird.

  • 24:55:00 In diesem Abschnitt demonstriert der Kursleiter, wie ein benutzerdefiniertes Bild mit Torch Vision.io in PyTorch eingelesen und in einen Tensor konvertiert wird. Er zeigt auch, wie man Metadaten über das Bild erhält, wie etwa seine Form und seinen Datentyp. Der Kursleiter weist darauf hin, dass das Bild möglicherweise in der Größe geändert, in Float32 konvertiert und auf das richtige Gerät übertragen werden muss, bevor es durch ein Modell geleitet wird. Im nächsten Abschnitt möchte er demonstrieren, wie mithilfe eines PyTorch-Modells eine Vorhersage für das benutzerdefinierte Bild getroffen werden kann.

Teil 26

  • 25:00:00 In diesem Abschnitt erörtert der Kursleiter die Bedeutung von Datentypen und -formen beim Deep Learning und wie damit verbundene Fehler behoben werden können. Der Kursleiter versucht, eine Vorhersage für ein Bild zu treffen, es treten jedoch Fehler auf, da die benutzerdefinierten Daten nicht denselben Datentyp aufweisen, mit dem das Modell ursprünglich trainiert wurde. Sie zeigen, wie der Fehler behoben werden kann, indem der benutzerdefinierte Bildtensor neu erstellt und in Fackelfloat 32 konvertiert wird. Der Kursleiter sieht sich dann einem anderen Problem mit der Form des benutzerdefinierten Bilds gegenüber und zeigt, wie er es beheben kann, indem er eine Transformationspipeline erstellt, um die Größe des Bilds zu ändern die gleiche Größe, auf der das Modell trainiert wurde.

  • 25:05:00 In diesem Abschnitt zeigt der Kursleiter, wie das Transformationspaket von PyTorch verwendet wird, um ein Eingabebild zu transformieren und es für die Verwendung durch ein Deep-Learning-Modell vorzubereiten. Sie demonstrieren, wie eine Transformationspipeline auf ein benutzerdefiniertes Bild angewendet wird, wodurch das Bild komprimiert und verpixelt wird. Der Kursleiter weist darauf hin, dass dies möglicherweise die Genauigkeit des Modells beeinträchtigen könnte, und empfiehlt, mit größeren Bildgrößen zu experimentieren, um die Leistung zu verbessern. Sie besprechen auch, wie wichtig es ist, sicherzustellen, dass die Tensordimensionen mit den Anforderungen des Modells übereinstimmen, einschließlich des Hinzufügens einer Stapeldimension zu einem benutzerdefinierten Bild, bevor es zur Inferenz durch das Modell geleitet wird.

  • 25:10:00 In diesem Abschnitt des Videos demonstriert der Moderator, wie man mithilfe eines PyTorch-Modells Vorhersagen zu benutzerdefinierten Bilddaten treffen kann. Sie betonen, wie wichtig es ist, die Daten richtig zu formatieren und sicherzustellen, dass sie den gleichen Datentyp, die gleiche Form und das gleiche Gerät haben, auf dem das Modell trainiert wurde, um Fehler zu vermeiden. Der Moderator zeigt auch, wie die Rohausgaben des Modells oder Logits mithilfe der Softmax-Funktion in Vorhersagewahrscheinlichkeiten umgewandelt werden. Obwohl das im Beispiel verwendete Modell keine gute Leistung erbringt, wird der Prozess der Vorhersage von benutzerdefinierten Daten veranschaulicht.

  • 25:15:00 In diesem Abschnitt des Videos zeigt der Kursleiter, wie der benutzerdefinierte Bildvorhersageprozess funktioniert. Diese Funktion verwendet ein PyTorch-Modell, einen Bildpfad, eine Liste mit Klassennamen, eine Transformation und ein Gerät als Eingaben. Es lädt das Bild mit TorchVision, formatiert es, ruft die Vorhersageetiketten ab und zeichnet das Bild mit seiner Vorhersage als Titel. Der Trainer fordert die Zuschauer auf, diese Funktion selbst zu bauen, und geht dann eine mögliche Implementierung im Video durch. Die Funktion ist in diesem Abschnitt nicht vollständig implementiert und wird im nächsten Video fortgesetzt.

  • 25:20:00 In diesem Abschnitt erfahren Sie, wie Sie mithilfe von PyTorch eine Vorhersage für benutzerdefinierte Daten treffen. Zuerst müssen wir die Bilddaten so skalieren, dass sie zwischen 0 und 1 liegen, damit unser Modell sie richtig verarbeiten kann. Dann prüfen wir, ob Transformationen notwendig sind, und leiten das Bild durch sie, falls dies der Fall ist. Als Nächstes stellen wir sicher, dass sich das Modell auf dem richtigen Gerät befindet, und versetzen es in den Inferenzmodus. Wir fügen dem Bild auch eine zusätzliche Dimension hinzu, um die Stapelgröße von 1 widerzuspiegeln, die unser Modell vorhersagt. Dann machen wir eine Vorhersage, wandeln die rohen Logits mit Softmax in Vorhersagewahrscheinlichkeiten um und konvertieren diese dann mit Argmax in Vorhersagelabels. Schließlich erstellen wir ein Diagramm des Bildes zusammen mit seiner Vorhersage und Vorhersagewahrscheinlichkeit. Wenn eine Liste mit Klassennamen bereitgestellt wird, repliziert die Funktion die Klassennamen für jede Vorhersage im Diagramm.

  • 25:25:00 In diesem Abschnitt erklärt der Kursleiter, wie eine Funktion erstellt wird, die Bilder aufnehmen und ihre vorhergesagte Klasse mithilfe eines vortrainierten PyTorch-Modells anzeigen kann. Die Funktion kann eine Liste von Klassennamen zur Beschriftung aufnehmen und zeigt auch die Vorhersagewahrscheinlichkeit an. Der Kursleiter demonstriert dann die Verwendung dieser Funktion an benutzerdefinierten Bildern und einem vortrainierten Modell und erklärt, wie wichtig es ist, das Ergebnis für die Kompatibilität mit Matplotlib auf die CPU zu übertragen. Trotz der schlechten Leistung des Modells betont der Ausbilder die Kraft der Visualisierung von Ergebnissen.

  • 25:30:00 In diesem Abschnitt fasst der Kursleiter die wichtigsten Erkenntnisse aus dem vorherigen Abschnitt zusammen, in dem es um die Vorhersage benutzerdefinierter Daten mit PyTorch ging. Die wichtigsten Punkte, an die Sie sich erinnern sollten, sind, dass die Daten vorverarbeitet werden müssen, damit sie dem erwarteten Format des Modells entsprechen, einschließlich des richtigen Datentyps, des richtigen Geräts und der richtigen Form. PyTorch verfügt über viele integrierte Funktionen zum Umgang mit verschiedenen Datentypen, und Benutzer können bei Bedarf ihre eigenen benutzerdefinierten Datensatzklassen schreiben. Darüber hinaus hebt der Ausbilder die Bedeutung des Ausgleichs von Overfitting und Underfitting beim Training von Modellen hervor und erwähnt mehrere Ressourcen für weiteres Lernen und Üben, einschließlich Übungen und Materialien außerhalb des Lehrplans.

  • 25:35:00 In diesem Abschnitt ermutigt der Kursleiter die Lernenden, zuerst die Übungsvorlage für benutzerdefinierte PyTorch-Datensätze durchzugehen und zu versuchen, den gesamten Code selbst auszufüllen. Falls sie nicht weiterkommen, können sie auf die Beispiellösungen zurückgreifen, die vom Lehrer bereitgestellt werden. Die angebotenen Lösungen sind nur eine Möglichkeit, Dinge zu tun, und den Benutzern steht es frei, auf sie zu verweisen und sie mit ihrer Implementierung zu vergleichen. Die während des Prozesses aufgetretenen Lösungen und Fehler können auch in den auf YouTube verfügbaren Live-Komplettlösungen eingesehen werden. Der Ausbilder erinnert die Benutzer daran, dass sie viele Übungen behandelt haben und sich die zusätzlichen Übungen und Lösungen im PyTorch-Deep-Learning-Repo ansehen können. Der Kursleiter schließt mit der Erwähnung, dass auf learnpytorch.io fünf weitere Kapitel verfügbar sind, die die Lernenden erkunden können, um mehr über Transfer Learning, die Verfolgung von Pytorch-Modellexperimenten, die Replikation von Pytorch-Papier und die Bereitstellung von Pytorch-Modellen zu erfahren.
PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

Kein Blackbox-Kurs für maschinelles Lernen – Lernen ohne Bibliotheken



Kein Blackbox-Kurs für maschinelles Lernen – Lernen ohne Bibliotheken

00:00:00 - 01:00:00 In diesem YouTube-Video stellt der Kursleiter einen No-Black-Box-Kurs zum maschinellen Lernen vor, der lehrt, wie man beim maschinellen Lernen programmiert, ohne auf Bibliotheken angewiesen zu sein. Der Kurs behandelt Themen im Zusammenhang mit dem Erstellen einer Web-App, die Zeichnungen erkennt, einschließlich Datenerfassung, Merkmalsextraktion und -visualisierung sowie die Implementierung von Klassifikatoren wie „nächster Nachbar“ und „k nächster Nachbar“. Der Kursleiter betont, wie wichtig es ist, Daten beim maschinellen Lernen zu verstehen, und schlägt Ressourcen für diejenigen vor, die ihre Mathematik- und Programmiererfahrung an der High School auffrischen müssen. Das Video demonstriert den Prozess zum Erstellen einer Webseite, die als Datenersteller mit JavaScript ohne externe Bibliotheken fungiert. Der Presenter enthält auch Anweisungen zum Erstellen einer Rückgängig-Schaltfläche und eines Namenseingabefelds, zum Speichern von Zeichnungen in einem Datenobjekt und zum Speichern der Pfade auf dem Computer des Benutzers. Schließlich zeigt das Video, wie Sie einen Dataset-Generator in node.js erstellen und mit JavaScript Daten generieren, die jedem Beispiel zugeordnet sind.

01:00:00 - 02:00:00 In diesem YouTube-Video zeigt der Kursleiter den Zuschauern, wie sie einen Datensatz für maschinelles Lernen erstellen und Features extrahieren, ohne Bibliotheken zu verwenden. Sie demonstrieren, wie das Dataset in einem Ordner gespeichert wird, der zwischen Knotenskripten und Web-Apps kommunizieren und eine Datenanzeige-App erstellen kann. Der Kursleiter zeigt auch, wie gesammelte Daten mithilfe von Google-Diagrammen visualisiert werden und wie ausgewählte Elemente in Diagramm und Liste identifiziert und hervorgehoben werden. Insgesamt bietet das Video eine umfassende Anleitung für Lernende zum Erstellen von Datensätzen für maschinelles Lernen und zum Extrahieren von Funktionen nur mit JavaScript. 02:00:00 - 03:00:00 Das Video „Kein Blackbox-Kurs für maschinelles Lernen – Lernen ohne Bibliotheken“ zeigt, wie Zeichnungen basierend auf ihren Merkmalen klassifiziert werden, ohne Bibliotheken für maschinelles Lernen zu verwenden. Der Videoersteller betont, wie wichtig es ist, ein schnelles und reaktionsschnelles System zur Überprüfung von Daten zu haben, um manuelle Fehler zu vermeiden. Sie demonstrieren, wie man Funktionen zum Diagramm hinzufügt, wie man den Hintergrund ausblendet und wie man vorhergesagte Beschriftungen auf dem Bildschirm anzeigt, indem man dynamische Container mit HTML und CSS verwendet. Das Video behandelt auch Datenskalierungstechniken wie Normalisierung und Standardisierung. Schließlich zeigt das Video, wie der K-Nächste-Nachbarn-Klassifikator implementiert und die Anzahl jedes Labels innerhalb der K-Nächsten-Nachbarn gezählt wird.

03:00:00 - 03:50:00 Das YouTube-Video „No Black Box Machine Learning Course – Learn Without Libraries“ behandelt verschiedene Themen im Zusammenhang mit der K-nächsten-Nachbarn-Klassifizierung, ohne maschinelle Lernbibliotheken wie JavaScript und Python zu verwenden. Das Video erklärt, wie Sie Datensätze in Trainings- und Testsätze aufteilen, Trainings- und Testbeispiele getrennt handhaben und die Daten normalisieren. Der Kursleiter erörtert auch die Bedeutung von Entscheidungsgrenzen für das Verständnis der Funktionsweise eines Klassifikators, demonstriert, wie ein K-Nächster-Nachbar-Klassifikator (KNN) in JavaScript implementiert und ein pixelbasiertes Diagramm ohne Verwendung von Bibliotheken für maschinelles Lernen generiert wird. Schließlich endet das Video mit einem Aufruf an die Zuschauer, zusätzliche Funktionen von Python zu erkunden und über das bisher Gelernte nachzudenken.

Teil 1

  • 00:00:00 In diesem Abschnitt stellt der Referent den maschinellen Lernkurs No Black Box vor, der sich auf das Codieren konzentriert, ohne sich auf Bibliotheken zu verlassen. Der Kurs behandelt verschiedene Themen zum Erstellen einer Webanwendung, die Zeichnungen erkennt, einschließlich Datenerfassung, Merkmalsextraktion und -visualisierung sowie die Implementierung von Klassifikatoren wie „nächster Nachbar“ und „k nächster Nachbar“. Der Redner betont, wie wichtig es ist, Daten beim maschinellen Lernen zu verstehen, und bietet den Schülern eine kurze Pause, damit sie sich auf die Hausaufgaben konzentrieren können, während er gleichzeitig Ressourcen vorschlägt, um die Mathematik- und Programmiererfahrung der High School aufzufrischen. Der Kurs geht dann in Phase zwei über, in der fortgeschrittenere Methoden wie neuronale Netze behandelt werden. Ein Beispiel für den Aufbau einer Zeichnungs-App für die Datenerfassung wird auch mit Funktionen zum Rückgängigmachen und Speichern demonstriert.

  • 00:05:00 In diesem Abschnitt des Videos führt der Kursleiter durch den Prozess der Erstellung einer Webseite, die als Datenersteller für einen Datensatz verwendet wird. Sie beginnen mit der Erstellung eines neuen Ordners namens web und erstellen in diesem Ordner die erste Datei, eine Webseite namens Creator.html. Die Seite enthält einfaches HTML, einen Titelabschnitt und ein externes Stylesheet namens Styles.css. Sie fügen auch grundlegende Stile für die Seite hinzu, einschließlich der Schriftfamilie und der Hintergrundfarbe. Anschließend implementiert der Kursleiter das Sketchpad mithilfe einer externen JavaScript-Datei namens sketchpad.js und definiert den Sketchpad-Klassenkonstruktor, der das Canvas-Element enthält.

  • 00:10:00 In diesem Abschnitt richtet der Kursleiter eine Zeichenfläche mit JavaScript ein und fügt einen „onmousedown“-Ereignis-Listener hinzu, um Mausaktionen zu erkennen. Sie erhalten die Mauskoordinaten, indem sie das Rechteck des Begrenzungsbereichs der Leinwand erhalten und die linke bzw. obere Seite subtrahieren. Nach dem Runden der Koordinaten auf Ganzzahlen erstellt der Kursleiter ein Pfadarray, das die Mauskoordinaten enthält, wenn auf die Leinwand geklickt wird. Sie setzen auch "drawing" auf false und "path" auf empty. Ein weiterer Ereignis-Listener wird für "onmousemove" hinzugefügt, um dem Pfadarray weitere Punkte hinzuzufügen, wenn die Maus bewegt wird.

  • 00:15:00 In diesem Abschnitt erklärt der Referent, wie Mausereignisse implementiert werden, um mit JavaScript ohne Verwendung von Bibliotheken auf einer Leinwand zu zeichnen. Durch die Verwendung von Ereignis-Listenern für „onMouseMove“ und „onMouseUp“ verfolgt der Code Mausbewegungen und fügt die Position einem Pfad hinzu, wenn der Benutzer zeichnet. Zusätzlich wird eine neue Funktion „Get Mouse“ erstellt, um den Standort zur Leinwand hinzuzufügen. Abschließend demonstriert der Sprecher, wie man ein "Zeichnen"-Hilfsobjekt erstellt, um den Pfad auf die Leinwand zu löschen und zu zeichnen.

  • 00:20:00 In diesem Abschnitt fährt der Videolehrer damit fort, ein Zeichenprogramm ohne externe Bibliotheken zu erstellen, indem er einige Probleme mit den gezeichneten Linien angeht, wie z. B. das Aussehen von Ecken und das Ende gerader Linien. Anschließend erstellen sie eine Funktion zum Zeichnen mehrerer Pfade und integrieren sie in das Programm. Der Kursleiter stößt beim Ausführen des Programms auf einem mobilen Gerät aufgrund des Darstellungsbereichs auf einige Probleme und behebt diese, indem er ein Meta-Tag im Head-Abschnitt der HTML-Datei verwendet.

  • 00:25:00 In diesem Abschnitt konzentriert sich das Tutorial darauf, die Leinwand an kleinere Bildschirme wie die von Mobilgeräten anzupassen, indem bestimmte Befehle zum Viewport-Meta-Tag im HTML-Code hinzugefügt werden. Die Ereignis-Listener für Touch unterscheiden sich jedoch von denen für die Maus, was eine Modifikation des Skizzenblocks mit Ereignis-Listenern für Touch erforderlich macht. Um die Leinwand weiter zu verbessern, wird eine Rückgängig-Schaltfläche erstellt, aber nur, wenn Pfade zum Rückgängigmachen vorhanden sind. Die Schaltfläche ist deaktiviert, wenn die Leinwand leer ist.

  • 00:30:00 In diesem Abschnitt erklärt das Video, wie Sie das Erscheinungsbild der Schaltfläche verbessern können, indem Sie den Stil in der CSS-Datei ändern. Der Erzähler fügt einen Hover-Effekt hinzu und legt die Stile für den deaktivierten Zustand fest. Als Nächstes lernen wir, wie man ein Eingabefeld erstellt, in das Benutzer ihren Namen eingeben können, und eine Schaltfläche, um zur nächsten Zeichnung zu gelangen. Das Video erklärt auch, wie Daten aus diesen Feldern gesammelt und in einem Objekt mit drei Feldern gespeichert werden: Schüler, Sitzung und Zeichnungen. Schließlich beginnt der Erzähler mit der Implementierung der Startfunktion, mit der der Zeichenprozess initiiert wird.

  • 00:35:00 In diesem Abschnitt des Videos zeigt der Moderator, wie man eine Zeichen-App mit JavaScript implementiert, ohne Bibliotheken zu verwenden. Sie beginnen damit, einen Index für die Beschriftungen der Dinge zu definieren, die sie zeichnen möchten, z. B. ein Auto, einen Fisch, ein Haus usw. Sie fügen auch ein Feld für Anweisungen hinzu und ändern die Startschaltfläche so, dass sie nach der ersten Zeichnung auf „Weiter“ wechselt . Anschließend implementieren sie eine Funktion für die Schaltfläche "Weiter", die den Index erhöht, das nächste Label erhält und die Anweisungen aktualisiert. Sie speichern die Zeichnungen auch in einem Datenobjekt für das spezifische Etikett und fügen eine öffentliche Methode zum Zurücksetzen des Skizzenblocks hinzu. Der Präsentator testet die App und zeigt, dass das Datenobjekt die Zeichnungen sammelt.

  • 00:40:00 In diesem Abschnitt erklärt der Kursleiter, wie die von Benutzern gezeichneten Pfade lokal auf ihrem Computer gespeichert werden. Sie erstellen ein „a“-Element, wobei das href-Attribut auf „data plain text“ gesetzt ist, und sie codieren die URI-Komponente unter Verwendung der gestringten Version der Daten. Die gesammelten Daten werden als JSON-String in einer Datei mit einem eindeutigen Namen gespeichert, der aus einem Zeitstempel generiert wird. Schließlich wird die Download-Aktion ausgelöst, um die Datei herunterzuladen. Der Dozent fügt auch Anweisungen hinzu, was mit der heruntergeladenen Datei zu tun ist, und gibt an, dass dies nach der nächsten Vorlesung sinnvoller ist.

  • 00:45:00 In diesem Abschnitt zeigt der Kursleiter, wie ein potenzielles Problem mit dem Skizzenblock behoben werden kann, indem ein Ereignis-Listener zum Dokument anstelle der Leinwand hinzugefügt wird. Er bittet die Zuschauer auch, beim Testen des Systems auf verschiedenen Geräten zu helfen und Probleme zu melden oder Lösungen vorzuschlagen. Anschließend erklärt der Dozent, wie man die gesammelten Daten mit node.js in eine handlichere Form bringt und zeigt, wie man zum Projektverzeichnis navigiert und einen neuen Ordner zum Speichern der Daten erstellt. Schließlich erstellt er einen "Roh"-Ordner, in den er alle Daten aus fast 500 eingereichten Studenten einfügt, von denen jede acht verschiedene Zeichnungen enthält, und erklärt, wie er diese Dateien verarbeiten wird, um einen Datensatz zu erstellen, in dem jede Probe eine Zeichnung ist.

  • 00:50:00 +Alt+M und die Json-Datei wird schön formatiert. In diesem Abschnitt erklärt der Kursleiter, wie er einen Datensatzgenerator in nodejs erstellt, um die Beispiele zu verarbeiten und sie mithilfe von zwei separaten Ordnern zu visualisieren: einen für Json-Darstellungen und einen für Bilder. Das Skript liest Dateinamen aus dem Rohdatenverzeichnis, extrahiert Inhalte daraus und speichert Informationen zu jeder Probe, wie z. B. ihre ID, Label, Schülername und Schüler-ID, Sitzung und Zeichnung. Abschließend zeigt der Abschnitt kurz, wie der Code ausgeführt und getestet wird, was zur Erstellung einer Beispiel-JSON-Datei im angegebenen Verzeichnis führt.

  • 00:55:00 In diesem Abschnitt erläutert der Referent, wie mit JavaScript verknüpfte Daten mit jedem Sample generiert werden. Dies beinhaltet das Schreiben von Dateien in ein Json-Verzeichnis und das Stringen der Zeichnung jedes spezifischen Etiketts. Der Referent demonstriert dann, wie man mit Hilfe einer Leinwand und der Funktion „Pfade zeichnen“ aus einem gemeinsamen Verzeichnis eine Bilddarstellung jeder Zeichnung generiert. Dazu exportiert der Referent das Objekt „draw“ aus der Datei „draw.js“, das im Datensatzgenerator verwendet werden soll, und installiert die Canvas-Bibliothek mithilfe des Node-Paketmanagers.


Teil 2

  • 01:00:00 In diesem Abschnitt zeigt der Kursleiter, wie man eine Leinwand erstellt und damit Pfade auf der Leinwand zeichnet und sie dann als Bild speichert. Sie räumen auch die Leinwand, bevor sie neue Pfade zeichnen. Nach dem Generieren der Bilddateien behebt der Kursleiter ein Problem in der Zeichen-App, das dadurch verursacht wird, dass das Modul nicht in Draw JS definiert ist. Sie verwenden eine Struktur, die während des gesamten Kurses verwendet wird, indem sie Konstanten in einer anderen Datei trennen und erfordern. Der Kursleiter fügt eine Fortschrittsanzeige in einer neuen Datei namens utils hinzu, indem er das utils-Objekt erstellt und die Funktion namens print progress hinzufügt. Sie verwenden den Prozess STD out, um die Standardausgabe zu erhalten, berechnen den Prozentsatz mit der Funktion zum Formatieren eines Prozentsatzes und schreiben ihn in die Standardausgabe, um die Fortschrittsanzeige anzuzeigen.

  • 01:05:00 In diesem Abschnitt erklärt der Videoersteller, wie der generierte Datensatz so gespeichert wird, dass der Browser ihn lesen kann. Er erstellt einen Ordner mit dem Namen „JS_objects“, der Dateien enthält, die zwischen den Knotenskripten und den Web-Apps kommunizieren können. Es wird eine „Beispiel“-JavaScript-Datei erstellt, die ein JavaScript-Objekt im JS_objects-Ordner initialisiert. Der Videoersteller erwähnt auch, dass er eine Viewer-App für den Datensatz erstellt und eine HTML-Datei namens „viewer.html“ mit grundlegendem HTML-Code erstellt. Der Head-Abschnitt der Datei enthält ein Meta-Tag zur Unterstützung von UTF-Zeichen und einen Titel für die Seite. Der Body-Abschnitt enthält ein H1-Tag mit dem Titel „Data Viewer“ und ein div mit der ID „Container“, um den Datensatz zu speichern. Die JavaScript-Datei „Beispiele“ ist in der HTML-Datei enthalten.

  • 01:10:00 In diesem Abschnitt arbeitet der Kursleiter daran, eine Tabelle mit Proben zu erstellen, die nach Schüler-ID gruppiert sind. Dazu implementieren sie eine „Gruppieren nach“-Funktion in der Datei utils.js, die ein Array nach einem bestimmten Schlüssel gruppiert. Dann melden sie die Gruppen an der Konsole an, um zu überprüfen, ob sie funktioniert. Als nächstes erstellen sie eine Funktion namens „Zeile erstellen“ in einer separaten display.js-Datei, die einen Container, einen Schülernamen und Proben als Parameter übernimmt und eine Zeile mit dem Namen links und Proben rechts erstellt. Sie erstellen eine Schleife, um jede Studenten-ID zu durchlaufen, rufen die Funktion "Zeile erstellen" auf und übergeben die erforderlichen Parameter, um die Daten in einem Tabellenformat anzuzeigen.

  • 01:15:00 In diesem Abschnitt zeigt der Kursleiter, wie man dynamisch eine Reihe von Bildern mit Beschriftungen erstellt und sie richtig mit CSS ausrichtet. Sie beginnen damit, eine Reihe von Bildbeispielen zu durchlaufen, ein Bildelement zu erstellen und die Quell- und Stilattribute zuzuweisen. Die Bilder werden dann an eine Zeile angehängt, während ein Label-Div erstellt und an einen Beispielcontainer angehängt wird. Der Beispielcontainer wird dann mit einem div umschlossen, das eine ID und eine Klasse erhält. Der Kursleiter verfeinert dann das CSS, um die Beschriftungen und Bilder zu zentrieren und längeren Namen Ellipsen hinzuzufügen. Schließlich fügen sie den Beispielzeichnungen einen weißen Hintergrund hinzu, indem sie ein div erstellen und es nach der Beschriftung anhängen.

  • 01:20:00 In diesem Abschnitt modifiziert der Videoersteller die Anzeige der gesammelten Bildbeispiele in der Web-App. Die Änderung beinhaltet das Erstellen eines Beispielcontainers mit weißem Hintergrund, einem zentriert ausgerichteten Text, einer abgerundeten Ecke und einem Rand von einem Pixel. Die Miniaturansicht ist auf 100 eingestellt, und die Zeilenbeschriftung hat eine Eigenschaft, die 20 Prozent des Platzes einnimmt, wobei die verbleibenden acht Samples jeweils zehn Prozent des Platzes einnehmen. Die resultierende Anzeigestruktur ist ordentlich, aber einige Bilder passen nicht perfekt, was keine große Sache ist, da es für Desktop-Anwendungen gedacht ist. Darüber hinaus fügt der Ersteller einigen Zeichnungen, die von gekennzeichneten Benutzern mit ihren IDs erstellt wurden, einen Unschärfefilter hinzu. Einige der gesammelten Zeichnungen sind beeindruckend, während andere Fehlinterpretationen enthalten, die die Daten schwieriger machen.

  • 01:25:00 In diesem Abschnitt wirft der YouTuber einen Blick auf einige Zeichnungen im Datensatz und kommentiert deren Qualität, wobei er feststellt, dass einige sehr detailliert sind und die Erstellung lange gedauert haben muss. Sie erwähnen auch, dass sich ihr Datensatz vom Quick Draw-Datensatz unterscheidet, da sie eine Rückgängig-Schaltfläche und keine Zeitbegrenzung haben, was bedeutet, dass ihre Zeichnungen im Durchschnitt von besserer Qualität sein sollten. Abschließend machen sie eine beiläufige Bemerkung über die Organisation und Gestaltung der Seite.

  • 01:30:00 In diesem Abschnitt erklärt der Kursleiter, wie Merkmale aus Beispielen extrahiert werden, ohne Bibliotheken zu verwenden. Die Funktionen zum Extrahieren der Pfadanzahl und der Punktanzahl sind in einer Datei namens features.js implementiert und einem Objekt namens features hinzugefügt. Dann werden in der Datei feature extractor.js die Samples gelesen und die Features extrahiert, indem alle Samples in einer Schleife durchlaufen werden und die Anzahl der Pfade und Punkte für jedes von ihnen abgerufen wird. Diese Merkmalswerte werden dann zu einem Array kombiniert und in eine neue Datei geschrieben. Schließlich werden die Funktionsnamen und Beispiele in einer weiteren Datei mit dem Namen „features.json“ kombiniert. Beim Ausführen des Feature Extractor-Skripts steht im Protokoll „extracting features“ und am Ende „done“. Die resultierenden Merkmale im Datensatzverzeichnis können dann untersucht werden.

  • 01:35:00 In diesem Abschnitt erklärt der Videoersteller, wie ein JavaScript-Objekt verwendet wird, um zusätzliche Daten zu speichern, die noch nicht in einer Feature-Datei enthalten sind. Das Objekt kann in einer separaten JavaScript-Datei gespeichert und zum Extrahieren aller für eine Webanwendung erforderlichen Daten verwendet werden. Der Ersteller demonstriert auch, wie die Daten mithilfe von Google-Diagrammen visualisiert werden, wobei Optionen wie Breite, Höhe, Achsentitel und das Kerndiagrammpaket in einem Objekt definiert werden können. Es wird eine Datentabelle mit zwei Spalten für Merkmalswerte und ihre entsprechenden Namen erstellt.

  • 01:40:00 In diesem Abschnitt zeigt das Video, wie Sie mit Google Visualization ein Streudiagramm erstellen, mit dem Benutzer verschiedene Merkmale der Daten genauer untersuchen können, indem sie Explorer-Aktionen zum Vergrößern und Verkleinern verwenden. Das Video zeigt auch, wie Sie unterschiedliche Farben für jede Klasse verwenden und Transparenz zur besseren Visualisierung der Dichte in verschiedenen Teilen mithilfe einer anderen Version der Google-Diagrammbibliothek namens Materialdiagramme implementieren.

  • 01:45:00 In diesem Abschnitt zeigt der Videoersteller, wie er mithilfe von Google-Diagrammen ein Streudiagramm erstellt und anschließend ein neues Diagramm mit seinem eigenen JavaScript-Code erstellt. Der Ersteller vereinfacht die Optionen für das Diagramm und ändert das Farbschema, um stattdessen Emojis zu verwenden, was eine einfachere Erkennung der Datenpunkte ermöglicht, ohne dass Beschriftungen oder Legenden erforderlich sind. Die Transparenz des Diagramms wird ebenfalls angepasst, um eine bessere Sichtbarkeit der dicht gezeichneten Daten zu ermöglichen.

  • 01:50:00 In diesem Abschnitt fügt der Kursleiter dem Diagramm eine Callback-Funktion hinzu, um jedes ausgewählte Element in der folgenden Tabelle zu identifizieren. Die neue Funktion heißt „Handle-Klick“, die dem ausgewählten Element eine „Hervorhebung“-Klasse hinzufügt und mithilfe von „Scroll into View“ und „Block Center“ sicherstellt, dass es automatisch in die Mitte der Seite gescrollt wird. Der Kursleiter ändert dann das Seitenlayout so, dass sich das Diagramm auf der rechten Seite der Seite und die anderen Inhalte auf der linken Seite befinden. Das Diagramm ist auch in seiner Position fixiert, sodass es sich nicht bewegt, wenn der Benutzer scrollt.

  • 01:55:00 In diesem Abschnitt des Videos zeigt der Moderator, wie Sie Elemente aus dem Diagramm und der Liste auswählen und auch abwählen. Sie geben einen Parameter an, um festzulegen, ob ein Bildlauf erfolgen soll, und fügen Code hinzu, um den Fehler zu behandeln, der auftritt, wenn versucht wird, nichts auszuwählen. Darüber hinaus fügt der Präsentator die Möglichkeit hinzu, ein Element durch eine Klasse hervorzuheben und die Klasse zu entfernen, wenn sie bereits hervorgehoben ist. Schließlich testen sie die Funktionalität des Diagramms und passen die Diagrammgröße an.


Teil 3

  • 02:00:00 In diesem Abschnitt demonstriert der Sprecher die Verwendung eines Skizzenblocks als Eingabe zum Zeichnen von etwas, das klassifiziert werden soll. Sie bereiten einen Container dafür vor, fügen ihm Stile hinzu und fixieren seine Position in einem bestimmten Abstand vom rechten und oberen Bildschirmrand. Sie geben ihm auch einen Rand für eine klare Sichtbarkeit und eine Schaltfläche zum Rückgängigmachen in der Mitte. Sie fügen dann ein Bedienfeld und eine Schaltfläche hinzu, um die Eingabe sichtbar oder nicht sichtbar umzuschalten, was beim Testen erfolgreich funktioniert. Der Referent betont, wie wichtig ein schnelles und reaktionsschnelles System bei der Dateninspektion ist, um manuelle Fehler zu vermeiden, die zu Fehlern führen können.

  • 02:05:00 In diesem Abschnitt zeigt der Videolehrer, wie Sie dem Diagramm ein Bedienfeld hinzufügen und den Hintergrund ausblenden, wenn die Eingabe vorhanden ist. Sie demonstrieren eine Lösung zum Ausblenden des Hintergrunds im Viewer-HTML, indem sie den Umriss der Skizzenblock-Leinwand transparent machen. Sie zeigen auch, wie Features sofort auf dem Diagramm angezeigt werden, wenn etwas auf dem Skizzenblock gezeichnet wird, indem eine Update-Callback-Funktion hinzugefügt wird, die Features auf die gleiche Weise wie der Feature Extractor extrahiert. Der Kursleiter stößt auf ein Problem mit widersprüchlichen Objekten, die als Features bezeichnet werden, löst es jedoch, indem er sie überall in Feature-Funktionen umbenennt.

  • 02:10:00 In diesem Abschnitt demonstriert der Sprecher einen dynamischen Punkt, der dem Diagramm hinzugefügt werden kann und sich beim Zeichnen bewegt. Dies wird erreicht, indem ein Attribut auf einen Wert gesetzt und neu gezeichnet wird. Der dynamische Punkt wird der Diagrammklasse hinzugefügt und gezeichnet, bevor die Achsen angezeigt werden. Durch Ziehen bewegt sich der Punkt in verschiedene Bereiche, und wenn er mit einem transparenten weißen Punkt auf schwarzem Hintergrund gezeichnet wird, ist er viel besser sichtbar. Der Wert muss groß sein, da das Diagramm vergrößert werden kann und der Punkt sichtbar bleibt, ohne über die Kanten zu laufen.

  • 02:15:00 In diesem Abschnitt demonstriert der Kursleiter, wie eine Aktualisierungsmethode in sketchpad.js ausgelöst wird, die funktioniert, indem die dynamische Eingabe ausgeblendet und die Daten angezeigt werden, wenn die Umschalteingabe gedrückt wird. Bei der Trigger-Aktualisierungsmethode wendet der Kursleiter die Funktionen zum Abrufen von Breiten- und Höhenmerkmalen in Gemeinsame Merkmalsfunktionen an, um die Breite und Höhe der Zeichnung zu berechnen, die zum Extrahieren neuer Merkmale im Knotenmerkmalsextrahierer verwendet werden. Der Kursleiter schlägt vor, den HTML-Code so umzustrukturieren, dass dieselbe Ressource zum Extrahieren und Anzeigen von Daten verwendet wird.

  • 02:20:00 In diesem Abschnitt demonstriert der Videoersteller, wie unnötiger Code entfernt und durch neue Feature-Funktionen ersetzt wird, was zu einem allgemeineren und mehrdimensionalen Punkterstellungsprozess führt. Nach dem erneuten Generieren der Features und dem Aktualisieren der Feature-Namen werden einige problematische Beispielpunkte beobachtet, was ein häufiges Problem beim Arbeiten mit Daten ist. Der Ersteller weist darauf hin, dass in den Daten mit Ausreißern und Inkonsistenzen zu rechnen ist, und bittet die Zuschauer, bei der Ermittlung der Ursache des Problems zu helfen.

  • 02:25:00 In diesem Abschnitt erklärt der Kursleiter, wie eine Zeichnung basierend auf ihren Merkmalen klassifiziert wird, ohne maschinelle Lernbibliotheken zu verwenden. Sie extrahieren Features aus der Eingabe und sehen sich die Punkte in der Nähe an, um die Eingabe zu klassifizieren. Um den nächstgelegenen Punkt zu finden, kopiert der Kursleiter die Get Nearest-Funktion aus dem math.js-Diagramm und fügt sie in seinen Code ein. Anschließend rufen sie die Funktion auf, um die Bezeichnung für die Zeichnung zu identifizieren und das Ergebnis zu protokollieren.

  • 02:30:00 In diesem Abschnitt fügt der Videoersteller die Funktionalität hinzu, um das vorhergesagte Label auf dem Bildschirm anzuzeigen, indem er dynamische Container mit HTML und CSS verwendet. Das vorhergesagte Etikett wird in einem weißen Behälter mit einem verketteten Text angezeigt, der anzeigt, ob das Objekt ein Auto ist oder nicht. Der Ersteller experimentiert mit dem Zeichnen verschiedener Objekte wie Uhren und Stiften, um die Vorhersagefähigkeiten des Programms zu testen. Der Videoersteller aktualisiert dann das Diagramm, indem er dynamische Punkte mit Beschriftungen und Bildern verwendet, und zeichnet Linien, die die nächstgelegenen Proben verbinden.

  • 02:35:00 In diesem Abschnitt erörtert der Referent, wie wichtig es ist, Daten in Diagrammen bei der Arbeit an Machine-Learning-Projekten nicht zu quetschen oder zu dehnen. Sie zeigen, wie sich das Seitenverhältnis eines Diagramms auf die Interpretation von Daten auswirken kann, was zu Verwirrung und Fehlern führen kann. Um dieses Problem zu lösen, berechnet der Sprecher ein Delta für die maximalen x- und y-Werte und passt das Diagramm entsprechend an. Obwohl dies Leerraum schafft, ermöglicht es eine ordnungsgemäße Visualisierung der Daten und genaue Ergebnisse des maschinellen Lernens.

  • 02:40:00 In diesem Abschnitt des Transkripts betont der Videoersteller die Bedeutung der Datenskalierung beim maschinellen Lernen, um sicherzustellen, dass alle Merkmale bei der Klassifizierung die gleiche Bedeutung haben. Der Ersteller demonstriert, wie die Daten während der Feature-Extraktion gequetscht und gestreckt werden können, was zu einer ungleichen Behandlung bestimmter Features führt. Um die Wettbewerbsbedingungen auszugleichen, führt der Ersteller die Normalisierung ein, eine gängige Technik zum Neuzuordnen von Merkmalswerten auf einen Bereich zwischen 0 und 1. Das Video führt Sie durch die Implementierung einer neuen Funktion namens „Punkte normalisieren“ im Abschnitt „Dienstprogramme“, um dies zu erreichen Neuzuordnung.

  • 02:45:00 In diesem Abschnitt zeigt das Video-Tutorial, wie die Daten normalisiert werden, indem die Werte so geändert werden, dass sie zwischen 0 und 1 liegen. Die Funktion wird so initialisiert, dass sie allgemein genug ist, und die Mindest- und Höchstwerte für jedes Merkmal werden berechnet. Die Punkte werden so modifiziert, dass sie zwischen 0 und 1 liegen, indem der Mindestwert subtrahiert und durch die Differenz dividiert wird. Die inverse Lerp-Funktion wird verwendet, um den gegebenen Wert in einen Prozentsatz umzuwandeln, um die aus der Zeichnung extrahierten Merkmale zu normalisieren. Die Min-Max-Werte werden von der Funktion zurückgegeben und in eine der JavaScript-Objektdateien geschrieben, um mit der Schnittstelle zu kommunizieren. Schließlich werden die Daten generiert und die Min-Max-Werte in die JavaScript-Objektdateien aufgenommen.

  • 02:50:00 In diesem Abschnitt erklärt der Moderator, wie Punkte normalisiert werden, bevor versucht wird, sie mit der Utils-Funktion Punkte normalisieren zu klassifizieren. Dazu werden die Feature-Rohdaten geladen und als Eingabe an die Funktion übergeben. Zusätzlich kann ein Min-Max-Wert übergeben werden, um die Normalisierung zu unterstützen, ohne sie berechnen zu müssen. Es wird auch gezeigt, wie empfindlich die Normalisierung auf Ausreißerpunkte reagiert und wie man damit umgeht, z. B. indem sie automatisch erkannt und entfernt werden oder die Standardisierung als andere Datenskalierung verwendet wird.

  • 02:55:00 In diesem Abschnitt erörtert der Kursleiter die Technik der Standardisierung, bei der der Mittelwert und die Standardabweichung jedes Merkmals berechnet und durch Subtraktion des Mittelwerts und Division durch die Standardabweichung neu zugeordnet werden. Diese Technik ist weniger empfindlich gegenüber Ausreißern und kann in bestimmten Fällen besser funktionieren. Der Ausbilder führt auch den K-Nächsten-Nachbarn-Klassifikator ein, bei dem die Klasse basierend auf der Mehrheit der K-Nächsten-Nachbarn bestimmt wird. Der Code wird aktualisiert, um die Suche nach K nächsten Nachbarn zu ermöglichen, und der Ausbilder demonstriert, wie die Anzahl jedes Etiketts innerhalb der K nächsten Nachbarn gezählt wird.


Teil 4

  • 03:00:00 In diesem Abschnitt erklärt der Kursleiter, wie der Großteil eines Satzes von Mustern anhand ihrer Etiketten ermittelt wird. Dies umfasst das Zählen der Vorkommen jedes Etiketts in den Proben und das Festlegen des Mehrheitsetiketts als dasjenige mit der höchsten Anzahl. Der Kursleiter nimmt Aktualisierungen am Code vor, um alle nächstgelegenen Proben zurückzugeben und Linien zu ihnen in das Diagramm zu ziehen, anstatt nur die nächstgelegene. Anschließend demonstrieren sie die Funktionsweise des Klassifikators für verschiedene Datensätze und ermutigen die Zuschauer, ihre eigenen Implementierungen anderer Varianten der Klassifikatoren für den nächsten Nachbarn zu teilen. Schließlich betont der Ausbilder die Notwendigkeit, die Daten in Trainings- und Testsätze aufzuteilen, um die Leistung des Klassifikators objektiv zu bewerten.

  • 03:05:00 In diesem Abschnitt zeigt das Video, wie man einen Datensatz in Trainings- und Testsätze aufteilt, sie in Dateien schreibt und Konstanten für diese Aufteilungen im Code mit JavaScript definiert. Der Trainingssatz ist auf 50 % der Anzahl der Proben festgelegt, und das Video warnt vor dem Fehler beim Testen der Trainingsdaten. Zum Testen durchläuft der Code alle Testbeispiele und speichert den Wert des Labels in einem Attribut namens Truth, während er zu Testzwecken vorgibt, das Label nicht zu kennen.

  • 03:10:00 In diesem Abschnitt geht das Video darauf ein, wie die Trainings- und Testbeispiele separat gehandhabt werden und wie die Daten richtig normalisiert werden. Der Sprecher erklärt, dass es wichtig ist, die Daten nur mit dem Trainingssatz zu normalisieren, da wir keine Ahnung haben, was der Testsatz sein wird. Sie führen auch durch, wie man richtig klassifiziert, indem man nur Informationen aus den Trainingsdaten verwendet, und zeigen, wie man mit unbekannten Datenpunkten umgeht, indem man die Klassifizierungsfunktion verwendet.

  • 03:15:00 In diesem Abschnitt fügt der Videoersteller einem Testlabel ein korrektes Attribut hinzu und vergleicht dieses Label mit dem Wahrheitswert von früher, um die Genauigkeit zu bestimmen. Außerdem wird ein Untertitel hinzugefügt, um zu verdeutlichen, wo der Testsatz beginnt. Der Ersteller fügt dann ein Statistikfeld hinzu, um die Genauigkeit des K-Nächsten-Nachbarn-Klassifikators zu berechnen und anzuzeigen, der auf 10 nächste Nachbarn eingestellt ist, was zu einer Genauigkeit von 39,62 % führt. Durch Ändern des Parameters auf einen nächsten Nachbarn ist die Genauigkeit tatsächlich viel schlechter, was zeigt, dass die Berücksichtigung mehrerer Nachbarn eine gute Idee war.

  • 03:20:00 In diesem Abschnitt überarbeitet der Kursleiter den Code und erörtert die Bedeutung von Entscheidungsgrenzen für das Verständnis der Funktionsweise eines Klassifikators. Sie erstellen eine neue Datei mit dem Namen "Run Evaluation" und laden die erforderlichen Konstanten und Dienstprogramme. Der Kursleiter erklärt, wie man einen Klassifikator erstellt und wie man Trainings- und Testbeispiele erhält, um die Genauigkeit eines Klassifikators zu berechnen. Sie führen auch Entscheidungsgrenzen ein, die wertvolle Informationen darüber liefern, wie ein Klassifikator die Klassifizierung eines Datenpunkts bestimmt. Der Kursleiter gibt an, dass Entscheidungsgrenzen nützlicher sind, als einfach die verschiedenen Merkmale eines Datenpunkts zu zählen.

  • 03:25:00 In diesem Abschnitt erläutert der Referent, wie ein K-Nearest Neighbor (KNN)-Klassifikator in JavaScript implementiert wird. Der Code beginnt mit der Vorhersage von Beschriftungen für jeden Testprobenpunkt unter Verwendung der KNN-Methode und der Berechnung der Genauigkeit durch Überprüfung der Anzahl der korrekten Vorhersagen. Die Datei KN.js wird erstellt, um die Klasse zu definieren, die Trainingsgebiete und K verwendet, um einen bestimmten Punkt zu speichern und vorherzusagen. Der Klassencode für die Klassifizierung wird aus dem Viewer-HTML in KN.js kopiert und an die neue Klasse angepasst. Das Laufauswertungsskript wird aktualisiert, um den KNN-Klassifikator anstelle der alten Klassifizierungsmethode zu verwenden. Durch Refactoring auf diese Weise wird der Code überschaubarer und dumme Fehler können vermieden werden.

  • 03:30:00 In diesem Abschnitt demonstriert der Kursleiter, wie ein pixelbasiertes Diagramm ohne Verwendung von Bibliotheken für maschinelles Lernen generiert wird, indem Pixelwerte normalisiert und basierend auf vorhergesagten Werten farbcodiert werden. Das Diagramm wird dann als PNG-Bild gespeichert und als Hintergrund eines Diagramms festgelegt. Der Kursleiter zeigt, wie diese neue Funktion in der Datei „chart.js“ implementiert wird, indem die obere linke Koordinate gemäß den Daten genommen wird, der Pixelwert von den Datengrenzen zu den Pixelgrenzen abgerufen und gemäß der verwendeten Skalierung dividiert wird Die Verwandlung.

  • 03:35:00 In diesem Abschnitt des Videos diskutiert der Moderator das im vorherigen Abschnitt erzeugte Bild und kommentiert seine geringe Auflösung und seinen Glättungseffekt. Sie führen dann ein Bild mit höherer Auflösung ein, für das keine Daten mehr angezeigt werden müssen. Sie erklären, dass die farbigen Regionen uns etwas über die verschiedenen Labels sagen und wie interessant es ist, die unterschiedlichen Regionen zu beobachten. Dann fordern sie die Zuschauer auf, die Genauigkeit für alle möglichen Werte von K zu berechnen und ein Liniendiagramm zu erstellen, um den besten Wert zu bestimmen, und auch ein hochauflösendes Entscheidungsgrenzdiagramm für den besten Wert zu erstellen.

  • 03:40:00 In diesem Abschnitt erklärt der YouTuber, wie man Daten für Python aufbereitet, indem man eine Funktion schreibt, um Beispieldaten mit JavaScript in das CSV-Format zu konvertieren. Sie erstellen eine Funktion namens toCSV, die Beispieldaten mit Headern und Funktionsnamen in das CSV-Format konvertiert, das häufig in Python verwendet wird. Sie geben die CSV-Datei mit Funktionsnamen und Bezeichnungen für Trainings- und Testdaten aus und fahren dann mit der Python-Implementierung von K Nearest Neighbour unter Verwendung von Bibliotheken fort. Sie öffnen die Trainings-CSV-Datei, lesen die Zeilen und parsen die Daten als ein Array von Zeilen, die als Zeichenfolge mit dem Zeilenumbruchzeichen dargestellt werden.

  • 03:45:00 In diesem Abschnitt erklärt der Kursleiter, wie die Daten für die Klassifizierung der nächsten Nachbarn von K ohne die Verwendung von Bibliotheken vorbereitet werden. Die Daten werden aus einer CSV-Datei gelesen und in zwei leeren Arrays in Python gespeichert – X für Feature-Werte und Y für Labels. Der Kursleiter geht durch eine Schleife, um die Arrays zu füllen, die Merkmalswerte in Gleitkommazahlen umzuwandeln und die Beschriftungen Zahlen zuzuordnen. Die Neuzuordnung erfolgt mithilfe eines Python-Wörterbuchs. Die Daten werden dann an ein KNN-Klassifikatorobjekt mit Parametern angepasst, um die Webanwendung zu emulieren, darunter 250 Nachbarn, Brute-Force-Algorithmus und einheitliche Gewichte. Der Kursleiter schließt mit der Hervorhebung der Bedeutung der Einrückung in Python und dem Extrahieren der Lesemerkmalsdaten aus einer Datei als Funktion.

  • 03:50:00 In diesem Abschnitt demonstriert der Referent, wie Daten an das Modell übergeben und mit der Score-Funktion auf Genauigkeit überprüft werden. Sie ermutigen die Zuschauer auch, zusätzliche Funktionen von Python zu erkunden, z. B. die Installation von matplotlib, um Funktionswerte und Entscheidungsgrenzen zu visualisieren. Das Video endet mit einem Aufruf an die Zuschauer, über das bisher Gelernte nachzudenken und sich auf die nächste Phase des Kurses vorzubereiten.

No Black Box Machine Learning Course – Learn Without Libraries
No Black Box Machine Learning Course – Learn Without Libraries
  • 2023.04.17
  • www.youtube.com
In this No Black Box Machine Learning Course in JavaScript, you will gain a deep understanding of machine learning systems by coding without relying on libra...
 

MIT 6.034 „Künstliche Intelligenz“. Herbst 2010. Vorlesung 1. Einführung und Geltungsbereich



1. Einführung und Geltungsbereich

Dieses Video ist eine Einführung in den MIT 6.034-Kurs „Künstliche Intelligenz“. Der Professor erklärt die Definition von künstlicher Intelligenz und ihre Bedeutung und geht anschließend auf die Denkmodelle und Repräsentationen ein, die für das Verständnis des Themas wichtig sind. Abschließend bietet das Video einen kurzen Überblick über den Kurs, einschließlich der Berechnung der Note und des Ablaufs von Quiz und Finale.

  • 00:00:00 In diesem Video diskutiert ein Professor die Definition von künstlicher Intelligenz und ihre Bedeutung. Er sagt weiter, dass jeder, der den Kurs macht, schlauer wird. Der Professor diskutiert auch Denkmodelle und wie wichtig sie sind, um das Thema gut zu verstehen. Abschließend spricht er über die Bedeutung von Repräsentationen, um gute Modelle zu erstellen.

  • 00:05:00 In diesem Video erklärt der Professor, wie Gyroskope funktionieren und wie man ein Problem graphisch darstellt. Anschließend erklärt er, wie man das Farmer-Fuchsgans- und Getreideproblem löst, ein Beispiel, das vielen Menschen vielleicht aus der Kindheit bekannt ist.

  • 00:10:00 Das Video stellt das Konzept der künstlichen Intelligenz und ihrer verschiedenen Komponenten vor, einschließlich von künstlicher Intelligenz generierter Tests. Das Video geht dann auf das Rumpelstilzchen-Prinzip ein, das besagt, dass sobald Sie etwas benennen können, Sie Macht darüber bekommen können.

  • 00:15:00 Dieses Video stellt das Konzept einfacher Ideen vor, die leistungsstark sind und einfach oder komplex sein können. Das Video geht dann weiter, um die Definition und Beispiele einfacher Ideen zu diskutieren. Der Hauptpunkt des Videos ist, dass einfache Ideen wichtig sind, um intelligentere Programme zu erstellen, und dass Wissenschaftler und Ingenieure unterschiedliche Motivationen haben, sie zu studieren.

  • 00:20:00 Dieses Video diskutiert die Geschichte der künstlichen Intelligenz, beginnend mit der Arbeit von Ada Lovelace vor über einem Jahrhundert. Die moderne Ära der KI wurde mit dem von Marvin Minsky im Jahr 1960 verfassten Aufsatz eingeläutet. An einem Tag wird die Diskussion der künstlichen Intelligenz in den Kurs einbezogen.

  • 00:25:00 Das „Bulldozer-Zeitalter“ bezieht sich auf das Zeitalter, in dem die Menschen zu erkennen begannen, dass sie Zugang zu unbegrenzter Rechenleistung hatten, und anfingen, regelbasierte Expertensysteme zu entwickeln.

  • 00:30:00 Das Video diskutiert die Geschichte der menschlichen Evolution und die High-School-Idee, dass sich Menschen durch allmähliche und kontinuierliche Verbesserung entwickelt haben. Es wird weiter diskutiert, wie die zufälligen Veränderungen, die zur menschlichen Evolution geführt haben, zufällige Evolutionsprodukte waren, und es wird darüber spekuliert, was diese Veränderungen sein könnten.

  • 00:35:00 Dieses Video bietet eine kurze Einführung in Noam Chomskys Ideen zur Entwicklung der menschlichen Intelligenz. Die wichtigsten Punkte sind, dass Sprache im Zentrum der menschlichen Intelligenz steht und dass der Hauptzweck des Kurses darin besteht, den Schülern zu helfen, Fähigkeiten in diesem Bereich zu entwickeln. Das Video erwähnt auch die Bedeutung von Rezitationen und Tutorials, die Schlüsselaspekte des Kurses sind.

  • 00:40:00 Dieses Video gibt einen kurzen Überblick über den MIT-Kurs, einschließlich seines Zusammenhangs zwischen Vorlesungsbesuch und Noten. Das Video bietet dann eine Zusammenfassung darüber, wie der Kurs die Note eines Schülers berechnet, einschließlich der Berücksichtigung der Leistung des Schülers bei Tests und im Finale. Schließlich warnt das Video die Studenten davor, alle Abschlussprüfungen zu absolvieren, da dies zu viel Druck und weniger Möglichkeiten zur Verbesserung geben würde.

  • 00:45:00 Das Video stellt das Quiz und das Finale vor und erklärt, wie das Quiz funktioniert und das Format der Abschlussprüfung. Das Video erklärt auch, wie die Schüler den Lehrer kontaktieren und Tutorien vereinbaren können.
1. Introduction and Scope
1. Introduction and Scope
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonIn this lecture, Prof. Winston in...
 

Vorlesung 2. Argumentation: Zielbäume und Problemlösung



2. Argumentation: Zielbäume und Problemlösung

Dieses Video behandelt Argumentation, Zielbäume und Problemlösung. Es stellt eine Technik namens "Problemreduktion" vor und erklärt, wie sie zur Lösung von Rechenproblemen verwendet werden kann. Außerdem wird erläutert, wie heuristische Transformationen zur Lösung von Problemen verwendet werden und wie Wissen zur Lösung von Problemen in komplexen Domänen verwendet werden kann.

  • 00:00:00 Das Video führt in die Problemreduktion ein, eine gängige Problemlösungstechnik, die von Schülern in der Infinitesimalrechnung verwendet wird. Es diskutiert die pädagogische Philosophie hinter Problemreduktion und bietet eine Liste von Beispielen für Problemreduktion.

  • 00:05:00 Der Referent erklärt, wie Problemlösung funktioniert und wie verschiedene Transformationen zur Lösung eines Problems beitragen können. Sie behandeln vier sichere Transformationen, die zur Lösung eines Problems notwendig sind. Der erste Schritt besteht darin, alle sicheren Transformationen anzuwenden und dann in der Tabelle nachzusehen, ob das Problem gelöst wurde. Ist das Problem gelöst, meldet der Referent Erfolg.

  • 00:10:00 Das Video diskutiert das Konzept von Zielbäumen und Problemlösung und stellt die Idee heuristischer Transformationen vor. Diese Transformationen sind zwar nicht immer erfolgreich, können aber in bestimmten Situationen nützlich sein.

  • 00:15:00 Das Video diskutiert verschiedene heuristische Transformationen, die zur Lösung von Problemen verwendet werden können. Eine dieser Transformationen ist eine Familie von Transformationen, von denen ich Ihnen nur eine zeigen werde. Diese Transformation geht so: Wenn du das Integral einer Funktion des Tangens und X hast, kannst du das umschreiben als das Integral einer Funktion von Y über 1 plus y zum Quadrat dy. Diese Transformation von einer trigonometrischen Form in eine polynomische Form beseitigt all den trigonometrischen Müll, mit dem wir uns nicht befassen wollen. Es gibt auch ein C, das wir brauchen, und das wird Ihre richtige reflexartige Reaktion sein. Sie sehen etwas in der Form 1 minus x zum Quadrat, und was tun Sie, wenn Sie das sehen? Nun, das könntest du tun. Du kannst nichts tun, wenn Kristen etwas hat, was sie vorschlagen kann. Sie sagt, dass aufgrund dessen, woher unser Ungar ist, ich unsere junge Wendung drehe, es nahelegt, dass wir die Transformation vornehmen, die X-Personen-Zeichen beinhaltet. Das bedeutet, dass sich Scylla eigentlich nicht mehr daran erinnern muss, weil sie in Zukunft nie etwas persönlich in ihr Leben integrieren muss. Sie kann das Programm einfach simulieren. Diese gehen von der Polynomform zurück in eine trigonometrische Form, also hast du drei

  • 00:20:00 Das Video behandelt Argumentation, Zielbäume und Problemlösung. Der Moderator stellt eine Problemlösungstechnik namens „Zielbaum“ vor. Dieser Baum zeigt, wie Ziele miteinander in Beziehung stehen, und er kann hilfreich sein, um Entscheidungen darüber zu treffen, welches Problem gelöst werden soll. Der Moderator erklärt, dass diese Technik auch als „Probleminduction Tree“ oder „Tree Goal Tree“ bekannt ist.

  • 00:25:00 Dieses Video führt in das Konzept der Zielbäume und der Problemlösung ein und zeigt, wie man die Tiefe der Funktionskomposition mithilfe von Symbolen messen kann. Das Video zeigt dann, wie man eine sichere Transformation anwenden kann, um ein Integral in drei Teile aufzuteilen, und wie es für eine bestimmte rationale Funktion funktioniert.

  • 00:30:00 Das Video diskutiert das Argumentationsprogramm, das Probleme löst, indem es sichere Transformationen erstellt. Es zeigt, wie das Programm vor einer Lösung für ein bestimmtes Problem stehen blieb und sich wieder an die Arbeit an einem anderen Problem machte.

  • 00:35:00 Das Video diskutiert die Argumentation hinter Schlegels Modell der Rechenprobleme für Erstsemester, bei dem es um Kenntnisse über Transformationen, die Funktionsweise alter Bäume und Tabellen geht, um die Probleme zu lösen. Das Video erwähnt auch, dass die Tiefe der funktionalen Komposition, eine Technik, die Brett vorgeschlagen hat, eigentlich keine Rolle spielt, weil der Baum weder tief noch breit wird.

  • 00:40:00 Das Video diskutiert, wie Wissen bei der Problemlösung dargestellt wird und wie bestimmte Transformationen das Problem einfacher machen. Es wird auch diskutiert, wie Wissen verwendet werden kann, um Probleme in komplexen Bereichen zu lösen.

  • 00:45:00 Der Sprecher demonstriert ein Programm, das angeblich demonstriert, wie Computer "intelligent" sein können. Der Sprecher erkennt jedoch schnell, dass das Programm dasselbe tut wie er, und der Computer daher nicht wirklich intelligent ist.
2. Reasoning: Goal Trees and Problem Solving
2. Reasoning: Goal Trees and Problem Solving
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonThis lecture covers a symbolic in...
 

Vorlesung 3. Reasoning: Zielbäume und regelbasierte Expertensysteme



3. Begründung: Zielbäume und regelbasierte Expertensysteme

Dieses Video erklärt, wie ein regelbasiertes Expertensystem funktioniert. Das System wurde entwickelt, um Probleme zu lösen, die mit herkömmlicheren Methoden schwer zu lösen sind. Das System besteht aus mehreren Regeln, die durch und Tore verbunden sind, wodurch das System ein bestimmtes Tier sicher erkennen kann.

  • 00:00:00 Dieses Video erklärt, wie ein regelbasiertes Expertensystem (RBS) aufgebaut ist, und zeigt anhand eines Beispiels, wie das System funktioniert. Die RBS wurde entwickelt, um Probleme zu lösen, die mit traditionelleren Methoden, wie z. B. algebraischen Gleichungen, schwer zu lösen sind.

  • 00:05:00 In diesem Video erklärt Professor Patrick Winston, wie Argumentationsprogramme oder regelbasierte Expertensysteme funktionieren. Die Struktur des Programms ist sehr einfach, mit vier Blöcken, die in einer iterativen Schleife ausgeführt werden, um ein gewünschtes Ergebnis zu erzielen. Das Programm ist in der Lage, Probleme mit einfachen Blöcken zu lösen, da es Hinweise aus Fragen nimmt, die es in der Vergangenheit beantwortet hat, und Rekursion verwendet, um ein komplexes Ergebnis zu erzielen.

  • 00:10:00 Das Video erklärt, wie ein Zielbaum verwendet wird, um Fragen zu beantworten, wie etwas gemacht wurde, und wie ein Und/oder-Baum dafür verwendet werden kann. Es wird auch erklärt, dass das Integrationsprogramm Zielbäume verwenden kann, um Fragen zum eigenen Verhalten zu beantworten.

  • 00:15:00 Dieses Video diskutiert, wie komplexes Verhalten das Ergebnis der Komplexität der Umgebung ist, nicht der Komplexität des Programms. Regelbasierte Expertensysteme wurden in den späten 60er Jahren entwickelt, um Wissen in einfache Regeln zu kapseln, und sie werden noch heute verwendet.

  • 00:20:00 In diesem YouTube-Video wird erläutert, wie ein vorwärtsverkettendes regelbasiertes Expertensystem (RBSES) verwendet werden kann, um Tiere in einem kleinen Zoo zu identifizieren. Das RBSES besteht aus mehreren Regeln, die durch und Tore verbunden sind, wodurch das System ein bestimmtes Tier sicher erkennen kann.

  • 00:25:00 Dieses Video erklärt, wie ein regelbasiertes Expertensystem (RBE) funktioniert, indem es ausgehend von einer Hypothese rückwärts geht, um festzustellen, ob ein Objekt eine bestimmte Tierart ist.

  • 00:30:00 Ein regelbasiertes Expertensystem wurde entwickelt, um Häuser zu entwerfen, die denen des portugiesischen Architekten Siza ähneln. Das System ist in der Lage, das, was ein Einpacker im Lebensmittelgeschäft sagt, in eine Wenn-Dann-Regel zu übersetzen, sodass ein Wissensingenieur sie verstehen kann.

  • 00:35:00 In diesem Video erörtert Professor Patrick Winston die Prinzipien des Knowledge Engineering, einschließlich der Notwendigkeit spezifischer Fälle und der Verwendung von Heuristiken. Er liefert auch ein Beispiel dafür, wie die Heuristik Nummer zwei, die Frage, ob zwei Objekte gleich oder verschieden sind, zur Lösung von Problemen eingesetzt werden kann.

  • 00:40:00 Der Moderator erörtert drei Möglichkeiten, wie die menschliche Intelligenz verbessert werden kann: durch den Aufbau regelbasierter Systeme, durch die Entwicklung zielgerichteter Programme und durch den Einsatz von Integrationsprogrammen. Heuristik Nummer drei ist, dass das System bricht, wenn eine Regel oder ein Ziel nicht befolgt wird, was auf einen Bedarf an weiterem Wissen hinweist. Der Moderator demonstriert dies, indem er einen Fall diskutiert, in dem ein Programm einem Patienten ein Fass Penicillin verschrieb.

  • 00:45:00 Dieses Video erklärt, wie das Schließen über Zielbäume und regelbasierte Expertensysteme funktioniert. In beiden Beispielen ist das System in der Lage, Geschichten zu lesen und die Folgen von Handlungen zu bestimmen.
3. Reasoning: Goal Trees and Rule-Based Expert Systems
3. Reasoning: Goal Trees and Rule-Based Expert Systems
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonWe consider a block-stacking prog...
 

Vorlesung 4. Suche: Depth-First, Hill Climbing, Beam



4. Suche: Tiefe zuerst, Hill Climbing, Beam

In diesem YouTube-Video erläutert Patrick Winston verschiedene Suchalgorithmen, darunter Tiefensuche, Hill Climbing, Beam und Best-first-Suche. Anhand einer Karte als Beispiel demonstriert er die Vor- und Nachteile der einzelnen Algorithmen und wie das Verständnis verschiedener Suchmethoden die Fähigkeiten zur Problemlösung verbessern kann. Winston erörtert auch die Anwendung von Suchalgorithmen in intelligenten Systemen, indem er das Genesis-System verwendet, um Fragen zur Macbeth-Geschichte zu beantworten. Er stellt auch das Konzept eines Pyrrhussieges vor und wie Suchprogramme solche Situationen entdecken können, indem sie Grafiken durchsehen und ihre Ergebnisse auf Englisch melden. Insgesamt bietet das Video einen umfassenden Überblick über Suchalgorithmen und deren praktischen Einsatz in realen Szenarien.

  • 00:00:00 In diesem Abschnitt erläutert Patrick Winston verschiedene Suchmethoden und wie sie sich auf unsere eigenen Fähigkeiten zur Problemlösung beziehen. Wie wichtig ein guter Suchalgorithmus ist, demonstriert er am Beispiel, auf einer Karte den optimalen Weg von einem Punkt zum anderen zu finden. Er stellt auch das Konzept einer Suche im Britischen Museum vor, bei der jeder mögliche Weg erkundet wird, stellt jedoch fest, dass diese Methode nicht effizient ist. Er geht weiter auf Tiefensuche, Bergsteigen und Strahlsuche ein und wie sie in verschiedenen Szenarien eingesetzt werden können. Er betont, dass das Verständnis verschiedener Suchalgorithmen helfen kann, eine Intuition zur Problemlösung zu entwickeln, und auch einen Einblick geben kann, wie unser Gehirn Probleme angeht.

  • 00:05:00 In diesem Abschnitt werden die Konzepte Tiefensuche, Hill Climbing und Beam Search am Beispiel einer Karte vorgestellt. Der Algorithmus des British Museum wird verwendet, um zu veranschaulichen, wie alle möglichen Pfade gefunden werden können, ohne sich in einer Karte in den eigenen Schwanz zu beißen. Während die Suche durch Karten dargestellt wird, wird deutlich gemacht, dass sie nicht auf sie beschränkt ist und es tatsächlich um Entscheidungen geht, die getroffen werden, wenn versucht wird, Entscheidungen zu treffen. Die Tiefensuche ist eine der gezeigten Suchen und besteht darin, zielstrebig voranzuschreiten, einen Weg zu wählen und zurückzugehen, wenn man sich einer Sackgasse gegenübersieht. Der Prozess des Backtracking wird auch eingeführt, um den Algorithmus effizienter zu machen.

  • 00:10:00 In diesem Abschnitt behandelt das Video zwei Hauptsuchalgorithmen: Tiefensuche und Breitensuche. Die Tiefensuche wird am besten in Verbindung mit der optionalen Backtracking-Technik verwendet, da sie verhindern kann, einen Pfad zu verpassen, der zum Ziel führt. Die Breitensuche baut Ebene für Ebene einen Baum auf und vervollständigt einen Pfad, der zum Ziel führt. Das Video testet dann beide Suchalgorithmen an einem Beispielproblem, wobei die Startposition verschoben und die Suche entsprechend angepasst wird. Ein Flussdiagramm wird eingeführt, um den Algorithmus für die Suche zu demonstrieren, wobei eine Warteschlange verwendet wird, um die betrachteten Pfade darzustellen.

  • 00:15:00 In diesem Abschnitt erläutert der Referent die Funktionsweise des Tiefensuchalgorithmus. Der Algorithmus beginnt mit dem Initialisieren der Warteschlange und dem Erweitern des ersten Pfads in der Warteschlange. Nach dem Erweitern von s erhält der Sprecher zwei Pfade, s geht zu a und s geht zu b. Für die Tiefensuche werden die neuen erweiterten Pfade an den Anfang der Warteschlange gestellt, damit der Algorithmus weiter nach unten in den Suchbaum gehen kann. Der Sprecher erklärt auch, dass die Breitensuche denselben Algorithmus wie die Tiefensuche verwendet, wobei eine Zeile geändert wird, wodurch die neuen Pfade an das Ende der Warteschlange gestellt werden und nicht an den Anfang.

  • 00:20:00 In diesem Abschnitt erfahren wir mehr über die Einschränkungen der Breitensuche und wie sie verbessert werden kann. Der Algorithmus gilt als ineffizient und kann nicht sagen, ob er sich dem Ziel nähert oder weiter entfernt. Außerdem verlängert es oft Pfade, die mehr als einmal zum selben Knoten führen, und das müssen wir vermeiden. Indem wir den Algorithmus ändern, um einen Pfad nicht zu erweitern, es sei denn, ein Endknoten wurde zuvor nicht erweitert, können wir vermeiden, Zeit mit duplizierten Pfaden zu verschwenden. Mit dieser Methode sehen wir eine deutliche Verbesserung der Sucheffizienz und Pfadqualität.

  • 00:25:00 In diesem Abschnitt untersucht das Video die Hill Climbing-Suche als einen fundierteren Ansatz zum Finden des Zielknotens, indem die Entfernung zum Knoten berücksichtigt wird. Ähnlich wie bei der Tiefensuche listet Hill Climbing die Optionen lexikalisch auf und bricht Verbindungen basierend auf der Nähe zum Zielknoten. Dies führt zu einem geraderen Pfad ohne Rückverfolgung, obwohl dies möglicherweise nicht immer der optimale Pfad ist. Das Video zeigt, dass Hill Climbing im Vergleich zur Tiefensuche weniger Einreihungen und einen direkteren Pfad erzeugt. Das Video ermutigt zur Verwendung von Heuristiken in Suchalgorithmen, falls verfügbar.

  • 00:30:00 In diesem Abschnitt erläutert der Kursleiter die Technik der Strahlsuche, einer Ergänzung oder Ergänzung zur Breitensuche, die eine informierte Suche mithilfe von Heuristiken ermöglicht. Die Strahlsuche begrenzt die Anzahl der zu berücksichtigenden Pfade auf jeder Ebene und behält nur die beiden obersten Pfade bei, die dem Ziel am nächsten kommen können, indem zusätzliche Informationen oder eine heuristische Messung der Entfernung zum Ziel genutzt werden. Der Ausbilder erwähnt, dass Hill Climbing auch eine informierte Suche ist, die neue Pfade am Anfang der Warteschlange hinzufügt, indem sie die Entfernung zum Ziel berücksichtigt, die so sortiert sind, dass alles gerade bleibt.

  • 00:35:00 In diesem Abschnitt erörtert der Referent die Strahlsuche und die Best-First-Suche, zwei zusätzliche Suchalgorithmen, die in zusammenhängenden Räumen wie Bergen verwendet werden können. Bei der Strahlsuche geht es darum, die w besten Pfade als Lösung auszuwählen und beizubehalten, während bei der Best-First-Suche immer an dem Blattknoten gearbeitet wird, der dem Ziel am nächsten ist, und im Suchbaum herumspringen kann. Hill Climbing kann in kontinuierlichen Räumen auf Probleme stoßen, z. B. in einem lokalen Maximum stecken bleiben oder sich in einem flachen Bereich nicht bewegen können. Abschließend erläutert der Sprecher ein zusätzliches Problem beim Hill Climbing in hochdimensionalen Räumen, wo eine scharfe Brücke vorhanden sein kann.

  • 00:40:00 In diesem Abschnitt behandelt das Video die Modellierung von Intelligenz und die Notwendigkeit von Suchalgorithmen beim Aufbau intelligenter Systeme. Der Referent zeigt am Beispiel einer topografischen Karte, wie man sich vorgaukeln kann, man sei oben, obwohl man es gar nicht ist. Dies führt zu dem Konzept des Suchens, das notwendig ist, um Pläne zu machen und Entscheidungen zu bewerten. Der Referent demonstriert dann die Verwendung des Genesis-Systems zur Beantwortung von Fragen zur Macbeth-Geschichte mithilfe eines Suchalgorithmus. Das System nimmt Informationen auf, erstellt ein Ausarbeitungsdiagramm und sucht nach Mustern in der Geschichte, die sich auf Rache und andere Konzepte auf höherer Ebene beziehen.

  • 00:45:00 In diesem Abschnitt diskutiert Patrick Winston das Konzept eines Pyrrhussieges, einer Situation, in der zunächst alles gut zu laufen scheint, aber schließlich zu negativen Konsequenzen führt. Er demonstriert, wie Suchprogramme solche Informationen entdecken können, indem sie Diagramme durchsehen, und auf der Grundlage dieser Informationen Fragen beantworten können. Die Programme verwenden eine Kombination aus expliziten Anweisungen und Wenn/Dann-Regeln, um diese Diagramme zu erstellen und die Informationen auf Englisch auszugeben. Winston erwähnt auch, dass diese Programme vernünftige Antworten und übergeordnete Gedanken generieren können, indem sie über die Suchen berichten, die die Informationen hervorgebracht haben. Schließlich demonstriert er die Fähigkeit des Systems, Fragen zu Macbeths Charakter und Motivationen zu beantworten, indem er die von einem Parser-System generierte Sprachausgabe verwendet.
4. Search: Depth-First, Hill Climbing, Beam
4. Search: Depth-First, Hill Climbing, Beam
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonThis lecture covers algorithms fo...
 

Vorlesung 5. Suche: Optimal, Branch and Bound, A*



5. Suche: Optimal, Branch and Bound, A*

Das Video diskutiert mehrere Suchalgorithmen, um den kürzesten Weg zwischen zwei Orten zu finden, wobei der Schwerpunkt auf dem Beispiel der Route 66 zwischen Chicago und Los Angeles liegt. Das Video stellt das Konzept der heuristischen Distanz vor und bietet Beispiele für verschiedene Suchalgorithmen wie Hill Climbing, Beam Search und Branch and Bound. Der Referent betont die Bedeutung der Verwendung zulässiger und konsistenter Heuristiken im A*-Algorithmus zur Optimierung der Suche. Darüber hinaus stellt das Video die Effektivität der Verwendung einer erweiterten Liste und Luftlinienentfernungen zur Bestimmung der Untergrenzen auf dem kürzesten Weg fest. Letztendlich schließt das Video mit dem Versprechen, im nächsten Vortrag weitere Verfeinerungen des A*-Algorithmus zu diskutieren.

  • 00:00:00 In diesem Abschnitt erläutert der Professor, wie man den kürzesten Weg zwischen zwei Orten findet, wobei er sich auf das Beispiel der Route 66 zwischen Chicago und Los Angeles konzentriert. Er erwähnt die Schaffung des zwischenstaatlichen Autobahnsystems durch Präsident Eisenhower, der die Fähigkeit der deutschen Armee nachahmen wollte, Truppen schnell durch das Land zu bewegen. Der Professor stellt dann das Konzept der heuristischen Distanz vor und wie es helfen kann, den besten Weg zu finden, obwohl es nicht immer wahr ist. Er gibt auch Beispiele für verschiedene Suchalgorithmen wie Hill Climbing und Beam Search, die darauf abzielen, den besten Weg zu finden, indem sie sich in der Nähe des Ziels befinden.

  • 00:05:00 In diesem Abschnitt erörtert der Professor das Konzept der heuristischen Distanz und das Prinzip der Problemlösung, indem er jemanden fragt, der die Antwort kennt. Anhand des Beispiels, den kürzesten Weg auf einer Karte zu finden, schlägt der Professor vor, dem von Juana vorgeschlagenen Weg zu folgen, verifiziert dies jedoch, indem er überprüft, ob alle anderen möglichen Wege am Ende länger als die vorgeschlagene Route sind. Der Professor erläutert den Prozess der Berechnung der Pfadlänge und der Auswahl des kürzesten zu verlängernden Pfads, bis die Pfadlänge mit der von Juana vorgeschlagenen übereinstimmt.

  • 00:10:00 In diesem Abschnitt erläutert der Sprecher, wie man ohne Orakel den kürzesten Weg findet. Der Ansatz besteht darin, den bisher kürzesten Weg bis zum Erreichen des Ziels zu verlängern. Der Referent gibt ein Beispiel, um den Prozess des Findens des kürzesten Weges zu veranschaulichen, indem Wege mit nicht negativen Längen betrachtet werden. Der Ansatz prüft, ob die bisher geleistete Arbeit verschwendet wurde, und wenn nicht, ist die Pfadlänge die kürzeste. Der Sprecher erklärt, dass dieser Ansatz den kürzesten Pfad finden kann, aber es könnte andere Pfade geben, wenn Längen der Länge Null existieren.

  • 00:15:00 In diesem Abschnitt des Videos demonstriert der Sprecher die Verwendung von Branch and Bound zum Finden des kürzesten Pfads auf einer komplizierteren Karte. Sie erwähnen das Dekorieren des Flussdiagramms und erläutern den Vorgang des Initialisierens der Warteschlange, des Testens des ersten Pfads in der Warteschlange und des Erweiterns von Pfaden, die keine Gewinner sind. Der Sprecher merkt an, dass der Branch-and-Bound-Ansatz viele Pfade in die Warteschlange stellt und viele Pfade erweitert, die nicht optimal sind, aber dies kann verbessert werden, indem nur Pfade erweitert werden, die zuvor nicht erweitert wurden. Der Sprecher betont, wie wichtig es ist, nur den Ansatz der erweiterten Pfade zu verwenden, um optimale Pfade zu finden.

  • 00:20:00 In diesem Abschnitt wird das Konzept einer erweiterten Liste als Anpassungsverbesserung des Branch-and-Bound-Algorithmus eingeführt. Die erweiterte Liste verhindert, dass der Algorithmus Pfade verlängert, die bereits verlängert wurden und die längere Pfadlängen haben als diejenigen, die bereits denselben Punkt erreicht haben. Durch Führen einer erweiterten Liste können große Bereiche des Baums weggeschnitten werden, wodurch die Anzahl der Erweiterungen reduziert wird, die zum Erreichen einer Lösung erforderlich sind. Im Vergleich zum vorherigen Beispiel benötigt der neue Algorithmus nur 38 Erweiterungen statt 835, was zu einer erheblichen Einsparung an Rechenzeit führt.

  • 00:25:00 In diesem Abschnitt wird das Konzept der Verwendung von Luftlinienentfernungen zur Bestimmung der Untergrenze für den kürzestmöglichen Weg eingeführt. Die kumulierte Entfernung und die Luftlinienentfernung werden addiert, um eine untere Grenze für den Pfad bereitzustellen. Die Simulation wird dann mit der Auswahl des Pfades mit der kürzesten potentiellen Distanz von S nach G demonstriert. Bei einem Gleichstand wird der Pfad mit dem lexikalisch geringsten Wert gewählt.

  • 00:30:00 In diesem Abschnitt erörtert der Redner die Verwendung von Heuristiken zur Beschleunigung von Graphsuchalgorithmen. Die Verwendung einer zulässigen Heuristik liegt vor, wenn eine Schätzung garantiert kleiner als die tatsächliche Entfernung ist. Die erweiterte Liste ist nützlicher als die Verwendung einer dieser Untergrenzen-Heuristiken. Die Wirksamkeit von Heuristiken hängt jedoch vom Problem ab, und durch Ändern der Platzierung der Startposition können die Ergebnisse der Suche geändert werden. Letztendlich ist es wichtig zu beachten, dass die Verwendung von Heuristik Bewegungen durch denselben Knoten möglicherweise nicht wiederholt, aber nicht unbedingt etwas Wesentliches für eine effiziente Suche bewirkt.

  • 00:35:00 In diesem Abschnitt behandelt das Video A*, einen Suchalgorithmus, der sowohl die zulässige Heuristik als auch den Branch-and-Bound-Algorithmus kombiniert. Durch die Anwendung beider Techniken kann A* seine individuelle Leistung stark verbessern. Die zulässige Heuristik verwendet ein strenges Ziel, während der Branch-and-Bound-Algorithmus die damit verbundene Weltraumerkundung versteht. Das Video zeigt, wie A* Probleme effizienter lösen kann, wenn beide Techniken zusammen verwendet werden. Das Video weist jedoch auch darauf hin, dass bestimmte Umstände eine Zulässigkeit unmöglich machen können, wenn die Suche über herkömmliche Karten hinausgeht. Infolgedessen könnten die zulässige Hierarchie und der A*-Algorithmus beim Finden optimaler Lösungen weniger effektiv werden.

  • 00:40:00 In diesem Abschnitt erläutert der Professor das Konzept zulässiger Heuristiken im A*-Algorithmus. Er zeigt ein Beispiel einer Karte mit ungeraden Entfernungen und erklärt, wie die Verwendung einer zulässigen Heuristik nicht immer zum Finden des kürzesten Weges führen muss. Der Professor betont, dass die zulässige Heuristik nur für Karten funktioniert und dass der Algorithmus in Situationen funktioniert, die keine Karten sind, was etwas Stärkeres als die Zulässigkeit in der Heuristik erfordert. Das Video schließt mit dem Versprechen, diese Verfeinerung in der nächsten Vorlesung zu diskutieren.

  • 00:45:00 In diesem Abschnitt diskutiert der Dozent die Anforderungen an eine heuristische Funktion, um innerhalb des A*-Algorithmus zu arbeiten. Er führt die Konzepte der Zulässigkeit und Konsistenz ein und erklärt, dass eine heuristische Funktion sowohl zulässig als auch konsistent sein muss, um in Situationen zu funktionieren, in denen es sich nicht um eine Karte handelt. Er zeigt, dass die Verwendung einer zulässigen, aber inkonsistenten Heuristik dazu führen kann, dass der Algorithmus fehlschlägt, selbst in Szenarien, in denen eine konsistente Heuristik funktioniert hätte. Abschließend betont der Dozent, wie wichtig es ist, jeden verfügbaren Vorteil zu nutzen, um den A*-Algorithmus zu optimieren, einschließlich der Verwendung einer erweiterten Liste und einer geeigneten heuristischen Funktion.
5. Search: Optimal, Branch and Bound, A*
5. Search: Optimal, Branch and Bound, A*
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonThis lecture covers strategies fo...
 

Vorlesung 6. Suche: Spiele, Minimax und Alpha-Beta



6. Suche: Spiele, Minimax und Alpha-Beta

Das Video diskutiert die Geschichte des Spielens in der KI, beginnend mit dem berühmten Dreyfus-Zitat, dass Computer kein Schach spielen können. Die Referenten erklären, warum Wenn-Dann-Regeln in Spielprogrammen nicht effektiv sind und eine tiefere Analyse und Strategie erforderlich sind. Sie führen den Minimax-Algorithmus und das Konzept des Alpha-Beta-Pruning ein, um die Effizienz der Spielsuche zu optimieren. Das Video untersucht auch Techniken wie die Minimierung der Kosten von Versicherungspolicen und die progressive Vertiefung. Der Redner kommt zu dem Schluss, dass Bulldozer-Intelligenz zwar wichtig ist, aber nicht unbedingt die gleiche Art von Intelligenz ist, die Menschen in ihren eigenen Köpfen haben.

  • 00:00:00 In diesem Abschnitt diskutieren die Redner die frühe Geschichte des Spielens in der KI und heben ein berühmtes Zitat von Hubert Dreyfus hervor, dass Computer kein Schach spielen können. Die Redner argumentieren jedoch, dass Spiele einige Elemente der Intelligenz modellieren können, und erklären daher weiter, wie ein Computer Schach spielen kann. Sie erwägen die Verwendung von Wenn-Dann-Regeln, um sich einem Spiel zu nähern, eine Methode, die nicht sehr effektiv ist, aber in einigen Spielprogrammen für Dame erfolgreich implementiert wurde. Die Referenten kommen schließlich zu dem Schluss, dass in Spielprogrammen neben Taktik und Geschwindigkeit auch eine tiefere Analyse und Strategie erforderlich sind, auf die sie in diesem Abschnitt näher eingehen werden.

  • 00:05:00 In diesem Abschnitt erörtert der Redner die dritte Möglichkeit, ein starkes Schachspielprogramm zu erstellen, bei dem es darum geht, nach vorne zu schauen und alle möglichen Folgen von Zügen zu bewerten, um die bestmögliche Brettsituation zu bestimmen. Dies erfordert eine Funktion, die die Merkmale des Schachbretts kombiniert, um einen statischen Wert zu erzeugen, der verwendet wird, um die beste Brettsituation zu bestimmen. Der Referent erklärt, dass die beliebteste Art, einen statischen Wert zu bilden, die Verwendung eines linearen Scoring-Polynoms ist. Die verwendete Methode muss jedoch keine Brettsituationen einordnen oder ihnen Zahlen geben; es muss lediglich das beste bestimmen. Der Referent spricht auch über den Verzweigungsfaktor von Zugbäumen und wie man die Anzahl der End- oder Blattknoten berechnet.

  • 00:10:00 In diesem Abschnitt erläutert der Referent die Einschränkungen des British Museum-Algorithmus im Schach aufgrund der großen Anzahl von Blattknoten im Entscheidungsbaum des Spiels. Laut Claude Shannon gibt es im Schach etwa 10 bis 120 Blattknoten, was es unpraktisch macht, die Behandlung des British Museum zu verwenden, um den besten Zug zu bewerten. Um diese Zahl ins rechte Licht zu rücken, berechnet der Sprecher, dass selbst wenn alle Atome im Universum seit Beginn des Urknalls statische Auswertungen mit Nanosekundengeschwindigkeit durchführen würden, uns immer noch 14 Größenordnungen fehlen würden. Der Redner kommt daher zu dem Schluss, dass wir so weit wie möglich vorausschauen müssen, wenn wir den besten Zug im Schach bewerten wollen.

  • 00:15:00 In diesem Abschnitt erklärt der Referent den Minimax-Algorithmus, der darin besteht, den Blattknoten eines Spielbaums Werte zuzuweisen und sie Level für Level „zu sichern“, um den bestmöglichen Zug für jeden Spieler zu bestimmen. Der maximierende Spieler möchte das Spiel zum größten Wert treiben, während der minimierende Spieler es zum kleinsten Wert treiben möchte. Durch die Berechnung dieser Werte und die Entscheidung über die beste Vorgehensweise kann der Algorithmus verwendet werden, um gegensätzliche Spiele wie Schach zu spielen. Der Referent illustriert den Algorithmus mit einem einfachen Spielbaum und zeigt auch ein Beispiel des Algorithmus in Aktion mit einem größeren Spielbaum.

  • 00:20:00 In diesem Abschnitt des Videos liegt der Schwerpunkt darauf, Wege zu finden, um so weit wie möglich in den Suchbaum zu gelangen, um die groben Maße der Boardqualität zu verdeutlichen, die eine ziemlich gute Vorstellung vom nächsten Schritt geben können . Die Lösung, um große Teile des Suchbaums abzuschneiden, liegt im Alpha-Beta-Algorithmus, der eine Schicht über Minimax ist. Alpha-Beta verwendet zwei Parameter, Alpha und Beta, um Abschnitte des Suchbaums abzuschneiden, was eine effizientere Suche ermöglicht. Dieser Algorithmus ist keine Alternative zu Minimax, sondern ein Weg, ihn effizienter zu machen. An einem Beispiel wird gezeigt, wie der Alpha-Beta-Algorithmus in der Praxis funktioniert.

  • 00:25:00 In diesem Abschnitt erörtert der Referent den Prozess der Spielsuche und wie er durch die Verwendung von Algorithmen wie Minimax und Alpha-Beta optimiert werden kann. Das verwendete Beispiel ist ein Baum der Tiefe vier oder größer, bei dem der Sprecher die zu berechnenden Zahlen einkreist, was zeigt, dass bestimmte Zweige aufgrund von abgeschnittenen Situationen nicht ausgewertet werden müssen. Dies spart Rechenzeit und ermöglicht eine effizientere Spielsuche. Der Redner stellt auch das Konzept des Deep Cut Off vor, bei dem Zahlen auf getrennten Ebenen im Baum verglichen werden und bestimmte Zweige als irrelevant angesehen werden. Obwohl dies schwer zu glauben erscheint, ist der Prozess effektiv und kann die Effizienz der Spielsuche erheblich verbessern.

  • 00:30:00 In diesem Abschnitt behandelt das Video das Konzept des Alpha-Beta-Pruning und wie es Rechenzeit in Spielalgorithmen einsparen kann. Durch Auswerten der Board-Zustände können der Minimierer und der Maximierer entscheiden, welcher Zug am besten zu machen ist. Der Minimierer bringt eine 8 in eine bestimmte Richtung und der Maximierer kann eine 9 in eine andere Richtung bringen, wodurch eine Cutoff-Situation entsteht. Das Alpha-Beta-Pruning ermöglicht es dem Algorithmus, Bäume zu durchlaufen, wobei Alpha und Beta um die Situation herum schrumpfen, was Berechnungen spart. Obwohl diese Methode nur in der optimalen Situation funktioniert, in der der Verzweigungsfaktor konstant ist, spart sie dennoch erheblich Zeit und Rechenleistung, was sie zu einem notwendigen Werkzeug für Spielprogramme macht.

  • 00:35:00 In diesem Abschnitt lernen wir, wie man die Kosten von Versicherungspolicen für Spielbaumberechnungen minimiert. Indem die statischen Werte eine Ebene über dem Boden und nicht ganz nach unten berechnet werden, gibt es eine Versicherungspolice, um eine gute Bewegung sicherzustellen, ohne dass b zu den d-Blattknoten berechnet werden muss. Die Kosten für die Versicherungspolice werden berechnet, indem die Anzahl der Blätter auf jeder Ebene des Baums addiert wird. Um die Kosten zu minimieren, gibt es jedoch eine Begrenzung dafür, wie viele Ebenen die Police ab der ersten Ebene abdecken sollte. Unter Verwendung von Algebra wird festgestellt, dass die für die Richtlinie der höchsten Ebene erforderliche Berechnung gleich b hoch d minus 1 über b minus 1 ist, was eine handhabbare Berechnung ist.

  • 00:40:00 In diesem Abschnitt wird das Konzept der progressiven Vertiefung eingeführt, um das Ergebnis von Versicherungspolicen im Spielbaum zu optimieren. Indem auf jeder Ebene immer ein Zug als Versicherung gegen das Nichterreichen der nächsten Ebene zur Verfügung steht, veranschaulicht die progressive Vertiefung, wie Algorithmen jederzeit eine Antwort parat haben, sobald sie verlangt wird. Darüber hinaus schlägt Christopher vor, temporäre Werte zu verwenden, um die Leistung von Alpha-Beta zu verbessern, eine Idee, die sich später als Neuerfindung eines bedeutenden Konzepts herausstellt. Das Deep Blue-Programm unterscheidet sich nicht wesentlich von anderen Spielprogrammen, abgesehen von der Verwendung von parallelem Rechnen und speziellen Techniken für das Endspiel.

  • 00:45:00 In diesem Abschnitt erörtert der Sprecher die Entwicklung eines ungleichmäßigen Baums während eines Spiels und wie es nicht notwendig ist, dass der Baum auf ein festes Niveau abfällt. Er spricht davon, dass Deep Blue 1997 Kasparov besiegt hat, aufgrund der zusätzlichen Schnörkel, die Deep Blue hatte. Er erwähnt jedoch, dass sich diese Art der Berechnung, bei der man Berechnungen auf die gleiche Weise durchführt, wie ein Bulldozer Kies verarbeitet, von der menschlichen Intelligenz unterscheidet. Menschliche Schachmeister spielen anders und erkennen Muster, anstatt lange Berechnungen anzustellen. Der Redner kommt zu dem Schluss, dass es wichtig ist, die Bulldozer-Intelligenz zu verstehen, aber es ist nicht unbedingt die gleiche Art von Intelligenz, die Menschen in ihren eigenen Köpfen haben.
6. Search: Games, Minimax, and Alpha-Beta
6. Search: Games, Minimax, and Alpha-Beta
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonIn this lecture, we consider stra...
 

Vorlesung 7. Einschränkungen: Interpretieren von Strichzeichnungen



7. Einschränkungen: Interpretieren von Strichzeichnungen

Das Video diskutiert die Entwicklung eines Constraint-Resolution-Problems für die Interpretation von Strichzeichnungen, das mit dem Versuch begann, einen Computer zu entwickeln, der einfache Objekte sehen kann. Die Arbeit des Experimentalisten Guzman wurde analysiert, was zu David Huffmans Ansatz führte, in einer einfachen mathematischen Welt mit Einschränkungen zu arbeiten, die es ihm ermöglichten, eine bessere Theorie als Guzmans Programm zu entwickeln. Das Video untersucht das Vokabular, das verwendet wird, um Linien und Knoten in Zeichnungen zu katalogisieren und zu kategorisieren, die Möglichkeit, fünf Oktanten mit Dingen zu füllen, und die Verwendung von Einschränkungen, um Objekte auf Konstruierbarkeit zu testen. Das Video erörtert auch die Herausforderung bei der Verwendung von Beschriftungen zur Interpretation von Strichzeichnungen, den Waltz-Algorithmus und den Prozess des Umgangs mit Gabelscheitelpunkten bei der Zeichnungsanalyse. Die in diesem Projekt entwickelten Beschränkungen finden Anwendung bei der Lösung von Problemen mit vielen Beschränkungen, wie z. B. Kartenfärbung und Zeitplanung.

  • 00:00:00 Es würde Strichzeichnungen interpretieren und die Anzahl der Objekte darin bestimmen. Diese Idee wurde von Dave Huffman, Dave Waltz und Jane Froydter weiter verfeinert. Die Arbeit an diesem Projekt wurde ursprünglich durch den Versuch motiviert, einen Computer zu schaffen, der sehen kann, beginnend mit einfachen Objekten wie Kinderblöcken. In diesem Abschnitt des Transkripts erzählt Patrick Winston die Geschichte hinter dem Kampf um die Entwicklung einer der leistungsstärksten Methoden in diesem Fach, die Probleme der Befriedigung von Einschränkungen umfasst, und wie alles mit dem Versuch begann, einen Computer zum Sehen zu machen.

  • 00:05:00 In diesem Abschnitt diskutiert der Sprecher die Arbeit von Guzman, der Strichzeichnungen erforschte, und wie man sie interpretiert. Guzman stellte fest, dass diese Zeichnungen dazu neigen, viele pfeilförmige und gabelförmige Kreuzungen zu haben, und er verwendete diese als Beweis, um abzuleiten, welche Flächen zum selben Objekt gehören. Guzman entwickelte eine Theorie zur Verwendung von "Links" als Beweisquanten, um dieses Problem zu lösen. Er lehnte die One-Link-Theorie ab und stellte fest, dass die Two-Link-Theorie zu konservativ war, was ihn zu einer dritten Theorie mit zwei wiederholten Längen führte. Es gab jedoch viele Situationen, in denen diese Methode nicht funktionierte, und es stellte sich die Frage, warum sie funktionierte und wann sie nicht funktionierte. Es wurde festgestellt, dass es funktionierte, weil die Welt voller dreiseitiger Kreuzungen oder Scheitelpunkte ist.

  • 00:10:00 In diesem Abschnitt diskutiert das Video David Huffmans Ansatz zur Entwicklung einer Theorie zur Interpretation von Strichzeichnungen nach der Analyse des Programms des Experimentators Guzman. Huffman beschloss, in einer einfachen mathematischen Welt mit mehreren Merkmalen zu arbeiten, wie z. B. einer Welt in allgemeiner Position, die nur dreiflächige Eckpunkte enthielt, die aus dem Schnittpunkt dreier Ebenen gebildet wurden, und zwischen vier Arten von Linien zu unterscheiden: konkav, konvex und mit gekennzeichneter Grenze Plus, Minus und Pfeile. Diese Einschränkungen ermöglichten es ihm, das Problem manuell zu handhaben und gleichzeitig eine andere und bessere Theorie als Guzmans Programm zu entwickeln.

  • 00:15:00 In diesem Abschnitt erörtert Professor Patrick Winston das Vokabular, das zum Katalogisieren und Kategorisieren von Linien und Knoten in Zeichnungen verwendet wird, einschließlich Scheitelpunkten, Kanten, Knoten und Linien. Er erklärt weiter, dass es nur 18 Möglichkeiten gibt, Beschriftungen um eine Kreuzung herum anzuordnen, und dass alles andere ausgeschlossen ist. Er liefert auch Beispiele für die sechs Ls, fünf Gabeln, vier Ts und drei Pfeile, die für die Kennzeichnung von Kreuzungen legitim sind. Die unterschiedlichen Arten der Markierung von Kreuzungen sind abhängig von den Oktanten, wobei die Anzahl der gefüllten Oktanten die Art der Kreuzung bestimmt.

  • 00:20:00 In diesem Abschnitt diskutiert der Sprecher die Möglichkeiten, fünf Oktanten mit Zeug zu füllen, und erklärt, wie man ein Objekt aus drei verschiedenen Perspektiven betrachtet, um das Beobachtete zu analysieren. Wenn man das Objekt aus der Perspektive einer violetten Kreide betrachtet, gibt es eine Pfeilkreuzung mit zwei konkaven und einer konvexen; Von der blauen Kreide gibt es eine konkave Linie und eine Grenze, während die andere Seite a ist
    symmetrisches Gegenteil der blauen Perspektive. Der Sprecher untersucht ferner Scheitelpunkte, die gabelförmige und L-förmige Verbindungen erzeugen können, sowie verdeckende Objekte, die T-Formen mit der verbleibenden Linie als Grenze erzeugen können. Abschließend erwähnt der Referent, dass Knoten mit sechs Flächen auch entstehen können, wenn Objekte an einem Punkt zusammentreffen.

  • 00:25:00 In diesem Abschnitt erörtert der Sprecher Einschränkungen und wie sie verwendet werden können, um zu bestimmen, ob ein bestimmtes Objekt konstruierbar ist oder nicht. Durch das Studium der Anordnung von Linien und Pfeilen um eine Kreuzung herum wird ein Katalog aller möglichen Anordnungen erstellt. Anhand dieses Katalogs demonstriert der Referent, wie man die Linien und Pfeile um ein Objekt herum beschriftet, das einer Homeplate ähnelt. Wenn man jedoch mit einer Kreuzung konfrontiert wird, die nicht in den Katalog passt, wird das Objekt als unmöglich zu konstruieren bestimmt. Diese Methode bietet eine Möglichkeit, Objekte auf Konstruierbarkeit zu testen, obwohl das Bestehen des Tests nicht ausreicht, um die Konstruierbarkeit zu garantieren.

  • 00:30:00 In diesem Abschnitt untersucht das Video das Problem der Interpretation von Strichzeichnungen in Computer Vision. Der anfängliche Ansatz bestand darin, Kreuzungen mit vier Flächen zu beschriften, aber einige Zeichnungen konnten aufgrund fehlender Flächen nicht beschriftet werden. Der Doktorand David Waltz machte sich daran, dieses Problem zu lösen, und fügte weitere Überlegungen wie Risse, Schatten und nicht dreiflächige Eckpunkte hinzu. Dies führte dazu, dass die Anzahl der Etiketten von vier auf über 50 anstieg, was die manuelle Arbeit erschwerte. Die Arbeit von Waltz zeigte, wie wichtig es ist, ein Problem, eine funktionierende Methode und ein verallgemeinerbares Prinzip zu haben.

  • 00:35:00 In diesem Abschnitt erörtert der Referent die Herausforderung bei der Verwendung von Beschriftungen zur Interpretation von Strichzeichnungen. Er zeigt ein Beispiel einer Strichzeichnung und erklärt, wie der Algorithmus von Waltz, bei dem mithilfe der Tiefensuche alle möglichen Beschriftungen und ihre Kombinationen untersucht werden, zur Interpretation verwendet werden kann. Der Algorithmus erweist sich jedoch als rechenintensiv, und nach anderthalb Jahren musste Waltz eine neue Methode entwickeln, die mit dem exponentiellen Suchraum umgehen konnte. Der Referent merkt an, dass die Wirksamkeit des Algorithmus auf die Kombination von Waltz' Label-Set und seiner neuen Methode zurückzuführen sei.

  • 00:40:00 In diesem Abschnitt erläutert der Sprecher den Algorithmus von Waltz und wie er benachbarte Kreuzungen überprüft, um zu sehen, ob die Linien, die gerade an Kreuzung zwei platziert wurden, mit denen an den benachbarten Kreuzungen kompatibel sind. Von den sechs anfänglichen Möglichkeiten wird die Hälfte aufgrund von unzulässigen Grenzlinien zwischen den Anschlussstellen eins und zwei eliminiert. Die verbleibenden Möglichkeiten werden gegen Knoten drei geprüft, und von dort werden alle weiteren Beschränkungen an den Knoten geprüft, was zu nur einer Interpretation für alle Knoten und Linien zwischen ihnen führt.

  • 00:45:00 In diesem Abschnitt erläutert der Referent den Umgang mit den Gabelscheitelpunkten bei der Zeichnungsanalyse. Nachdem er sie platziert hat, kommt der Sprecher zu dem Schluss, dass er eine eindeutige Interpretation für alle Verbindungen hat, und identifiziert, welche Linien konvex oder konkav sind. Der Sprecher demonstriert dann den Prozess für Zeichnungen mit mehr Mehrdeutigkeit und stellt fest, dass die Einschränkungsausbreitungsaktivität ähnlich ist, wie Menschen Strichzeichnungen interpretieren, was zeigt, dass wir möglicherweise einen Einschränkungsausbreitungsapparat haben, den wir beim Sehen verwenden. Abschließend erörtert der Sprecher, wie diese Art von Mechanismus zur Lösung von Problemen verwendet werden könnte, die viele Einschränkungen beinhalten, insbesondere bei der Kartenfärbung, die Anwendungen bei der Planung hat.
7. Constraints: Interpreting Line Drawings
7. Constraints: Interpreting Line Drawings
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonHow can we recognize the number o...
 

Vorlesung 8. Einschränkungen: Suche, Domänenreduktion



8. Einschränkungen: Suche, Domain-Reduktion

In diesem Video wird das Konzept der Einschränkungen bei der Problemlösung erörtert, insbesondere im Zusammenhang mit der Suche und der Reduzierung von Domänen. Der Referent zeigt am Beispiel der Zuweisung von Farben zu Bundesstaaten auf einer Landkarte, wie Beschränkungen genutzt werden können, um Möglichkeiten einzugrenzen, bevor überhaupt mit der Suche begonnen wird. Der Referent untersucht auch verschiedene Ansätze zum Umgang mit Einschränkungen, wie z. B. Aufgaben nur zu prüfen oder alles zu berücksichtigen, und stellt das Konzept der Ressourcenplanung als eine weitere Anwendung der auf Einschränkungen basierenden Problemlösung vor. Insgesamt bietet das Video einen umfassenden Überblick darüber, wie Constraints genutzt werden können, um komplexe Probleme effizient zu lösen.

  • 00:00:00 In diesem Abschnitt des Videos erörtert der Sprecher die Schwierigkeit des Kartenfärbungsproblems am Beispiel einer Karte mit 26 Bundesstaaten. Er weist darauf hin, dass eine Tiefensuche mit rotierender Farbauswahl extrem lange dauern würde, um eine geeignete Farbgebung zu finden, und demonstriert das Problem mit einem Diagramm. Er führt jedoch das Konzept der Einschränkungsausbreitung ein, das die Möglichkeiten für die Farbe jedes Zustands einschränken kann, bevor die Suche überhaupt beginnt. Der Referent arbeitet dann das Texas-Problem durch und zeigt, wie Constraint Propagation helfen kann, zu vermeiden, in einer unmöglichen Suche stecken zu bleiben.

  • 00:05:00 In diesem Abschnitt demonstriert der Sprecher, wie man Einschränkungen verwendet, um ein Problem der Zuweisung von Farben zu Bundesstaaten auf einer Karte zu lösen. Durch die Anwendung des Kampfkunstprinzips und die Betrachtung lokaler Einschränkungen stellt der Sprecher sicher, dass keine benachbarten Staaten die gleiche Farbe haben. Der Referent führt auch in einige wichtige Vokabeln ein, darunter Variablen, Werte und Domänen. Der Begriff einer Domäne ist eine Sammlung von Werten, die eine Variable annehmen kann, und der Sprecher verwendet dieses Vokabular, um zu zeigen, wie man Entscheidungen treffen kann, die keine nachgelagerten Probleme verursachen.

  • 00:10:00 In diesem Abschnitt erklärt der Referent, wie Beschränkungen im Zusammenhang mit Suche und Domain-Reduzierung funktionieren. Constraints sind Beschränkungen für Paare von Variablenwerten, die häufig bei Kartenfärbungsproblemen verwendet werden. Jeder Zustand ist eine Variable, Farben sind Werte und die verbleibenden Farbmöglichkeiten sind die Domänen. Die Einschränkung in diesem Fall ist, dass keine Staaten, die eine gemeinsame Grenze haben, dieselbe Farbe haben können. Der Sprecher fährt dann fort, seinen Ansatz zur Tiefensuche und -reduktion zu formalisieren, indem er ihn in Pseudocode niederschreibt. Der Pseudocode beinhaltet die Berücksichtigung einer Variablen für jede Zuweisung, die Berücksichtigung aller verbleibenden Auswahlmöglichkeiten und die Sicherstellung, dass alles, was in der Domäne übrig bleibt, für eine Auswahl in den anderen Zuständen in Ordnung ist.

  • 00:15:00 In diesem Abschnitt erörtert der Redner, wie Einschränkungen bei einem Suchalgorithmus gehandhabt werden. Sie erklären, dass der Algorithmus für jeden Wert in der Suche prüfen muss, ob er platzierte Einschränkungen erfüllt. Wenn es keinen benachbarten Wert gibt, der die Einschränkung erfüllt, entfernt der Algorithmus den Wert aus der Domäne. Wenn die Domäne leer wird, muss der Algorithmus zurückgehen. Der Sprecher erkundet verschiedene Herangehensweisen an das Problem, darunter Nichts in Betracht ziehen, Alles in Betracht ziehen und nur Zuweisungen prüfen, wobei er schließlich feststellt, dass nur das Prüfen von Zuweisungen schnell ist, aber zu Fehlern führen kann, während „Alles in Betracht ziehen“ alle angrenzenden Werte prüft, aber übertrieben sein kann.

  • 00:20:00 In diesem Abschnitt erörtert der Sprecher den Bereichsreduktionsalgorithmus im Zusammenhang mit der Lösung eines Farbabbildungsproblems. Sie erklären, dass die Überprüfung der Nachbarn der Zuordnung, dh die Überprüfung, welche Farboptionen für die Nachbarstaaten verfügbar sind, zur Lösung des Problems unerlässlich ist. Der Referent schlägt auch vor, durch Variablen mit reduzierten Domänen zu propagieren, um den Prozess effizienter zu machen. Darüber hinaus kann der Problemlösungsprozess durch Überprüfen der Nachbarn der Nachbarn weiter optimiert werden. Der Redner merkt an, dass Domänenreduktionsalgorithmen helfen können, komplexe Probleme zu lösen, erkennt aber auch die Einschränkungen und das Potenzial für Sackgassen an.

  • 00:25:00 In diesem Abschnitt erörtert der Sprecher die Domänenreduktion und wie entschieden wird, welche Variablen weitergegeben werden sollen. Anstatt durch alle Variablen mit reduzierten Domänen zu propagieren, propagiert der Algorithmus nur durch diejenigen mit der größten Schrumpfung bis hinunter zu einem einzelnen Wert. Dadurch wird die Anzahl der geprüften Einschränkungen reduziert, was zu schnelleren Lösungszeiten führt. Der Sprecher führt auch einige "schmutzige kleine Geheimnisse" ein, wie zum Beispiel das Anordnen eines Problems in einer bestimmten Reihenfolge, um die Lösung zu erschweren. Die Wahl, mit der am stärksten eingeschränkten oder am wenigsten eingeschränkten Variablen zu beginnen, bleibt der Präferenz des Benutzers überlassen.

  • 00:30:00 In diesem Abschnitt des Videos erläutert der Sprecher, wie er zuerst an der geringsten Einschränkung arbeitet und wie er die Dinge neu anordnete, um den am wenigsten eingeschränkten Zustand zuerst zu haben. Sie überprüften nur 1732 Einschränkungen und hatten 59 Sackgassen, also versuchten sie den anderen Weg, indem sie nur die am stärksten eingeschränkten ersten Zuweisungen überprüften. Sie erwähnen jedoch, dass die gewöhnliche Tiefensuche gut funktionieren würde, wenn die Zustände von den meisten Beschränkungen bis zu den am wenigsten Beschränkungen angeordnet würden. Der Redner stellt dann ein Ressourcenplanungsproblem bei Jet Green, einer neuen Fluggesellschaft, vor und erörtert, wie es dem Kartenfärbungsproblem entspricht. Jet Green möchte hauptsächlich zwischen Boston und New York fliegen und gelegentlich nach Los Angeles fliegen, während sie versucht, mit der geringsten Anzahl von Flugzeugen auszukommen.

  • 00:35:00 In diesem Abschnitt stellt der Referent ein Beispiel für die Planung von Flügen zwischen Städten vor, das durch Anwendung der Konzepte des Kartenfärbungsproblems gelöst werden kann. Die Herausforderung besteht darin, die vier Flugzeuge so zu organisieren, dass sie effizient auf den gewünschten Strecken operieren. Der Redner hebt die Beschränkungen des Problems hervor: Es können keine zwei Flugzeuge gleichzeitig fliegen, jedes Flugzeug sollte gleichermaßen genutzt werden, und es gibt Zeitbeschränkungen am Boden. Darüber hinaus demonstriert der Referent, dass die Wahl der Suchstrategie, der Domänenreduzierung, der Nachbarprüfung und des am stärksten eingeschränkten ersten Typs die Effizienz der Lösung beeinflussen kann.

  • 00:40:00 In diesem Abschnitt stellt der Kursleiter das Konzept der Verwendung von Mindest- und Höchstbeschränkungen vor, um die angemessene Anzahl von Ressourcen zu bestimmen, die für eine Aufgabe benötigt werden. Durch Festlegen einer minimalen und maximalen Anzahl von Ressourcen kann der Algorithmus schnell auf einen schmalen Bereich konvergieren, in dem die Suche lange dauert, wodurch sichergestellt werden kann, dass er innerhalb dieses Bereichs liegt. Der Kursleiter empfiehlt außerdem, zuerst die meisten Einschränkungen zu verwenden und durch Domänen zu propagieren, die auf einen einzigen Algorithmus reduziert sind, um eine gute Ressourcenzuweisung zu erreichen. Indem Sie mehrere Dinge gleichzeitig erledigen, ist es möglich, die für eine Aufgabe erforderlichen Ressourcen schnell zu ermitteln.
8. Constraints: Search, Domain Reduction
8. Constraints: Search, Domain Reduction
  • 2021.04.23
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010Instructor: Patrick WinstonView the complete course: https://ocw.mit.edu/6-034F10YouTube Playlist: https://www.yo...