16.8.2013

Über Algorithmen (5)

(Thema)

Zum Vierten: Spannend wird es dann, wenn Algorithmen von einem Algorithmus gesteuert werden.

Bis zu diesem Punkt habe ich Verfahren beschrieben, die Daten algorithmisch verändern. Man kann aber auch in Abläufe (Logiken) eingreifen – zB. in den Ablauf eines Programms; und zwar auch dann, während es läuft.

Für ein eher einfaches Beispiel komme ich noch einmal auf die Logik hinter den Übergängen von Voicings zurück. Die dort waltende „Fuzzy-Logic“ ist „hart“ kodiert. Man könnte das aber auch anders implementieren, nämlich als einen Algorithmus, der, nach Vorgaben der User, lernt.

Mögliche Übergänge von einem Akkord in einen anderen könnte man einem (menschlichen) „Lehrer“ anbieten, der, aufgrund seiner Erfahrung und seines Wissens, darüber entscheidet, ob die „Lösung“, die das Programm gerade anbietet, „richtig“ ist, oder vielleicht einfach nur (mehr oder weniger) „gut gefällt“. Das Programm führt Buch über jene Entscheidungen, und pflegt zB. eine Datenbank, in der die „Wertschätzung“ jenes „Experten“ festgehalten wird, um sie später weiter zu verwenden.

Ich hatte, bei dem Chordtrack-Feature, die Idee, nicht hart-kodierte Fuzzy-Logic zu verwenden, sondern ein Programm zu schreiben, mit dessen Hilfe der Algorithmus auf ein Feedback reagieren kann und die „Wahrscheinlichkeiten“ (für die „Güte“ von Übergängen zwischen Voicings) aus diesem Feedback zu generieren. Im konkreten Fall hätte ich viel Code für ein vergleichsweise triviales Problem zu schreiben – ich habe das dann bleiben lassen, und das „Fine-Tuning“ des Algorithmus „zu Fuß“ erledigt.

Für die Aufgabe, einem Computer die Erkennung von Sprachbefehlen oder die Interpretation von von Hand geschriebenem Text beizubringen, bleibt jedoch, meiner Einschätzung nach, nichts anderes übrig, als sich mit solcher Meta-Ebene zu beschäftigen.

(Kommentarfunktion z.Zt. deaktiviert.)