Wir hatten uns am gestrigen Tag mit Constraint Certisfaction-Verfahren befasst.
Wir hatten Constraint Certisfaction eingeführt als etwas,
wo wir eine Menge von Variablen haben,
wo wir Domänen für die Variablen definieren und anschließend Konstraints formulieren,
wie die Werte in den unterschiedlichen Domänen jeweils zusammenpassen.
Und die Kunst bei so einem Verfahren oder bei der Anwendung dieses Verfahrens
besteht also immer darin, ein gegebenes Problem so umzuformen,
dass wir es als konstruierte Desfaction-Problemen lösen können.
Dann können wir nämlich die Lösungsverfahren, die wir uns angeguckt
haben und die wir heute auch noch uns angucken werden,
nehmen, um relativ effizient den Suchraum einzuschränken.
Die Idee besteht also immer darin,
möglichst frühzeitig die Domänen so weit zu reduzieren,
dass die verbleibenden Werte nur noch so eingeschränkt sind,
dass man tatsächlich dann eine Suche darauf starten kann
Wenn man also in der glücklichen Lage ist,
ein Problem entsprechend zu formulieren, dass man das ein solches Konstellent-Settisfaction-Verfahren anwenden kann,
da ist man da in einer relativ vorteilhaften Position,
weil man Suchaufwand sparen kann.
Wir hatten im Wesentlichen kennengelernt, Domädenkonsistenz herzustellen,
also alle Werte, die mit der unären Konstellenz nicht verträglich sind,
aus den Domänen zu streichen und dann die Kantenkonsistenz,
die alle diejenigen Werte streicht, die mit der Nachbarschaft nicht verträglich sind.
Und wir hatten auch gesehen, dass diese Verfahren nicht geeignet sind,
um tatsächlich in jedem Fall eine Lösung zu finden
Wenn wir Glück haben, finden wir eine Lösung, wenn wir weniger Glück haben,
finden wir keine Lösung und können es aber eindeutig feststellen.
Und in den meisten Fällen werden wir aber mit mehrdeutigen Restdomänen das Ganze beenden.
Und dann können wir weder sagen, ob es eine Lösung gibt,
noch, oder ob es keine Lösung gibt,
sondern dann müssen wir eben die Suche starten und versuchen,
über die Suche die Lösungen zu enummerieren.
Und das ist dann wieder ein Prozess mit exponentiellem Aufwand,
weil je nach dem, wie viele Mehrdeutigkeiten wir dort noch drin haben,
wir immer wieder üblichen Verfahren mit dem exponentiellen Aufwand,
zumindest im Zeitbedarf, dort zur Anwendung bringen können.
Was wir uns heute angucken, sind Verfahren, die Heuristiken benutzen,
die also versuchen, jetzt in einem Konstant-Satisfaction-Problem die Suche oder Durchsuche,
Lösungen möglichst gezielt zu finden.
Dass ich also wieder irgendeine Form von Heuristik angeben kann,
die mich in Richtung auf eine Lösung des Konstant-Satisfaction-Problems führt
Ausgangspunkt dafür ist der Begriff der lokalen Suche oder aber auch als gieriger Abstiegs-,
als Guardientenabstiegsverfahren oder gieriges Suchverfahren bezeichnet, weil ich,
das ist die Grundidee dabei, in jedem Schritt immer mich in die Richtung bewege,
die lokal die größte Verbesserung verspricht.
Also ich suche mir in dem lokalen Umfeld, in dem ich bin,
denjenigen Schritt aus, der mich gegeben eine Bewertungsfunktion dichter an das Optimum heranführt.
Das Problem ist eben immer, dass dies eine lokale Suche ist,
das heißt, ich treffe die Entscheidung nur auf der Basis lokal verfügbare Informationen,
ich global dann auch in die Richtung, in die richtige Richtung marschiere, das ist vollkommen ungewiss.
Also das typische Beispiel sind immer solche Gebirgsszenen,
wo ich Täler und Höhen habe und wenn ich eben hier an dieser Stelle eine lokales Abstiegsverfahren mache,
lande ich irgendwann zwangsweise in diesem lokalen Minimum,
weiß aber nicht, ob und wenn ja,
wo möglicherweise noch sich lokale minimal befinden,
die ich hätte eher finden sollen.
Und die Idee hierbei ist jetzt immer,
dass ich eine initiale Wertebelegung annehme Und von dieser initialen Wertebelegung ausgehend,
dann in Schritten die Wertebelegung verändere.
Das ist also ein Verfahren, was äußerst attraktiv ist,
im Hinblick darauf, dass es etwa in Echtzeitumgebungen jederzeit eine Lösung liefern kann.
Ich nehme immer eine Lösung an, schaue,
ob ich die Lösung verbessern kann durch lokale Suche,
indem ich bestimmte Schritte in dem Suchraum mache.
Und wenn ich aber unterbrochen werde dabei,
habe ich eine Lösung in der Hand
Muss nicht die Optik, oder es wird in der Regel
nicht die optimale Lösung sein, aber ich habe zumindest eine Lösung.
Das heißt, wenn die Zeit drängt, kann ich zu jedem Zeitpunkt
eine Lösung präsentieren. Das ist etwa nicht der Fall,
wenn ich so etwas wie die Tiefensuche veranstalte.
Dann habe ich immer partielle Lösungen zur Hand. Dann habe
ich eben die Hälfte der Vajablen bereits mit Werten versehen,
aber die andere Hälfte noch nicht.
Dann ist die Frage, was mache ich mit einem halbfertigen Stundenplan?
Oder mit einem halbfertigen Handlungsplanung für einen Roboter.
Wenn der Zeitpunkt gekommen ist, dass ich den Plan brauche,
dann bin ich möglicherweise auch mit einem nicht ganz optimalen Plan
zufrieden und kann aber in so einem Falle zu jedem Zeitpunkt ein Ergebnis liefern.
Das wäre ich dann noch unter den Anwendungen zeigen.
Wir haben also über die letzten 20, ja,
die letzten 20 Jahre hier im Hause ein System zur Analyse von Sätzen entwickelt,
was genau auf diesem Prinzip beruht.
Dass ich also erstmal eine Lösung annehme und anschließend diese Lösung versuche,
lokal zu modifizieren in der Hoffnung, bessere Lösungen zu finden.
Die Probleme, die dabei auftreten, die können wir gleich diskutieren.
Hier wird immer davon ausgegangen, dass ich am Anfang
eine eine zufällige Zuordnung von Werten zu Variablen mache.
Das ist aber nicht notwendigerweise der Fall oder es ist in vielen Fällen keine sehr,
sehr intelligente Lösung, weil ich oftmals in der Lage bin,
eine informierte, eine informierte Entscheidung zu treffen.
Wenn ich also eine heuristische Bewertungsfunktion für meine Lösungen habe,
dann kann ich sehr leicht hingehen und kann oder in vielen Fällen,
man muss es einschränken, in vielen Fällen jedenfalls,
wir machen das so, in vielen Fällen hingehen und die unären Konstruenz,
also die,
die wir bei der bei der Domänenkonsistenz verwendet haben.
Die können wir hier überprüfen und können von unter Berücksichtigung all
dieser unären Konstruenz uns die Lösungen auswählen, die am besten geeignet ist.
Das wird nicht die global optimale Lösung sein.
Denn wir haben an der Stelle völlig ignoriert,
dass es Abhängigkeiten zwischen den bayablen Belegungen gibt.
Wir nehmen eine Variable und schauen lokal nur auf diese Variable guckend,
was wird wohl die beste Wertebelegung sein, die wir dafür finden können.
Und dafür können wir heuristisches Wissen aller Art annehmen.
Zum Beispiel, was ist in vorangegangenen Problemlösungsprozessen der häufigste Fall gewesen?
Und dann nehmen wir den häufigsten Fall und haben damit,
sagen wir mal, für 70 Prozent aller Fälle bereits eine gute Ausgangsposition,
die wir nur noch relativ selten verändern müssen
Und auf die Art und Weise kann man also auch
den Startpunkt der Analyse auf intelligente Art und Weise steuern.
Wir machen das beispielsweise auch so, dass wir,
wenn wir Sätze analysieren und zwar stückweise von links nach rechts,
dass wir immer das Analyseproblem mit dem bisherigen Teilergebnis initialisieren und von dort aus weitersuchen.
Das macht einen erheblichen Vorteil. Gut, also wir haben
immer das Problem, dass wir zwei Aufgaben lösen müssen.
Das eine ist, wir müssen eine Variable uns angucken,
die wir ändern müssen oder ändern wollen.
Und wir müssen für die Variablen einen neuen Wert auswählen und
zwar möglichst einnehmen,
wir bisher
noch nicht hatten
Und das müssen wir so lange machen, bis wir eine
Zuordnung gefunden haben, die in irgendeinem Sinne zufriedenstellend ist.
Wir können auf die Art und Weise nicht garantieren,
dass wir das globale Optimum finden,
aber wir können einige Vorsorge treffen, dass wir relativ gut drankommen.
Insbesondere in Problemen, wo ich viele Lösungen habe.
Viele Lösungen, die sich alle nur relativ wenig unterscheiden,
da ist so ein Vorgehen tatsächlich angebracht.
Also nehmen Sie das typische Stundenplan-Problem für eine gegebene Schule,
mit all den Randbedingungen gibt es üblicherweise nicht nur
ein Studienplan,
sondern Milliarden davon
Und ich muss nur einen von diesen Milliarden Möglichkeiten finden.
Und da ist es mir egal, ob die sich vielleicht
in der dritten Kommastelle der Bewertung irgendwo unterscheiden.
Ich muss nicht das wirkliche Optimum finden. In anderen Fällen
ist es tatsächlich so, dass ich das Optimum finden muss.
Und dann stehe ich natürlich unter einem höheren Erfolgsdruck. Gut,
also das Ziel ist, ich möchte eine bariablen Zuordnung,
eine Wertebindung haben, die keine verletzten Konstrints mehr enthält.
Und wenn ich eine beliebige Zuordnung von Werten zu vajablen habe,
dann wird, möglicherweise durch verletzte Konstrains werden sogenannte Konflikte hervorgerufen.
Und über diese Konflikte kann ich jetzt den gesamten Prozess der Suche steuern.
Ich muss natürlich nur dort etwas korrigieren, wo ein Konflikt auftritt.
Ich werde einen Teufel tun an Stellen in dem Constraint-Satisfaction-Problem herumzudrehen,
wo bereits alles einigermaßen stimmt. Nur, wenn es sich zeigt,
dass in dem globalen Kontext damit keine Lösung gefunden wird,
dann muss ich auch dort heran.
Aber erstmal werde ich davon ausgehen, dass ich Konflikt beseitige.
Und das Ganze ist also konfliktgesteuert
Gut, ich brauche eine heuristische Funktion, die irgendwie minimiert werden muss.
Ich kann die Anzahl von Konflikten nehmen, das ist üblicherweise aber nicht
so richtig informativ. Das ist genauso wie bei der Suche,
wenn ich den minimalen Weg nur immer in Begriffen suche,
die zählen, wie viele Suchschritte ich gemacht habe,
dann, wenn ich nicht in der Lage feine,
feine Qualitätsunterschiede zwischen diesen Lösungen zu reflektieren.
Besser ist also, ich habe eine heuristische Funktion,
die mir relativ detailliert sagt,
sind das scharfe Konflikte oder sind das
weniger scharfe Konflikte
Problem, was also verschiedene Arten von Konstruenz unterscheidet. Wichtige,
die immer erfüllt sein müssen und weniger wichtige dir nur möglichst erfüllt sein sollten,
das wird dann als auch als Konstruent Optimierungsproblem bezeichnet oder als gewichtetes Construence-Settisfaction-Problem.
Wir betrachten hier aber erstmal nur harte Konstruenz und dann nehmen wir eben
die Anzahl der Konflikte als das Maß für die Güte einer Lösung.
So, wir müssen also als erstes eine Variable suchen und
dann den Wert dieser Variablen ändern, wenn wir die Variable suchen,
dann können wir oder wenn wir dieses Paar suchen,
können wir auf verschiedene Arten und Weisen vorgehen.
Das sind also fünf mögliche Euristiken, die hier stehen.
Wahrscheinlich kann man noch mehr erfinden. Also entweder wir machen
eine Suche über variablen Wertpaare, die die Anzahl der Konflikte minimiert.
Das hat üblicherweise den Nachteil, dass man davon relativ viele hat.
Denn nehmen Sie mal an, wir haben zehn Bajablen und jeder von denen kann 100 Werte annehmen.
Da müssen wir schon mal zehnmal 100 solche Paare durchsuchen.
Deshalb zerlegt man es üblicherweise in zwei Schritte,
dass man erst die vajable sich auswählt und dann einen für diese Variable,
die man als Problemfall identifiziert hat, dann einen neuen Wert sucht.
Und als Heuristik bietet sich dann an,
dass ich gucke, was ist denn die Variable,
die in den meisten Konflikten, die ich jetzt vorgefunden habe,
also ich habe eine Wertebelegung, einen Stundenplan beispielsweise,
ich werfe alle meine Konstrints da drauf und ich habe eine Liste von Konflikten und dann kann ich für jede Variable bestimmen,
ist sie Teil eines Konfliktes ja oder nein und ich kann die Anzahl der Konflikte ermitteln oder zählen,
in denen sie auftritt.
Und dann werde ich die Variable nehmen, die die meisten Konflikte hervorruft,
denn wenn ich die repariert bekomme, Und dann besteht gute Chance,
dass ich mit einem Schlag einen großen Anteil von Problemen weggeschafft habe.
Andere, ach so, ja, wenn ich,
also die Variable gewählt habe,
dann kann ich eben weder noch einen Wert für diese Variable suchen,
die die Anzahl von Konflikten für diese Variable dann minimiert.
Zweites Herangehen ist, ich nehme eine Variable,
die in irgendeinem beliebigen Konflikt auftritt und minimiere,
wie der die Anzahl der Konflikte für diese Variable oder
ich nehme eine Variable zufällig aus dem Pool der Variablen heraus
und minimiere wieder über den Wert die Anzahl der Konflikte dafür
Oder schließlich, ich kann alles zufällig wählen und akzeptiere dies als mögliche Änderung des Verfahrens,
solange die Bewertung sich nicht verschlechtert. So,
dann haben wir also ein Spektrum von sehr informierten Verfahren bis hin zu völlig uninformierten Verfahren,
die also einfach nur würfeln und sagen, hier,
ich drehe hier mal, ich drehe da mal,
vielleicht wird es ja besser.
Aber wenn ich gut bin, wird es wenigstens nicht schlechter.
Wenn man jetzt das einschätzt, Sieht es ja so aus,
dass man sich Eier hier an diesem Ende der Spektrums orientieren sollte,
als an diesem Ende des Spektrums.
Gibt es auch gute Gründe, dass man hier eine solche Zufallsauswahl mit einbaut?
Oder ist das vollkommener Unfug? Ein Beispiel,
was wir da in der Tafel haben,
würde man dann eine gewisse Chance haben,
auf das absolute Menge zu bitten,
wenn einer sonst die Thomas betritten, wenn es Luca hat.
Ja gut, aber das kann ich auf...
Sie meinen, damit kann ich das besser finden
als damit
Oder wie ist das Argument? Ja. Ja,
vielleicht willst du dich in ein großer Weite-Bereich ist.
Und man nicht mal genau weiß, woran habe ich den jetzt genau an.
Dann ist es ja im Grunde egal, an welche Stelle man anfängt.
Dass man dann Glück hat. Ja gut,
das ist nicht nur die Frage, wo man anfängt.
Das ist die Frage, durch das gesamte Verfahren hindurch,
was mache ich als nächsten Suchschritt?
Ja. Ich kenne einfach schon das Mitteln von den Kosten,
also der Kosten für die Mittelzimmermittel der Konflikte,
so hoch ist,
dass es sich
gar nicht lohnt
Also wenn man das ausrechnet, hochkonfliktiert gesteht. Aha,
warum sollte sich das nicht lohnen? Weil das vielleicht schon so viel Arbeit ist,
dass man... Ach so, ja, okay,
dass die Kostenermittlung schon so viel Aufwand erfordert,
dass der Nutzen, den man dadurch erzielen kann, verschwindet.
Das ist wieder die Schere zwischen Meta-Level-Aufwand und Basislevel-Aufwand.
Das ist aber, glaube ich, nicht das entscheidende Argument hier.
Das entscheidende Argument ist, dass eine solche Heuristik sich immer verrennen kann.
Insofern ist also der Verweis auf diese Kurve schon richtig gewesen.
Ich kann hier immer, indem ich mich nur lokal orientiere,
in eine Richtung in dem Suchraum bewegen,
wo es keine Lösung gibt
Das stellt sich aber dann erst heraus, wenn ich wirklich
das globale Bild mir anschaue. Und das kriege ich erst,
wenn ich alles durchprobiert habe, was sich durchprobieren lässt.
In solchen Fällen kann es tatsächlich sehr nützlich sein,
dass ich stochastische Elemente einbaue und das an bestimmten Stellen dann Entscheidungen zufällig wähle,
weil mir das die Chance gibt,
dass ich mich aus einem solchen lokalen Minimum befreie und über eine Zufallsauswahl plötzlich hier in diesem Bereich springe.
Eine Garantie gibt es natürlich nicht, aber ich kann es wenigstens versuchen.
Und deshalb ist die Antwort also für diese Fragen immer,
Sowohl als auch. Das eine hat Vorteile,
das andere hat Vorteile und ich werde üblicherweise herangehen,
zu versuchen, die Dinge miteinander zu kombinieren.
Ja, die Folie ist nur zur Unterscheidung verschiedener Szenarien,
die wir haben zwischen diskreten Werten,
die wir hier oben haben,
also auch wieder ein Spektrum und kontinuierlichen Werten,
die wir hier unten haben
Wenn wir also kleine und ungeordnete Domänen haben,
dann können wir eben die aus der Liste der möglichen Werte,
die wir haben, auswählen.
Wenn wir große und geordnete haben und hinter dem geordnet,
steckt ja nicht etwa ephabetische Ordnung, sondern numerische Ordnung,
dann können wir natürlich so etwas wie Nachbarwerte wählen.
Das können wir für die alphabetische Ordnung auch machen.
Nur nutzt es uns meistens nicht. Also das Alphabet ist
eine willkürliche Ordnung, die mit dem Problem dahinter nicht
das Geringste zu tun hat
Auch, dass die, dass zwei Wörter im Wörterbuch hintereinander stehen,
weil sie eben sehr ähnlichen Buchstabenbestand haben,
sagt nichts über ihre semantische Ähnlichkeit,
über ihre grammatische Ähnlichkeit aus oder dergleichen mehr.
Also die alphabetische Suche ist ein rein Willkürlicher.
Hier ist immer numerisch gemeint, ja. Was war denn
der richtige Faktor, Buche, der da nicht steht,
dass auf die Straße hoch?
Sorry, kleine Augen, ich habe kein Wort verstanden.
Ich sag dir, das ist doch die Straße los,
dass das
vielleicht bedeutungsähnliche Wörter sind
Gleich null. Gleich null. Gucken Sie sich jedes beliebige Wörterbuch an.
Da ist, natürlich treten Sie in Rudeln auf,
dass ich also über Wortableitungen etwas habe. Also was weiß ich,
umleiten und Umleitung und dergleichen wird hintereinander im Wörterbuch stehen.
Das ist richtig. Das sind die Wortbildungsmechanismen, die sich dort niederschlagen.
Aber wenn ich jetzt wirklich nur die Stammform nehme,
also was Sehen mit Sehen zu tun hat, nichts.
Also hier ist also eine Ordnung gemeint,
die bezüglich des Suchproblems tatsächlich eine relevante Information enthält
Dann kann ich also Nachbarwerte auswählen, um
die Vagable zu ändern. Also die Idee steckt dahinter,
dass ich natürlich erst mal in relativ kleinen Schritten versuchen werde,
zu optimieren, ehe ich große Schritte, große Sprünge im Suchraum mache,
die dann doch eher einen ungeordneten Charakter haben.
Und der letzte Fall sind dann schließlich kontinuierliche Domänen,
wo ich tatsächlich eine Funktion zur Verfügung habe, die ich differenzieren kann.
Und das ist dann die eigentliche Gradientenabstiegsverfahr, das eigentliche Gradientenabstiegsverfahren
Dann können wir nämlich die Ableitung über die heuristischen Funktionen bilden.
Das ist hier angedeutet. Wir leiten die heuristische Funktion ab nach der Variable,
die wir gerade betrachten und schauen dann oder brechen auf der Basis den Schritt,
den wir im Suchraum machen, um den nächsten Wert auszuprobieren.
Ja, und dann haben wir hier einen Faktor,
dieses Etta, das ist ein Parameter,
mit dem wir die Schrittgröße einstellen können.
Und den können wir tunen und können je nach Art des Suchraumes sagen,
ob denn große Schritte gemacht werden sollen oder kleine Schritte
gemacht werden sollen
Auch hier wieder, es gibt keine universelle Heuristik,
dass man sagt, große Schritte sind besser als kleine Schritte.
Große Schritte können leichter zu führen,
dass ich über das globale Minimum hinweg springe und eben
einen großen Schritt mache und dann wieder hier drüben lande,
wo ich wieder in einem lokalen Minimum hänge.
Dann habe ich eben von hier aus den Sprung nach da
gemacht und bin wieder in dem lokalen Minimum.
Kleine Schritte haben das Problem, dass ich endlos lange brauche,
um mich rings ein lokales Minimum anzunähern und praktisch keine Chance habe,
aus so einem Tal jemals wieder zu entkommen.
Also es ist lang andauernd und sehr empfindlich gegenüber lokalem Minimal
Ja, dann muss man unterscheiden, lokale minimal sind also wirklich dann senken,
wo es von allen Seiten aus in ein Tal hineingeht.
Sehr schlecht sind solche Plateauflächen,
wo also die heuristische Bewertung konstant bleibt über einen großen Raum.
Wenn ich mich auf sein Plateau befinde,
kann ich in jede Richtung gucken und ich sehe nicht,
oder die Heuristik gibt mir keinerlei Informationen,
in welche Richtung ich mich eigentlich bewegen sollte.
Da sind also die heuristischen Werte völlig uninformativ.
Sie verraten mir nichts, was eigentlich klug wäre zu tun.
Und problematisch sind auch die, sind solche Gradstrukturen,
auf einer Gratstruktur habe ich immer die Situation,
dass es rechts und links nach unten geht.
Oder nein, wir müssen umgekehrt, wir suchen das Minimum.
Also das ist rechts und links nach oben geht.
Da will ich nicht hin. Aber es ist immer die Frage,
soll ich mich so wieder so lange in dem Tal
bewegen oder soll ich mich lieber so lang bewegen?
Wo ist das Minimum? Und dies gekoppelt mit kleinen Unebenheiten
führt also zu dem Problem, das sich lokal nicht entscheiden kann,
was ist eigentlich eine gute Bewegungsrichtung.
Aber hier hilft es dann, wenn ich ein bisschen in
die Zukunft gucken kann. Wenn ich also so drei,
drei, vier Schritte nach vorn schauen kann und dann bestimme,
ob es nach oben oder nach unten geht,
dann kann ich mich auch in so einer Situation einigermaßen sinnvoll verhalten.
Also das ist zur steuernden Wirkung einer solchen Heuristik in einem,
in einem kontinuierlichen Raum. Was hier überhaupt nicht angesprochen ist,
aber da wäre ich im Zusammenhang mit den Beispielen dann nächste Woche noch draufkommen,
das ist die Situation,
dass ich die Bewertung gar nicht über den Lösungen mache oder
nur indirekt über den Lösungen mache,
sondern die Bewertung über den Konstraints mache
Das ist ein Ansatz, den wir hier verfolgt haben,
dass wir an die Konstremsbewertungen ranschreiben.
Und immer dann, wenn ein Konstrain verletzt ist,
geht diese Bewertung des Konstrems in die Bewertung der jeweiligen Lösung ein.
Und dann kann ich auf dieser Basis eben auch Konflikte ermitteln.
Ich kann ermitteln, was sind schlimme Konflikte, die ich zuerst beseitigen muss.
Was sind weniger schlimme Konflikte, die ich möglicherweise auch tolerieren kann.
Und ich kann all diese Suchtechniken auch verwenden.
Das ist nämlich genau dann die Heuristik, ein Konstrem,
was große Bedeutung hat, muss zuerst repariert werden,
in die Richtung sollte ich mich zuerst bewegen.
Die anderen können warten. Ich kann dann auch so etwas wie,
Tabulisten kommen noch anwenden. Also viele der Techniken sind auch dann anwendbar,
werde ich nicht die Lösung selbst bewerten kann,
sondern werde ich das indirekt über die Konstrienz mache.
Das ist im Buch überhaupt nicht angesprochen. Aber da komme ich nochmal darauf zurück. So,
wenn wir uns jetzt über zufällige Algorithmen,
wir waren ja bei der Frage, können wir nämlich auch nicht,
also was ist besser, ein rein deterministisches Vorgehen,
wo ich also tatsächlich mich immer in die Richtung bewege,
wo der Größte Zugewinn an Lösungsqualität zu erwarten ist oder sollte ich
nicht von Zeit zu Zeit auch zufällige Schritte im Suchraum machen
Und das sind also die beiden Alternativen, die ich habe,
gierige Abstiegssuche. Ich bewege mich immer in die Richtung,
die lokal, die größte Verbesserung bietet. Und ich bewege mich
so lange, bis ich mich nicht mehr verbessern kann.
Dann bin ich in einem, zumindest in einem lokalen Minimum,
wie weit ich von einem globalen Minimum entfernt bin, das weiß ich nicht.
Und die andere, das andere Extrem ist,
ich nehme zufällige Werte aus dem Suchraum und nachdem ich das eine Weile gemacht habe,
ich mache also ein Lotteriespiel,
ich ziehe immer neue Lose und die beste Bewertung,
die ich währenddessen gefunden habe, die und gebe ich nach außen.
Und der Erfolg ist ungefähr wie beim Lotteriespiel.
Ich werde also vermutlich viele Zweier- oder Dreier-Richtige ziehen,
wo es, was weiß ich, drei Euro Gewinn gibt.
Aber ob in dem Topf auch noch ein Fünfer drin ist,
das weiß ich nicht. Wo ich den richtig großen Gewinn
machen kann. Und die Frage ist eben,
jetzt kann man die beiden Verfahren, die beide Vor- und Nachteile haben,
kann man die nicht so kombinieren, dass sie tatsächlich sich gegenseitig ergänzen.
Und da haben wir zwei Möglichkeiten. Wir machen eine
Ein Guardiantenabstiegsverfahren. Das heißt, wir bewegen uns tendenziell immer
in die Richtung, wo die Ergebnisse besser werden.
Aber wir erlauben zusätzlich stochastische Bewegungen. Und das gibt grundsätzlich
zwei Möglichkeiten, diesen Zufall einzubauen. Das eine ist,
wir wählen zufällig einen Nachbarn aus, zu dem wir uns bewegen.
Oder aber wir machen zufällig irgendwann mal einen Neustart. Dass wir sagen,
okay, wir haben jetzt mit dieser vaiablen Belegung lange genug gesucht,
die Lösung, die wir gefunden haben,
sind alle nicht so,
dass wir zufrieden sind,
damit jetzt machen wir wieder auch eine zufällige Neubelegung aller
aller Variablen und fangen von dort an
neu zu suchen
So, was ist also die, aus der Sicht des Ressourcenaufwandes, die bessere Variante? Ich würde sagen,
die ersten, weil beim Uncaptain Neustart, wenn man sagt halt,
Unternehmen der Teil des Grafens bis zu einem bestimmten Gradzeichen,
also sich angeschaut, du weißt,
wo er das umgehen muss, weil es komplett neu startet,
kann es dann wieder sein,
dass man wieder links anfängt und quasi das Gleiche nochmal macht und für jeden,
der dann steppt, ist es halt so,
dass ich gerade bei meiner Suche von einer von einem Ort Chance habe,
komplett anderen zu kommen.
Und da wir, ich fange es mal wieder zu malen.
Ja, gut. Nichts sein muss, aber okay,
ja, die Überlegung sind alle richtig.
Man muss natürlich ein bisschen mehr hinter die Kulissen gucken,
was jetzt tatsächlich dort passiert. Also wie groß ist die Wahrscheinlichkeit,
dass ich Doppelaufwand erzeuge, dass ich also Dinge überprüfe,
die ich schon mal überprüft habe.
Wenn der Suchraum hinreichend groß ist, ist die Wahrscheinlichkeit fast gleich null.
Dass ich durch Zufallsauswahl jetzt nochmal in den gleichen Bereich
des Suchraumes komme, den ich eh schon abgeklappert habe.
Zweite Frage ist, wie viel Buchhaltung habe ich während der Suche getrieben?
Da kommen wir gleich noch drauf, über Tabulisten kann ich
mir aufschreiben, welche Zustände ich schon alle besucht habe.
Wenn dort bereits viel Aufwand reingeflossen ist,
dann geht der natürlich durch so einen Neustart völlig verloren
Dann fange ich wieder mit der Nullinformation an und muss diese
Information über die Grundstruktur des Suchraumes erst wieder mühsam aufbauen.
Was haben wir noch für Aspekte zu beachten?
Es hängt natürlich davon ab, wie ich das Gesamtszenario anlege.
Also auch bei diesem zufälligen Neustart ist es mir natürlich überlassen
zu sagen, wie oft ich das machen will.
Ich kann das zweimal machen und dann aufhören. Ich kann es aber
auch 10.000 Mal machen und dann immer noch nicht zufrieden sein.
Also es hängt natürlich auch ein bisschen von dem davon ab,
wie Wie gut sehen meine bisherigen Lösungen aus und macht es Sinn,
nochmal einen Neustart zu versuchen, ja oder nein.
All solche Sachen muss man da mit einbeziehen in die Überlegung.
Man kann versuchen, Heuristiken aufzubauen,
indem man eben sich jetzt solche Energielandschaften vorstellt,
wo über die Bewertung jetzt das Suchverfahren das Minimum finden soll.
Also es entspricht genau diesem hier. Und da können
die Funktionen vollkommen unterschiedlich sein, eher glatt,
wie in diesem Beispiel oder eher rau, wie in diesem Beispiel.
Man muss immer vor Augen sich halten,
dass das eine hochgradige Vereinfachung ist.
Wir reden hier über ein eindimensionalen Raum
und veranschaulichen uns etwas
Im eindimensionalen Raum, wir müssen dann natürlich diskutieren,
was heißt das, in einem hochdimensionalen Raum.
Also, weiches Verfahren wäre jetzt in diesen beiden Suchräumen das Bessere.
Lieber eher stochastisch oder lieber eher geredet, dessent,
also gradienten Abstiegsverfahren. Ja. Er war wie Theater,
das war fast schon besser,
weil ich da ja
ganz viele Mühe mache
Nicht das irgendwo anfangen müssen, gerade jetzt. Vater,
dann bin ich ja relativ schnell, habe ich einen Punkt gefunden,
den ich für mich als Müll noch ausgemacht habe.
Ich weiß nicht, was du gewollt hast. Das heißt,
das Channelieren sollte relativ schnell, weil du fragst,
dass ich das gewollt habe, das ist relativ mies.
Ja gut, also auch hier muss man wieder gucken,
wir hatten diesen Parableter Edta,
mit dem wir die Schritt weiter einstellen können,
wenn also die Schrittweite hier größer ist als ein so ein kleiner Zacken,
dann werde ich über den Zacken auch hinwegkommen.
Also sagen wir mal, es sollte deutlich größer sein,
Auch da muss man wieder sehr viele Detailinformationen betrachten.
Natürlich, wenn ich hier in einem solchen globalen Minimum,
in einem lokalen Minimum bin,
da muss ich einen wirklich großen Schritt machen,
um möglicherweise noch ein tieferes Teil zu finden.
Und ein solcher großer Schritt ist typischerweise durch Giri-Suche nicht zu machen.
Der ist hier eher noch hinzubekommen. Wenn die Schritt weiter allerdings
zu klein ist, dann ist die Wahrscheinlichkeit sehr hoch,
dass ich in irgendeinem dieser Zacken hängen bleibe und dort nicht mehr rauskomme,
obwohl eigentlich tendenziell die Richtung des Abstieges deutlich ist.
Mit einer größeren Schrittweite könnte ich das Problem da tatsächlich lösen
Also von daher kann man in diesen einfachen Fällen sich ein paar Heuristiken vorstellen.
Aber was passiert jetzt, wenn ich nicht eine Dimension habe,
sondern 100 oder 1000? Kann ich dann solche Überlegungen auch
noch anstellen? Die Antwort ist ganz klar, nein.
Ich weiß nicht mehr, was in diesem Suchraum passiert.
Ich kann es mir nicht mehr darstellen.
Es gibt keine Visualisierungstechniken, die so etwas erfassen können.
Das heißt, ich weiß nicht, wie ein solcher Raum aussieht.
Es gibt auch keine vernünftigen Beschreibungen,
wo ich jetzt solche qualitativen Aspekte eines Suchraumes irgendwie erfassen könnte.
Das heißt, hier bin ich völlig blind über das,
was man eigentlich zweckmäßigerweise tun sollte. Ich kann alles,
was ich tun kann, ist Experimente machen, MPRI betreiben,
verschiedene Parametersetzungen ausprobieren, sehen, wie verhält sich das Verfahren.
Ich kann aber trotzdem nicht sicher sein, ob es nicht bei der nächsten,
beim nächsten Input bereits sich wieder völlig anders verhält.
Und insbesondere auch kann es passieren, dass in unterschiedlichen Teilen
des Suchraumes es manchmal so aussieht und manchmal so aussieht.
Und das ist eines der Hauptargumente, was dagegen spricht,
ein Verfahren für den gesamten Suchraum anzuwenden, sondern eine Kombination lieber versuchen,
dass man lieber eine solche Kombination versuchen sollte,
wo man eben tendenziell immer versucht,
zum nächsten Nachbarn zu wandern, der besser ist,
dass man dann aber das kombiniert mit einigen zufälligen Schritten da drin und dass man das auch kombiniert mit völlig zufälligem Neuanfang.
Weil ich in diese Suchräume nicht reingucken kann,
weil ich nicht in der Lage bin,
die Parameter zu bestimmen, ich eben von vornherein aus davon,
es bleibt mir nichts anderes übrig, als alle drei Sachen zu probieren.
In der Hoffnung, dass ich irgendwo mal eine gute Lösung finde.
Erster Schritt ist also zufälliges Wandern im Suchraum,
wenn ich jetzt einen vajablen Wertpaar suche,
mit dem ich weiter arbeiten möchte,
dann mache ich die Auswahl so,
dass in einer bestimmten Anzahl von Fällen nicht das Paar gewählt wird,
was lokal am besten aussieht,
sondern dann
eine stochastische Zufallsauswahl macht
Und wenn ich also erst eine vaiable wähle und dann einen wert,
dann nehme ich eben als erstes irgendeine Variable,
die in den meisten Konflikten beteiligt ist und eben dieses Sometimes ist wichtig.
Und manchmal nehme ich irgendeine vaiable, die in einem beliebigen Konflikt
beteiligt ist und manchmal nehme ich eben einfach irgendeine vaiable.
Und das Gleiche eben für die Auswahl des Wertes in bestimmten Anzahl von Fällen,
nehme ich den besten Wert und in den übrigen Fällen
nehme ich eben einen zufälligen Wert,
um damit weiterzusuchen
Die Frage ist nun, wie kann man einen solchen Algorithmus eigentlich bewerten?
Also wie gut ist er, wie schnell ist er,
wie schnell kann er mein Problem lösen, mit welcher Qualität kann er dieses lösen?
Und da sind wir in einem kleinen Dilemma und das Dilemma besteht eben darin,
dass ich Fälle habe, wo ich beispielsweise,
das sind rein fiktive Zahlen hier,
die nur verdeutlichen sollen, was eigentlich der Entscheidungsspielraum ist,
den man hat,
die in einer bestimmten Anzahl von Fällen eben sehr schnell ein Ergebnis liefern,
aber dafür in Mehrzahl der Fälle
überhaupt nicht terminieren
Oder aber irgendeiner der 60 Prozent relativ schnell lösen kann,
aber den Rest überhaupt nicht behandeln kann. Oder aber irgendeiner,
der hundertprozentige Sicherheit bietet, aber dafür extrem langsam ist.
Eine solche Auswahl muss ich jetzt treffen.
Das sind die Konsequenzen dieser Mixtur, die ich hier einbaue.
Sorry, das war die falsche Richtung,
wo ich eben hier diese Sumtimes jetzt wählen muss.
Also was heißt Sometimes? Ist das in 20 Prozent
aller Fälle oder ist das in 80 Prozent aller Fälle
oder ist es in 0,3 Prozent aller Fälle?
Da muss ich
Entscheidungen treffen
Und ich muss unter diesen Entscheidungen sagen können,
der resultierende Algorithmus hat jetzt dieses oder jenes Verhalten.
Und das tragisch an der Sache ist, dass ich solche typischen Statistiken,
wie mittlere Laufzeit oder eben auch ein Medien oder ein Modus für die Laufzeit,
das gibt mir relativ wenig Informationen, was ich tatsächlich brauche,
sind solche Verteilungen, wo ich eben hier unten die Zeitachse habe.
Also das ist die Anzahl der Schritte,
die ich machen muss. Und auf der senkrechten Abtrage,
was ist die Qualität, die ich da erreichen kann?
Und dann kann ich ungefähr informiert abschätzen,
ob dieses Verfahren für mein gegebenes Problem geeignet ist.
Also das hier ist die 30-Prozent-Lösung, die 30 Prozent ist
bereits nach zehn Schritten erreicht. Ich kann also garantieren,
dass nach zehn Zeiteinheiten 30 Prozent aller Fälle eine gute Lösung gefunden haben.
Bei dem anderen muss ich 100 Schritte warten,
bis ich 60 Prozent aller Fälle korrekt verhandeln kann und um die dritte Parametersetzung ist dann,
dass ich 1000 nach 1000 Schritten 100 Prozent aller Fälle richtig behandeln kann.
Und dann muss ich in dem Begriff meine Anwendung da drauf
schauen und muss sagen, so lange kann ich nicht warten
Aber das ist mir vielleicht zu niedrig. Aber vielleicht die
blaue Kurve ist ein guter Kompromiss zwischen Geschwindigkeit und Qualität,
die ich da erreichen kann.
Man muss aber immer im Hinterkopf haben, dass das Verteilungskurven sind.
Die geben nicht einen deterministischen Zusammenhang zwischen Schrittanzahl. Also ich kann nicht garantieren,
dass ich nach 100 Schritten die 30 Prozent erreicht habe.
Das sind eben Wahrscheinlichkeitsverteilungen. Das heißt, es kann natürlich
Abweichungen davon geben. Der Einzelfall kann in extremer Weise davon abweichen.
Eine Variante dieser lokalen Suche ist, dass das simulierte Abkühlen oder Simulated a Nealing
Da habe ich jetzt einen Parameter drin, der sich über
der Zeit ändert, der mit relativ großen Werten anfängt.
Und diese Werte werden sukzessive verkleinert. Und ich wähle also
eine Variable zufällig, einen Wert zufällig und schaue,
ob dieser Wert mir eine Verbesserung bringt oder nicht,
wenn er eine Verbesserung bringt, na wunderbar, dann ist die willkommen.
Wenn es keine Verbesserung ist, dann mache ich eine Würfelentscheidung.
Dann würfle ich und bestimme, ob ich den nehmen sollte
oder ob ich ihn nicht nehmen sollte.
Und das wird eben von diesem globalen Parameter abhängig gemacht und
in Analogie zum Abkühlen von Metallschmelzen, wird das also als Als simuliertes Abkühlen bezeichnet.
Also in Metallschmelzen hat man auch den Effekt, dass mitsinkender Temperatur die Änderungen,
die an dem Gesamtgefüge gemacht werden können, immer kleiner werden.
Also wenn ich am Anfang noch eine dünnflüssige Schmelze habe,
dann können sich dort drinnen Zirkulationen bilden.
Die gesamte Metallbrühe wird ständig umgewälzt durch die thermalen Strömungen.
Und je geringer die Temperatur wird,
umso kleiner wird der Spielraum für solche Bewegungen.
Und der ist Metall erstarrt nicht ruckartig, sondern die Bereiche,
in denen noch Austauschoperationen stattfinden können,
die werden immer kleiner
Und das wird eben beschrieben hierdurch eine solche Wahrscheinlichkeitsfunktion,
die eben hier den Parameter Tee drin hat.
Und zwar steht da hier im Nenner des Exponenten. Das heißt,
je kleiner der wird, umso größer wird dieser Exponent.
Und nee, Moment, was rede ich für einen Umfug?
Wir haben uns doch je kleiner er wird,
umso kleiner muss die Wahrscheinlichkeit werden
Gute Frage. Gut, wir schauen uns die Tabelle an.
Hier sind Beispiele dafür angegeben. Vielleicht kommen wir dann weiter.
Wir verstarten also mit einer relativ großen Temperatur. Und hier ist die Wahrscheinlichkeit dafür aufgetragen,
mit welcher Wahrscheinlichkeit akzeptiert das Verfahren dann einen einfachen Schritt,
der schlechter, der eine Verschlechterung mit sich bringt,
oder zwei hintereinander folgende Schritte, die beide Verschlechterungen mit sich bringen,
oder drei hintereinander liegende Schritte,
die jeweils Verschlechterungen mit sich bringen.
Und dann sieht man eben,
mit relativ hoher Wahrscheinlichkeit wird noch der der einer Fall berücksichtigt
und das fällt dann langsam ab zu den komplexen Fällen.
Aber immerhin in 70 Prozent aller Fälle wird auch ein Dreierschritt,
der in drei Schritten hintereinander keine Verbesserung bringt, noch als akzeptabel angesehen.
Wenn man die Temperatur dann aber langsam absenkt,
dann sieht man, dass diese Wahrscheinlichkeiten drastisch gegen Null gehen.
Und man hat immer noch die Abstufung,
dass natürlich der eine Schritt eher akzeptiert wird,
als die Zweier- und Dreierschritte,
aber verglichen mit den anderen Temperaturen ist eben der Bewegungsspielraum
drastisch eingeschränkt
Also solange die Temperatur hoch ist,
kann ich eben jetzt noch Schritte im Suchraum machen,
die mich in die lokalen Bewertungsfunktionen in die falsche Richtung bewegen.
In der Hoffnung, auf diese Art und Weise einen anderen Teil des Suchraums zu erfinden,
der noch möglicherweise Ergebnisse enthält, wenn die Temperatur langsam absinkt,
wird die Wahrscheinlichkeit, dass das möglich ist, immer geringer.
Dann bin ich also gezwungen,
also hier unten bin ich praktisch bei der gierigen Suche angekommen,
ich mache nur noch den Gradientenabstieg und lande im nächsten lokalen Minimum.
Hier oben kann ich eben noch relativ freizügig im Suchraum hin und her spazieren.
Und von diesem Ansatz gibt es zahlreiche Varianten.
Eins ist der große Flutalgorithmus, The Great Deluge,
der also das Bild des steigenden Wasserspiegels bemüht, in einer Halliglandschaft beispielsweise,
wo ich anfangs noch frei mich im Watt bewegen kann,
weil alles trocken gefallen ist.
Und wenn das Wasser langsam steigt, werden die Bereiche,
in denen ich mich noch bewegen kann, sukzessive immer kleiner.
Bis ich schließlich auf die Hallig eingegrenzt bin und
auch dieser Bereich wird dann immer weiter eingeschränkt.
Es ist also eine sehr verwandte Idee zu diesem simulierten Abkühlen
Ja, Tabulisten hatte ich schon angekündigt,
in einem solchen Verfahren bin ich jetzt natürlich leicht in der Lage,
immer wieder zwischen Punkten hin und her zu springen.
Also meine zufällige Auswahl akzeptiert einen Schritt, der in die schlechte Richtung führt.
Was wird wohl das Nächste sein, was mein Suchalgorithmus macht?
Er wird über den Gradientenabstieg genau wieder in den Ausgangspunkt zurückfallen. Das heißt also,
ich bin hier irgendwo in einem solchen lokalen Markt,
Minimum, ich mache einen zufälligen Schritt hier nach oben,
lande in diesem Punkt, dann ist die, irgendwann,
vielleicht mache ich auch zwei oder drei Schritte nach oben,
bin aber immer noch an diesem Hang.
Und in dem Augenblick, wo ich wieder nach der Gierigen suche,
das nächste Minimum finden möchte,
dann wandere ich wieder zurück und lande wieder in diesem Ausgangspunkt.
Also die Wahrscheinlichkeit, dass solche kleinen Zyklen ablaufen,
die ist sehr, sehr groß.
Und das kann man verhindern durch eine Tabuliste, wobei diese Tabuliste,
aber das ist das Entscheidende dabei, die ist Längen beschränkt.
Die zeichnet also nicht die gesamte Historie auf, was ich
schon mal untersucht habe, sondern nur die letzten Augenblicke.
Und die Länge der Liste ist natürlich ein Parameter,
den ich frei wählen kann.
Der muss wieder
getuned werden vom Systementwickler
Die Idee ist dann ganz einfach, ein Zustand,
der auf der Tabu-Liste ist, der wird nicht nochmal angesteuert.
Und wenn, denn Karl, gleich eins ist der Extremfall,
also unsere Tabu-Liste enthält nur das aktuelle Element, dann ist sie praktisch nicht wirksam.
Dann kann ich also nach belieben zyklische vajablen Bindungen austauschen oder zyklisch
die barjablen Bindungen austauschen. Und gut, das ist auch trivial,
dass die Tabu-Liste befasst sich ja immer Achso, ja,
ich muss nicht immer die gesamte, die gesamten Wertebindungen abspeichern.
Ich kann es auch mit partiellen Wertebindungen machen. Also alle die Sachen,
die ich in der letzten Zeit geändert habe, da dies ja zeitbeschränkt ist,
muss ich also nicht immer den gesamten Suchzustand abspeichern.
Und trotzdem ist das Ganze aber, wenn ich die Liste relativ lang mache,
dann wird es natürlich aufwendig auf der Liste zu suchen, ob ich diesen Zustand schon mal hatte oder nicht hatte.
Bisher sind wir immer davon ausgegangen, dass wir einen einzigen Prozessor haben,
der in diesem Suchraum sich bewegt, der also Nachbarknoten aktiviert,
prüft, ob diese besser sind oder nicht besser sind,
von Zeit zu Zeit würfelt, um zu ermitteln,
was man als nächstes wohl Angehen sollte und wir gucken uns jetzt ein paar Varianten des Themas an,
wo ich nicht einen einzigen Suchzustand habe, sondern wo ich eine ganze Population von Suchzuständen verwalte.
Und diese Idee von paralleler Suche durch viele Suchinstanzen,
die es relativ populär,
wir gucken uns ein paar der Sachen an,
das ist bei weitem nicht vollständig,
also sowas wie Schwarmcomputing wird hier nicht abgedeckt,
die Ameisenalgorithmen wird nicht mit abgedeckt,
das sind alles Instanzen von solcher paralleler Suche,
wo ich also davon ausgehe,
dass viele Ameisen in der Gegend herumkrabbeln und sich über die Pheromone ihre Informationen austauschen oder aber Schwarmverhalten von Fischen,
Insekten,
Vögeln und so weiter,
die also über die Abstandsrelation zu den jeweiligen Nachbarn das Gesamtverhalten des Schwarms steuern und den gesamten Schwarm etwa weg von einem Feind,
einem Fressfeind beispielsweise oder hin zu einer Nahrungsquelle bewegen können.
Und gut, also das sind mal
ein paar von den Ideen,
die es da gibt
Fassen in jedem Suchzustand immer alle Elemente der Population an und versuchen sie
wieder aufgrund unserer Suchstrategie in eine optimale Richtung zu bewegen.
Und wann immer ein Individuum eine Lösung gefunden hat,
dann kann das natürlich nach außen gegeben werden.
Und im Prinzip sieht das so aus,
wie als würde ich das Ganze kaum mal neu starten,
die Suche, also random Restart betreiben.
Das stimmt allerdings nicht ganz, weil ich eben dadurch,
dass ich das parallel mache, der erste Suchzustand der erste
Der erste Zielzustand, bereits mitgeteilt werden kann,
sobald er gefunden wird. Wenn ich das seriell mache,
indem ich das Karma hintereinander starte, dann kann es natürlich sein,
dass er beim ersten Mal bereits endlos lange sucht und keinen Suchzustand finden,
äh, schon wieder, keinen Zielzustand findet.
In dem Augenblick, wo ich die wirklich parallel abarbeite,
kann ich eben sicherstellen, dass der Schnellste dann eben seine Lösung anbieten kann.
Und das ist eigentlich auch die Grundlage des Schwarmverhaltens.
Da geht es nicht darauf an,
bis der Letzte etwas gefunden hat,
sondern wenn der Erste signalisiert,
Futter hier,
dann bewegt sich
der Schwarm in die Richtung
Eine einfache Idee ist die sogenannte Strahlsuche. Da gibt es
auch verschiedene Übersetzungen dafür für das englische Wort Beam Search.
Ich finde immer noch, dass der Strahl
die beste Metapher ist dafür. Es kommt einfach daher,
dass ich mich mit einer Taschenlampe, die ein Strahl erzeugt,
die Taschenlampe halte ich vor mir und ich bewege mich in den Suchraum,
in die Tiefe des Suchraums hinein.
Und dann sieht man, wie seitwärts aus dem Strahl
immer weiter die Bereiche ins Dunkel fallen.
Der Strahl hat natürlich nur eine begrenzte Reichweite.
Ich sehe nicht die Zielzustände da hinten, aber ich kann
die unmittelbare Umgebung, die kann ich dadurch erleuchten.
Aber in dem Augenblick, wie ich mit der Suche fortschreite,
schließe ich immer größere Bereiche aus dem Suchraum aus.
Das ist das, was seitlich aus dem Strahl herausfällt.
Das ist die Metapher, die benutzt wird,
die Baumsuche kann man für ganz verschiedene Verfahren einsetzen,
dass sie hier im Kontext von Konstruenzset Descraction eingeführt wird, ist vollkommen beliebig.
Das hätte man auch bereits bei der dynamischen Programmierung machen können.
Also erinnern Sie sich beispielsweise an die an die Zeichenketten vergleicht,
den wir gestern noch diskutiert haben, oder diese Spracherkennungsprobleme,
wo ich Ähnlichkeiten zwischen Signalsequenzen ermitteln will.
Auch dort kann ich das anwenden,
wenn ich etwa die beste Lösung habe, dann kann ich sagen,
okay, ich betrachte jetzt noch N weitere gute Lösungen,
die nicht die beste Lösung sind,
aber die dicht an der besten Lösung dran sind.
Und auf die Art und Weise werde ich also
robuster Gegensuchfehler
Nein. Auf die Art und Weise werde ich effizienter.
Ich riskiere, ich minimiere aber das Risiko,
durch Einzelentscheidungen das Optimum verpassen zu können. Also dadurch,
dass ich mehrere Ergebnisse im Beam behalte,
habe ich noch eine gewisse Varianz in den Suchergebnissen,
sodass ich also auch sicher sein kann,
wenn ich lokal auf dem Holzpfad bin,
ich habe noch ein paar Alternativen in der Betrachtung,
die möglicherweise auch das Optimale oder wenigstens ein gutes Ergebnis
liefern können
So, eine Beamensuche ist immer eine Breitensuche. Anders geht
es nicht. Da ich verschiedene Pfade miteinander vergleichen muss,
muss ich Pfade der gleichen Länge haben,
um eine vernünftige Bewertung zu bekommen.
Und ich muss irgendwie die Beamenbreite festlegen. Das kann ich
auf verschiedene Arten und Weisen machen. Entweder ich sage,
wie viele Elemente in dem Beam drin sein sollen.
Also ich lege die Zahl K fest, die hier steht.
Oder ich mache es relativ, dass ich sage,
ich betrachte alle die Elemente,
die sich nicht weiter als eine bestimmte Differenz in einem Gütemaß
vom Besten entfernt haben.
Das geht auch
Einfacher zu implementieren, weil ich eben immer vorhersehen kann,
wie breit mein Beam ist, ist natürlich die Variante mit dem K-Individuum.
Die werde ich deshalb bevorzugen. Gut, wenn ich K
gleich einsetze, dann ist es natürlich die Guardiantenabstiegssuche.
Dann habe ich keine Alternativen drin,
ich betrachte immer nur den aktuellen Zustand und ich bewege mich
aus dem aktuellen Zustand in die Richtung,
die lokal am besten aussieht.
Wenn ich K auf unendlich setze, dann ist es eben
genau die Breitensuche. Dann betrachte ich,
dann gibt es keine Beschränkung für die Beambreite,
ich nehme alle möglichen Nachbarn mit in die Agenda
auf und betrachte sie weiter
Und indem wir kamen, manipulieren, können wir also sowohl
Platz als auch den Grad der Parallelität in der Berechnung steuern.
Also das ist natürlich auch etwas,
was sich relativ gut auf viele Prozessoren übertragen lässt.
Eine Variante davon ist die stochastische Bienensuche und hier ist die Idee davon,
dass wir auch ein Beam verwenden,
aber dass die Entscheidung über die Zugehörigkeit zum Beam nicht deterministisch getroffen wird.
Also es gibt nicht ein Nummeres Klauses, der sagt,
die ersten K kommen rein und alle anderen fallen raus,
sondern Ich mache eine stochastische Auswahl.
Aus den möglichen Kandidaten wähle ich stochastisch diejenige K. aus.
Und damit das nicht völlig willkürlich ist, wenn ich es
völlig willkürlich mache, dann ist die Steuerwirkung des Beams wieder weg.
Ich muss es natürlich schon so machen, dass die Steuerwirkung erhalten bleibt.
Und dann nehme ich eben den heuristischen Wert der einzelnen Lösung natürlich als Steuerinformation.
Aber ich beeinflusse damit nur die Wahrscheinlichkeit. Also Suchzustände mit
einem hohen heuristischen Wert werden eine hohe Wahrscheinlichkeit bekommen,
dass sie in dem Beam hineinbekommen,
hineinkommen,
aber garantiert wird es nicht
Es kann auch passieren, dass auf die Art und Weise
die besten Elemente nicht ausgewählt werden.
Typischerweise wird aber die Entscheidung eher an der Grenze zwischen,
ich komme noch rein oder ich komme nicht mehr reinfallen.
Und das ist das, was wir haben wollen.
An der Stelle wird dann eben eine gewisse Diversität durch die Zufallsauswahl ermöglicht,
weil die Grenze typischerweise dort liegt,
wo die Bewertungen zwischen den verschiedenen Lösungen nicht mehr dramatisch groß ist.
Und wo es ohnehin schon eine Zufallsangelegenheit oder fast Zufallsangelegenheit ist,
ob ein Element in den Beam mit hineinkommt oder nicht.
Und dann ist es nur konsequent, wenn man an dieser Stelle sagt,
da hier bereits ein großes Maß an Willkür herrscht,
dann machen wir eben an der Stelle eine Wahl,
die zumindest partiell durch Zufall bestimmt ist.
Um an der Stelle möglicherweise Artefakte der Berechnung dieser Heuristikfunktion
kompensieren zu können durch eine Zufallsauswahl. Gut,
mit dem heuristischen Wert wollen wir natürlich irgendetwas haben,
wie gut ist die Lösung als Zwischenzustand auf dem Weg zum optimalen Zustand oder zu einem Zielzustand überhaupt.
Und damit hat sie irgendwie diesen Charakter von Fitness,
also sie sagt mir irgendwie, wie gut ist dieses diese Variante geeignet,
eine Lösung tatsächlich aufdecken zu können.
Und da kommt jetzt der letzte Schritt.
Das riecht ein bisschen wie Reproduktion im biologischen Bereich,
wo ich das Überleben des fittesten Organismus habe.
Allerdings nur im Bereich der nicht sexuellen Reproduktion. Also jedes
Individuum steht für sich allein. Es ändert sich auch,
das ist die stochastische Komponente dabei. Es ändert seinen Genbestand.
Aber es taucht nicht so etwas auf, wie sexuelle Reproduktionen dabei.
Das ist der nächste Schritt. Hier haben wir eben nur
eine Bewertung des Einzelinividuums, wie gut es geeignet ist,
in einer bestimmten Umgebung zu überleben oder erfolgreich sich durchzusetzen.
Und der nächste Schritt,
es sind dann also genetische Algorithmen, dass man diese,
die Auswahl der nächsten Population nicht nur dem Zufall überlässt,
sondern auch noch der Rekombination verschiedener Individuen.
Also was wir hier machen ist,
wir machen so etwas ähnliches wie stochestische Strahlsuche, aber wir erlauben,
dass sich Paare von Individuen sexuell zusammentun und Nachwuchs erzeugen.
Und wir müssen irgendeine Regel formulieren,
die genau diese Kombination unterschiedlicher Gene von unterschiedlichen Individuen so miteinander kombinieren,
dass wir eine steuernde Wirkung, eine evolutionsartige steuernde Wirkung erzeugen.
In der Evolution hat sich ja die sexuelle Fortpflanzung als das Erfolgsrezept schlechthin herausgestellt.
Alle höheren Organismen pflanzen sich sexuell fort. Bis hin in
den Pflanzenbereich. Das ist nicht nur auf die Tiere beschränkt,
dass es in vielen Bereichen in der Pflanzenwelt auch so,
dass sich männliche und weibliche Blüten habe und nur,
wenn die Bäume in Bestäubungsentfernung voneinander entfernt sind,
bin ich tatsächlich in der Lage, Nachwuchs zu bekommen.
Das ist für einige Arten ein ärgeriges Problem für die Gärtner,
weil sie immer ein äquivalenten, männlichen oder weiblichen Baum brauchen,
um die Fortpflanzung am Laufen zu halten.
Und die Bäume bewegen sich nicht wie die Tiere.
Die Tiere suchen sich ihren Partner vielleicht noch durch Bewegung.
Das fällt bei den Bäumen weg.
Da ist man also auf den Wind oder auf die Vögel
als Transportmittel angewiesen
Gut, also wir brauchen irgendeinen Mechanismus und der,
der hier gewählt wird, ist ein relativ simpler.
Wir wählen erstmal Paare von Individuen aus, die sich miteinander fortpflanzen sollen.
Und das machen wir wieder gesteuert durch die Fitness der einzelnen Individuen.
Also das ist ja auch ein Mechanismus,
der in der Biologie verbreitet ist,
dass es zahlreiche Indikatoren gibt,
wann ein Fortpflanzungspartner als besonders vielversprechend erscheint
Bunte Federn, was weiß ich,
dick angeschwollener Kropf und was ist so alles für Merkmale gibt.
Das gesamte Balzverhalten aller Tiere beruht, auch des Menschen,
beruht darauf zu zeigen, wie toll bin ich,
was für ein Potenzial habe ich und gute Nachkommenschaft zu erzeugen.
Und das ist also auch hier die Idee,
wir nehmen welche, die besonders fit sind.
Und dann werden für diese Paare jeweils zwei Mechanismen,
die auch dem biologischen Vorbild entnommen sind,
das eine ist Mutation, also wähle,
verändere zufällige eine der Gene oder in unserer Terminologie eine der Werte
Und für die anderen ist es so etwas wie Crossover zu Deutsch.
Hey, was ist das deutsche Wort für Crossover?
Ich komme nicht drauf.
Über Kreuz
Wahrscheinlich ist es überkreuzen, ja. Gut, also leben wir überkreuzen.
Und dafür brauchen wir irgendeine Vorschrift. Also die Frage ist,
welche Wert oder welches Gehen soll ich von welchem Individuum nehmen?
Das kann ich auch wieder stochastisch machen,
dass ich darüber würfle und sage, hier,
ich nehme das dritte, den dritten,
den Wert für die dritte Variable von A und den Wert vor die fünfte Variable von B. Aber es wird auch,
er geht auch einfacher, indem man einfach sagt,
wir haben eben die verschiedenen Variablen von 1 bis 1 in beiden Individuen.
Und wir wählen jetzt eine Grenze I, die wir hier irgendwo durchlegen,
Und alles, was vor der Grenze ist,
nehmen wir von dem ersten Individuum und alles,
was nach der Grenze ist, nehmen wir von dem zweiten Individuum.
Also hier, bis ihr, sehen Sie lauter As,
nach dem I, sehen Sie lauter Bs.
Das ist von Individuum A gekommen, das ist von Individuum
B gekommen. Und umgekehrt natürlich auch so,
das kann in beiden Richtungen passieren, hier ist alles,
was vor uns steht, von Individuum B gekommen und alles,
was hinten steht, von Individuum A gekommen.
Das ist nicht wirklich zufälliges Kreuzen, was da passiert,
aber immerhin, es sorgt für genügend viel Genaustausch,
als dass die Stabilität der Population
erhalten bleibt
Es geht natürlich irgendwie die Anordnung der Variablen ein. Wie gesagt,
man könnte es auch stochastisch machen und das steht auch hier,
viele Variationen sind möglich, um so etwas zu tun.
Und auf diese Art und Weise kann man also tatsächlich jetzt in einem großen Parameterraum,
auch das ist wieder nicht begrenzt auf unsere Constraint-Settle-Faction-Probleme,
sondern es universell anwendbar,
wann immer ich in einem großen Parameterraum akzeptable Parametersatzungen finden soll,
dann kann ich das verwenden,
um einen großen Suchraum mit einigermaßen Aufwand,
nein,
der Aufwand ist gigantisch,
einen großen Suchraum wirksam zu durchsuchen
Also die Chance, dass ich gute Lösungen finde,
ist relativ groß auf die Art und Weise.
Der Aufwand ist tatsächlich gigantisch. Wir haben das mal gemacht,
um Grammatiken zu züchten, indem wir eine einfache Spielgrammatik weiß,
nur die hatte nicht viel Parameter.
Im Übrigen waren die Parameter genau die Gewichte der Constraints, die wir verwendet haben.
Also ob ein Constraint eher als wichtig oder eher als unwichtig angesehen wird.
Und wir wollten nicht manuell hingehen und diese Gewichte mit der Hand festlegen,
weil natürlich auf jeder Konferenz,
wo immer wir hingekommen sind, man konnte Wetten abschließen,
der Vortrag war zu Ende, die Diskussion wurde eröffnet,
die erste zaghafte Hand hebt sich und fragt,
wo kommen denn ihre Zahlen her,
also die Gewichte
Und dann könnte man nur sagen, wir haben uns hingesetzt,
eine Viertelstunde an die Decke geschaut und dann wussten wir,
welche Zahlen wir da dran schreiben müssen.
Das ist nicht die Wahrheit. Die Wahrheit ist,
man steckt relativ viel Intelligenz da rein, um abzuwägen.
Also das Wichtige ist, die relative Position der Gewichte,
ob sie größer oder kleiner als ein anderes Konstruentgewicht sind.
Das ist das Entscheidende. Und da gibt es eine Reihe von Experimenten,
die man machen kann, um wenigstens gute Approximationen zu finden.
Aber wir dachten uns, okay,
jetzt lassen wir die mal vollautomatisch ermitteln.
Und dann haben wir hier unten alle Rechner,
die im Rechenzentrum stehen,
über Nacht requiriert
Und haben die parallel Grammatiken fortpflanzen lassen, 50 Stück in einer Population,
immer schön mit Mutationen und Crossover zwischen den einzelnen Individuen und haben geguckt,
ob sich die Fitness der gemessen dann,
wie gut sich die Grammatik geeignet,
um unsere Sätze zu analysieren, ob sich das verbessert,
ja oder nein.
Und im Prinzip gab es zwei Ergebnisse. Das erste war,
wenn wir Wenn wir die beste,
wenn wir unsere Grammatik mit den handannotierten Werten, also das,
was der Grammatikentwickler gesagt hat, was ein gutes Konstrentgewicht ist.
Wenn wir die an den Anfang gestellt haben,
sind wir durch die geletische Manipulation besser geworden.
Das hat sich um zwei Prozent irgendwie verbessert bei einem Allgemeinniveau um die 80 Prozent.
Also es ist nicht dramatisch viel, aber es ist eine deutliche Verbesserung gewesen.
Dann ist die nächste Frage gewesen, ja,
wenn wir jetzt eine zufällige, einen zufälligen Anfangszustand nehmen,
random restart und von dort aus die genetische Suche durchführen,
Wie gut werden wir dann?
Und da ist das Enttäuschen Ergebnis gewesen. Wir sind genau,
also ziemlich genau so gut geworden, wie die menschlich produzierten Gewichte auch waren.
Also wir sind aufgrund der Daten nicht in der Lage gewesen,
besser zu werden als das,
was der Mensch auch an Intelligenz da reingesteckt hat.
Das ist ein bisschen ein frustrierendes Ergebnis. Da hat man
uns mehr davon versprochen, aber mehr war tatsächlich auch nicht drin.
Gut, ich wollte also nur sagen, das ist teilweise
ein extrem zeitaufwendiges Ding. Wir haben sämtliche Workstations,
die, damals waren es noch Tannrechner,
die hier unten im Rechenzentrum standen,
zur Hilfe genommen und haben die über die Nacht rechnen lassen
und Nachkommen erzeugen lassen.
Und das Ganze über ein Vierteljahr
Jede Nacht. Es ist ein Prozess, der sich wunderschön parallelisieren lässt.
50 Grammatiken, wupp, 50 Rechner, da geht's los.
Aber also der Aufwand, den man da treiben muss,
der ist teilweise erheblich. Das liegt aber zum Teil auch daran,
weil wir nicht in der Lage waren,
an den Gewichten selber zu sagen,
sind es jetzt gute Gewichte oder sind es schlechte Gewichte,
sondern wir mussten die erst verwenden zur Analyse von Sätzen,
ehe wir wussten,
wussten,
wie wirkt sich diese Grammatik jetzt auf die Ergebnisse aus
Ja, und das ist der große Zeitaufwand gewesen,
dass wir hinterher immer wieder die so erzeugten Grammatiken,
und zwar 50 in jeder Population,
auf alle Testsätze loslassen mussten, gucken,
wie gut sind sie auf diesen Test setzen und aus dem mittleren Wert der Testsätze,
konnten wir dann die Fitness berechnen.
Ah, übrigens Fitness, wir haben damals,
das kann man auch beliebig einstellen, was ist Fitness eigentlich?
Wir haben damals einen Mix genommen aus Zeit und Qualität. Ich glaube,
wir haben 80 Prozent Qualität als in das Fitnessmaß eingehen lassen,
um 20 Prozent Zeit. Und das ist tatsächlich so gewesen,
dass die größere Optimierung über der Zeit erfolgt ist.
Also das Ding ist schneller geworden, aber nicht besser.
Das ist die kurzgesagte Botschaft. Obwohl wir gesagt haben,
die Qualität ist uns viel wichtiger als die Zeit.
Tatsächlich ist der Optimierungsspielraum in Richtung auf das Zeitverhalten gewesen.
Also vom Zeitverhalten ist es deutlich schneller geworden,
aber das war eigentlich nicht das, was wir erwartet hatten.
Okay, also das sind populationsbasierte Suchverfahren. Ich hatte schon angedeutet,
die Welt ist viel, viel, viel bunter im Hinblick
auf Schwarmcomputing oder Ameisen-Computing, aber das behandeln bei ihr nicht.
So, dann gucken wir uns jetzt mal ein paar Beispiele an.
Ich muss allerdings zugeben, dass ich mit den Folien
noch nicht ganz fertig geworden bin, wie immer sind andere Sachen wichtiger gewesen.
Okay, das müssen wir nicht machen. Das Beispiel des Kreuzworträtsels,
also es geht jetzt um Anwendung des Ganzen,
das Beispiel des Kreuzworträtsels hatten wir uns schon angeguckt,
ach schade, ich habe das schönste Beispiel habe ich nicht mit,
aber das kann ich auch nächste Woche noch zeigen
Das habe ich jetzt noch nicht eingebaut. Das Kreuzwort Rätsel hatten wir letztens,
also gestern schon diskutiert, die Idee eben, die Wörter dort einzufügen.
Die Frage ist eben nur, was sind die Vayablen, was sind die Konstreens?
Und die beiden Varianten, die man eben zur Verfügung hat,
ist immer die Slots für ein Wort als Vayable zu betrachten oder die einzelnen Felder als Vayable zu betrachten.
Und daraus ergeben sich dann auch unterschiedliche Konstreens,
als eine Idee davon, wie man Konstruent-Centifiction-Probleme,
ganz unterschiedlich aufsetzen kann und dann auch in der Folge ein unterschiedliches Verhalten der entsprechenden Lösungsverfahren darauf hat.
Und das ist ein bisschen eine Kunst,
diesen ersten Schritt zu tun,
überhaupt hinter einem Problem zu erkennen, hupst,
das ist ja ein Konstruent-Centifiction-Problem und deshalb will ich im Weiteren auch nochmal zwei verschiedene,
ja doch zwei verschiedene Anwendungen diskutieren,
wo es durchaus sich auf den ersten Blick ersichtlich ist,
dass man das
auch als Konstruent-Centifiction-Problem auffassen kann
Gut, das sind also einfach nur noch mal die beiden Zusammenfassungen der Repräsentationen
eben einerseits Wörter als Variablen und andererseits Einzelzeichen als Variablen.
Und dann ergibt sich eben darum, was sind die Domänen?
Hier sind die Domänen eben die Einzelzeichen. Hier sind es
die ganzen Wörter. Und die Konstrents sagen hier eben,
dass an den Kreuzungspunkten zwischen den Wörtern Zeichengleichheit bestehen muss.
Und hier sind die Konstrents hauptsächlich, dass sie in Ja,
natürlich muss ich auch die Interceptions klarkriegen.
Also fit ist hier relativ komplex. Ich muss sowohl die
Länge betrachten, als auch, dass die Schnittpunkte übereinstimmen.
Also so richtig ein Unterschied ist das eigentlich nicht dazwischen. Ja,
das Gleiche hat man,
oder ähnliche Probleme hat man etwa auch in der Bildpräsentation,
Bildrepräsentation, dass man einerseits hingehen kann und sagen kann,
ja, die Knoten, also die Vagable meines Constance-Satisfaction-Problems,
das sind jetzt eben bestimmte Regionen in dem Bild,
die ich habe.
Und die Domänen sind dann bestimmte Szenenobjekte,
die ich diesen Regionen zuordnen kann
Und die Konstreens sind dann Bedingungen über die Kreuzungspunkte zwischen den
einzelnen grafischen Elementen und bestimmten Nachbarschaftsbedingungen. Und Nachbarschaftsbedingungen sind eben so,
wenn ich da auf dem Bild einen Kopf sehe,
dann muss das, was da dranhängt, der Oberkörper sein.
Und wenn das ein Oberkörper ist, dann muss das,
was da dranhängt, Arme oder Beine sein.
Und auf die Art und Weise kann ich eben überall so ein Konstreens-Zeit-Disfection-Problem,
die Disammiguierung machen, ob das,
was ich dort sehe,
ihr Ball oder der Kopf des Gegenspielers ist
Einfach aufgrund der Nachbarschaftsbedingungen. Und das ist der Kern von
Constraint Certisfiction, dass ich in der lokalen Nachbarschaft schaue,
ist das mit dem anderen Interpretationshypothesen, die ich habe, verträglich.
Und ich kann es natürlich auch hier wieder dual dazu repräsentieren,
indem ich sage, okay, ich kann sagen,
die Variablen sind jetzt die Verknüpfungspunkte zwischen verschiedenen Regionen und an denen,
die Domänen, die ich dort habe,
sind dann die Kategorisierung für die Übergänge.
Also so etwas wie, hier ist die Kante dieses Möbelstücks,
da hört das Möbelstück auf und die Umgebung geht los.
Oder das Möbelstück hier unten zu Ende, da geht der Fußboden los.
Ja, dann wäre das also die Kante, die sich zwischen Möbelstück und Fußboden aufspannt.
Und dann habe ich eben die Konstruenz, die sagen,
dass die Verknüpfungen, die ich habe, in irgendeinem Sinne zusammenpassen müssen. Also das Haupt,
das wohl bekannteste Beispiel für diese Art von Constraint Side Desfection-Problemen sind diese unmöglichen Bilder,
die es gibt, Ja, sowas aus der Hand zu zeichnen,
ist jetzt natürlich relativ schwierig, wo ich als,
aus einer zweidimensionalen, aber dreidimensional gedachten Karte, nein,
einer Grafik erkennen soll, ob das ein mögliches Bild ist,
ja oder nein.
Und das, die Antwort daraus ergibt sich hauptsächlich daraus,
indem ich eben die Kantenorientierungen auftrage,
das sind nämlich genau die Labels an den Interceptions,
dass ich sage,
diese Kante hier ragt sie nach vorn in das Bild rein oder geht sie nach hinten.
Und wenn das nach vornherein herausragt,
dann muss das auch nach vorne rausragen,
sonst ist es nicht plausibel
Und da muss das auch nach vorne rausragen. Oder,
aber es geht alles nach hinten, dann muss nach hinten,
nach hinten, nach hinten kombiniert werden.
Und auf die Art und Weise kann ich dann eben rauskriegen,
ob so etwas, erstens wie die räumliche Orientierung des Ganzen ist,
was ich hier sehe. Und zweitens die Frage,
ob es überhaupt eine zulässige geometrische Figur ist oder ob es
nicht etwas ist, was ich zwar malen kann,
wofür es aber eben dreidimensionalen Raum kein Äquivalent gibt.
Das ist hier mit diesem Interception-Labels gemeint,
dass ich Interpretationen dafür habe,
wie ist diese Grenze zwischen diesen beiden Regionen
hier wohl gemeint
Ist es eine Kante? Also ich kann es erweitern.
Ist es eine Kanto oder ist es nur eine Farbgrenze möglicherweise?
Dass das Ganze hier eine Fläche ist,
wo sie hier nur unterschiedliche Farben verwendet worden sind.
Also es gibt viele Interpretationsvarianten für solche grafischen Darstellungen.
Und wenn ich also zu einer konsistenten Interpretation kommen will,
dann muss ich alle solche Informationen ausnutzen.
Also das Beispiel, was ich nochmal deutlich machen wollte,
das eine ist von den Dingen, die absolut nicht gehen,
das kennen sie bestimmt,
ist dieses dreifinrige Teil.
Mal sehen,
ob ich es hinkriege
Ich kriege es natürlich nicht hin. Haben Sie bestimmt alle
schon mal gesehen, muss ich mich jetzt nicht abquälen damit.
Ich kriege es nicht hin. Hier hinten muss man jetzt
irgendwie die Verbindungen so hinbiegen, dass sie passend sind.
Wahrscheinlich habe ich es nicht steil genug gemalt
Dich flach genug gemalt, sodass es jetzt sich plausibel ist.
Aber jedenfalls ist es, es ist ein Ding,
was hier hinten zwei Zacken hat und hier vorne drei Zacken hat,
was also eine nicht akzeptable geometrische Struktur ist.
Und das kann ich eben rauskriegen über solche Kantenlabel-Verfahren.
Das ist eine der ersten Anwendungen dieser Constance Certisfaction Technik im Bereich
der Bildinterpretation gewesen. Ja, meine Beispiele kommen natürlich,
tut mir leid, aus dem Bereich der Sprachverarbeitung wieder.
Wir gucken uns hier mal an, wie man Bedingungen über
die Korrektheit von sprachlichen Äußerungen als Constraint Certisfaction-Problem auf tragen kann.
Und wir schauen uns dann an,
warum man das macht und was man davon eigentlich hat.
Es sind zwei große Teile. Das erste ist,
dass wir wirklich erst bei uns die Basissachen angucken,
also Phänomene aus dem Bereich der natürlichen Sprache,
die wir jetzt mit Hilfe von Construence Satisfaction modellieren wollen.
Und der zweite Teil, den machen wir dann nächste Woche.
Das ist sozusagen die Grundlage dafür, wie wir Strukturaufklärung für natürlich sprachliche Sätze machen.
Und das ist etwas, was durchaus nicht offensichtlich ist,
dass das überhaupt etwas mit konstruent Satisfaction zu tun hat,
hat es aber. Also, erstes ist In vielen Sprachen,
Englisch ist ein schlechtes Beispiel, ein sehr schlechtes Beispiel,
weil das an der Stelle hochgradig verarmt ist,
aber viele Sprachen der Welt haben so etwas wie morphosyntaktische Merkmale,
die an den Wörtern oder genauer gesagt an den Wortformen dranhängen.
Also hier habe ich mal ein paar Beispiele angeführt für Deutsch.
Wir können das gerne auch für andere Sprachen durchdiskutieren.
Diese morphosyntaktischen Features sind üblicherweise hochgradig mehrdeutig. Also das Wort die,
der Artikel, die kann sowohl Singular als auch plural sein.
Die Frau,
die Frauen
Es kann sowohl Maskulinium Femininum Neutrum sein. Also die Kinder,
die Frauen, die Männer, kann jedes beliebige Geschlecht annehmen.
Es kann zumindest zwei Chasus-Varianten tragen, die Frauen kommen,
ich sehe die Frauen.
Also nominativ und akkusativ. Oder aber die Frau,
ich sehe die Frau, dann ist es auch nominativ akkusativ.
Und das gilt also für viele Sachen. Wenn man das sieht,
sieht eigentlich ziemlich frustrierend aus, ich gebe zu,
ich habe hier Wörter gewählt, die Inherent ziemlich hochgradig mehrdeutig sind.
Es gibt andere, wo jetzt nicht ganz so arg ist,
aber die sind es hier.
Also Teller hat auch diese Singular Plural Mehrdeutigkeit.
Der Teller Dietteller. Ich kann dem Wort selber nicht entnehmen,
ist es einer oder sind es zwei?
Ich muss es aus dem Kontext beispielsweise des Artikels entnehmen,
was denn gemeint sein wird. Auch hier ist es so,
dass ich, und das sind immer die Plural Formen,
können sowohl maskulin und feminine Leute rumzahlen.
So ein Quatsch. Ted, vergesst uns das.
Das sind die Folien, die noch in Arbeit sind.
Also ich mache hier jetzt öffentliches Debugging meiner Folien, sorry.
Das ist natürlich der Teller Maskulinum. Die anderen,
das ist ein Captain-Pace-Fehler, die anderen sind bitte wegzustreichen
Aber frustrierenderweise können jetzt alle Kasus-Varianten sein.
Der Teller mit dem Teller, den Teller, die Teller,
wegen der Teller, ich sehe die Teller.
Also es gehen alle vier Kasus-Varianten. Bei großen,
aha, da ist der Fehler zustande gekommen.
Das Maskulinum gehört hierhin und das gehört dorthin.
Das ist ein Vertauschungsfehler, der hier passiert ist.
Ich habe irgendwann mal die Matrix umgedreht und da ist offensichtlich
nicht alles ausgetauscht worden. Also bei den Adjektiven,
die sind hochgradig mehrdeutig, das können wir durchdiskutieren,
da ist praktisch jede Kombination irgendwie machbar
Ja, und in einer Nominalphrase im Deutschen müssen jetzt also alle Bestandteile,
also Artikel, Adjektiv und Substantiv in diesen Merkmal übereinstimmen.
Und wenn man die jetzt, sorry, über die kleinen Ungenauigkeiten,
wenn man die jetzt einfach der Übereinstimmung,
also stellen Sie sich vor, wir machen unser Domänen,
nein, unser Art-Konsistenz hier darüber,
wir finden natürlich für jeden Wert, den wir hier haben,
passende Werte in den anderen Domänen.
Also Singular, klar, haben wir Plural, haben wir auch, kein Problem.
Nur ganz selten sind wir mal in der Lage,
tatsächlich hier, wenn Maskulinum hier ist, zu sagen,
okay, wenn das maskulinum ist,
dann müssen auch die Maskulinum sein
Aber in den meisten Fällen haben wir genügend viel Mehrdeutigkeit da,
als dass wir irgendeine Einschränkung formulieren könnten.
Wenn wir das zugrunde legen, geht praktisch jede Kombination als
deutsche Nominalgruppe, aber leider ist es nicht so.
Denn die möglichen Wertekombinationen sind stark eingeschränkt.
Und diese Einschränkungen können wir jetzt wie jedes gute Konstruenzzertisfaktor,
wie in jedem guten Konstruenzzertisfaction-Problem, auf ganz verschiedene Arten und Weisen darstellen.
Wir können entweder das Inform einer relationalen Datenbank machen,
dass wir extensional aufschreiben, welche Kombinationen sind erlaubt.
Und alle, die hier nicht stehen,
sind nicht erlaubt
Also so etwas wie, die kann Singular Femininum 9 Nomen sein,
die Frau. Es kann aber auch Singular Femininum akkusativ sein.
Ich sehe die Frau. Es kann Plural Maskulinum sein.
Der Mann, die Männer kommen. Und das sind also
acht mögliche Kombinationen, die wir für diesen Artikel da oben haben.
Am schlimmsten sind die Adjektive, die habe ich nicht alle aufgeschrieben.
Hier kommen noch elf weitere Kombinationen dazu. Beim Substantiven ist es
wieder stärker eingeschränkt. Wir haben hier im Prinzip nur die Singular Plural Mehrwürdigkeit,
drei Lesarten für das Singular und drei Lesarten für den Plural
und Singular und Plural unterscheiden sich nur dadurch,
dass im Singular der Datif damit gebildet wird und im Plural der Genitiv.
Ansonsten sind sie eben Singularplural gleich. So,
also entweder wir schreiben das so auf,
das ist jetzt sozusagen lexikalisches Wissen, was ich haben muss,
dass Teller eben genau diese Kombination von Merkmalen erlaubt.
Das sind lexikalische Konstrienz, die ich formulieren kann.
Oder ich kann das Ganze jetzt aufschreiben, als eine große logische,
als einen großen logischen Ausdruck, der sagt also,
die ist feminin und singular und nominativ oder akkussativ.
Das sind die Singular-Lesarten von D oder aber das ganze Ding
ist eine Plural-Variante und im Plural ist es nicht spezifiziert bezüglich
der Scanners und es ist mehrdeutig bezüglich nominativ und akkussativ.
Und genau das Gleiche kann ich jetzt für die Adjektive machen.
Ich kann das für die Nomen machen. Ich kann also
solche logischen Ausdrücke hinschreiben und dann ist dieses Ding,
ist ein konstrent. Oder aber ich gehe hin und sage,
die erlaubt die Werte Maskulinum,
Feminum oder Neutrum für Das habe ich jetzt nicht mit hingeschrieben,
das ist eine kurze Notation für die variable Genuss.
Und es erlaubt die Werte Singular Plural für die variable Numerus.
Und wenn, denn die Variable für die Numerus Plural ist,
dann muss der Chasus nominativ oder akkussativ sein.
Und wenn, denn die Variable für den Numerus Singular ist,
dann muss der Scannus feminin sein.
Und wenn denn die variable Numerus Singular ist,
dann muss der Chasus nominativ oder akkusativ sein. Auf die,
das ist natürlich komisch, was hier steht,
Das ist etwas redundant, die Forderung brauche ich nicht aufzuschreiben,
nominativ oder akkusativ gilt in allen Fällen.
Ja, das muss ich nicht mehr hinschreiben, das hätte
ich zusammenfassen können. Die Prämisse hier ist eigentlich irrelevant.
Sorry, Debugging, öffentliches Debugging. Für Großen,
ich habe alle Chaos-Varianten zugelassen, ich habe alle Gandos-Varianten zugelassen,
ich habe alle Nummeros-Varianten zugelassen,
aber wenn es denn Singular ist,
dann muss es
Genitiv oder Dativ sein
Ich bin mir nicht sicher, ob das jetzt vollständig ist.
Das muss ich auch nochmal prüfen. Teller ist immer maskulinum oder
es ist singu, und es ist singular oder plural.
Und wenn es singular ist, dann ist es eben nominativ,
stativ oder akkusativ. Und wenn es plural ist,
dann ist es nominativ, genitiv oder akkusativ.
Das sind die Constraints, die ich habe,
modulo ein Jahr kleiner Korrekturen, die für die lexikalischen Belegungen gelten.
Damit habe ich überhaupt noch nicht geregelt,
wie bilde ich eine korrekte deutsche Nominalgruppe.
Das muss ich jetzt noch durch zusätzliche Konstruenz aufschreiben und
das sind die eigentlichen Konkurrenzkonstruenz oder Agreement
auf Englisch
Die verlangen jetzt, dass eben zwei oder auch drei Wörter
die gleichen lexikanischen Werte für die einzelnen Merkmale tragen.
Und das gilt aber immer nur in bestimmten strukturellen Kontexten.
Also innerhalb der Nominalphrase gilt für den Artikel,
das Adjektiv und das Nomen, das sie in Numerus,
Genus und Kasus kongruieren müssen.
Also so etwas wie der kluge Hund, des klugen Hunds,
dem klugen Hund, den klugen Hund und so weiter.
Das sind die Flexionsparadigmen, die wir alle aus
der Schule kennen
Auf der Satzebene muss etwa das Subjekt mit dem Verb kongruieren und dann auch,
wenn es vorhanden ist, mit dem Reflexivpronomen.
Also und zwar bezüglich der Eigenschaften Personen und Numerus. Also so etwas wie,
ich freue mich, da muss also,
dass ich mit der Endung des Verbs und dem Reflexivpronomen
zusammenpassen oder du freust dich,
da muss eben auch hier die Endung mit dem Personalpronomen und dem Reflexivpronomen zusammenpassen und so weiter.
Und dieses Überprüfen der Konstrunt,
der Kongruenz, das ist ein einfaches Konstruenz-Sectics-Faction-Problem
Und hier ist das der Konstruent Graf aufgetragen in einer etwas vereinfachten Form.
Ich habe also jetzt hier nur die Wortformen dran geschrieben,
ohne dass die einzelnen Feature noch deutlich werden.
Also eigentlich muss man jetzt hier sagen, ein Nomen ist
durch seinen Chasus, Gendos und Lumorus Feature beschreiben.
Das sind die Vajablen. Und dann gibt es eben die Kongruenzforderung,
dass Nomen und die Termina bezüglich Chasis übereinstimmen müssen,
Nomen und die Termina bezüglich Gendos und so weiter.
Und das Gleiche gilt hier dazwischen. Im Deutschen gibt es
noch eine weitere Forderung, die erfüllt sein muss.
Das ist der Flexionstyp, ob es starke oder schwache Flexion ist.
Das ist so was wie Der schöne Mann,
aber ein schönerer Mann, also das Flexionsmerkmal muss irgendwo realisiert sein,
wenn es sich am Artikel realisiert ist, wie bei allen,
dann muss es ans Adjektiv wandern.
Das wird durch dieses Konstraint hier noch erzwungen. Und das
ist jetzt keine Nominalphrase, sondern eine Präpositionalphrase und eine Präpositional,
eine Präposition hat immer noch eine Chasusvorgabe für das Nomen.
Also sowas wie mit erfordert den DATIF, so etwas wie auf,
ist sowohl den DATIF als auch den Akkusativ,
kann ihn zu realisieren.
Und das hängt dann davon ab,
ob ich eine lokale oder eine
Direktionalbestimmung machen will
Also auf dem Tisch ist eine Lokalbestimmung,
auf den Tisch ist eine Richtungsbestimmung. Und an der Semantik,
also ist es eine Ortsangabe oder ist es eine Richtungsangabe,
hängen bestimmte Chasisvorgaben dran,
die werden hier auf das Nomen projiziert und dann weitergereicht an die anderen Bestandteile der Nominalgruppe.
Das ist also ein einfacher Konstrintgraf für ein solches Konkurrenzproblem.
Ja, jetzt wird es zunehmend unschön, das ist also
noch nicht formatiert. Nächster Pänomenbereich ist die Anordnung,
die wir uns angucken können
Auch wieder für die Präpositionalgruppe. Wir haben also so etwas wie auf das Haus,
auf das kleine Haus, auf das ziemlich kleine Haus.
Auch so etwas wie aufs Haus, wo also Präposition und Artikel
in eins zusammengezogen worden sind, weil sie es einfach schöner ausspricht.
Und da habe ich jetzt Abfolgebestimmungen, aber die Abfolgebestimmungen sind eben so,
dass sie auch dann wirken müssen,
wenn irgendein Bestandteil zufälligerweise gerade nicht realisiert ist.
Also auch wenn dieser Adjektiv ja nicht vorhanden ist,
muss ich sicherstellen, dass die übrigen Bestandteile der Phrase
in der richtigen Reihenfolge sind
Und dass sie die Regeln, die dann da gelten,
Präpositionen muss immer vor dem Artikel stehen, wenn nicht so eine zusammengezogene Präposition habe,
dann muss sie vor dem, vor dem Granuierungspartikel stehen.
Das ist also sowas wie sehr oder ganz kleine Haus oder
relativ kleine Haus oder so etwas. Der Determiner,
wenn er denn da ist, muss vor dem Granuiertenpartikel stehen,
also das Ding muss hier davor stehen,
das Granuierungspartikel vor dem Adjektiv, was ist modifiziert,
also ziemlich kleine und nicht kleine,
ziemlich.
Und das Adjektiv muss links vom Domen stehen
Und das Letzte, das will ich noch kurz vorstellen,
das sind dann Bedingungen für die Verträglichkeit,
ob Dinge da sein müssen oder nicht da sein müssen.
Also ob sie optional sind oder ob sie obligatorisch sind.
Also wenn eine Präposition da ist,
muss auch ein Terminar da sein und umgekehrt.
Also wenn ein Terminar da ist, muss auch eine Proposition
da sein. So etwas wie auf Tisch ist ungrammatisch.
Das geht nicht. Oder aber wenn, wenn ich,
ich habe entweder eine zusammengezogene Präposition oder eine Präposition,
aber nicht beides gleichzeitig. Also in Immen geht nicht.
Das ist auch eine kontrahierte Präposition, dass es in dem,
das wäre also jetzt in dem, das ist auch nicht dramatisch.
Oder wenn ein Graduierungspartikel da ist,
dann muss ein Adjektiv da sein, was es modifizieren kann.
Das sehr Auto geht nicht oder das Relativ-Outdoor.
Das kann das relativ schöne Auto sein. Oder sorry,
das muss adjektiv heißen hier, ein Adjektiv oder ein Nomen muss vorhanden sein.
Also nur wegen der ist keine vollständige Nominalgruppe. Und jetzt
kann ich das konstrienten Netz entsprechend erweitern und das ist dann,
also sind die Bedingungen, die für eine deutsche Nominalpräpositionalphase erfüllt sein müssen
Und das ist jetzt eben ein Mix aus Morphosyntaktischer Konkurrenz,
aus LP heißt immer Linnear Presidents, das sind die Anordnungsbezüge dazwischen.
Also das muss vor dem stehen und so weiter.
Und diese Dinger hier, das sind die Verträglichkeiten.
Also entweder Nomen oder Adjektiv oder beides.
Oder aber entweder Präposition oder zusammengezogene Präposition. Und wenn Präposition,
dann muss auch Andy Termina da sein. Und umgekehrt,
wenn eine Termina da ist, muss auch eine Präposition
da sein,
solange wir über Präpositionalphrasen reden
Gut, dann an der Stelle möchte ich auch aufhören.
Und wir gucken uns dann nächste Woche an.
Warum machen wir diesen Zirkus überhaupt? Bis jetzt haben wir
ja nichts anderes, als dass man dann sagt,
was ist korrekt im Deutschen und was ist nicht korrekt?
Aber braucht man das eigentlich auch? Und welche Vorzüge habe ich denn davon,
dass ich das als Konstruenz-Site-Factory-Problem modelliere und auch behandle?
Bis dahin alles Gute und bis nächsten Montag.