Wie entwickelt man einen Algorithmus, der mögliche Kochrezepte vorschlägt?

15

Ich hatte einmal einen Veteranen in meinem Kurs, der einen Algorithmus entwickelte, der Kochrezepte vorschlug. Zuerst würden alle möglichen verrückten Rezepte herauskommen. Dann würde sie den Garalgorithmus mit echten Rezepten trainieren und schließlich sehr gute vorschlagen.

Ich glaube, sie hat etwas verwendet, das mit dem Bayes-Theorem oder dem Clustering zu tun hat, aber sie ist schon lange weg und der Algorithmus auch. Ich habe im Internet gesucht, aber auf der Suche nach Kochrezepten werden alle möglichen Ergebnisse erzielt, aber nicht die, nach denen ich suche. Meine Frage lautet also:

Welche Techniken können verwendet werden, um einen Algorithmus zu entwickeln, der (zufällig) machbare Rezepte vorschlägt (ohne eine Datenbank mit festen Rezepten zu verwenden)?

Warum sollte ich nach einem Garalgorithmus suchen? Nun, es war ein sehr gutes Beispiel für eine reale Anwendung der zugrunde liegenden Konzepte, und ein solcher Algorithmus könnte in verschiedenen Umgebungen nützlich sein, die näher an der realen Welt liegen.

Oeufcoque Penteano
quelle
1
Es könnte sich lohnen, verschiedene Arten von Evolutionsalgorithmen zu betrachten
Henry
7
... oder für leichte Erleichterung, dies von xkcd
Henry
2
@Henry: Und welche Funktion würdest du für Fitness verwenden? Das ist der Hauptpunkt der Frage!
Raphael
1
Kann die Person, die für den Abschluss gestimmt hat, den Grund für die Abstimmung erläutern? Das Abstimmen ohne Angabe von Gründen zu beenden, hilft dem OP nicht, seine Frage zu verbessern.
Alex ten Brink
1
Die Kommentare scheinen exotischer als die Frage selbst.
Oeufcoque Penteano

Antworten:

4

Hmm, unter Verwendung des Bayes-Theorems, um aus alten Rezepten neue Rezepte zu machen. Ich stelle mir vor, Sie möchten zuerst, dass der Algorithmus die Zutaten in eine Form zerlegt, die er versteht (nicht sicher, ob wir NLP dafür verwenden oder ob Sie die Daten manuell in sich selbst eingeben, das ist weder hier noch da.). .

Ich stelle mir so etwas vor.

Testdaten analysiert. Jetzt haben wir eine Liste mit Rezepten und den Wahrscheinlichkeiten, mit denen jede Zutat neben einer anderen Zutat in welcher Menge vorkommt. Nachdem wir diese Daten haben, müssten Sie das Programm zufällig die neuen Rezepte machen. Zuerst durchläuft es eine Liste aller bekannten Zutaten und wählt dann nach dem Zufallsprinzip eine Hauptzutat aus. Von dort aus verwendet es die Wahrscheinlichkeiten einer Zutat, die einer anderen Zutat gegeben wurde, um mehr zufällige Zutaten zu werfen, während es gleichzeitig geeignete trainierte Daten für Mengen und Verträglichkeit abgleicht Zutaten.

Könnte ich vorschlagen, dass beim Erstellen eines neuen Rezepts dem Programm Informationen wie "Süßes" oder "Saures" oder zum Beispiel etwas, das hauptsächlich aus Weizen besteht, gegeben werden.

Hoffentlich hilft das ein bisschen.

J. Russell
quelle
3

Einen umfassenden Datensatz mit fast 2000 US-amerikanischen Rezepten finden Sie beim Armed Forces Recipe Service . Dies beantwortet Ihre Frage nicht, sondern liefert Ihnen reale Trainingsdaten.

Die Anforderungen für das Problem sind für die meisten Menschen wahrscheinlich schwer zu formulieren, und der gewählte Ansatz führt wahrscheinlich dazu, dass die Fitness implizit so angepasst wird, wie Sie es vorgeschlagen haben. Nahrungsmittel im Allgemeinen sind sehr kulturspezifisch und die Annäherung würde wahrscheinlich ohne umfangreiche Abstimmung sehr schlecht reisen.

Dies erfordert auch umfangreiches sematisches und fachliches Wissen, um mehr als nur eine Liste von Zutaten zu erstellen. Kaffeeeis mit Waffel, Cafe au lait und Croissant und Tiramisu wäre sonst nicht zu unterscheiden.

Pekka
quelle
"Dies beantwortet Ihre Frage nicht" - genau, also sollte es ein Kommentar sein. Wie ich sehe, dürfen Sie noch keinen Kommentar abgeben. Ich habe für die Konvertierung vorgemerkt.
Raphael
@Raphael: nicht konvertieren, weil es zu lang ist und - obwohl es möglicherweise keine ideale Antwort ist - als Ganzes versucht es, das Problem anzugehen. Wenn Sie der Meinung sind, dass dies nicht hilfreich ist, stimmen Sie es bitte ab. Pekka, obwohl dies möglicherweise nicht die produktivste Quelle für neue Kochkunst ist, ist es ein interessantes - und zuordenbares - Problem ... Wenn Sie Ihre Antwort erweitern könnten, um die Einzelheiten der Entwicklung eines solchen Algorithmus zu erörtern, könnte dies akzeptabler sein.
Shog9
3

Die Rezeptgenerierung wird häufig als Beispielanwendung für case based reasoning-Systeme verwendet. Es wird sogar als Beispiel auf der Wikipedia-Seite verwendet . Eine Google-Suche nach "case based reasoning recipes" liefert zahlreiche Ergebnisse.

Alt
quelle
1

Die Klasse der Algorithmen, nach denen Sie suchen, ist die der Banditen. Sie werden normalerweise verwendet, um den Erkundungsteil eines Klassifizierungsproblems zu behandeln.

Ein grundlegender Ansatz wäre, die Rezepte als begrenzte Menge von Komponenten darzustellen (ein Vektor von Booleschen Werten mit höchstens k ungleich 0) und LinUCB zu verwenden, um einen Satz von Komponenten auszuwählen. Dann wäre das Feedback "wie" oder "nicht wie". Wenn Sie ein Bayesianer sind, können Sie natürlich Trueskill (mit der Adpredictor-Variante) bevorzugen.

Etwas weniger Grundlegendes würde erfordern, einen Kernel anstelle einer linearen Trennung zu verwenden. Kernel ucb kann helfen, diesen Teil zu handhaben. Aber irgendwann halte ich es für nützlich, auf die chemische Zusammensetzung der Nahrungsmittel zu achten, denn am Ende möchten Sie wahrscheinlich ein Gleichgewicht zwischen verschiedenen Grundgeschmäckern herstellen.

user1662497
quelle