Diplomarbeit Studien zur Imitation von Interpretationen
Transcription
Diplomarbeit Studien zur Imitation von Interpretationen
Diplomarbeit in Informatik Studien zur Imitation von Interpretationen klassischer Klavier-Musik durch neuronale Netze Rainer Schmoll Technische Universität München Fakultät für Informatik Diplomarbeit in Informatik Studien zur Imitation von Interpretationen klassischer Klavier-Musik durch neuronale Netze Rainer Schmoll Aufgabensteller : Prof. Dr. Jürgen Schmidhuber Betreuer : Dipl.-Inf. Georg Fette Dipl.-Inf. Christian Osendorfer Abgabedatum: 03. April 2006 Erklärung Ich versichere, dass ich diese Diplomarbeit selbstständig verfasst und nur die angegebenen Quellen und Hilfsmittel verwendet habe. München, den 03. April 2006 Rainer Schmoll Vorwort Ich bin sehr froh darüber, eine Diplomarbeit gefunden zu haben, die mir von der Arbeitsweise und Thematik so gut auf den Leib geschnitten war. Bis zum letzten Versuch erwartete ich die Resultate immer wieder mit Spannung. Wenn auch etwas verspätet konnte ich während meiner studentischen Laufbahn eine gewisse Leidenschaft für künstliche neuronale Netze entwickeln. Mit dem Themenbezug zur Musik wurde zudem ein großer Teil meiner persönlichen Interessen und Leidenschaften abgedeckt, was mich auch in diesem Bereich viel dazu lernen ließ. Für Hilfestellungen aus musikalischer Sicht und das spontane Einspielen verschiedener Walzer möchte ich mich bei Klaus Ritzkowsky von der Musikhochschule München und bei Alex F. bedanken. Danke an Alex R. für das Bereitstellen eines Stagepianos. Großer Dank gebührt auch den Mühen des Pianisten Hans-Jörg Paliege. Der sehr teure Flügel mit geeigneter Abnahmetechnik wurde uns aufgrund seines Engagements vom Musikhaus Kronenberg in Kaufbeuren zur Verfügung gestellt. Für die, wie sich herausstellte nicht selbstverständliche Bereitschaft, Versuchsdaten zur Verfügung zu stellen möchte ich mich bei Rafael Ramirez von der Universität Pompeu Fabra bedanken. Vielen Dank meinen Betreuern Georg und Christian sowie meinem Themensteller Jürgen Schmidhuber für die vielen hilfsreichen Gespräche und das durchweg positive Arbeitsklima. Für Korrekturlesen und/oder interessante Fachgespräche danke ich besonders Franz, Mario, Ferdi und Tanja. Für die Unterstützung während meiner gesamten Studienlaufbahn möchte ich mich ganz herzlich bei meiner Familie bedanken. Vielen lieben Dank außerdem meiner langjährigen Freundin Sarina für ihr Verständnis und ihre Geduld. i Je mehr wir wissen, desto weniger scheinen wir weiter-zu-wissen.“ ” (Bernhard von Mutius) Inhaltsverzeichnis 1 Einleitung 1 2 Grundlagen zu künstlichen neuronalen Netzen 2.1 Das Neuronenmodell . . . . . . . . . . . . . . . 2.2 Vorwärtsgerichtete Netze . . . . . . . . . . . . . 2.3 Rückpropagierung . . . . . . . . . . . . . . . . . 2.4 Generalisierbarkeit . . . . . . . . . . . . . . . . 2.5 Rekurrente Netze . . . . . . . . . . . . . . . . . 2.6 LSTM . . . . . . . . . . . . . . . . . . . . . . . 2.7 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 8 9 12 12 14 18 . . . . 19 19 20 22 26 . . . . . . . . . . 28 28 29 30 31 32 34 36 37 39 40 5 Ergebnisse 5.1 Überanpassungstest mit einem Klavierstück . . . . . . . . . . . . 5.2 Erlernen kurzzeitiger Variationen . . . . . . . . . . . . . . . . . . 5.2.1 Einfache Modifikationen von Kindermelodien . . . . . . . . 43 44 47 47 . . . . . . . 3 Datenrepräsentation 3.1 Anforderungen . . . . . . . . . . . . . . . . . . . 3.2 Das MIDI-Dateiformat . . . . . . . . . . . . . . . 3.3 Entwicklung eines eigenen Ereignislisten-Formats 3.4 Grenzen des EVL-Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Datenbeschaffung 4.1 Von Hand erstellte Daten . . . . . . . . . . . . . . . . . 4.2 Klavieraufnahmen . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Ansätze . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Voraussetzungen für eine gute MIDI-Aufzeichnung 4.2.3 Einspielen der Stücke . . . . . . . . . . . . . . . . 4.2.4 Musikalische Analyse . . . . . . . . . . . . . . . . 4.3 Brauchbare Daten für das Netztraining . . . . . . . . . . 4.3.1 Digitalisierung des Notentextes . . . . . . . . . . 4.3.2 Schwächen der Klavier-Aufnahmen . . . . . . . . 4.3.3 Rückwärtsrechnung des Notentextes . . . . . . . . iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Spieltechnik eines Pianisten . . . . . . . . . . Wiederholungen lernen . . . . . . . . . . . . . . . . . 5.3.1 Vorausschau im Eingabestrom . . . . . . . . . 5.3.2 Erkennung einer unmittelbaren Wiederholung 5.3.3 Wiedererkennung von Eingabewerten . . . . . 5.3.4 Phrasenwiederholungen in einer EVL-Datei . . 5.4 Netztraining mit Klavierstücken . . . . . . . . . . . . 5.4.1 Gesamtstücke lernen . . . . . . . . . . . . . . 5.4.2 Instruktionen lernen . . . . . . . . . . . . . . 5.4.3 Phrasen lernen . . . . . . . . . . . . . . . . . 5.5 Gründe für Lernerfolge und Misserfolge . . . . . . . . 5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 54 54 56 57 59 62 63 65 67 70 6 Schluss 73 Anhang A MIDI-Parameter . . . . . . . . . . . . . . . . . . . . B EVL-Visualisierung mit Gnuplot . . . . . . . . . . . . C Erlernen der kontextsensitiven Grammatik an bn cn . . D Kurzbeschreibung der verwendeten LSTM-Bibliothek 75 75 77 78 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Glossar 85 Literaturverzeichnis und Verweise 88 iv Kapitel 1 Einleitung Gerade im Zeitalter der Elektronik geht vom Gedanken der künstlichen Intelligenz eine große Faszination aus. Dabei stellt sich auch immer die Frage, wie man dieses theoretische Konstrukt der Intelligenz überhaupt messen kann. Eine exakte allumfassende Definition ist praktisch nicht möglich, jedoch lassen sich verschiedene Aspekte abgrenzen, die ein intelligentes Wesen erfüllen muss. Erkenntnisse der letzten Jahrzehnte zeigten, dass logische elektronische Verschaltungen mathematisch klar eingrenzbare Aufgaben (z.B. Schach spielen) verblüffend schnell und gut lösen können. Was uns intelligente Menschen aber besonders ausmacht, sind neben Wissen und logischem Schlussfolgern auch die Fähigkeit zur Phantasie, Kreativität oder Intuition. Ob und wie man diese Charakteristik der Intelligenz künstlich erzeugen kann, ist eine sehr interessante Fragestellung. Problemstellungen, für dessen Lösung man eine gewisse Form von Intuition und Kreativität benötigt, finden sich zum Beispiel in der Kunst. Die hier präsentierte Arbeit lässt sich einem ehrgeizigen KI-Forschungsprojekt aus dem Bereich der Musik zuordnen. Mithilfe von künstlicher Intelligenz soll eine ausdrucksstarke musikalische Spielweise nachgeahmt werden. Diese Spielweise beinhaltet die verwendete Rhythmik (Tempo-Variationen) und Dynamik (Lautstärken-Variationen). Weshalb wir eine von Menschen gespielte Musik im Gegensatz zur computergenerierten meistens als interessanter empfinden, liegt daran, dass die auditiven Neuronen des menschlichen Gehirns eine sich nicht zu oft exakt wiederholende Musik als natürlicher und harmonischer empfinden. Gute Musiker alternieren beim Spielen bewusst und unbewusst das Tempo und die Dynamik oder ziehen manche Töne in die Länge. Nach welchen Gesetzmäßigkeiten dies geschieht ist schwer nachzuvollziehen und soll deshalb von einer vorher trainierten Maschine nachgeahmt werden. Das Verfahren ist praktisch immer gleich: man versucht, die Variationen in einem Musikstück zu messen und zu klassifizieren. Auf die daraus resultierenden Daten wendet man dann ein Verfahren des maschinellen Lernens an. 1 2 Der Lernerfolg wird normalerweise über dem mittleren quadratischen Fehler (MSE ) beim Vergleich mit einem nicht für das Lernen verwendeten Beispiel gemessen. Da es im Bereich der Musik zu einer Vorgabe viele verschiedene im musikalischen Sinne vernünftige Interpretationen gibt, macht vielleicht auch ein abgewandelter Turing-Test Sinn. Ein Proband mit musikalischem Grundverständnis bekommt dabei z.B. einen Notentext und zwei verschiedene Interpretationen vorgelegt. Die eine Interpretation stammt von einem Musiker und die andere von einer Maschine. Der Proband soll dann entscheiden, welche Version die des Musikers ist. Es könnten die Hörproben auch einfach vorgelegt und nach ihrem künstlerischen Wert beurteilt werden. Bezüglich der Wahl des Lernverfahrens und der Datenrepräsentation gibt es verschiedene Ansätze. In [22] und [23] verwendet man das Verfahren des so genannten instanzenbasierten Lernens. Alle zum Training benutzen Musikdaten und die Dynamik- und Rhythmik-Variationen werden mit logischen Regeln beschrieben und bilden somit eine Wissensbasis. Eine Anfrage mit einem Testdatensatz liefert dann die wahrscheinlichste Interpretation. Zur Beschreibung der Interpretation wurden die verwendeten Mozart-Sonaten vorweg von Hand in mehrere Abstraktionsebenen unterteilt. Der Lautstärken- und Tempo-Verlauf von Ausschnitten wird dann mit einem Polynom zweiten Grades angenähert. Der Ansatz erfordert also eine aufwändige musikalische Analyse aller eingespielten Musikdaten. Zum Training oder als Anfrage werden die Stücke als Ganzes verwendet. Der zeitliche Charakter wird dabei nur in Attributen übergeben und nicht durch einen Eingabestrom. Ob sich das verwendete stark regelbasierte Lernverfahren und die gewählte Datenrepräsentation besser eignen als andere Ansätze, ist fraglich. Der Ansatz in [19] und [14] untersucht monophone (einstimmige), von einem Saxophonisten in verschiedenen Tempi eingespielte Jazz-Interpretationen. Gelernt wird wieder induktiv1 mithilfe eines Logiksystems. Bei der Datenrepräsentation wird eine Note neben der jeweiligen Länge, Position und Lautstärke noch durch den Kontext bezüglich der vorhergehenden und nachfolgenden Note sowie der melodischen Zuteilung zu einer so genannten Narmour Gruppe beschrieben. Die notenweisen Variationen beschreiben die jeweiligen Änderungen von Lautstärke, Notenlänge und zeitlicher Verschiebung. Hierfür wurde eine sehr grobe Diskretisierung von neun Werten gewählt. Der Ansatz dieser Diplomarbeit ist viel uneingeschränkter als die beiden eben beschriebenen. Wir verwenden eine sehr feine Diskretisierung von 128 LautstärkenWerten. Längen und Positionen werden nicht durch Notenwerte, sondern zeitlich mit einer Genauigkeit von einer Millisekunde beschrieben. Auf eine aufwändige 1 Im Gegensatz zum deduktiven (erklärungsbasiertem) Lernen beschreibt das induktive Lernen das Lernen aus Beispielen. 3 vorangehende musikalische Analyse wie z.B. der Unterteilung in logische Abschnitte oder der Beschreibung des melodischen Kontextes wird verzichtet. Zum Lernen wird ein künstliches neuronales Netz verwendet. Dies erlaubt eine sequenzielle Eingabe der einzelnen Noten und damit eine klare Beschreibung des zeitlichen Ablaufs. Zur genaueren Beschreibung des Kontextes wird dem Netz eine Vorausschau im Eingabestrom ermöglicht (s. Abb. 1.1). Dies kann man in Bezug auf einen Pianisten mit einem Vorausschauen im Notentext vergleichen. Abbildung 1.1: Sichtfenster eines Pianisten. Analog wird auch dem neuronalen Netz als Eingabe ein Datenstrom von Noten geboten. Die Spielweise an der aktuellen Position (rote Noten) kann von bereits vergangenen Eingaben (bereits gespielt) und von einem beschränkten Ausschnitt der Folgenoten (Vorausschau-Fenster) beeinflusst werden. Da künstliche neuronale Netze typischerweise mit reellwertigen Ein- und Ausgaben arbeiten, wird auf eine grobe Diskretisierung oder Klassifizierung der Parameter verzichtet, was eine noch genauere Annäherung an eine gewünschte Interpretation ermöglicht. Bei der Musikauswahl legen wir uns auf klassische Musik aus der Romantik fest. Verwendet werden Walzer von Chopin. Diese besitzen eine relativ überschaubare Struktur und lassen besonders variantenreiche Interpretationen zu. Zur groben Methodik (s. auch Abb. 1.2): nach der gezielten Auswahl geeigneter Stücke werden diese von einem Pianisten mittels eines MIDI 2 -fähigen Klaviers eingespielt. Daraus resultiert eine so genannte MIDI-Datei. Auch vom Notentext wird eine MIDI-Datei erzeugt. Von den Stücken existieren somit jeweils zwei Versionen: einmal mit interpretativen Variationen und einmal ohne. Die MIDI-Datei des Notentextes soll also keine Lautstärken-Änderungen oder Temposchwankungen enthalten. Eine wichtige Grundvoraussetzung und damit aber auch größte Einschränkung des Ansatzes ist, dass die beiden Versionen im Ablauf der Notenfolge übereinstimmen müssen. Verzierungen, die nicht im Notentext stehen oder 2 etablierter Standard zur Beschreibung eines Musikstücks als Datenstrom 4 das Hinzufügen bzw. Weglassen einzelner Noten sind demnach bei der Interpretation nicht erlaubt. Um dies zu gewährleisten, müssen entsprechende Anpassungen gemacht werden. Abbildung 1.2: Grobe Methodik. Die beiden MIDI-Versionen von Notentext und Interpretation eines Musikstücks werden ohne Informationsverlust in ein für das Netztraining geeignetes Zwischenformat (EVL) konvertiert. Daraus lässt sich eine Sequenz mit Änderungsparametern für jede einzelne Note errechnen (EDL). Diese Sequenz beschreibt das Trainingsziel. Als Netzeingabe verwendet man die EVL-Datei des Notentextes. Trainiert wird mit einem rekurrenten mehrschichtigen neuronalen Netz. Aus den MIDI-Dateien errechnet man einen für das Netztraining geeigneten Datenstrom. Hierfür wurde das Datenformat EVL (eventlist) entwickelt. Da die beiden Versionen laut obiger Grundvoraussetzung den gleichen Notenablauf besitzen, lässt sich aus den dazugehörigen EVL-Dateien ein Datenstrom mit den für die Interpretation charakteristischen Änderungsparametern ermitteln. Diesen Datenstrom bezeichnen wir mit EDL (event differences list). Zum Netztraining soll ein rekurrentes mehrschichtiges neuronales Netz verwendet werden. Als besondere Netzarchitektur wählen wir ein von Jürgen Schmidhuber und Sepp Hochreiter vorgeschlagenes LSTM 3 -Netz. Dieses hat im Vergleich zu herkömmlichen neuronalen Netzen den Vorteil, beim Datenstrom uneingeschränkter in die Vergangenheit blicken“ zu können, das heißt, die jeweiligen ” Netzausgaben können auch von weit zurück liegenden Eingaben beeinflusst werden. Nach dem Training wird das Netz mit einer ungesehenen Eingabe getestet. Aus Eingabe und resultierender Ausgabe lässt sich dann die Interpretation als MIDIDatei berechnen. Bei einem Vergleich der tatsächlichen Netzausgabe mit der erwarteten können Aussagen über die Generalisierungsfähigkeit des Netzes getroffen werden. Damit ist die Fähigkeit gemeint, aus den zum Training verwendeten Informationen richtige Rückschlüsse zu ziehen und diese auf eine ungesehene Eingabe anzuwenden. 3 long short-term memory 5 Bei den Ergebnissen zeigte sich, dass sich Variationen im Kontext weniger Noten prinzipiell gut erlernen ließen. Die Längen-Beschreibung mit exakten Zeiten anstatt von Noten-Längen in Kombination mit dem Tempo stellte für die trainierten Netze auch kein Problem dar. Der Dynamik- und Rhythmik-Verlauf bezogen auf die komplette Eingabe war jedoch praktisch nicht generalisierbar. Der Aufbau der Diplomarbeit gliedert sich grob in vier Bereiche. Zunächst werden in Kapitel 2 die Grundlagen neuronaler Netze behandelt. Dabei wird auf die verschiedenen Netzarchitekturen und auf Verfahren des Netztrainings eingegangen. Kapitel 3 beschreibt die Besonderheiten des MIDI-Formats und des für das Netztraining entwickelten Datenformats. Wie man an geeignete Musik-Daten gelangen kann, wird in Kapitel 4 gezeigt. Neben dem Einspielen der Stücke und einer kurzen musikalischen Analyse behandelt das Kapitel auch die Notentexterkennung und eine spezielle Technik des Extrahierens von künstlerischen Variationen aus einer Aufnahme um somit den eigentlichen Notentext zu erhalten. Das umfangreichere Kapitel 5 präsentiert verschiedene Experimente und deren Ergebnisse. An die sehr komplizierte Problemstellung zum Interpretieren von Klavieraufnahmen wird sich mit einfacheren Teil-Versuchen sukzessive herangetastet. Zu guter Letzt soll im Schluss noch ein Ausblick über mögliche Weiterführungen und andere Ansätze gegeben werden. Beim Schreibstil wurde darauf geachtet, für einen Informatiker nicht unbedingt selbstverständliche Sachverhalte so anschaulich wie möglich darzustellen. Bei der Erarbeitung des Datenformats (Kapitel 3) oder in den Experimenten (Kapitel 5) wird der Leser hin und wieder mit einem wir“ mit einbezogen. Einzelne Kapitel ” dürfen durchaus getrennt voneinander gelesen werden. Der relativ umfangreiche Anhang wird hauptsächlich zur Beschreibung der verwendeten Software oder für Parameter-Auflistungen verwendet und soll daher auch als Stütze für diejenigen gelten, die sich mit den in der Diplomarbeit verwendeten Methoden genauer auseinandersetzen wollen. Das Glossar beinhaltet Kurzbeschreibungen von Fachbegriffen und Abkürzungen. Kapitel 2 Grundlagen zu künstlichen neuronalen Netzen In diesem Kapitel soll ein kurzer Überblick über Techniken des Problemlösens mit künstlichen neuronalen Netzen (KNN) gegeben werden. Zunächst werden Aufbau und Funktionsweise von vorwärtsgerichteten Netzen beschrieben. Danach wird das Lernverfahren der Rückpropagierung vorgestellt. Es bildet die Grundlage für praktisch alle auf dem Prinzip der Gewichtsanpassung basierenden Lernverfahren. Für die sehr komplexe Lernaufgabe dieser Arbeit wird eine höher entwickelte rekurrente Netzarchitektur mit LSTM -Zellen verwendet. Der vorletzte Abschnitt des Kapitels behandelt die besonderen Eigenschaften dieser Architektur. Eine detaillierte Beschreibung aktueller Lerntechniken und deren Algorithmen würde den Rahmen der Diplomarbeit sprengen, daher wird am Ende des Kapitels noch auf weiterführende Literatur verwiesen. 2.1 Das Neuronenmodell KNN sind ursprünglich biologisch motiviert. Sie versuchen mit einem mathematischen Modell die vernetzten Neuronen eines Gehirns nachzubilden. Abb. 2.1 zeigt ein einfaches mathematisches Modell für ein Neuron. 6 2.1. DAS NEURONENMODELL 7 Abbildung 2.1: Modell für ein Neuron i: Die mit ihren Gewichten wij multiplizierten eingehenden Aktivierungen aj werden summiert. Auf die Summe wird dann die Aktivierungsfunktion f angewendet und das Ergebnis ai ausgegeben. Neuronen stellen die Knoten des neuronalen Netzes dar. Sie sind durch gerichtete, gewichtete Kanten miteinander verbunden und können beliebig durchnummeriert werden. Ein Neuron i wird durch seine Übertragungsfunktion und seine Aktivierungsfunktion f beschrieben. Als Übertragungsfunktion verwendet man normalerweise die gewichtete Summe der Aktivierungen der k vorangehenden Neuronen. Das Ergebnis der Übertragungsfunktion ist neti . k X wij aj = neti (2.1) j=1 wij bezeichnet das Kantengewicht von einem Neuron j zu einem Neuron i. aj ist die Aktivierung vom j-ten Neuron. Auf die Summe neti wendet das Neuron dann die Aktivierungsfunktion f an und leitet das Ergebnis an seine Ausgabe ai weiter: ai = f (neti ) (2.2) Soll das Netz logische Schaltungen beschreiben, verwendet man als Aktivierungsfunktion oft die Schwellwertfunktion (Abb. 2.2 a): 1 falls x > 0 f (x) = (2.3) 0 sonst Ansonsten bietet sich die logistische Funktion (auch Sigmoid-Funktion genannt) f (x) = 1 1 + e−x (2.4) an (Abb. 2.2 b). Sie ist quasi-linear um 0 und genauso wie die Schwellwertfunktion begrenzt auf einen Wertebereich zwischen 0 und 1, hat jedoch den Vorteil, differenzierbar zu sein. 2.2. VORWÄRTSGERICHTETE NETZE (a) 8 (b) Abbildung 2.2: Beispiele für Aktivierungsfunktionen: (a) Schwellwert-Funktion, (b) Sigmoid-Funktion 2.2 Vorwärtsgerichtete Netze Vorwärtsgerichtete Netze, in der Literatur auch Feed-Forward-Netze genannt, können durch zusammenhängende azyklische Graphen mit den oben beschriebenen Neuronen als Knoten dargestellt werden. Die Knoten des Netzes lassen sich dabei in Schichten anordnen. In der ersten Schicht1 befinden sich Knoten für die Netzeingabe, in der letzten Schicht die Netzausgabe-Knoten. Schon Netze mit drei Schichten können (mit genügend Knoten in der mittleren Schicht) Polynome beliebigen Grades berechnen. Das Netz berechnet also aus den Eingaben das richtige Ergebnis des Polynoms und gibt es aus. Schichten zwischen Ein- und Ausgabe werden als verborgene Schichten bezeichnet (engl. hidden layers). Abb. 2.3 zeigt ein typisches dreischichtiges Feed-Forward-Netz mit drei Eingabe-Knoten, fünf verborgenen Knoten und zwei Knoten der Ausgabeschicht. Abbildung 2.3: Dreischichtiges, vollständig verknüpftes Feed-Forward-Netz 1 Diese Schicht wird oft auch als Schicht 0 bezeichnet, da die Knoten eigentlich keine vollwertigen Neuronen sind, sondern nur die jeweiligen Netzeingaben in das Netz propagieren. 2.3. RÜCKPROPAGIERUNG 9 Wieviele Neuronen in der verborgenen Schicht zur Lösung eines Problems benötigt werden, ist manchmal schwer abzuschätzen und noch nicht wirklich ver” standen“ ([30], S. 905). Bei zu wenigen Knoten kann das Problem nicht gelöst werden, bei zu vielen Knoten neigt das Netz zu einer Überanpassung, dem so genannten Overfitting“. Bildlich gesprochen lernt das Netz beim Phänomen der ” Überanpassung die Eingaben nur noch auswendig. Mehr dazu im übernächsten Abschnitt Generalisierbarkeit“. ” Die Anzahl der zur Lösung eines Problems benötigen Trainingseingaben hängt stark von dessen Komplexität ab. Prinzipiell gilt: je größer die Trainingsmenge, umso größer die Wahrscheinlichkeit, dass das Problem erlernt werden kann. 2.3 Rückpropagierung Das Lern-Verfahren der Rückpropagierung wurde schon 1974 von Paul Werbos formuliert und führte gegen Ende der 80er Jahre zu einer Renaissance“ der KI” Forschung. Es ist ein Spezialfall des in der Optimierung bekannten Gradientenabstieg-Verfahrens und basiert auf dem mittleren quadratischen Fehler (MSE ). Das Prinzip ist einfach: beginnend mit einem Netz mit zufälligen Kantengewichten versucht man diese so zu verändern, dass sich der Fehler zwischen aktueller und erwünschter Ausgabe verkleinert. ! Abbildung 2.4: Verfahren der Rückpropagierung: Die Eingabedaten werden zur Ausgabeschicht propagiert. Mittels Gradientenabstieg über der Fehlerfunktion werden dann im Rückpropagierungs-Schritt die einzelnen Gewichte der Reihe nach angepasst. Den schematischen Ablauf der Rückpropagierung zeigt Abb. 2.4. Man legt die Eingabe an die Eingabeknoten des Netzes und propagiert sie bis zur Ausgabeschicht durch. Mit dieser (tatsächlichen) Ausgabe und der erwünschten Ausgabe wird dann der Fehler berechnet. Durch partielle Ableitung der Fehlerfunk- 2.3. RÜCKPROPAGIERUNG 10 tion E nach den jeweiligen Gewichten können rekursiv die entsprechenden Gewichtsänderungen ermittelt werden. Der Fehler wird also durch die verborgenen Schichten bis zur Eingabeschicht zurückpropagiert“. ” Der mittlere quadratische Fehler sei wie folgt definiert: E= X 1 (di − ai )2 2 i∈Ausgabeschicht (2.5) Ein Einsetzen der Formeln 2.1 und 2.2 verdeutlicht, dass man den Fehler auch als → → eine Funktion über alle Gewichte − w auffassen kann (E = E(− w )). E bezeichnet man daher auch einfach als Fehlerfunktion. ai steht für die durch Formel 2.2 bestimmte tatsächliche Ausgabe und di die erwünschte Ausgabe des i-ten Neurons. Der MSE soll nun minimiert werden, dazu werden alle Gewichte angepasst: wij ← wij + ∆wij (2.6) Nach der Anpassung kann mit einer neuen Lern-Epoche fortgefahren werden. Der Änderungsfaktor ∆wij wird durch partielle Ableitung von E nach wij berechnet (Gradientenabstieg): ∆wij = −η ∂E = −ηδi aj ∂wij η>0 (2.7) δi wird als Fehlersignal bezeichnt. Es beinhaltet die Berechnungsvorschrift der partiellen Ableitung ohne Bezug auf die Aktivierung von j. η beschreibt die Lernrate. Je höher die Lernrate, desto stärker wirkt sich die Änderung auf die Gewichte aus. Bei unseren Experimenten verwenden wir normalerweise Lernraten im Bereich zwischen 0.001 und 0.00001. Die partielle Ableitung kann man unter Verwendung der Kettenregel folgendermaßen umformen: ∂E ∂ai ∂neti ∂E = ∂wij ∂ai ∂neti ∂wij (2.8) Alle diese Gradienten lassen sich berechnen. Für das Fehlersignal δi in Formel 2.7 ergibt sich damit und mit der Einbeziehung von Kanten die nicht zur Ausgabeschicht führen, folgende rekursive Formel: 0 f (neti )(d Pi − ai ) falls i ∈ Ausgabeschicht δi = (2.9) f 0 (neti ) k δk wki sonst Die Aktivierungsfunktion f muss also differenzierbar sein. Verwendet man die logistische Funktion von 2.4, so gilt f 0 (neti ) = ai (1 − ai ). Um den Gradientenabstieg bei der Rückpropagierung graphisch zu deuten, kann man die Fehlerfunktion als hochdimensionale Fläche betrachten. Die Anzahl der 2.3. RÜCKPROPAGIERUNG 11 Abbildung 2.5: Graphische Deutung der Fehlerfunktion: Der MSE bildet ein mehrdimensionales Fehlergebirge. Der aktuelle Fehler bahnt sich während der Lernphase einen Weg nach unten zu einem niedrigeren MSE. Dimensionen entspricht dabei der Anzahl der Gewichte im Netz. Abb. 2.5 zeigt ein Fehlergebirge für zwei Gewichte und den Lernfortschritt als Kurve, die sich den Weg zu einem niedrigeren MSE bahnt. An dem Modell lässt sich auch sehr anschaulich der Vorteil einer Erweiterung des Algorithmus zeigen. Berücksichtigt man im Trainingsverlauf bei der Änderung der Gewichte (mit Formel 2.7) zusätzlich die vorhergehenden Änderungen der jeweiligen Gewichte, erfährt der Änderungsfaktor eine gewisse Trägheitseigenschaft. Für die neue Gewicht-Anpassung gilt dann: neu alt ∆wij = −ηδi aj + µ∆wij η, µ > 0 (2.10) Den Faktor µ bezeichnet man als Momentum. Rückpropagierungsalgorithmen mit Momentum zeigen einen deutlich besseren Lernerfolg, da das Sinken des Fehlers beschleunigt wird, ähnlich wie bei einer Kugel auf hügeliger Fläche. Das Momentum hilft auch, lokale Minima (Schluchten) zu überwinden. Ein typischer Wert für µ liegt im Bereich von 0.9. Problematisch ist beim Verfahren der Rückpropagierung die Tatsache, dass es zwar meist gegen ein Fehlerminimum tendiert, dabei aber keine Sicherheit oder Hinweise liefert, ob es sich um ein globales Minimum handelt. Trotz Momentum kann es zudem passieren, dass der Fehler auf einem flachen Plateau der Fehlerlandschaft stehen bleibt (∆wij = 0). Lösungsansätze dazu sind Evolution oder die dynamische Veränderung von Lernrate und Momentum. 2.4. GENERALISIERBARKEIT 2.4 12 Generalisierbarkeit Die meist alles entscheidende Frage beim Netztraining ist die nach der resultierenden Fähigkeit zur Generalisierung. Ein KNN soll aus einer Menge von Trainingsdaten Regelmäßigkeiten erkennen, um dann bei ungesehenen Eingaben ein richtiges Ergebnis erzeugen zu können. Entscheidend für diese Anforderung ist die Wahl der Netzarchitektur und der Datenrepräsentation. Sinnvolle Netzparameter und die Güte der Daten lassen sich zwar ungefähr abschätzen, oft kommt man jedoch um eine empirische Bestimmung nicht herum. Mittels Skalierung sollten die Netzeingaben wenn möglich auf einen Wertebereich von [-1..1] gebracht werden, da in diesem Bereich die SigmoidFunktion noch ein nahezu lineares Verhalten aufweist. Zur Wahl der NeuronenAnzahl seien zwei meist unerwünschte mögliche Netzverhalten erwähnt: Überund Unteranpassung. Zu viele Gewichte führen dazu, dass ein Netz die verwendeten Trainingsbeispiele auswendig“ lernt. In diesem Fall spricht man von Überanpassung. Ausfindig ma” chen lässt sich der Effekt, indem man die zu Verfügung stehenden Datensätze in Trainings- und Test-Daten (die so genannte Validierungs-Menge) aufteilt. Während des Trainings kann zu jeder Lernepoche auch der Fehler auf der Testmenge ermittelt werden. Ein Anstieg deutet auf eine Tendenz zur Überanpassung hin. Das Netztraining kann dann abgebrochen werden. Bei der Unteranpassung existieren zu wenig Neuronen der verborgenen Schicht. Das Netz kann dann den Zufälligkeiten“ der Trainingsmenge nicht mehr folgen. ” 2.5 Rekurrente Netze Eine mächtigere Klasse von neuronalen Netzen entsteht durch Rekurrenz. Bisher betrachteten wir nur zyklenfreie Netze. In rekurrenten Netzen sind zyklische Verbindungen erlaubt. Das Netz kann somit nicht nur mathematische Funktionen darstellen, sondern auch ein dynamisches System mit internen Zuständen bilden. Rekurrente Netze werden normalerweise für eine Folge von Eingabewerten verwendet, das Netz erfährt also eine Taktung. Für jeden Wert der Eingabesequenz erzeugt es sofort eine Ausgabe. Ist man nur an der Ausgabe nach einer größeren Anzahl von abgearbeiteten Eingabewerten interessiert, so sollte nur diese Ausgabe zur Berechnung des Fehlers beim Gradientenabstieg verwendet werden. Für die Aufgabenstellung dieser Arbeit wird jedoch zu jedem Eingabewert eine Ausgabe erwartet. Bei rekurrenten Netzen hängt das Verhalten auf eine Eingabe (im Gegensatz zu vorwärtsgerichteten Netzen) nicht nur von der aktuellen Eingabe, sondern auch 2.5. REKURRENTE NETZE 13 von Aktivierungen der Neuronen im Netz ab. Den einfachsten Fall eines dreischichtigen rekurrenten Netzes zeigt das Beispiel in Abb. 2.6. Die Ausgabe von Knoten 1 wird auch von seiner eigenen Aktivierung des vorhergehenden Zeitschritts beeinflusst. Abbildung 2.6: Minimales rekurrentes dreischichtiges Netz. Der Knoten 1 in der verborgenen Schicht besitzt eine rekurrente Verbindung zu sich selbst. Der im vorletzten Abschnitt vorgestellte Rückpropagierungsalgorithmus muss für die Anwendung auf rekurrente Netze abgewandelt werden. Im Beispiel würde die Berechnung des Fehlersignals (Formel 2.9) nicht terminieren. Eine Möglichkeit der Abwandlung wäre, beim Training die Rückkopplungen einfach zu ignorieren. Erfolgversprechender sind aber die Verfahren BPTT 2 oder RTRL3 oder eine Kombination der beiden. BPTT faltet das Netz nach der Zeit auf (s. Abb. 2.7). Danach kann man die herkömmliche Rückpropagierung anwenden. Gewichte braucht man bei der Entfaltung nicht zu kopieren, sie werden so oft angepasst, wie das Netz bereits entfaltet wurde. Abbildung 2.7: Für BPTT entfaltetes Netz in dritter Generation mit einem Rückpropagierungs-Weg (rot) des aktuellsten Fehlers Bei RTRL erfolgt die Gewichtsadaption auch iterativ, jedoch hängt der Platzbedarf der Berechnung nicht mehr von der Länge der längsten Eingabesequenz ab. RTRL eignet sich für lange Trainingssequenzen und für Online-Lernen4 . 2 backpropagation through time real time recurrent learning 4 Im Gegensatz zum Offline-Lernen wird beim Online-Lernen der für die Gradientenberech3 2.6. LSTM 14 Auf die spezielleren Verfahren zum Lernen mit rekurrenten Netzen wird hier nicht mehr genauer eingegangen. Es gibt diesbezüglich eine Vielzahl ausreichend detaillierter Literatur, worauf im letzten Abschnitt des Kapitels verwiesen wird. 2.6 LSTM In dieser Arbeit verwenden wir hauptsächlich eine spezielle rekurrente Netzarchitektur. 1997 schlugen Jürgen Schmidhuber und Sepp Hochreiter die so genannten Long short-term memory“-Zellen vor. Motiviert war die Architektur durch ein ” bereits altbekanntes Problem bei Langzeit-Anhängigkeiten (engl. long-term dependencies). Daten für die Netzeingabe enthalten Langzeit-Abhängigkeiten, wenn Bereiche in der Eingabe einen großen Einfluss auf Ausgabe-Bereiche haben, die erst nach einem längeren Zeitraum folgen. Die problematische Netzeigenschaft ist die des exponentiell abklingenden Fehlersignals beim Training mit einem Gradientanabstiegsverfahren. Bevor wir auf die Architektur von LSTM -Zellen eingehen, wird das Problem des exponentiell abklingenden Fehlers am Beispiel von Abb. 2.7 demonstriert. Zunächst erweitern wir die Funktion des Fehlersignals von Formel 2.9 unter Berücksichtigung der Taktung: 0 f (neti (t))(d falls i ∈ Ausgabeschicht Pi (t) − ai (t)) (2.11) δi (t) = 0 f (neti (t)) k δk (t + 1)wki sonst Bei den Fehlersignalen und Eingangssummen formalisieren wir die jeweiligen Knoten als Indizes und die Zeit als Funktionsparameter. In Bezug auf Abb. 2.7 bezeichnet also beispielsweise net1 (2) die Eingangssumme von Knoten 1 zum Zeitpunkt t = 2. Es soll veranschaulicht werden, wie stark sich der Fehler e(2) = d(2) − a(2) am Ausgabeknoten 2 zum Zeitpunkt t = 2, bei der durch die roten Pfeile beschriebenen Rückpropagierung bis zum Knoten 1 zur Zeit t = 0 zwangsläufig abschwächt. Wir berechnen dazu das Fehlersignal δ1 (0). Zur Vereinfachung werden δ2 (1) und alle Fehlersignale zum Zeitpunkt t > 2 als Null angenommen. Es gilt: δ1 (0) = f 0 (net1 (0))(δ1 (1)w11 + δ2 (1)w21 ) δ1 (1) = f 0 (net1 (1))(δ1 (2)w11 + δ2 (2)w21 ) δ1 (2) = f 0 (net1 (2))(δ1 (3)w11 + δ2 (3)w21 ) δ2 (2) = f 0 (net2 (2))e(2) nung verwendete Fehler nicht nach der Eingabe einer ganzen Trainingssequenz, sondern nach jedem einzelnen Eingabewert ermittelt. Bei Trainingssequenzen mit unbegrenzter Länge muss ein Online-Verfahren verwendet werden. 2.6. LSTM 15 Laut Annahme gilt: δ2 (1) = δ1 (3) = δ2 (3) = 0 ⇒ δ1 (0) = f 0 (net1 (0))f 0 (net1 (1))f 0 (net2 (2))w11 w21 e(2) Verwendet man als Aktivierungsfunktion die Sigmoid-Funktion (f 0 (x) ≤ 0.25), lässt sich das betrachtete Fehlersignal folgendermaßen abschätzen: δ1 (0) ≤ 0.253 w11 w21 e(2) Schon beim Rückpropagieren um nur zwei Zeitschritte wird die Änderung des Einflusses der Eingabe verschwindend gering. Analog würde der Einfluss einer um n Zeitschritte zurückliegenden Eingabe bei f 0 zu einem Exponenten von n + 1 führen. Bleiben alle betroffenen Gewichte im Betrag kleiner als 4.0, lässt sich mittels Induktionsbeweis allgemein zeigen, dass das Erlernen eines Zurückblickens“ ” exponentiell mit der Anzahl der Zeitschritte erschwert wird. Diese Einschränkung durch den exponentiellen Fehlerrückfluss gilt es nun zu umgehen. In der LSTM-Architektur wird ein konstanter Fehlerrückfluss mithilfe des so genannten konstanten Fehlerkarussells“ (CEC ) erreicht. Dieses besteht aus einem ” Knoten mit linearer Aktivierungsfunktion und einer rekurrenten 1.0-Verbindung auf sich selbst. Die Aktivierung des CEC wird als Zustand der LSTM-Zelle bezeichnet. Für ein CEC i gilt: fi (neti ) = neti → fi0 (neti ) = 1 wii = 1.0 (2.12) Abbildung 2.8: Konstanter Fehlerrückfluss durch das CEC, dargestellt an einem über drei Zeitschritte entfalteten Beispiel-Netz 2.6. LSTM 16 In Abb. 2.8 wird das im vorigen Abschnitt beschriebene Beispiel von Abb. 2.6 um ein eingeschobenes CEC erweitert. Bei der zeitlichen Entfaltung wird deutlich, dass der Fehler nun ungedämpft durch die linearen CEC-Knoten zurückfließen kann. Dieser naive Ansatz des konstanten Fehlerrückflusses birgt jedoch Probleme in sich: manche Eingaben der Vergangenheit sollen zwar möglicherweise einen großen Einfluss auf die Ausgabe haben, Eingaben zu anderen Zeitpunkten jedoch nicht. In solchen Fällen entsteht am CEC ein Eingangsgewichts-Konflikt. Analog ergibt sich für die Gewichte hinter dem CEC ein AusgangsgewichtsKonflikt. Dabei soll der im CEC gespeicherte Wert die Ausgabe beeinflussen, muss jedoch hin und wieder auch davon abgehalten werden. LSTM-Zellen lösen dieses Problem durch multiplikative Tore (engl. gate units), welche den Ein- und Ausgang des CEC für Datenpropagierung und Fehlerrückpropagierung sperren, bzw. öffnen können. Liefert beispielsweise das Eingangs-Tor eine Null, ändert sich der Zustand der Zelle nicht. Abbildung 2.9: Grundlegende Architektur einer LSTM-Zelle. Mögliche Eingaben und die Ausgabe des CEC werden durch die beiden Tore Input-Gate“ und Output-Gate“ ” ” kontrolliert. Abb. 2.9 zeigt vereinfacht das Prinzip einer LSTM-Zelle. Zentraler Kern ist das lineare konstante Fehlerkarussell (rot), dessen Aktivierung den Zellen-Zustand darstellt. Das Input-Gate (grün, links) soll über die multiplikative Verschaltung (blauer Schnittpunkt) entscheiden, ob die an der Zelle anliegende Eingabe ins CEC dringen darf oder nicht. Analog soll das Output-Gate (grün, rechts) entscheiden, ob der derzeitig gespeicherte Zustand die Zelle verlassen darf oder nicht. Die Aktivierungen der beiden Tore werden wieder mittels Sigmoid-Funktion über der Summe der anliegenden Eingänge berechnet. Die Zellen-Eingänge (links) werden ebenfalls aufsummiert und vor der Multiplikation mit der Input-Gate-Aktivierung durch eine differenzierbare Funktion geglättet5 . In der ursprünglichen LSTMBeschreibung [29] wird auch der Zellen-Ausgang nochmals durch eine differenzier5 bzw. gequetscht (engl. squashed) 2.6. LSTM 17 bare Funktion skaliert. Da dies jedoch in nachfolgenden empirischen Versuchen meist keinen Vorteil brachte, wird in obiger Darstellung darauf verzichtet. LSTM-Zellen lassen sich zu Blöcken gruppieren. Blöcke teilen sich die Tore. Das spart Platz und erhöht die Speicherfähigkeit des Netzes. Einheiten außerhalb eines LSTM-Blocks können herkömmliche Neuronen-Knoten oder weitere LSTMBlöcke sein. Benötigt werden genügend Einheiten, um für ein gegebenes Problem ein korrektes Öffnen und Schließen der Input- bzw. Output-Gates erlernen zu können. Im Folgenden werden Forget-Gates und Guckloch-Verbindungen beschrieben. Diese Erweiterungen der LSTM-Zellen verwenden wir auch bei den Experimenten in Kapitel 5. Bei manchen Problemen erscheint es sinnvoll, den Zustand der Zelle (also die Aktivierung des CEC) hin und wieder zurückzusetzen (beispielsweise bei sehr langen Eingabefolgen mit voneinander trennbaren Teilsequenzen). Andernfalls neigt dieser dazu unbeschränkt anzuwachsen, was bei Netzen mit sigmoiden Aktivierungsfunktionen schnell zu einer Übersättigung führt. Um einer Zelle das gelegentliche Zurücksetzen seines Zustands zu ermöglichen, wird die rekurrente 1.0-Verbindung des CEC durch ein zusätzliches multiplikatives Tor kontrolliert, dem so genannten Forget-Gate. Das Forget-Gate soll lernen, den Zellenzustand im richtigen Moment zurückzusetzen, bzw. zu skalieren. Bei geschlossenem Output-Gate hat der Zustand einer Zelle keinen Einfluss auf ihre Tore. Dass die Tore auch den aktuellen Zustand der Zelle, die sie kontrollieren, als Eingabe bekommen, ist manchmal jedoch von Vorteil. Deshalb wird die LSTM-Zelle um so genannte Guckloch-Verbindungen (engl. peephole connections) erweitert. Am CEC wird dazu der aktuelle Zustand der Zelle abgenommen und den Toren als zusätzliche Eingabe zugeführt. Bei der Propagierung des Datenstroms muss man dann nur darauf achten, dass die Aktivierungen von Inputund Forget-Gates und der Zell-Zustand vor den Aktivierungen des Output-Gates berechnet werden. Abb. 2.10 zeigt eine durch Forget-Gate und Guckloch-Verbindungen erweiterte LSTM-Zelle. In Anhang C ist ein Beispiel aufgeführt, das den gravierenden Vorteil von LSTMNetzen gegenüber herkömmlichen rekurrenten Netzen zeigt. Mit zwei Blöcken und jeweils zwei Zellen kann das Netz die kontextsensitive Grammatik an bn cn nach einem Training mit nur zehn Trainingsbeispielen korrekt generalisieren. Ausführlichere Versuche zum Lernen von an bn cn haben ergeben, dass LSTM-Netze bis zu einem n von 500 generalisierungsfähig bleiben können. Herkömmliche rekurrente Netze scheitern schon bei einem n von 10, egal, wie viele Neuronen verwendet werden. 2.7. LITERATUR 18 Abbildung 2.10: LSTM-Zelle mit Erweiterungen. Das Forget-Gate“ reguliert ein ” mögliches Zurücksetzen des Zustands im CEC. Alle drei Tore (grüne Knoten) erhalten über Guckloch-Verbindungen“ auch den aktuellen Zell-Zustand als Eingabe. ” In den Experimenten dieser Arbeit verwenden wir eine von Alex Graves programmierte Bibliothek. Diese implementiert LSTM bereits mit Forget-Gates und Guckloch-Verbindungen. Für Vergleiche zu herkömmlichen rekurrenten Netzen lässt sich die Netzarchitektur problemlos umstellen. Eine kurze Beschreibung und Auflistung der wichtigsten Funktionen befindet sich im Anhang D. 2.7 Literatur Da sich das Forschungsfeld neuronale Netze seit drei Jahrzehnten großer Beliebtheit erfreut, gibt es mittlerweile eine Vielzahl von wissenschaftlichen Arbeiten und Büchern, welche grundlegende Themen wie das Neuronenmodell oder das Gradientenabstiegsverfahren der Rückpropagierung behandeln. Einen kurzen Überblick gibt [2], etwas ausführlicher sind [30], [11], [13] oder [12]. Eine Beschreibung der rekurrenten Lernverfahren BPTT und RTRL findet sich beispielsweise in [18]. Verbesserungen der Algorithmen werden in [24] und [17] vorgeschlagen. Den Induktionsbeweis zum exponentiellen Fehlerrückfluss kann man in [15] nachlesen. Zur ursprünglichen LSTM-Architektur sei auf [29] verwiesen, zur Erweiterung mit Forget-Gates auf [20] und zu den Guckloch-Verbindungen auf [26] und [28]. Das erwähnte an bn cn -Beispiel wird in [27] genauer als im Anhang beschrieben. Ein Problemlösungsansatz mit LSTM und evolutionärem Aspekt wird in [21] vorgestellt. Kapitel 3 Datenrepräsentation Für den in Kapitel 1 beschriebenen Ansatz wird für die Klavier-Aufnahmen eine geeignete digitale und möglichst aussagekräftige Darstellung benötigt. Diese Darstellung muss verschiedene Anforderungen erfüllen, welche in diesem Kapitel kurz dargelegt werden. Außerdem wird das Dateiformat Standard MIDI (musical instrument digital interface) und die Extraktion der relevanten Daten beschrieben. Dazu erarbeiten wir eigene Datenformate, welche später nach entsprechender Skalierung als Netzein- und ausgabe verwendet werden sollen. Zusätzlich wird eine auch für Nicht-Musiker verständliche Visualisierung von Musikstücken vorgestellt sowie mögliche Schwächen der gewählten Datenrepräsentation diskutiert. 3.1 Anforderungen Die gewählte Datenrepräsentation des Notentextes und der Musikaufnahmen sollte sequenzorientiert und von uneingeschränkter Länge sein. Zeitunterschiede sollen mit einer Genauigkeit im Millisekundenbereich dargestellt werden. Bei der Lautstärkenmessung liefern praktisch alle Eingabegeräte den im MIDI-Standard üblichen 7-Bit-Wertebereich von [0..127]. Die ausgewählten Chopin-Walzer benötigen einen Tonumfang von ca. sechs Oktaven, also 72 verschiedenen Tönen. In der Datenrepräsentation sollen außerdem Ereignisse der linken und rechten Hand sowie des Fußpedals separierbar sein. Als einzige Rhythmusinformation müssen Ereignisse, die im Notentext auf den ersten Schlag fallen1 gekennzeichnet werden können. 1 Damit sind Noten- oder Fußpedal-Ereignisse gemeint, die bei Betrachtung des Notentextes direkt nach einem Taktstrich kommen, also ohne eine Pause oder andere Ereignisse dazwischen. Bei Walzern beispielsweise werden solche Noten der linken Hand meist betont. 19 3.2. DAS MIDI-DATEIFORMAT 20 Die Zusatzinformationen für linke/rechte Hand und ob Ereignisse auf den ersten Schlag fallen, sollen es dem Netz später ermöglichen, schneller und besser gewisse Gesetzmäßigkeiten zu erlernen. Auch für den Pianisten wird der Notentext in linke und rechte Hand unterteilt2 . Die linke Hand ist meist für die in Walzern typische Begleitung verantwortlich und zeigt ein spezielles Spielverhalten. Durch ein Abrollen der Hand werden beispielsweise die Töne von Dreiklängen zeitlich verschoben angeschlagen. Einzelne Töne der linken Hand schlägt der Pianist meist nur sehr kurz an und lässt sie dann mithilfe des Fußpedals klingen. Solche typischen Spieleigenschaften werden unter 4.2.4 ( Musikalische Analyse“) ” genauer untersucht. Ein gewisser Schwung in der Spielweise kann nur erreicht werden, wenn der Interpret weiß, welche Noten auf einen Rhythmus-Schlag fallen. Im Notentext wird dies durch Taktstriche deutlich. Bei MIDI-Dateien erhält man diese Information aus der Tempoangabe und mittels Modulo-Division der zeitlichen Position des Ereignisses durch die Taktlänge. Diese Berechnung kann man dem Netz ersparen, indem man vorweg die betroffenen Ereignisse markiert. Bei MIDI-Dateien im richtigen Timing lässt sich das natürlich automatisieren. Alle Werte der Datenrepräsentation sollten in Bezug auf ein späteres Netztraining für einen sinnvollen Wertebereich linear skalierbar bleiben. 3.2 Das MIDI-Dateiformat Die 1982 vorgeschlagene MIDI-Spezifikation wurde zwar im Laufe der Jahre immer wieder erweitert, ist aber bis heute ein etablierter Standard bei praktisch allen digitalen Musikinstrumenten. Die aktuellste MIDI 1.0“-Version (derzeit ” 96.1.2 von 2001) ist auf den Seiten der MMA3 [8] erhältlich. Die Spezifikation behandelt auch den Aufbau der Standard MIDI Files (SMF), welche nun genauer untersucht werden. MIDI-Dateien beginnen mit einem so genannten Header-Chunk, dem sich ein oder mehrere so genannte Track-Chunks anschließen. Das Dateiformat ist byteweise und die Bytes mit dem höchstwertigen Bit zuerst zu interpretieren. Parameter mit mehr als einem Byte werden in Big-Endian-Reihenfolge4 abgespeichert. Der Header-Chunk enthält Parameter, die die komplette MIDI-Datei betreffen, 2 Der Musiker würde hier vermutlich einhaken, da die beiden Zeilen des Notentextes nicht immer unbedingt mit linker und rechter Hand gespielt werden, bei allen aufgenommenen Walzern war dies jedoch der Fall, daher wollen wir es bei der Beschriftung linke und rechte Hand belassen. 3 MIDI manufacturers association 4 Das höherwertige Byte kommt zuerst. 3.2. DAS MIDI-DATEIFORMAT 21 unter anderem den MIDI-Typ, die Anzahl der Spuren und das Zeitformat. Gültige MIDI-Typen sind: • Typ 0: eine einzelne Spur • Typ 1: mehrere Spuren (z.B. für mehrstimmige Musikstücke) • Typ 2: mehrere separate Abschnitte eines Musikstücks hintereinander Spuren beinhalten Datenströme, die bei der Wiedergabe des Musikstücks parallel abgespielt werden. So lassen sich beispielsweise einzelne Instrumente übersichtlich klassifizieren. Für unsere Zwecke verwenden wir ausschließlich MIDI-Dateien vom Typ 1. Wir beschränken uns auf drei Spuren (für linke/rechte Hand und Fußpedal). In einem Zeitformat-Parameter werden die Ticks der internen Zeitrechnung pro Viertelnote bestimmt5 . Bei 500 Ticks pro Viertelnote und dem Standardtempo von 120 bpm (beats per minute) besitzen MIDI-Dateien genau eine Auflösung von einer Millisekunde. Einzelne Spuren werden in der MIDI-Datei durch die Track-Chunks beschrieben. Diese enthalten in ihrem Datenbereich kanalbezogene und systembezogene Ereignisse. Ereignisse sind beispielsweise zu spielende Noten oder Tempowechsel. Jedem Ereignis wird eine Deltazeit vorangestellt, welche die Zeit bestimmt, die ab dem vorhergehenden Ereignis verstreichen muss, bevor es in Kraft tritt. Bytes im Datenbereich enthalten sieben Datenbits. Das höchstwertige Bit wird nur als Flag benutzt. Ereigniscodes beginnen immer mit einem gesetztem höchstwertigem Bit. Die Deltazeit besitzt eine variable Länge. Das höchstwertigste Bit gibt dabei an, ob weitere Deltazeit-Bytes folgen. In diesem Fall ist das Bit gesetzt. Laut MIDI 1.0“-Spezifikation existieren 16 MIDI-Kanäle. Diese werden in der ” Regel dazu verwendet, verschiedene Instrumente anzusteuern. Da in der vorliegenden Arbeit nur Stücke für ein Klavier behandelt werden, genügt ein einzelner MIDI-Kanal. Hierbei bietet sich Kanal 0 an, welcher laut der seit 1991 üblichen General MIDI“-Norm mit einem natürlichen Klavier belegt ist. ” Der Byte-Code für kanalbezogene Ereignisse wird aufgeteilt in zweimal vier Bits. Die höherwertigen Bits bestimmen das Ereignis, die niederwertigen Bits den Kanal. Eine tabellarische Darstellung von Header-Chunk, Track-Chunks und der möglichen Ereignisse des Datenbereichs findet sich im Anhang A. Noten und andere Ereignisse besitzen im MIDI-Format keine direkte Information über ihre jeweilige Länge. Die Notenlänge wird durch die verstrichene Zeit vom Note-An“-Ereignis bis zum Note-Aus“-Ereignis der jeweiligen Tonhöhe ” ” bestimmt, dazu müssen die einzelnen dazwischenliegenden Deltazeiten aufsummiert werden. Der Ausschnitt in Abb. 3.1 zeigt einen typischen Track-Chunk5 Jedoch nur, falls das oberste Bit auf 0 gesetzt ist, ansonsten handelt es sich um einen hauptsächlich in der Videotechnik verwendeten Zeitstempel. 3.3. ENTWICKLUNG EINES EIGENEN EREIGNISLISTEN-FORMATS 22 Datenbereich. Hierbei handelt es sich um einen kurzen Ton, gefolgt von einer Pause und zwei weiteren Tönen. Die vorweg schon erwähnte variable Deltazeit lässt sich bei der zwei Bytes benötigenden Pause (zu Beginn der zweiten Datenzeile) erkennen6 . !"# ! $ " ! $ % !"# ! $ Abbildung 3.1: Auszug aus einem Track-Chunk-Datenblock. Drei Töne (C3, D3 und E3) mit Pausen dazwischen (1000 ms und 100 ms). Der erste Ton (C3) klingt 100 ms und wird dann gestoppt. Die Zeiten gelten unter der Annahme eines globalen Zeitformats von 500 Ticks pro Viertelnote und einem Tempo von 120 bpm. 3.3 Entwicklung eines eigenen EreignislistenFormats Die Codierung der Noten- und Fußpedal-Ereignisse in einer MIDI-Datei ist für das spätere Netztraining ungeeignet, weil bei der Entwicklung des Formats hauptsächlich auf Komprimierung, Portierbarkeit oder Erweiterbarkeit geachtet wurde. Außerdem enthalten MIDI-Dateien eine Vielzahl von Informationen, die für unsere Zwecke nicht benötigt werden und herausgefiltert werden können. Beispielsweise lassen MIDI-Dateien ein Ereignis zur Tempoänderung zu. Tempoänderungen können auf ein Einheitstempo umgerechnet werden, indem die ab der Änderung betroffenen Zeiten entsprechend skaliert werden. Es erscheint sinnvoll, eine eigene Darstellung der Musikdaten zu verwenden, welche die zu Beginn des Kapitels beschriebenen Anforderungen erfüllt und sich für das Netztraining eignet. Wie bereits im Kapitel 1 erwähnt, soll das Format möglichst uneingeschränkt bleiben. Zum Konvertieren von MIDI-Dateien in das eigene Format muss ein entsprechendes Hilfsprogramm implementiert werden. Das eigene Format nennen wir EVL (Eventlist). Es setzt sich wie bei MIDI aus 6 Für die hier dargestellte Deltazeit gilt: (0x87-0x80)*0x80+0x68=0x3E8=1000 [ms] 3.3. ENTWICKLUNG EINES EIGENEN EREIGNISLISTEN-FORMATS 23 einer Sequenz von Ereignissen zusammen, lässt jedoch keine parallelen Datenströme mehr zu. Ein EVL-Ereignis wird durch sechs Parameter bestimmt: Parameter Ereignistyp Länge Deltazeit Notenwert Lautstärke is first beat event“ ” Beschreibung einer von drei derzeit möglichen Typen Länge des Ereignisses in Ticks Zeit die verstreichen muss, bis das Ereignis eintritt Tonhöhe (Falls es sich um ein Noten-Ereignis handelt) Anschlagstärke des Tons (falls es sich um ein NotenEreignis handelt) Flag, das beschreibt, ob das Ereignis auf dem ersten Schlag liegt Wir legen uns auf drei mögliche Ereignistypen fest: • Typ 0: Fußpedal • Typ 1: Note der linken Hand • Typ 2: Note der rechten Hand Anders als bei MIDI-Dateien soll für ein Ereignis auch dessen Länge angegeben werden. Das erleichtert das Netztraining, wenn beispielsweise erlernt werden soll, eine Melodie abgehackter, also mit kürzeren Notenlängen zu spielen. Das Zeitsystem der Deltazeiten wird von MIDI übernommen. Die Deltazeit eines Ereignisses legt also die zu verstreichende Zeit fest, bis das Ereignis eintritt. Sollen mehrere Ereignisse simultan stattfinden, wird eine Deltazeit von Null verwendet. Längen und Deltazeiten erhalten im EVL-Format einen 16 Bit Platzhalter und stellen Millisekunden dar. Töne oder Pausen länger als 65.535 ms sind also nicht zulässig, kommen aber in normalen Musikstücken ohnehin nicht vor. Für Notenereignisse wird der jeweilige Notenwert und die Lautstärke mit einem Wertebereich von [0..127] angegeben. Der Boolean-Platzhalter is first beat event“ bestimmt, ” ob das Ereignis auf den ersten Schlag eines Taktes fällt oder nicht. Eine Verwendung globaler Ereignispositionen anstatt Deltazeiten mag auf den ersten Blick von Vorteil sein, dadurch bekommen Ausschnitte der Musiksequenzen jedoch eine meist ungewollte Abhängigkeit von deren Position. Zwei Fragmente mit exakt derselben Melodie an verschiedenen globalen Positionen besitzen im Deltazeit-Modell dieselbe Darstellung, was im Modell mit globalen Ereignispositionen nicht der Fall ist. Dies vereinfacht die Trainingsdaten entscheidend. Für die Konvertierung zwischen MIDI- und EVL-Dateien wurden die Hilfsprogramme mid2evl und evl2mid entwickelt. Die jeweiligen C-Quelltexte lassen sich unter commands“ bei [3] einsehen. ” Aufgrund der Einfachheit von EVL-Dateien können sie nach einer kleinen Um- 3.3. ENTWICKLUNG EINES EIGENEN EREIGNISLISTEN-FORMATS 24 formung leicht mit dem Funktionenplotter Gnuplot visualisiert werden. Das Beispiel in Abb. 3.2 zeigt die so genannte Matrix-Darstellung eines Ausschnitts des Chopin-Walzers Opus posth. 69 Nr. 1. Die unterschiedlichen Tonhöhen sind entlang der y-Achse ablesbar. Längen und Positionen der als horizontale Balken dargestellten Noten werden entlang der x-Achse deutlich. Zusätzlich können unterhalb noch Fußpedal-Ereignisse (wie im Beispiel) oder die Lautstärken der jeweiligen Noten dargestellt werden. Das Gnuplot-Script7 zur Visualisierung von EVL-Dateien ist im Anhang B abgedruckt. Ausschnitt aus melody02 C6 C5 C4 C3 C2 C1 Fußpedal 0 2 4 6 8 10 Zeit [sec] Abbildung 3.2: Einfache Visualisierung mithilfe eines Gnuplot-Scripts. Einzelne Töne werden als Balken (blau) dargestellt. Die Balkenbreite entspricht der Tonlänge. An der vertikalen Position lässt sich die Tonhöhe ablesen. Die horizontale Position beschreibt, wann der Ton gespielt wird. Fußpedalereignisse können als Blöcke (gelb) eingetragen werden. EVL bestimmt das in Abb. 1.2 dargestellte Zwischenformat. Aus den EVLDateien für Notentext und Interpretation eines Musikstücks lassen sich die für die Interpretation relevanten Informationen filtern. Redundante Daten können dabei vernachlässigt werden. Die beiden Versionen unterscheiden sich nur in den drei Parametern Ereignislänge, Deltazeit und Lautstärke. Die jeweiligen Änderungen werden durch Subtraktion festgehalten. Aus einem EVL-Paar für ein Musikstück berechnen wir demnach für jedes Ereignis die Differenzen der Längen, Deltazeiten und Lautstärken. Die Tripel werden 7 Verwendet wurde die Gnuplot-Version 4.0. 3.3. ENTWICKLUNG EINES EIGENEN EREIGNISLISTEN-FORMATS 25 in einer neuen Sequenz abgelegt und können als EDL-Dateien (event differences list) abgespeichert werden. Es gilt: Interpretation.evl − Notentext.evl = Unterschiede.edl Verfügt man also über die EVL-Darstellung des Notentextes und die passende EDL-Sequenz, so lässt sich daraus durch Aufaddieren die Interpretation berechnen. Diese lässt sich dann natürlich auch wieder zu einer abspielbaren MIDI-Datei umwandeln. Bei der Berechnung der EDL-Sequenzen wird nochmals deutlich, warum Deltazeiten den globalen Ereignispositionen vorzuziehen sind. Differenzen der globalen Zeiten würden ihre Aussagekraft mehr und mehr verlieren. Ist beispielsweise die Version in Interpretation.evl langsamer, würde dies in der EDL-Sequenz zu einem immer weiter wachsenden Faktor führen8 . Abb. 3.3 soll unseren Ansatz nochmals beispielhaft an einem kurzen Ausschnitt verdeutlichen. Dieser besteht aus einem Fußpedal-Ereignis (Typ 0) und Notenereignissen der linken (Typ 2) und rechten Hand (Typ 1). Die Werte der Längen (len), Deltazeiten (dt) und Lautstärken (vol) werden subtrahiert. Abbildung 3.3: Beispiel zur Berechnung einer EDL-Datei. Jede Datenzeile entspricht einem Ereignis. Stimmen die Ereignisse von Interpretation und Notentext überein (erkennbar an type und val), werden zur Berechnung der Unterschiede einfach die jeweiligen Deltazeiten (dt), Längen (len) und Lautstärken (vol) subtrahiert. 8 Wie in Kapitel 2 bereits erwähnt, sind kontinuierlich wachsende Zustände, bzw. Aktivierungen wegen der Gefahr der Übersättigung ungeeignet. 3.4. GRENZEN DES EVL-FORMATS 26 Andere Tonhöhen (val)9 , oder eine vom Notentext abweichende Anzahl der Noten sind bei der Interpretation nicht zulässig. Bei der Berechnung der EDL-Datei wird die Interpretation in der Ereignisreihenfolge des Notentextes, beginnend mit dem ersten Ereignis geparst. Stimmen Ereignistyp und Tonhöhe überein, wird von zwei äquivalenten Ereignissen ausgegangen und deren Differenzen berechnet. Weist die EVL-Sequenz der Interpretation eine andere Ereignis-Reihenfolge auf, muss sie nachträglich an den Notentext angeglichen werden. Dies wird am Beispiel in Abb. 3.4 mit drei verschiedenen Noten-Ereignissen gezeigt. Die Angleichung ist aus Gründen der Eindeutigkeit nötig, da sich EDL-Dateien immer auf die Reihenfolge des Notentextes beziehen und keine vollständige Information für die Zuordnung von Ereignissen besitzen. Abbildung 3.4: Angleichen der Ereignis-Reihenfolge an den Notentext. Die TonReihenfolgen der Ereignislisten-Darstellung von Notentext (1, 2, 3) und Interpretation (3, 1, 2) stimmen nicht mehr überein. Daher wird sie bei der Interpretation angeglichen. Die Werte der Deltazeiten verteilen sich neu. 3.4 Grenzen des EVL-Formats Das EVL-Format erfüllt alle zu Beginn des Kapitels beschriebenen Anforderungen. Zudem wäre eine Erweiterung auf andere Musikrichtungen durch die Einführung anderer Ereignistypen problemlos möglich. Es gibt jedoch natürlich auch Probleme bei der Datenrepräsentation mit EVL, welche nachfolgend kurz skizziert werden. Ein Kritikpunkt ist die Unzulässigkeit anderer Töne in der Interpretation. Fügt der Pianist in seiner Ausführung Noten hinzu (z.B. bei Verzierungen) oder lässt sie aus, müssen betroffene Ereignisse aufwändig von Hand ausgeschlossen oder die Notentext-Version angepasst werden. Eine übliche Partitur enthält mehr Informationen als nur Noten und Fußpedale. Hinweise zu Dynamik und Tempowechseln sind nicht leicht umzusetzen. Noten 9 val=60 entspricht dem Ton C2 (eingestrichenes C mit 261,5 Hz). 3.4. GRENZEN DES EVL-FORMATS 27 in einem Bereich mit spezieller Dynamik-Kennzeichnung könnten zwar in der EVL-Datei mit einem entsprechenden Lautstärken-Wert versehen werden (z.B. in 20er-Stufen von pianissimo“ mit 40 bis fortissimo“ mit 120), dies erfordert ” ” jedoch zusätzliche Handarbeit. Deshalb werden die Eingangsdaten in unseren Experimenten globale Lautstärke und globales Tempo besitzen. Hinweise im Notentext wie con espressione“ (mit Ausdruck spielen) müssen ver” nachlässigt werden, obwohl sie ein guter Pianist sicherlich in seine Interpretation mit einfließen lässt. Manche MIDI-Geräte messen bei Fußpedal-Ereignissen noch die Stärke, mit der das Pedal gedrückt wird. Dies führt jedoch zu einer Flut von Daten und wird im EVL-Format nicht berücksichtigt. Das Deltazeiten-Modell birgt auch ein kleines Risiko: da sich die Deltazeiten immer auf das Vorgängerereignis beziehen, führt eine kleine Änderung (z.B. eine eingeschobene Note) oft zu einer völlig anderen Deltazeit des jeweiligen Ereignisses. Dieses Problem wird auch später unter 5.5 genauer beschrieben. Ein großer Vorteil des EVL-Formats ist seine Einfachheit. Es ist trotzdem sehr uneingeschränkt und lässt sich leicht von und zu MIDI-Dateien konvertieren. Der Ansatz mit EVL verlangt keine vorangehende harmonische Analyse des Musikstücks. Kapitel 4 Datenbeschaffung Ziel der Datenbeschaffung soll es sein, möglichst effektiv geeignete EVL/EDLPaare zu generieren. Zuerst zeigt das Kapitel, wie sich EVL-Daten von Hand erzeugen lassen. Der zweite Abschnitt behandelt mögliche Ansätze, wie man an die komplexeren Daten von Klavier-Interpretationen gelangen kann. Zudem wird die Vorgehensweise der im Rahmen dieser Arbeit durchgeführten Aufzeichnungen dokumentiert und die resultierenden Daten kurz analysiert. Im dritten Abschnitt des Kapitels wird beschrieben, welche weiteren Schritte nötig waren, um die Aufnahmen für ein Netztraining verwendbar zu machen. 4.1 Von Hand erstellte Daten In späteren Grundlagen-Experimenten wollen wir unter anderem Tests mit einfachen Melodien durchführen. Hierfür werden zwei Versionen der Melodien benötigt: das Original und eine modifizierte Variante mit den zu erlernenden Eigenschaften. Beide Versionen lassen sich bequem mit einer Sequenzer-Software erstellen und als MIDI-Dateien exportieren. Diese werden dann, wie in Kapitel 3 beschrieben, in ein EVL/EDL-Paar umgewandelt. Wichtig beim Editieren ist ein musikalisches Grundverständnis. Anforderungen an das Sequenzer-Programm sind die Exportierbarkeit zu MIDI-Dateien vom Typ-1 und die Möglichkeit, alle Töne beliebig zu platzieren. Hierfür bietet sich ein Matrix-Editor an. Eine optionale Notenblatt-Ansicht vereinfacht den Vorgang meist. Praktisch wäre zudem die Möglichkeit, ein MIDI-Keyboard als Eingabeinstrument zu verwenden. Es existiert mittlerweile eine Vielzahl von Programmen1 , 1 Eine allgemeine Übersicht gibt es unter [1]. 28 4.2. KLAVIERAUFNAHMEN 29 Abbildung 4.1: Der Sequenzer Logic Fun für Windows mit Matrix-Editor-Ansicht welche die erwähnten Anforderungen erfüllen. Neben Freeware-Sequenzern wie z.B. AudioMaster von Quartz oder dem Open-Source-Sequenzer Jazz++ sind die derzeit wohl am weitesten verbreiteten professionellen Musik-Programme Steinberg Cubase SX, Pro Tools von Digidesign und Logic Audio von Emagic. Wir verwenden zur Erstellung und Nachbearbeitung von Musikdaten die frei verfügbare Schulversion Emagic Logic Fun 4.72 (s. Abb. 4.1). 4.2 Klavieraufnahmen Für die Aufgabenstellung dieser Diplomarbeit benötigen wir aufwändigere MusikDaten. Ein neuronales Netz soll anhand von Klavieraufnahmen geeigneter Chopin-Walzer lernen. Es stellt sich die Frage, wie man aussagekräftige und für das Training geeignete EVL-Daten dieser Walzer erhalten kann. 2 Die Version stammt aus dem Jahr 2001 und reicht für unsere Zwecke völlig aus. Ein Jahr später wurde Emagic übrigens von Apple aufgekauft, seitdem werden keine kostenlosen Schulversionen mehr angeboten. 4.2. KLAVIERAUFNAHMEN 4.2.1 30 Ansätze Hierfür gibt es verschiedene Ansätze. Im Internet existiert zum Beispiel eine Unmenge von MIDI-Dateien. Auch von Chopin-Walzern ließen sich zahlreiche Dateien finden3 . Die Stücke waren meist jedoch sehr uneinheitlich. Entweder wurden sie von verschiedenen Interpreten und mit verschiedenen Techniken eingespielt oder es handelte sich nur um eine interpretationslose (und damit unbrauchbare) Umsetzung des Notentextes. Es finden sich auch zahlreiche nachbearbeitete Versionen. Dabei wurden einer interpretationslosen Version nachträglich von Hand Tempo-Schwankungen und Dynamik hinzugefügt. Diese nachbearbeiteten Versionen klingen bereits wesentlich humaner“ und werden auch in einem Experiment ” von Kapitel 5 Verwendung finden. Ein anderer Ansatz ist die Extraktion der Spielweise aus bestehenden Audio-CDAufnahmen einzelner Künstler. Dies erweist sich jedoch als äußerst kompliziert. Problematisch ist hauptsächlich die Tatsache, dass mitschwingende Obertöne nur schwer von tatsächlich gespielten Tönen unterschieden werden können. Selbst die fortschrittlichsten derzeit verfügbaren Verfahren der polyphonen Ton-Erkennung haben noch mit einer Fehlerrate von 36%4 zu kämpfen (siehe auch [16], S. 40f). Eigene Versuche mit den Programmen AmazingMIDI, intelliScore Polyphonic und museBook Wav2Midi konnten auch keine zufrieden stellenden Ergebnisse liefern. Der Nachbearbeitungsaufwand der resultierenden MIDI-Daten wäre zu immens. Was jedoch relativ gut funktioniert, ist die automatisierte Erkennung von Temposchwankungen und Gesamtdynamikverlauf. Tobudic und Widmer ([23]) arbeiten zum Beispiel ausschließlich mit diesen Daten. Informationen über die Anschlagstärken einzelner Töne sowie Tonverzögerungen oder Variationen in der Tonlänge können dabei nicht berücksichtigt werden. Die amerikanische Firma Zenph behauptet zwar, ein Verfahren entwickelt zu haben, um fehlerfrei MIDI-Daten aus bestehenden Audio-Aufnahmen von Klavierstücken reproduzieren zu können, Informationen über die Methodologie werden jedoch nicht gegeben. Auch eine schriftliche Nachfrage blieb leider erfolglos. Man kann daher davon ausgehen, dass mit dem heutigen Stand der Technik eine nahezu fehlerfreie automatisierte Extraktion der exakten Spielweise aus analogen Audio-Aufnahmen nicht möglich ist. Optimal wäre es daher, zusammen mit einem Pianisten die Stücke mit geeigneter Abnahmetechnik neu einzuspielen. Das verlangt deutlich weniger Bearbeitung von Hand als beim Ansatz mit bestehenden Audio-Aufnahmen. Außerdem dürfte der Ansatz im Gegensatz zu MIDI-Dateien aus dem Internet einheitlichere und 3 4 Gute Archive bieten [7] oder das eingeschränkte Portal [10]. bei sechsstimmigen Klängen und einer Blocklänge von 46 ms 4.2. KLAVIERAUFNAHMEN 31 damit für ein Netztraining vermutlich besser geeignete Daten liefern. Da wir im Rahmen der Diplomarbeit auf diesem Weg an die Interpretationen der Walzer gelangen wollen, werden nachfolgend die technischen und musikalischen Voraussetzungen beschrieben. 4.2.2 Voraussetzungen für eine gute MIDI-Aufzeichnung Wichtig für gute MIDI-Aufnahmen sind vor allem zwei Aspekte. Zum einen muss der Pianist die Stücke sehr gut beherrschen, um eine aussagekräftige, vielleicht sogar etwas übertriebene Interpretation einspielen zu können. Je variantenreicher die eingespielten Lieder sind, desto besser dürften sie sich für spätere Analysen und für das Netztraining eignen. Zudem wäre es von Vorteil, wenn der Pianist alle Stücke in einem einheitlichen Stil und auf demselben Eingabe-Instrument spielen würde. Die zweite wichtige Voraussetzung für gute MIDI-Aufnahmen liegt in der verwendeten Technik. Es gibt große qualitative Unterschiede bei MIDI-fähigen Eingabegeräten mit Klaviatur . Wichtig ist, dass die Spieleigenschaft möglichst nahe an einem realen Klavier liegt. Die Messung der verschiedenen Anschlagstärken muss gut geeicht sein und eine möglichst hohe Genauigkeit liefern (wie bereits erwähnt, erlaubt der MIDI-Standard 128 verschiedene Lautstärkenwerte). Prinzipiell lassen sich Eingabegeräte mit Klaviatur und MIDI-Unterstützung grob in drei Klassen unterteilen: • einfache MIDI-Keyboards • Stage-Pianos • Klaviere oder Flügel mit Abnahmetechnik Einfache MIDI-Keyboards besitzen sehr leichte Tasten und bieten oft nur einen eingeschränkten Tonumfang. Die Abnahme der jeweiligen Lautstärken ist sehr ungenau oder lässt keine oder nur sehr wenige Zwischenstufen zu. Meist ist auch nicht einmal der Anschluss eines für unsere Zwecke benötigten Fußpedal-Tasters möglich. Einfache MIDI-Keyboards werden deshalb normalerweise nur von HeimAnwendern oder zur Eingabe von Tonfolgen in Studios verwendet. Ein vernünftiges Eingabegerät für die Klavierstücke sollte mindestens ein StagePiano mit beschwerten Tasten sein. Ohne beschwerte Tasten ist es für den Pianisten kaum möglich, kompliziertere Stücke mit Anschlagdynamik zu spielen. StagePianos sind wegen ihres geringen Platzbedarfs und der Möglichkeit, in Kombination mit einem so genanntem Sythesizer zusätzlich unzählbar viele Klänge zu erzeugen, vor allem bei Live-Konzerten eine beliebte Alternative zu herkömmlichen Klavieren. 4.2. KLAVIERAUFNAHMEN 32 Die wohl am besten geeignete Eingabe ermöglicht ein mit professioneller Abnahmetechnik ausgestatteter herkömmlicher Flügel. Für jede einzelne Taste wird die Anschlagstärke gemessen. Bei der Disklavier-Technik von Yamaha wird beispielsweise die Hammer-Mechanik zu jeder Taste mit zwei optischen Sensoren ausgestattet. Gemessen wird wie in Abb. 4.25 gezeigt unter der Taste (linkes Bild) und am Hammer (rechtes Bild). Der Vorteil optischer Sensoren liegt darin, dass die Tastenbewegung vom Abtastvorgang unbeeinflusst bleibt. Abbildung 4.2: Zweifache Abnahme der Anschlagdynamik im Querschnitt (Grafiken von der Yamaha-Homepage [6]) Im Gegensatz zu den ersten beiden Klassen von Eingabegeräten bleibt bei diesem Verfahren die Tonerzeugung mechanisch. Das macht die Technik besonders attraktiv, da es für einen Pianisten wichtig ist, möglichst unverfälscht zu hören, was er spielt. Die Motivation der Abnahmetechnik von Klavieren und Flügeln ist normalerweise die Möglichkeit, den tatsächlichen Saitenanschlag zu unterbinden und mithilfe eines integrierten oder über MIDI angeschlossenen Sequenzers mit Kopfhörern zu spielen. Auch bei einfachen MIDI-Keyboards und Stage-Pianos erfolgt die Tonerzeugung durch eine elektronische Klangquelle. Diese sollte die Töne mit möglichst geringer Verzögerung (Latenz) generieren. Kurze Latenzzeiten sind für den einspielenden Pianisten aus psychoakustischen Gründen sehr wichtig. 4.2.3 Einspielen der Stücke Die Aufzeichnungen der Chopin-Walzer entstanden hauptsächlich in Zusammenarbeit mit zwei Pianisten. Mitte September spielte Klaus Ritzkowsky von der Musikhochschule München auf einem Korg Stagepiano SP-200 folgende Walzer in voller Länge ein: 5 Grafiken von der Yamaha-Homepage [6] 4.2. KLAVIERAUFNAHMEN 33 • Nr. 7 · Opus 64 Nr. 2 · Brown-Index 164, Cis-Moll, Tempo giusto • Nr. 9b · Opus posth. 69 Nr. 1 · Brown-Index 95, As-Dur, Lento • Nr. 10b · Opus posth. 69 Nr. 2 · Brown-Index 35, H-Moll, Moderato • Nr. 12a · Opus posth. 70 Nr. 2 · Brown-Index 138, F-Moll • Nr. 17 · Brown-Index 150, A-Moll, Allegretto • Nr. 18 · Brown-Index 133, Es-Dur, Sostenuto Die Aufnahmen entstanden relativ spontan. Bei einer kurzen Analyse stellten wir fest, dass vermutlich aussagenkräftigere Daten entstehen könnten, wenn der Pianist die Stücke besser vorbereitet und mit besonderem Schwerpunkt auf eine variantenreiche und ausdrucksstarke Spielweise einspielen würde. Anfang Oktober wurde daher für diese Aufgabe der Pianist Hans-Jörg Paliege beauftragt. Nachdem er sich mit den Stücken vertraut gemacht hatte, spielte er drei Wochen später einzelne Fragmente ausgewählter Walzer mehrmals auf einem Yamaha-Flügel mit Disklavier-Abnahmetechnik ein. Verwendet wurden Fragmente dieser fünf Walzer: • Nr. 9b · Opus posth. 69 Nr. 1 · Brown-Index 95, As-Dur, Lento • Nr. 17 · Brown-Index 150, A-Moll, Allegretto • Nr. 18 · Brown-Index 133, Es-Dur, Sostenuto • Nr. 19 · Brown-Index 46, Es-Dur • Op. 46 Nr. 1, Des-Dur, Molto Vivace Beide Pianisten benutzten als Vorlage Noten aus der Sammlung von Ewald Zimmermann. Die entstandenen Aufnahmen wurden überarbeitet und sind in verschiedenen Formaten bei [3] unter recording sessions“ verfügbar. Während der Überarbeitung ” wurden die einzelnen Noten auch der linken und rechten Hand zugewiesen. Jeweils ein erster Ton eines Taktes wurde zum Messen des Tempoverlaufs oder für das Rückwärtsrechnen eines Pseudo-Notentextes markiert. 4.2. KLAVIERAUFNAHMEN 4.2.4 34 Musikalische Analyse Wie bereits erwähnt, stecken in den Aufnahmen von Klaus Ritzkowsky relativ wenig interpretative Variationen. Die Aufzeichnungen von Hans-Jörg Paliege sind sehr viel virtuoser. Dynamikund Temposchwankungen sind deutlich erkennbar. In Zusammenarbeit mit dem Pianisten wurde nachträglich versucht, Regelmäßigkeiten in den Aufnahmen zu erkennen und zu klassifizieren. Dabei unterteilten wir die gespielten Variationen in vier Klassen: • motorisch bedingte zeitliche Verschiebungen und unterbewusste Umformungen • notenbezogene Anschlagdynamik • Gesamtdynamik • Temposchwankungen Motorisch bedingte zeitliche Unterschiede werden vor allem bei vermeintlich gleichzeitig gespielten Tönen erkennbar. Bei der exemplarischen Untersuchung der Interpretation des Walzers Nr. 19 stellten wir eine Regelmäßigkeit bei mit der linken Hand gespielten Dreiklängen fest. Die Dreiklänge wurden tendenziell fast immer wie in Abb. 4.3 b oder Abb. 4.3 c gespielt. (a) (b) (c) Abbildung 4.3: Beispiel von motorisch bedingten Verschiebungen eines Dreiklangs. (a) Original, (b) Abrollen zur Klaviatur-Mitte, (c) Abrollen nach außen Die verschobene Darstellung lässt sich durch ein Abrollen der linken Hand zur Mitte der Klaviatur oder nach außen deuten. Weiterhin fiel auf, dass einzelne mit der linken Hand gespielte Töne, die laut Notentext länger klingen sollten, in der Interpretation oft sehr kurz angeschlagen wurden. Der längere Klang des Tons wurde dann durch die Nutzung des Fußpedals erreicht. Der Pianist spricht hierbei von einer unterbewussten Überformung durch die Praxis des Klavierspiels“. ” 4.2. KLAVIERAUFNAHMEN 35 Auffälligkeiten in der Anschlagdynamik bezogen auf einzelne Noten waren schwer auszumachen. Bei dem untersuchten Walzer stellten wir jedoch fest, dass höhere Töne etwas stärker angeschlagen wurden. Den Gesamtdynamikverlauf könnte man nochmals in mehrere Ebenen unterteilen. Einzelne Passagen zeigen ein gut erkennbares Steigen und Sinken der Lautstärkenwerte. Man könnte den Dynamikverlauf aber auch auf das komplette Stück beziehen. Die Wiederholung einer Passage zu einem späteren Zeitpunkt des Walzers würde wohl einen ähnlichen Lautstärkenverlauf haben, jedoch möglicherweise insgesamt etwas lauter oder leiser gespielt werden. Temposchwankungen sind schwer zuzuweisen. Dazu muss das Stück in kurze Zeitintervalle bezüglich der Notenlängen unterteilt werden. Zeitschritte von einzelnen Takten sind unter Umständen zu grob. In mühevoller Kleinarbeit wurde an einem achttaktigen Ausschnitt versucht, schrittweise die erwähnten vier Änderungen auf eine vorhandene Version des dazugehörigen Notentextes anzuwenden. Hierzu benutzen wir die Matrix-Darstellung eines Musikprogramms. Diese Anpassung lässt sich leider nicht oder nur sehr schwierig automatisieren, da die einzelnen Änderungen sehr kontextbezogen sind und ein sehr umfangreiches musikalisches Verständnis erfordern. Motiviert war dieses Vorgehen durch die Tatsache, dass die erfassten Töne der Aufnahmen zum Teil stark von der digitalen Version des Notentextes abwichen. Manche Töne wurden ausgelassen oder in einer anderen Tonhöhe angeschlagen. Auch wurden nicht selten zusätzlich Töne gespielt die nicht im Notentext stehen. Mehr dazu im Unterabschnitt 4.3.2 Schwächen der Klavier-Aufnahmen“. ” Abb. 4.4 zeigt den Notentext des Ausschnitts vor und nach der Bearbeitung. In der Ansicht der bearbeiteten Version werden motorische Verschiebungen (Vergrößerungsfenster), Gesamtdynamik und Temposchwankungen deutlich. Die beiden Versionen der acht Takte vor und nach der Bearbeitung sind als Hörbeispiele im Verzeichnis post edited phrase“ unter [3] abgelegt. ” 4.3. BRAUCHBARE DATEN FÜR DAS NETZTRAINING 36 Abbildung 4.4: Annäherung des Notentextes an die Interpretation mithilfe des Matrix-Editors einer Sequenzer-Software. Berücksichtigt wurden motorische Verschiebungen (erkennbar im Fensterausschnitt), Gesamtdynamik und Temposchwankungen. Dynamikvariationen bei einzelnen Tönen wurden auch mit einbezogen, sind jedoch in der Darstellung nur schwer zu erkennen. 4.3 Brauchbare Daten für das Netztraining Nur die Aufnahmen der Chopin-Walzer reichen für ein Netztraining noch nicht aus. Zur Netzeingabe und für die Berechnung der EDL-Dateien wird zu jeder Aufnahme eine digitale Version des dazugehörigen Notentexts benötigt. Die Notenwerte der beiden Versionen müssten dann theoretisch exakt übereinstimmen, was jedoch, wie sich später herausstellte, in der Praxis nicht der Fall war und weitere Nachbearbeitungsschritte erforderte. 4.3. BRAUCHBARE DATEN FÜR DAS NETZTRAINING 37 Neben der automatisierten Erkennung einer eingescannten Partitur behandelt dieser Abschnitt typische Fehler“ 6 , die den Pianisten beim Einspielen unterliefen ” sowie einen Ansatz um aus den Aufnahmen einen Pseudo-Notentext zu errechnen. 4.3.1 Digitalisierung des Notentextes Um eine identische digitale Version des vorgelegten Notentextes zu erhalten, bietet es sich an, diesen einzuscannen und mit einer geeigneten OCR 7 -Software erkennen zu lassen. Als Erkennungssoftware für Musiknoten wurden Harmony Asistant 9.1.7, Music Publisher 5.1 und Neuratron PhotoScore 3.10 getestet. Von den Programmen existierte jeweils eine im Internet frei verfügbare Testversion. Die besten Ergebnisse lieferte Neuratron PhotoScore. Leider schlichen sich aber auch hier einige Erkennungs-Fehler ein. Besonders Zusatzinformationen und Ablaufangaben wurden nicht oder falsch identifiziert. Ein beispielhafter Ausschnitt des gescannten Notentextes ist in Abb. 4.5 zu sehen. Abbildung 4.5: Eingescannte Partitur des Beispielausschnitts Abb. 4.6 zeigt zum Vergleich die Notenblatt-Ansicht nach der Erkennung. Die Oktavierungen (erkennbar an der 8“ in Abb. 4.5) in den Takten 1 und 2 und ” in den Takten 5 und 6 wurden von der OCR-Software ignoriert. Auch die Verzierungen in Takt 10 und sogar eine einzelne Note in Takt 9 blieben unerkannt. Folgt man dem von der Erkennungssoftware registrierten Ablaufschema, so wird 6 7 Mit Fehlern sind Abweichungen vom Notentext gemeint. optical character recognition 4.3. BRAUCHBARE DATEN FÜR DAS NETZTRAINING 38 fälschlicherweise ein Takt eingeschoben, da die Sprunghinweise von Haus 1“ und ” Haus 2“ 8 nicht berücksichtigt wurden. ” Abbildung 4.6: Beispielausschnitt nach der Notentext-Erkennung mit Neuratron PhotoScore. Die Oktavierungen, Verzierungen und Sprunghinweise wurden nicht oder nicht korrekt erkannt. Den kompletten Notentext muss man deshalb zur Fehlerbeseitigung von Hand durcharbeiten. Wie unter 3.3 beschrieben enthalten Ereignisse im EVL-Format ein Flag, welches angibt, ob es sich um ein Ereignis auf dem ersten Schlag 9 handelt. Bei der Konvertierung des Notentextes mit mid2evl kann dieses Flag automatisch berechnet werden. Dies zeigt der folgende Pseudocode: if (event->pos mod (ticks_per_beat * beats_per_bar) == 0) then event->is_first_beat_event=true else event->is_first_beat_event=false Für jedes Ereignis berechnet man die modulo-Division der globalen Position (event–>pos) geteilt durch die Anzahl der Ticks pro Schlag (ticks per beat) multipliziert mit der Anzahl der Schläge pro Takt (beats per bar). Walzer haben immer drei Schläge pro Takt. Die globale Position eines Ereignisses lässt sich beim Parsen der MIDI-Datei mithilfe der Summe aller vergangenen Deltazeiten bestimmen. Ergibt die modulo-Division null, so handelt es sich um ein Ereignis 8 Wiederholungen von Phrasen werden am Ende oft variiert. Dafür verwendet man in einer Partitur sog. Häuser“, erkennbar durch eine Abgrenzung und die Nummer des Hauses über ” den betroffenen Takten (s. Abb. 4.5). 9 Ereignisse auf den ersten Schlag sind Noten oder Fußpedalsymbole direkt nach einem Taktstrich. 4.3. BRAUCHBARE DATEN FÜR DAS NETZTRAINING 39 auf dem ersten Schlag eines Taktes und das Flag event–>is first beat event wird gesetzt. 4.3.2 Schwächen der Klavier-Aufnahmen Auch die aufgenommenen Interpretationen der Pianisten halten sich oft nicht an die Notentextvorgabe. Das kann mitunter daran liegen, dass einzelne Töne zu schwach angeschlagen und somit von der Sensorik nicht registriert wurden. Häufiger handelte es sich jedoch um kleine Verspieler“. Manche Töne des Noten” textes wurden ausgelassen oder in einer anderen Tonhöhe angeschlagen. Hin und wieder wurden auch zusätzliche Töne gespielt, wie beispielsweise ein Dreiklang anstatt nur des Grundtons. Auch wenn diese Abweichungen in der Realität akustisch kaum auffallen, müssen sie bei der von uns gewählten Datenrepräsentation berücksichtigt werden. Nochmals zur Erinnerung: letztendlich soll das Netz bei der Eingabe eines Notentextes die Änderungen zu den einzelnen Tönen ausgeben. Deshalb müssen Notentext und Interpretation von der Notenfolge her identisch sein. Aufnahme von Hans−Jörg Paliege Original Notentext C6 C6 Tonhöhen C5 C4 C3 C2 C5 C4 C3 C2 C1 C1 Fuß− pedal 1.2 1.3 2.1 2.2 2.3 3.1 Takte und Schläge (bei 100 bpm) (a) 40 20 0 0 0.5 1 1.5 2 2.5 Zeit [sec] 3 3.5 Lautstärken 1.1 Lautstärken 40 20 0 Fuß− pedal Tonhöhen linke und rechte Hand rechte Hand linke Hand 4 (b) Abbildung 4.7: Zweitaktiger Ausschnitt des Notentextes (a) und der Interpretation (b). Beim Vergleich fällt auf, dass bei (b) Noten ausgelassen oder hinzugefügt und kürzere Töne mit Fußpedalereignissen ausgeglichen wurden. Abb. 4.7 zeigt Plots von der Matrixdarstellung des Notentexts (a) und der von Hans-Jörg Paliege gespielten Version (b) anhand eines zwei Takte langen Beispielausschnitts. Bei genauerem Betrachten fällt auf, dass bei (b) Töne ausgelassen wurden, wie zum Beispiel das erste C4. Beim ersten Dreiklang der linken Hand 4.3. BRAUCHBARE DATEN FÜR DAS NETZTRAINING 40 wird in der Aufnahme noch ein zusätzlicher tieferer Ton kurz angeschlagen. Fast alle Noten werden kürzer angeschlagen, was die zweimalige Verwendung des Fußpedals jedoch wieder kompensiert. Damit beide Versionen exakt übereinstimmende Notenwerte besitzen, muss man entweder das Original oder die Aufnahme oder beides nachbearbeiten. Die gespielten Noten könnten nach einem Mengenschnitt-Verfahren angepasst werden. Dazu entfernt man die nicht gespielten Noten aus dem Notentext und bei der Interpretation gespielte Noten, die nicht im Notentext stehen. Außerdem müssten dem Notentext Fußpedalereignisse hinzufügt oder bei der Interpretation die Fußpedale durch ein Verlängern der betroffenen Notenlängen herausgerechnet werden10 . Egal, wie man die beiden Versionen aneinander anpasst, der Aufwand bleibt sehr hoch. Bei den verwendbaren Aufnahmedaten von einer halben Stunde mit über 12000 Ereignissen würde die Nachbearbeitung den zeitlichen Rahmen der Diplomarbeit sprengen. 4.3.3 Rückwärtsrechnung des Notentextes Wir begnügen uns daher mit einer eleganten Zwischenlösung. Fügt man den bestehenden Aufnahmen Markierungen zu Beginn eines jeden Taktes hinzu (s. Abb. 4.8), lässt sich daraus schrittweise ein Pseudo-Notentext errechnen. Die Unterteilung nach Takten ist in manchen Fällen vielleicht zu ungenau, reicht jedoch meistens aus, um den Tempoverlauf aussagekräftig zu beschreiben. Abbildung 4.8: Setzen von Markern (m1 bis m5 ) zu Beginn eines jeden Taktes. In der Matrixansicht kann man erkennen, dass die Takte unterschiedlich schnell gespielt wurden. Aus den zeitlichen Abständen der Markierungen mi werden die einzelnen Taktlängen li ermittelt: li = (mi+1 − mi ) 10 (4.1) Ist ein Fußpedal gedrückt, klingt ein gespielter Ton solange, bis das Pedal losgelassen wird oder er von selbst ausklingt. Der Zeitpunkt des Loslassens einer Taste verliert dadurch praktisch seine Bedeutung. 4.3. BRAUCHBARE DATEN FÜR DAS NETZTRAINING 41 Die durchschnittliche Taktlänge l für ein Lied mit k Takten wird durch das arithmetische Mittel bestimmt: k 1X l= li k i=1 (4.2) Für die Rückwärtsrechnung des Notentextes entfernt man nun taktweise die Temposchwankungen. Dazu werden für alle Ereignisse j die Längen elj und Deltazeiten edtj mit dem Längenanpassungsfaktor µi des Taktes skaliert, in dem sich der jeweilige Zeitabschnitt befindet. µi = l li (4.3) ∀j ∈ T akt i elj ← elj µi (4.4) ∀j ∈ T akt i edtj+1 ← edtj+1 µi (4.5) Da bei den für diese Diplomarbeit verwendeten Walzern immer mindestens ein Ereignis zum Beginn eines Taktes stand, bietet es sich an, die Markierungen für die Tempoanpassung nicht mithilfe einer neuen Datenstruktur oder eines neuen Ereignistyps zu setzen, sondern einfach ein Ereignis zu jedem Taktbeginn zu kennzeichnen. Wir nutzen hierfür im EVL-Format das Flag is first beat event“. ” In der Praxis schlich sich bei der Anpassung der Deltazeiten hin und wieder ein störender Rundungsfehler ein, daher berechnen wir diese etwas aufwändiger mithilfe der globalen Ereignispositionen event(j)–>pos. Dies soll folgender Pseudocode verdeutlichen: j = 1 for i=1 to k do offset = 0 while (event(j) in Takt i) do offset += event(j)->dt*mu(i) event(j)->pos = i*avgl + offset j++ od od Mit offset wird die jeweilige Position in Bezug auf den Beginn des i-ten Taktes bezeichnet. avgl steht für die durchschnittliche Taktlänge l. mu(i) ist der Längenanpassungsfaktor µi und event(j)–>dt die Deltazeit des j-ten Ereignisses edtj . Aus den globalen Ereignispositionen lassen sich die jeweiligen Deltazeiten problemlos ermitteln. 4.3. BRAUCHBARE DATEN FÜR DAS NETZTRAINING 42 Nach der Tempoanpassung werden die Ereignisse noch quantisiert. Dadurch erhalten alle Ereignislängen und Deltazeiten eine Diskretisierung. Wir quantisieren die Walzer auf die Länge einer 16-tel-Note, also auf Längen von 12l 11 . Zum Entfernen der Lautstärkenvariationen für den Pseudo-Notentext brauchen nur alle Lautstärkenwerte auf eine Standardlautstärke oder die durchschnittliche Noten-Lautstärke gesetzt werden. Rückwärts generierter Notentext Editierte Aufnahme rechte Hand linke Hand Tonhöhen C5 C4 C3 C2 markierte Ereig− nisse auf einem ersten Schlag 0.5 1 1.5 2 2.5 Zeit [sec] (a) C3 C2 3 3.5 4 40 20 0 1.1 Lautstärken 40 20 0 Lautstärken 0 C4 C1 Fuß− pedal C1 C5 Fuß− pedal Tonhöhen C6 rechte Hand linke Hand C6 1.2 1.3 2.1 2.2 2.3 3.1 Takte und Schläge (bei 101 bpm) (b) Abbildung 4.9: Rückwärtsrechnung des Notentextes. Aus der editierten Aufnahme werden die Temposchwankungen herausgerechnet. Lautstärkenvariationen werden entfernt und Ereignislängen quantisiert. (a) zeigt die editierte Aufnahme, (b) den errechneten Pseudo-Notentext. In Abb. 4.9 a sieht man nochmals den zweitaktigen Ausschnitt der Interpretation von Hans-Jörg Paliege (wie in Abb. 4.7). Ereignisse auf dem ersten Schlag sowie linke und rechte Hand wurden in einem Nachbearbeitungsschritt zugewiesen. Die rechte Seite (Abb. 4.9 b) zeigt den errechneten Pseudo-Notentext. Dieser weist zwar leichte Abweichungen zum eigentlichen Notentext von Abb. 4.7 a auf, hat jedoch den Vorteil, exakt dieselbe Ereignisanzahl zu besitzen. Der Pseudonotentext kann daher zur Eingabe für ein Netztraining verwendet werden. Der Quelltext zur Rückwärtsrechnung des Notentextes (evl back calc.cpp) ist im Ordner commands“ unter [3] abgelegt. ” 11 In einen Takt eines Walzers passen zwölf 16-tel Noten, da sich Walzer immer an einen 3/4-Takt anlehnen. Kapitel 5 Ergebnisse Dieses Kapitel beschreibt verschiedene, für die Thematik der vorliegenden Arbeit relevante Tests und versucht, die jeweiligen Ergebnisse zu deuten. Da es sich bei der Generalisierung einer musikalisch wertvollen Interpretation um eine sehr komplizierte und auch schwer messbare Aufgabe handelt, wurde versucht, sich an dieses Ziel schrittweise mit einfachen Experimenten heranzutasten. Vorerst soll die für das Netztraining gewählte Datenrepräsentation und die verwendete NN-Bibliothek auf ihre Leistungsfähigkeit getestet werden. Dazu wird untersucht, ob und wie erfolgreich die Variationen einzelner zum Training vorgesetzter Musikstücke vom Netz reproduziert werden können. Daraufhin folgen Tests zur Generalisierbarkeit. Untersucht werden kurzzeitige Variationen in der Spielweise, bezogen auf einfache Kindermelodien und auf die linke Hand bei Ausschnitten der verwendeten Walzer. Bei kurzzeitigen Variationen handelt es sich um unmittelbare Zusammenhänge zwischen den aktuellen Netzeingaben und den daraus resultierenden Ausgaben. Die beiden hierzu verwendeten Problemstellungen erfordern kein längerfristiges Zurückblicken im Eingabestrom. Im Gegensatz dazu wird im dritten Abschnitt in zwei theoretischen Experimenten versucht, Wiederholungen in der Eingabe zu erkennen. Um den Beginn einer Wiederholung bestimmen zu können, muss dem Netz eine Vorausschau im Eingabestrom ermöglicht werden. Dazu behandelt der Abschnitt vorweg kurz die Technik der parallelen Eingabe und der sequenziellen Verschiebung. Ein weiterer Versuch arbeitet wieder mit EVL-Daten und behandelt Phrasenwiederholungen bei speziell dafür bearbeiteten Walzermelodien. Der nächste Abschnitt beschreibt das Training mit den komplexen Klavieraufnahmen und die daraus resultierenden Ergebnisse. Außerdem wird ein Experiment zum Erlernen typischer zusätzlicher Instruktionen des Notentextes durchgeführt. Beim Verlauf der Experimente fielen besondere Eigenschaften im Eingabestrom 43 5.1. ÜBERANPASSUNGSTEST MIT EINEM KLAVIERSTÜCK 44 auf, welche einen großen Einfluss auf die Lösbarkeit des gegebenen Problems haben. Diese Eigenschaften werden neben anderen Gründen für Lernerfolge oder Misserfolge zum Ende des Kapitels erläutert. 5.1 Überanpassungstest mit einem Klavierstück Im nachfolgend beschriebenen Experiment wollen wir überprüfen, ob sich die gewählte Datenrepräsentation EVL für ein Netztraining eignet. Außerdem soll die LSTM-Bibliothek von Alex Graves ([4]) und die verwendeten Konvertierprogramme getestet werden. Trainiert wird mit einem Klavierstück durchschnittlicher Länge mit 1054 Ereignissen. Trainingsziel sind Tempo- und Lautstärkenvariationen. Trotz des vermuteten Effekts der Überanpassung wollen wir in diesem Experiment die benötigte Netzarchitektur und den ungefähren Trainingsaufwand für nachfolgende Experimente abschätzen. Wir verwenden das sehr bekannte Klavierstück Für Elise“ von Ludwig van ” Beethoven. Eine geeignete Vorlage im MIDI-Format fand sich im Internet unter [5]. Ereignisse der linken und rechten Hand sowie Fußpedal-Ereignisse waren bereits separiert. Das Stück liegt in zwei Versionen vor: der Original Notentext ohne interpretative Variationen und eine Version mit Temposchwankungen und Änderungen der Lautstärkenwerte. Nachfolgend untersuchen wir den Gesamtdynamik-Verlauf (s. Abb. 5.1), da dieser im Beispiel relativ klar ausgeprägt ist. Lautstärken in "Für Elise" rechte Hand 50 linke Hand 50 0:30 1:00 1:30 Zeit 2:00 2:30 Abbildung 5.1: Geglätteter Lautstärkenverlauf von Noten der linken und rechten Hand bei der Interpretation von Beethovens Für Elise“ ” Diese Abweichungen sollen nun möglichst genau vom Netz reproduziert werden können. Gute Ergebnisse, bei denen sich die Berechnung noch im Rahmen eines 5.1. ÜBERANPASSUNGSTEST MIT EINEM KLAVIERSTÜCK 45 vernünftigen Zeitaufwands befand, wurden mit zehn LSTM-Zellen erzielt. Abb. 5.2 zeigt als Ergebnis einen Plot mit allen Lautstärkenänderungen. Verglichen werden die Werte des erlernten EDL-Datenstroms mit den Werten des zum Training verwenden EDL-Datenstroms. Vergleich zweier EDL−Dateien erwünscht gelernt 10 Lautstärken−Differenzen 0 −10 −20 −30 −40 −50 −60 0 200 400 600 Noten−Ereignisse 800 1000 Abbildung 5.2: Lautstärken-Differenzen des Trainingsziels und der Netzausgabe nach dem Training. Beide Kurven decken sich zumindest im Gesamtdynamikverlauf sehr gut. Die Interpretation ist fast immer leiser als die einheitliche Lautstärke von 80 im Notentext. Wie sich erkennen lässt, wurde der grobe Lautstärkenverlauf erlernt und trotzdem Schwankungen in Bezug auf einzelne Noten berücksichtigt. Die Trainingsdauer für das Beispiel betrug 10000 Epochen. Verwendet wurden ein Momentum von 0,9 und eine Lernrate von 0,0001. Das Training mit einer vergleichbaren herkömmlichen rekurrenten Netzarchitektur mit 40 Neuronen-Knoten1 führte zu einem ähnlichen Ergebnis. Bei einem zyklenfreien Netz blieb der MSE jedoch beim Training auf einem deutlich höheren Niveau stehen. Es konnten also weniger für die Lautstärkenvariationen relevante Aspekte der Eingabesequenz berücksichtigt werden. Die resultierenden Lautstärken zeigten bei einem vorwärtsgerichteten Netz ein willkürlicheres und 1 Der Fairness“ halber verwenden wir beim Vergleich mit herkömmlichen Netzen immer ” viermal mehr Knoten als LSTM-Zellen, da eine LSTM-Zelle durch ihre Struktur entsprechend mächtiger ist. 5.1. ÜBERANPASSUNGSTEST MIT EINEM KLAVIERSTÜCK 46 stärker oszillierendes Verhalten als beim Test mit rekurrenter Architekur. Dies lässt sich am Ausschnitt in Abb. 5.3 erkennen. Ausschnitt aus den EVL−Dateien erwünscht gelernt FF 60 50 Lautstärken 40 30 erwünscht gelernt LSTM 60 50 40 30 500 510 520 530 540 550 Noten−Ereignisse 560 570 580 Abbildung 5.3: Vergleich der Lautstärken des Trainingsziels mit den Testergebnissen. Blau oben: Testergebnis nach einem Training mit zyklenfreier Netzarchitektur. Blau unten: Testergebnis bei einem LSTM-Netz. Die beiden Netze wurden gleich lang trainiert. Das zyklenfreie Netz enthielt viermal mehr Knoten als das LSTM-Netz Zellen. Die Lautstärkenschwankungen oszillieren beim Test des FF-Netzes in klar erkennbaren Grenzen. Im Ergebnis mit LSTM gleicht sich die erlernte Kurve etwas besser an die Zielkurve an. Zusammenfassend lässt sich festhalten, dass das grobe Erlernen der drei Änderungsparameter (Deltazeit, Länge und Lautstärke) bezogen auf die gesamte Sequenz recht gut funktionierte. Bezogen auf kurzfristige Zusammenhänge lässt sich eine Tendenz zu den erwünschten Variationen manchmal jedoch nicht erkennen, wie man beispielsweise im Ereignisbereich zwischen 520 und 530 in Abb. 5.3 sieht. Dennoch kann sich das Ergebnis hören“ lassen2 . Rekurrente Netze mit und ” ohne LSTM-Architektur zeigten ein ähnliches Lernverhalten. Vorwärtsgerichtete Netze stießen schnell an ihre Grenzen. Tests mit anderen Eingaben machten deutlich, dass es sich bei dem Ergebnis leider tatsächlich nur um eine Überanpassung des Netzes handelt. 2 Die Hörproben sind im Ordner learn self/results“ unter [3] abgelegt. ” 5.2. ERLERNEN KURZZEITIGER VARIATIONEN 5.2 47 Erlernen kurzzeitiger Variationen In der musikalischen Analyse von Kapitel 4 konnten im Kontext weniger Noten Regelmäßigkeiten festgestellt werden. Diese zeigten sich in den Unterteilungen motorische Verschiebungen und unterbewusste Variationen“ und notenbezoge” ” ne Anschlagdynamik“. Die Regelmäßigkeiten nehmen wir zum Anlass für zwei weitere interessante Experimente. Zuerst untersuchen wir sehr einfache Variationen bei monophonen Kindermelodien und erweitern die Problemstellung dann auf polyphone Ausschnitte von Walzern. 5.2.1 Einfache Modifikationen von Kindermelodien Kindermelodien eignen sich deshalb sehr gut für einen Grundlagentest, weil sie leicht überschaubar sind und nur aus Einzeltönen bestehen. Die erwünschten Änderungen stellen deshalb keine zu hohen Anforderungen an das Netz. Für das Experiment wurden zehn monophone Melodien im 4/4-Takt erzeugt. Um die Lern-Aufgabe etwas komplizierter zu gestalten, besitzen sie verschiedene Geschwindigkeiten. Tabelle 5.1 zeigt die Melodien und deren Ereignisanzahl, Dauer und Geschwindigkeit. Titel Alle meine Entchen Auf du junger Wandersmann Bruder Jakob Das Wandern Hänschen klein Hat Dance Ein Männlein steht im Walde Marmor Stein und Eisen bricht Meine Oma Spannenlanger Hansel Ereignisanzahl 27 22 32 20 24 24 47 26 41 44 Dauer 13 11 19 11 10 9 26 10 18 20 sec sec sec sec sec sec sec sec sec sec Geschwindigkeit 105 bpm 150 bpm 110 bpm 130 bpm 105 bpm 120 bpm 150 bpm 105 bpm 110 bpm 105 bpm Tabelle 5.1: Ereignisanzahl, Dauer und Geschwindigkeit der verwendeten Kindermelodien Die zu erlernende Modifikation betrifft die beiden EDL-Parameter Lautstärke und Deltazeit. Als einfachste Regelmäßigkeit sollen Noten auf einem ersten Schlag lauter gespielt werden. Durch Variationen der Deltazeiten will man ein schwungvolleres Gefühl erzeugen. Dazu wird jede zweite kurze Note nach hinten verschoben. Längere Noten bleiben unverändert. 5.2. ERLERNEN KURZZEITIGER VARIATIONEN 48 Abb. 5.4 zeigt die Melodie von Alle meine Entchen“ in den beiden Versio” nen. In der modifizierten Version erkennt man die Lautstärkenvariationen sowie Verschiebungen mancher Noten. Da man sich relativ schwer vorstellen kann, wie sich der Unterschied bemerkbar macht, findet man unter [3] im Ordner learn groove/midi-data“ entsprechende Hörbeispiele. ” C4 Original C3 120 80 40 Lautstärken C4 120 80 40 Lautstärken Tonhöhen Tonhöhen Zwei Versionen von "Alle meine Entchen" modifiziert C3 1 2 3 4 5 6 7 Takte (bei 105 bpm) 8 9 10 Abbildung 5.4: Eine Kindermelodie als Original (oben) und mit Variationen der Lautstärken und Notenpositionen zum Erzeugen eines Swing-Eindrucks (unten) Trainiert wurde das Netz jeweils mit neun Melodien. Zum Generalisierungs-Test verwendeten wir dann die ungesehene zehnte Melodie. Der Trainingsverlauf bei einem LSTM-Netz mit zwei Blöcken und jeweils einer Zelle verlief bei allen zehn Durchgängen sehr ähnlich. Als Beispiel werden die Ergebnisse zu Das Wandern“ ” präsentiert. In Abb. 5.5 sieht man den Fehlerverlauf beim Training über 20000 Epochen. Die verwendete Lernrate betrug 0,0001 und das Momentum 0,95. In Abb. 5.6 werden die gewünschten Änderungen der Deltazeiten und Lautstärken mit denen des Generalisierungs-Tests verglichen. Das Problem wurde hier fehlerfrei generalisiert. 5.2. ERLERNEN KURZZEITIGER VARIATIONEN 49 Training ohne "Das Wandern" 0.014 0.012 MSE 0.01 0.008 0.006 0.004 0.002 0 2500 5000 7500 10000 Epochen 12500 15000 17500 20000 Abbildung 5.5: Fehlerverlauf beim Training mit allen Melodien außer Das Wandern“ ” EDL−Vergleich bei "Das Wandern" Lautstärke erwünscht Lautstärke gelernt 150 Deltazeit erwünscht Deltazeit gelernt 100 EDL−Werte 50 20 0 −20 −50 −100 −150 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Noten−Ereignisse Abbildung 5.6: Generalisierungs-Test mit der Melodie Das Wandern“. Verglichen ” werden die Deltazeiten- und Lautstärken-Differenzen. Die Variationen wurden vom Netz wie erwartet durchgeführt. 5.2. ERLERNEN KURZZEITIGER VARIATIONEN 50 Bei vier der zehn Generalisierungs-Tests erzeugte das Netz eine teilweise vom erwarteten Ergebnis abweichende Variation der Deltazeiten, was vermutlich durch den speziellen Aufbau des jeweiligen Stücks bedingt war. Ein solches Ergebnis ( Hänschen klein“) ist in Abb. 5.7 dargestellt. ” EDL−Vergleich bei "Hänschen klein" Lautstärke erwünscht Lautstärke gelernt 150 Deltazeit erwünscht Deltazeit gelernt 100 EDL−Werte 50 20 0 −20 −50 −100 −150 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Noten−Ereignisse Abbildung 5.7: Generalisierungs-Test mit Hänschen klein“. Beim Deltazeiten” Verlauf unterscheiden sich die tatsächlichen Änderungen von den erwarteten. Das Ergebnis lässt sich jedoch auch als andere Form der Interpretation bewerten. Beim Anhören ist jedoch trotzdem deutlich eine schwingende Spielweise erkennbar. Man könnte das Ergebnis daher auch als eine andere Interpretation deuten. Die sehr wenigen Trainingsbeispiele lieferten vermutlich keine klaren Informationen darüber, wie genau das besagte Stück zu variieren gewesen wäre. In diesem Experiment zeigt sich erstmals klar der Vorteil eines rekurrenten Netzes. Ein zyklenfreies Netz ist nämlich nicht mehr in der Lage, das Problem zu generalisieren. Erklären kann man dies damit, dass zur Problemlösung ein Blick in die Vergangenheit notwendig ist. Um jede zweite kurze Note zu verschieben, muss das Netz wissen, ob die letzte Note kurz und bereits verschoben war oder nicht. Weitere Ergebnisse finden sich unter [3] im Unterordner learn groove/results“. ” 5.2. ERLERNEN KURZZEITIGER VARIATIONEN 5.2.2 51 Spieltechnik eines Pianisten Das nachfolgende Experiment ist dem von 5.2.1 sehr ähnlich. Untersucht wird die Erlernbarkeit der unter 4.2.4 festgestellten motorisch bedingten Verschiebungen. Im Unterschied zum letzten Experiment handelt es sich bei den Trainingsdaten nun um polyphone Melodien. Zudem kommen Fußpedal-Ereignisse vor. Die Änderungsparameter betreffen die Deltazeit und die Ereignislänge. Wir arbeiten mit elf Ausschnitten der Walzer-Notentexte. Zur Vereinfachung wird nur die linke Hand verwendet, da nur diese von der Regelmäßigkeit betroffen ist. Abb. 5.8 zeigt das verwendete Variationsschema. Mit einem Sequenzer-Programm wenden wir diese Änderungen von Hand auf alle Ausschnitte an. Abbildung 5.8: Variationsschema bei den Mehrklängen der linken Hand Danach gehen wir wieder wie beim letzten Experiment vor. Zehn EVL/EDLPaare werden zum Training verwendet und das resultierende Netz dann mit dem elften Paar auf Generalisierungsfähigkeit getestet. Titel melody01 melody02 melody03 melody04 melody05 melody06 melody07 melody08 melody09 melody10 melody11 Ereignisanzahl 90 102 49 42 29 52 117 61 61 38 138 Dauer 20 23 13 13 9 10 18 12 12 7 23 sec sec sec sec sec sec sec sec sec sec sec Geschwindigkeit 135 bpm 126 bpm 120 bpm 120 bpm 99 bpm 162 bpm 162 bpm 126 bpm 126 bpm 200 bpm 160 bpm Tabelle 5.2: Ereignisanzahl, Dauer und Geschwindigkeit der verwendeten WalzerAusschnitte 5.2. ERLERNEN KURZZEITIGER VARIATIONEN 52 Während des Trainings wird also keine Validierungsmenge berücksichtigt. Das hat den Grund, dass wir mit den sehr wenigen Trainingsdaten besonders sorgsam umgehen müssen. Ein Abbruch des Netztrainings beim Verdacht auf Overfitting“ ” kann also nicht stattfinden. Mit den Generalisierungs-Tests zu elf verschiedenen, immer wieder neu trainierten Netzen, bei denen jeweils eine Eingabe zum Training ausgelassen wurde, sollte man diesen Effekt jedoch ausschließen können. Die Ausschnitte besitzen wieder verschiedene Tempi und Längen (s. Tabelle 5.2). Zur Veranschaulichung zeigt Abb. 5.9 einen für die Netzeingabe verwendeten Original-Notentext und darunter die zu erlernende Variation. Das dazugehörige EVL/EDL-Paar sieht man in Abb. 5.10. Zwei Versionen von "melody05" C3 C2 Fuß− pedal Tonhöhen Original C3 C2 Fuß− pedal Tonhöhen modifiziert 1 2 3 Takte (bei 99 bpm) 4 5 Abbildung 5.9: Original (oben) und Variation (unten) einer kurzen Melodie ( melo” dy05“) der linken Hand. Die Änderungen betreffen Deltazeiten und Längen der Ereignisse. Es gibt zwei Ereignistypen: linke Hand und Fußpedal. Noten werden kürzer und Fußpedale länger angeschlagen. Die Ergebnisse des Experiments konnten zufrieden stellen. Beide EDL-Änderungsparameter Deltazeit und Ereignislänge ließen sich gut auf die jeweils ungesehene Netzeingabe generalisieren. Die Mächtigkeit der einzelnen Änderungen blieb zudem proportional zum Tempo der Eingabe. Abb. 5.11 zeigt das Generalisierungsergebnis von melody05“. ” Nach empirischer Bestimmung wurden als Momentum 0,98 und als Lernrate 0,00001 verwendet. Damit ließen sich gute Ergebnisse schon nach 5000 Lernepochen erzielen. Der Verlauf des MSE beim Training verlief sehr ähnlich zu dem in Abb. 5.5. 5.2. ERLERNEN KURZZEITIGER VARIATIONEN 53 Abbildung 5.10: Ausschnitt der EVL- und EDL-Darstellung von melody05“. Spalten ” entsprechen den einzelnen Ereignissen. Die Länge von 606 ms entspricht hier der Länge einer Viertelnote bei einem Tempo von 99 bpm. EDL−Vergleich bei "melody05" Deltazeit erwünscht Deltazeit gelernt Länge erwünscht Länge gelernt 40 400 20 200 0 0 −20 −200 −40 −400 EDL−Ereignislängen EDL−Deltazeiten 600 −600 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Noten−Ereignisse Abbildung 5.11: Generalisierungs-Test von melody05“. Die Änderungsparameter ” von Deltazeit und Ereignislängen wurden korrekt zugewiesen. 5.3. WIEDERHOLUNGEN LERNEN 54 Die verwendete Netzarchitektur bestand aus vier LSTM-Blöcken mit jeweils zwei Zellen. Interessanterweise konnte das Problem mit einem vorwärtsgerichteten Netz bei etwas mehr Trainingsepochen annähernd genauso gut wie mit einem LSTM-Netz gelöst werden. Die Information, ob es sich um einen Ton eines zu verschiebenden Dreiklangs handelte, bezog das Netz dann vermutlich aus der Deltazeit. Deltazeiten des zweiten und dritten Tons eines Dreiklangs sind in der Eingabe immer 0. Die Fähigkeit eines neuronalen Netzes, motorische Spieleigenschaften reproduzieren zu können ist eine Grundvoraussetzung für die Generalisierung von Interpretationen der Musikstücke. 5.3 Wiederholungen lernen Eine andere wichtige Grundvoraussetzung zur Generalisierung von Interpretationen ist das Erkennen und Deuten charakteristischer Abschnitte im Gesamtverlauf eines Musikstücks. Dies betrifft vor allem Wiederholungen, da diese vom Interpreten oft variiert gespielt werden. Das Netz sollte also prinzipiell in der Lage sein, Wiederholungen im Datenstrom zu erkennen und entsprechend darauf zu reagieren. Ab wann es sich um eine aus musikalischer Sicht folgerichtige Wiederholung handelt, lässt sich leider nicht klar festlegen. Eine einzelne Note, die mit derselben Länge wieder angeschlagen wurde leitet höchstwahrscheinlich noch keine Nachbildung eines ganzen Abschnitts ein. Mit jedem identischen Folge-Ereignis steigt die Wahrscheinlichkeit jedoch stark. Dem Netz muss also eine Vorausschau im Eingabestrom gewährt werden, wenn es entscheiden soll, wann eine Wiederholung beginnt. Dazu gibt es zwei Techniken, welche zum Beginn des Abschnitts beschrieben werden. Danach folgen zwei verschiedene mathematische Experimente und ein Versuch mit EVL-Daten. 5.3.1 Vorausschau im Eingabestrom Auch ein Pianist berücksichtigt bei seiner Interpretation die zukünftig zu spielenden Noten. In der Realität wird er beim Spielen seiner Interpretation neben der Vorausschau um ein Paar Noten das Stück und dessen Ablauf jedoch normalerweise bereits kennen. Diesen Vorteil hat das zu trainierende neuronale Netz nicht. Angenommen, ein guter Pianist soll ein für ihn unbekanntes Stück vom Blatt spielen und bekommt dabei nur ein begrenztes Sichtfenster nach vorne“ ” 5.3. WIEDERHOLUNGEN LERNEN 55 (wie in Abb. 1.1), dann würde das Interpretationsergebnis mit solch einer Vorausschau vermutlich besser ausfallen, als ohne. Eine Vorausschau im Eingabestrom bekommt ein neuronales Netz entweder durch eine sequenzielle Verschiebung der Ausgabe oder durch Parallelisierung der Eingabe. Beides hat Vor- und Nachteile. Wir betrachten nun eine Vorausschau von k Tupeln des Eingabestroms. Die sequenzielle Verschiebung soll Abb. 5.12 verdeutlichen. Abbildung 5.12: Vorausschau im Eingabestrom durch sequenzielle Verschiebung der Ausgabe Die erwünschte Ausgabe zu einem Eingabetupel wird erst nach k Zeitschritten erzeugt. Das Netz kann dadurch noch k − 1 Folge-Eingaben berücksichtigen. Die Länge des Datensatzes wird um k vergrößert, dabei sind die ersten k Ausgabewerte unwichtig und können z.B. mit Nullen belegt werden. Dasselbe gilt für die letzten k Eingabewerte. Wir bezeichnen diese Bereiche daher als Null-Eingabe und Null-Ausgabe. Ein Vorteil des Verfahrens der sequentiellen Verschiebung ist die Tatsache, dass die Schichten von Ein- und Ausgabe unverändert groß bleiben. Problematisch ist jedoch, dass das Netz zusätzlich noch das Speichern der k Werte und den richtigen Umgang mit den Null-Eingaben und Null-Ausgaben lernen muss. Bei langen k-Verschiebungen verliert zudem der herkömmlich berechnete Fehler an Aussagekraft. Bei der parallelen Eingabe von zusätzlichen k Folgewerten bekommt das Netz direkt Informationen über den Kontext in dem sich der aktuelle Eingabewert befindet. Dafür werden jedoch k-mal mehr Eingabeknoten benötigt. Sollen die zusätzlichen Eingabewerte sinnvoll verarbeitet werden, müssen auch der verborgenen Schicht entsprechend mehr Knoten hinzugefügt werden, was eine mit k exponentiell wachsende Netz-Komplexität zur Folge hat. Bei solch einem Zusammenhang spricht man auch vom Fluch der Dimensionen“. Die parallele Eingabe ” nachfolgender Eingabetupel wird von der verwendeten Netz-Bibliothek direkt unterstützt. 5.3. WIEDERHOLUNGEN LERNEN 56 Verarbeitet man bei der Netzeingabe einen EVL-Datenstrom, so könnte bei einer parallelen Eingabe die Dimension der Eingabeschicht noch verkleinert werden, indem man beispielsweise nur die Typen und Notenwerte der k Folge-Ereignisse und nicht jeweils alle sechs Parameter als Vorausschau offeriert. Trotzdem eignet sich die parallele Vorausschau vermutlich nur für kleine k. 5.3.2 Erkennung einer unmittelbaren Wiederholung Nachfolgend betrachten wir ein sehr einfaches Experiment, bei dem Sequenzen aus Zufallszahlen verwendet werden. Ziel soll sein, eine direkte Aufeinanderfolge zweier identischer Eingabewerte zu erkennen. Eine Vorausschau im Eingabestrom ist also nicht notwendig. Als Eingabe bekommt das Netz eine Sequenz von zufälligen Zahlen aus {-1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1}. Folgt in der Sequenz einer Zahl nochmals dieselbe Zahl, so soll das Netz einmalig eine 1 ausgeben, ansonsten steht immer eine -1 in der Ausgabe. Um die Problemstellung am Training mit EVL-Daten zu orientieren, wird mit mehreren Sequenzen unterschiedlicher Länge trainiert und getestet. Abb. 5.13 zeigt den Trainingsverlauf und ein Testergebnis nach einem Training mit 100 Sequenzen. Die Sequenzlängen lagen zwischen 50 und 100. Als Netzarchitektur wurde ein herkömmliches dreischichtiges rekurrentes Netz mit vier Knoten in der verborgenen Schicht verwendet. Generalisierungsergebnis erwünscht Ausgabe MSE Trainingsverlauf 0.2 0.18 0.16 0.14 0.12 0.1 0.08 0.06 0.04 0.02 0 gelernt 1 0 −1 0 5000 10000 Epochen 15000 20000 0 10 20 30 40 Position in Sequenz 50 60 Abbildung 5.13: Trainingsverlauf und Gerneralisierungsergebnis des Experiments. Unmittelbare Wiederholungen in Sequenzen unterschiedlicher Länge können mit einem rekurrenten Netz fehlerfrei erkannt werden. Bewertet man das Ergebnis nach dem jeweiligen Vorzeichen der Ausgabe, waren die Generalisierungstests bereits nach ca. 5000 Lernepochen fehlerfrei. Das verwendete Momentum betrug 0.9 und die Lernrate 0.0001. Natürlich lässt sich das Problem auch mit den leistungsfähigeren LSTM-Zellen 5.3. WIEDERHOLUNGEN LERNEN 57 lösen. Das Training dauert dann jedoch etwas länger3 . FF-Netze scheitern. Die Ausgaben gleichen sich hier lediglich an den statistischen Erwartungswert von -0.8 an. Wird die Ausgabe wie unter 5.3.1 beschrieben sequentiell verschoben, schneidet LSTM bereits bei Verschiebungen mit k > 2 besser ab. 5.3.3 Wiedererkennung von Eingabewerten Nachfolgend wird ein Experiment beschrieben, bei dem sich das Netz frühere Eingaben über einen unbestimmten Zeitraum merken muss. Die Eingaben sind wie unter 5.3.2 Sequenzen aus Zufallszahlen. Die Ausgabe soll immer genau dann von -1 auf 1 angehoben werden, wenn ein Eingabewert bereits früher in der Sequenz vorkam. Demnach sind zu Beginn der Sequenz die Ausgaben mit hoher Wahrscheinlichkeit bei -1 und zum Ende mit höherer Wahrscheinlichkeit bei 1. Untersucht werden die Sprünge der Ausgabe. Abb. 5.14 zeigt ein Beispiel eines Ein- und Ausgabe-Paars. Abbildung 5.14: Beispiel einer Eingabe und der dazugehörigen Ausgabe. Immer wenn in der Eingabe-Sequenz ein Wert bereits vorkam, wird die Ausgabe von -1 auf 1 gesetzt. Auch bei sehr langem Netztraining4 mit verschiedensten Parametern konnten keine erfolgreichen Generalisierungsergebnisse erzielt werden. Daher schränkten wir die Problemstellung auf eine Zufallszahlen-Wertemenge von -1, 0, 1 und auf Sequenzlängen zwischen 4 und 8 ein. Für eine Sequenzlänge von 8 gibt es also 38 =6561 mögliche verschiedene Folgen. Trainiert wurde mit 40 Sequenzen. Merkt 3 LSTM soll deshalb nur verwendet werden, wenn damit ein besseres Ergebnis erzielt werden kann. Die komplexere Architektur verlangt eine aufwändigere Berechnung bei der Datenpropagation und beim Gradientenabstieg. Daher verlangsamt die Anwendung von LSTM die Lösung mancher Problemstellungen unnötig. 4 Zeitangaben für ein Netztraining beziehen sich immer auf ein vom Lehrstuhl zur Verfügung gestelltes Mehrprozessorsystem mit vier Prozessoren vom Typ AMD Opteron 848 bei 2.2 GHz und 16 GB Speicher. 5.3. WIEDERHOLUNGEN LERNEN 58 sich das Netz für jede der drei möglichen Eingaben, ob die jeweilige Eingabe bereits vorkam, benötigt es vermutlich drei oder mehr LSTM-Zellen. Unzählige Trainings-Versuche führten fast immer zu einer Überanpassung des Netzes. Dies lässt sich an einer Validierung 5 während des Trainings erkennen (s. Abb. 5.15). Bei einer langen Berechnung von mehreren Stunden mit drei LSTM-Blöcken und jeweils zwei Zellen konnte das minimalisierte Problem generalisiert werden. Erhöhte man die Komplexität von drei auf fünf verschiedene Zufalls-Werte, konnten keine korrekten Ergebnisse mehr erzielt werden. Fehlerverlauf beim Training mit Validiierung 0.5 Trainingsmenge Validiierungsmenge 0.45 0.4 0.35 MSE 0.3 0.25 0.2 0.15 0.1 0.05 0 0 5000 10000 15000 20000 25000 Epochen Abbildung 5.15: Kaum vermeidbarer Überanpassungs-Effekt während des Trainings. Die Trainingsdaten wurden aufgeteilt in eine tatsächliche Trainingsmenge und eine Validierungsmenge. Die rote Kurve zeigt den Verlauf des MSE in Bezug auf die tatsächliche Trainingsmenge. Die blaue Kurve beschreibt den Fehlerverlauf beim Test mit den ungesehenen Netzeingaben. Spätestens zum Zeitpunkt des Wiederanstiegs der ValidierungsKurve beginnt das Netz auswendig zu lernen. Verringerte man die Zellen-Anzahl, blieb der Fehler sehr bald auf einem deutlich höheren Niveau stehen. Das Problem ließ sich dann auch nicht generalisieren. Bei herkömmlichen rekurrenten Netzen pendelte sich der Fehler ebenfalls auf einem höheren Niveau ein. 5 Zur Wiederholung: für die Validierung verwendet man zusätzliche Ein-/Ausgabe-Paare und ermittelt damit noch während des Trainings den jeweiligen Fehler. Da das Netz diese Validierungs-Menge nicht zum Training vorgesetzt bekommt, lässt sich mit dieser Methode eine Tendenz zur Überanpassung ausfindig machen. 5.3. WIEDERHOLUNGEN LERNEN 59 Das Wiedererkennen von Eingaben erweist sich also schon bei der einer minimalisierten Version des Experiments als äußerst aufwändig. Bei EVL-Daten mit Vorausschau von einer Note befindet sich die Anzahl der möglichen Eingaben schon in einer Dimension von 1020 im Gegensatz zu den drei möglichen Werten bei der eingeschränkten Version dieses Experiments. Wenn in den späteren Trainingsdaten also nicht noch andere Regelmäßigkeiten als nur dieselben Eingabewerte eine Wiederholung kennzeichnen, dürfte das Erkennen von Wiederholungen im Notentext eine praktisch unlösbare Aufgabe darstellen. 5.3.4 Phrasenwiederholungen in einer EVL-Datei Ob das Erkennen von Wiederholungen bei den Chopin-Walzern möglich ist, soll ein neues Experiment überprüfen. Möglicherweise enthalten die Walzer noch andere Merkmale, welche eine Wiederholung kennzeichnen. Für Training und Tests stehen zwölf von Hand nachbearbeitete Phrasen zur Verfügung. Bei den Ausschnitten handelt es sich um Teile der Walzer, welche dreimal hintereinander kopiert wurden. Als Trainingsziel soll die erste Wiederholung leiser und die zweite Wiederholung langsamer gespielt werden (s. Abb. 5.16). Bei einem langsameren Tempo werden Deltazeiten und Längen der EVL-Darstellung proportional größer. Die Eckdaten der verwendeten Melodien zeigt Tabelle 5.3. Abbildung 5.16: Tempo- und Lautstärkenänderungen bei den einzelnen Wiederholungen der Melodien. Trainiert wurden verschiedene Netztypen mit unterschiedlichen Lernparametern. Auch mit paralleler oder sequenzieller Vorausschau unterschiedlicher Längen wurden Testläufe durchgeführt. Als Ergebnis lernte das Netz jedoch praktisch immer nur, die EDL-Parameter im Verlauf tendenziell richtig zu ändern. Der genaue Zeitpunkt einer Wiederholung blieb dabei nicht berücksichtigt. Abb. 5.17 zeigt einen typischen Plot eines Generalisierungstests. Die Sprünge erfolgten bei den einzelnen Generalisierungstests übrigens nicht immer an derselben Position. Man möchte vermuten, dass das Netz die Lautstärken- 5.3. WIEDERHOLUNGEN LERNEN Titel melody01 melody02 melody03 melody04 melody05 melody06 melody07 melody08 melody09 melody10 melody11 melody12 Ereignisanzahl 531 591 513 225 252 168 267 300 279 348 237 714 60 Dauer 66 55 70 38 38 24 28 38 36 36 22 69 sec sec sec sec sec sec sec sec sec sec sec sec Geschwindigkeit 135 bpm 162 bpm 126 bpm 120 bpm 120 bpm 99 bpm 162 bpm 120 bpm 126 bpm 126 bpm 200 bpm 160 bpm Tabelle 5.3: Ereignisanzahl, Dauer und Geschwindigkeit der für das Experiment verwendeten Walzer-Ausschnitte und Tempoänderungen bezogen auf die durchschnittliche Ereignisanzahl der zum Training verwendeten Eingabesequenzen durchführt. Im Beispiel von Abb. 5.17 findet der erste Sprung bei Ereignis 126 und der zweite Sprung bei Ereignis 273 statt. Die durchschnittliche Länge der elf zum Training verwendeten Melodien beträgt jedoch 349. Demnach müssten die Sprünge bei den Ereignissen 116 und 232 stattfinden. Die Netzreaktion wurde hierfür auch mit einer deutlich kürzeren (Kindermelodie) und einer deutlich längeren ( Für Elise“) EVL-Eingabe unter” sucht. Variationen fanden statt, nach welchem Schema war jedoch nicht ausfindig zu machen. Eine Wiederholung im Eingabestrom, wie beim Trainingsziel war jedenfalls nicht ausschlaggebend. Bleibt zu erwähnen, dass die Ergebnisse ansonsten ganz gut klingen. Die proportionalen Änderungen der Deltazeiten und Ereignislängen wurden nämlich tadellos ausgeführt. Nur die längerfristigen Variationen machten Probleme. Auch die Anwendung des bidirektionalen Lernens6 führte zu keinem besseren Ergebnis. Beim Training fiel außerdem auf, dass der MSE des Öfteren deutliche Sprünge zu höheren Fehlern machte. Dies wird als ein Hinweis auf eine stark zerklüftete Fehlerlandschaft gedeutet. Die Problemstellung ist vermutlich zu komplex. Einen typischen Fehlerverlauf mit Sprüngen zeigt Abb. 5.18. 6 Bidirektionales Lernen wurde im Grundlagenkapitel nicht erwähnt. Bei diesem Lernverfahren wird zusätzlich noch die reverse Eingabesequenz zum Training verwendet. Mehr dazu unter [25]. 5.3. WIEDERHOLUNGEN LERNEN 61 Vergleich der EDL Werte Lautstärke erwünscht Lautstärke gelernt Deltazeit erwünscht Deltazeit gelernt Länge erwünscht Länge gelernt 20 0 −20 50 ms 0 ms −50 ms 50 ms 0 ms −50 ms 0 100 200 300 400 Position in Ereignis−Sequenz 500 600 Abbildung 5.17: Generalisierungsergebnis. Die drei Änderungsparameter im Vergleich mit den Soll-Werten. Die Sprünge fanden hier zu früh statt. Vereinzelt musste das Training auch abgebrochen worden, weil der Fehler plötzlich auf einen extrem hohen Wert stieg. Dieses Phänomen tritt auch bei den nachfolgenden Experimenten immer wieder auf. Auffällig war, dass bei einem Netz, dessen Training aus besagtem Grund abgebrochen werden, musste viele Gewichte extrem nahe an 0 lagen7 . Weitere Ergebnisse und die Trainingssequenzen sind unter [3] im Unterordner learn repeatitions“ abgelegt. ” Das Sprungverhalten von Abb. 5.18 legt eine kleinere Lernrate nahe. Außerdem sollte geprüft werden, wie groß die Ein- und Ausgabewerte sind und ob Es konnten einige Gewichte im Bereich von 10−323 ausgemacht werden. Vor dem Sprung waren alle Gewichte vom Betrag her größer als 10−11 . 7 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 62 Trainingsverlauf 0.14 0.12 MSE 0.1 0.08 0.06 0.04 0.02 0 0.5·106 106 Epochen 1.5·106 2·106 Abbildung 5.18: Häufige Sprünge des MSE beim Training mit komplexen Daten. Verwendet wurde eine bereits sehr kleine Lernrate von 0.000001. der anfängliche Fehler nicht bereits ein alarmierend niedriges Niveau besitzt. Der Anfangswert des Fehlers liegt bei etwa 0.3. Der Erwartungswert aller Trainingsdaten war ungefähr 0 mit einer Varianz von etwa 0.5. Die Werte hielten sich also größtenteils in einem Bereich von [-1..1] auf. Die gewählte Lernrate war mit 0.000001 schon extrem niedrig. Größere Lernraten führten zu noch mehr Fehlersprüngen. Bei kleineren Lernraten war der Trainingsfortschritt zu langsam. Zusammenfassend lässt sich festhalten, dass das Erkennen von Wiederholungen in EVL-Sequenzen nicht funktionierte. Zudem befand man sich aufgrund der hochkomplexen Eingabedaten wie schon beim Experiment von 5.3.3 immer auf einer Gradwanderung zwischen keinem Lernerfolg bei zu wenigen Knoten und Überanpassung bei zu vielen Knoten. 5.4 Netztraining mit Klavierstücken Trotz der Probleme beim Lernen von Wiederholungen wollen wir natürlich auch mit den mühsam besorgten Klavieraufnahmen einige Tests durchführen. Vorweg sollte klar sein, dass eine gute Generalisierungsfähigkeit nicht mehr leicht zu messen sein wird. Trainiert man mit den relativ wenigen Musik-Daten ein Netz, können beim Test an einem ungesehenen Stück nur tendenzielle Eigenschaften untersucht werden. 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 63 Sogar ein Pianist kann dieselbe Interpretation nicht exakt noch einmal genauso einspielen. Der Validierungsfehler wird also nicht gegen Null sinken. 5.4.1 Gesamtstücke lernen Zuerst soll mit Aufnahmen von Klaus Ritzkowsky trainiert werden. Dabei handelt es sich um sechs Chopin-Walzer in voller Länge. Alle Walzer zusammen enthalten 8145 Ereignisse. Die durchschnittliche Länge beträgt 2:25 Minuten. Zum Netztraining werden wieder alle Aufnahmen bis auf eine verwendet. Mit der ungesehenen Aufnahme testet man dann das Netz auf Generalisierungsfähigkeit und vergleicht dabei die Netzausgabe mit der tatsächlichen Interpretation. Abb. 5.19 zeigt den Trainingsverlauf bei einem Netz mit 20 LSTM-Blöcken mit je zwei Zellen über einen Zeitraum von mehreren Tagen. Die Eingabe wurde um eine Vorausschau der nachfolgenden drei Notenwerte erweitert. Trainingsverlauf 0.14 0.13 0.12 MSE 0.11 0.1 0.09 0.08 0.07 0.06 0.05 0.5·106 106 Epochen 1.5·106 2·106 Abbildung 5.19: Fehlerverlauf bei einem Training über mehrere Tage. Das Netz konnte mit den komplexen Eingabedaten nicht umgehen. An der Fehlerkurve lässt sich erkennen, dass das Netz mit den Daten offensichtlich sehr bald überfordert war. Das Testergebnis mit der ungesehenen Melodie ist in Abb. 5.20 zu sehen. Die Schwankungen konnten nicht ansatzweise nachgeahmt werden, wobei erwähnt sei, dass die Aufnahmen kaum Schwankungen bezogen auf die Gesamtdynamik und -rhythmik hatten. 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 64 Vergleich der EDL Werte von "07" Lautstärke erwünscht Lautstärke gelernt Deltazeit erwünscht Deltazeit gelernt Länge erwünscht Länge gelernt 20 0 −20 500 ms 0 ms −500 ms 500 ms 0 ms −500 ms 0 500 1000 Position in Ereignis−Sequenz 1500 2000 Abbildung 5.20: Generalisierungs-Test. Beim Vergleich der erlernten Variationen mit denen der tatsächlichen Aufnahme zeigen sich keine beim Gesamtverlauf klar erkennbaren Übereinstimmungen. Das entsprechende Hörbeispiel ist im Verzeichnis learn piano klaus/results“ un” ter [3] abgelegt. Die erlernte Interpretation ist natürlich schwer zu deuten. Zumindest klingt sie nicht mehr mechanisch und besser, als wenn man die EVL-Datei des Originals mit zufälligen Änderungswerten verfremden würde. Motorisch bedingte Variationen, aber leider auch ungewollte Hänger“ beim Einspielen wurden ” vom Netz nachgeahmt. 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 5.4.2 65 Instruktionen lernen Im Internet unter [5], [7] und [10] fanden sich zahlreiche nachträglich editierte MIDI-Dateien von Walzern. Linke und rechte Hand waren dabei bereits getrennten Spuren zugewiesen. Außerdem enthielten die Walzer von Hand hinzugefügte Tempo- und Dynamik-Variationen. Es gibt anscheinend bestimmte Gesetzmäßigkeiten, wann ein Abschnitt schneller oder langsamer, bzw. lauter oder leiser zu spielen ist. Manchmal stehen diese Informationen in der Partitur, manchmal jedoch nicht. Wir wollen uns nun in die Lage eines Pianisten versetzen. Er bekommt einen Notentext vorgelegt und soll diesen nachträglich um Tempo- und Dynamik-Anweisungen erweitern. Dasselbe versuchen wir im nachfolgenden Experiment mit einem neuronalen Netz. Auch hier werden sich wie im letzten Versuch die Ergebnisse beim Generalisierungstest höchstwahrscheinlich stark von den erwünschten unterscheiden, deshalb untersuchen wir nur die tendenzielle Ausgabe und ob beim Anhören Auffälligkeiten zu erkennen sind. Titel chopin chopin chopin chopin chopin chopin op64n2 op64n3 op69n1 op69n2 op70n1 op70n3 Taktanzahl 194 171 161 177 97 129 Ereignisanzahl 2019 2013 1713 2105 1483 1618 Dauer 3:36 2:47 3:28 3:32 2:04 3:28 Geschwindigkeit 160 bpm 185 bpm 140 bpm 150 bpm 140 bpm 108 bpm Tabelle 5.4: Sechs Walzer und ihre Eckdaten Taktanzahl, Ereignisanzahl, Dauer und Geschwindigkeit Die verwendeten Walzer zeigt Tabelle 5.4. Alle Walzer besitzen in ihrer Interpretations-Version charakteristische Schwankungen bei den drei EVL-Parametern Länge, Deltazeit und Lautstärke. Die Schwankungen beziehen sich dabei auf den Gesamtverlauf. Abb. 5.21 zeigt beispielsweise den Lautstärkenverlauf von chopin op70n3“. Verlaufskurven und Hörproben aller Stücke befinden sich im ” Verzeichnis learn instructions“ unter [3]. ” Da die Änderungen in diesem Experiment ziemlich linear verlaufen und keine Variationen bezogen auf einzelne Ereignisse enthalten, sind die Trainingsdaten weniger komplex als im Experiment von 5.4.1. Voraussichtlich wird sich das Netz bei den wenigen Trainingspaaren an einem durchschnittlichen Änderungs-Verlauf orientieren und wieder eine Tendenz zur Überanpassung haben. 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 66 Lautstärken in "chopin_op70n3" 120 100 80 60 40 20 0:30 1:00 1:30 2:00 2:30 3:00 3:30 Zeit Abbildung 5.21: Lautstärken-Kurve eines der verwendeten Stücke Nach einem Training über 100000 Epochen mit zehn LSTM-Blöcken und je zwei Zellen konnten Ergebnisse mit klar erkennbaren Schwankungen erzielt werden. Die obere Kurve des Beispiels in Abb. 5.22 zeigt einen erlernten DeltazeitenVerlauf. EDL−Vergleich zu "chopin_op64n3" gelernt erwünscht 2 0ms Deltazeiten−Differenzen 0 ms −20 ms 20 ms 0 ms −20 ms 0 500 1000 Ereignisse 1500 2000 Abbildung 5.22: Vergleich der EDL-Werte der Deltazeiten bei tatsächlicher Netzausgabe (obere Kurve) und erhoffter Ausgabe (untere Kurve). Bei positiven DeltazeitenDifferenzen wird das Stück langsamer und bei negativen schneller. Die Schwankungen sind jedoch leider völlig anders, als die vorgeschlagenen Änderungen der Original-Version (untere Kurve). Nur beim Schneller-Werden am 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 67 Schluss lässt sich eine Gemeinsamkeit erahnen. Während des Anhörens fiel auf, dass einzelne Abschnitte ähnlich interpretiert“ wurden. Dies kann man bei Ab” schnitt A des in Abb. 5.23 gezeigten Ausschnitts erkennen. Abbildung 5.23: Deltazeiten-Änderungen der ersten 1000 Ereignisse von cho” pin op64n3“ mit Zuweisung von logischen Teilen des Walzers. Die Wiederholung des A-Teils wird mit demselben Tempoverlauf gespielt. Demnach mag sich das Netz vielleicht an einem gemittelten Sequenzverlauf der Trainingsdaten orientieren, die Eingabe selbst hat aber immer noch einen direkten Einfluss auf die Ausgabe. Außerdem lässt sich festhalten, dass für den Ansatz dieses Experiments die Eingabedaten unnötig kompliziert sind. Da einzelnen Tönen keine spezielle Variation zugewiesen wird, könnte als Trainingsziel auch einfach ein globaler Tempo- und Lautstärken-Änderungsfaktor (bie bei [22] und [23]) verwendet werden. Dieser Ansatz konnte leider aus Zeitgründen nicht mehr untersucht werden. Eine Generalisierung war nicht möglich, was bei der geringen Trainingsmenge von fünf Stücken nicht verwunderlich ist. 5.4.3 Phrasen lernen Zu guter Letzt werden noch verschiedene Netze mit den von Hans-Jörg Paliege eingespielten Phrasen trainiert. Es existieren 27 Aufnahmen von Ausschnitten aus fünf Walzern, dabei wurden manche Ausschnitte auch mehrmals in unterschiedlichen Stilrichtungen eingespielt. Die Einzelaufnahmen enthalten durchschnittlich 148 Ereignisse und sind im Schnitt 24 Sekunden lang. Da sich die Aufzeichnungen auch in der Notenwahl sehr stark vom OriginalNotentext unterscheiden, wurde für die Netzeingabe mit dem unter 4.3.3 beschriebenen Verfahren zur Rückwärtsrechnung ein Pseudo-Notentext errechnet. Die Unterschiede in den EDL-Datenströmen sind trotzdem sehr groß, was die 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 68 Trainingsdaten besonders komplex werden lässt. Abb. 5.24 zeigt den rückwärts gerechneten und leicht nachbearbeiteten Notentext (oben) und die gespielte Interpretation (unten). Zwei Versionen von "17_C" C5 C4 C3 60 30 0 Lautstärken Interpretation C5 C4 C3 C2 Fuß− pedal Tonhöhen 60 30 0 Lautstärken C2 Fuß− pedal Tonhöhen rückwärts gerechneter Notentext 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zeit [sec] Abbildung 5.24: Gravierende Unterschiede zwischen Notentext (oben) und Interpretation (unten) führen zu komplexen Trainingsdaten. Trainiert wurde wieder für mehrere Tage mit zehn LSTM-Blöcken zu je zwei Zellen bei einer parallelen Vorausschau von drei Notenwerten. Die Lernrate setzen wir auf 0.000001 und das Momentum auf 0.95 fest. Bei der für einen Generalisierungstest verwendeten Phrase handelt es sich um einen Ausschnitt, der noch nicht zum Training verwendet wurde. Abb. 5.25 zeigt einen typischen Trainingsverlauf des Experiments. Interessanterweise lassen sich im getesteten Ausschnitt 17 C“ beim Verlauf der ” Lautstärken-Änderungen (Abb. 5.26) gewisse Ähnlichkeiten mit den erwarteten Dynamikvariationen erkennen. Die rhythmischen Schwankungen erscheinen jedoch sehr willkürlich. Beim Anhören der vom Netz erzeugten Interpretation kann man nicht mehr von einer aus musikalischer Sicht nachvollziehbaren Auslegung eines Walzers sprechen. Alle Trainingsdaten, Quelltexte sowie weitere Ergebnis-Plots und Hörbeispiele befinden sich unter [3] im Verzeichnis learn piano hansjoerg“. ” 5.4. NETZTRAINING MIT KLAVIERSTÜCKEN 69 Training ohne "17_C" 0.35 0.3 MSE 0.25 0.2 0.15 0.1 0.05 0 200000 400000 Epochen 600000 800000 Abbildung 5.25: Trainingsverlauf. Der Fehler sinkt nur sehr langsam und weist, vermutlich aufgrund eines stark zerklüfteten Fehlergebirges immer wieder Sprünge nach oben auf. EDL−Vergleich bei "17_C" erwünscht gelernt Lautstärken−Differenzen 40 20 0 −20 −40 0 10 20 30 40 50 60 Noten−Ereignisse 70 80 90 100 Abbildung 5.26: Generalisierungstest mit einer ungesehenen Walzer-Phrase. Die gezeigte Kurve der Lautstärken-Änderungen verläuft ähnlich wie die der tatsächlichen Interpretation. Im Gegensatz dazu ähneln sich die Kurven von Deltazeit und Ereignislänge nicht. 5.5. GRÜNDE FÜR LERNERFOLGE UND MISSERFOLGE 5.5 70 Gründe für Lernerfolge und Misserfolge Für Änderungsparameter bezüglich des Gesamtverlaufs der Musikstücke standen bei Weitem zu wenige Trainingsdaten zur Verfügung. Mit nicht einmal zehn für ein Training nutzbaren Eingabesequenzen von kompletten Klavier-Stücken ist es für ein neuronales Netz unmöglich, zu einem ungesehenen Stück alle gewünschten Parameter-Änderungen zu generieren. Hierfür unterscheiden sich die Anschlagsdynamik- und Rhythmik-Kurven der Aufnahmen viel zu stark. Keine der Parameterkurven eines Stücks war im Gesamtverlauf der eines anderen ähnlich. Zudem ist es fraglich, ob die verwendete Architektur auch bei ausreichender Anzahl von Trainingsdaten nicht immer noch überfordert wäre, einzelne auf das Gesamtstück bezogene Gesetzmäßigkeiten zu berücksichtigen. Das Erkennen einer Wiederholung würde ein Zurückblicken von mehreren hundert Schritten in der Eingabesequenz erfordern. Bei mathematischen Grundlagenexperimenten sind LSTM-Netze zwar zu einem Zurückblicken in dieser Größenordnung fähig, die Trainingsdaten in unserem Fall sind jedoch um Dimensionen komplexer. Schon das eingeschränkte Beispiel von 5.3.3 zum Erkennen von drei möglichen Werten in einer Sequenz benötigte 40 Trainingssequenzen, sechs LSTM-Zellen und 100000 Trainingsepochen. Mit jeder Regelmäßigkeit die erlernt werden soll wächst auch die Anzahl der benötigten Netzknoten und Verbindungen. Die verwendeten Daten enthalten nur schwer erkennbare und unüberschaubar viele Gesetzmäßigkeiten. Ein Test mit mehreren tausend Zellen und entsprechend langem Training mag vielleicht zu besseren Ergebnissen führen. Dafür reichte jedoch die zur Verfügung stehende Berechnungskapazität nicht aus. Während der Experimente fiel zudem ein Problem der gewählten Datenrepräsentation bezogen auf die Änderungen einzelner Ereignisse auf. Sollen nur einfache Regeln für eine Hand erlernt werden, verkomplizierte die Hinzunahme von Daten der anderen Hand die Trainingsdaten schon so stark, dass die Regeln unter Umständen nicht mehr erlernt werden konnten. Bei dem unter 5.2.2 beschriebenen Experiment ließen sich beispielsweise die motorischen Verschiebungen der linken Hand bei Netzeingaben mit linker und rechter Hand nicht mehr erlernen. Auf den ersten Blick mag dies verwundern, da ja ein eigener Netzeingang die linke bzw. rechte Hand kennzeichnet. Die Trainingsdaten werden aber durch die Tatsache, dass sich im EVL-Format die Deltazeiten jeweils auf das VorgängerEreignis beziehen entscheidend verkompliziert. Der Typ des Vorgängerereignisses spielt dabei keine Rolle. Am besten lässt sich dieses Problem an einem Beispiel verdeutlichen. Angenommen, für die linke Hand soll eine einfache Verschiebung realisiert werden (Abb. 5.27 a). Die Ereignisse der rechten Hand bleiben unverändert (Abb. 5.27 b). Aus den dazugehörigen EVL-Deltazeiten lässt sich der EDL-Wert für die Deltazeit 5.5. GRÜNDE FÜR LERNERFOLGE UND MISSERFOLGE 71 ermitteln. Bei (b) sind also laut Annahme alle Deltazeit-Differenzen gleich 0. Die Kombination von linker und rechter Hand (Abb. 5.27 c) führt jedoch zu einer kontextbezogenen Änderung der Differenzen der rechten Hand. Die sehr einfache Lernaufgabe, alle Ereignisse der rechten Hand unberührt zu lassen ist in diesem Beispiel also komplizierter als vorerst angenommen. ! ! ! ! ' $ ( ) ! ! " # $ % & " # $ % " # $ % & (b) (a) ' (c) Abbildung 5.27: Werden zwei unabhängige Regelmäßigkeiten kombiniert, verkompliziert dies bei der verwendeten Datenrepräsentation die resultierenden Trainingsdaten gravierend. Im Beispiel der Abbildung sollen bei Ereignissen der linken Hand einfache Verschiebungen mithilfe der Deltazeiten realisiert werden (a). Die rechte Hand zeigt eine einfache Tonfolge. Diese soll unverändert bleiben (b). Kombiniert man nun (a) und (b), führt dies bei der rechten Hand zu Deltazeiten-Differenzen ungleich 0 (c). Die Reihenfolge der Ereignisse kann bei der modifizierten Version aus Gründen der Eindeutigkeit für die EDL-Berechnung nicht geändert werden. 5.5. GRÜNDE FÜR LERNERFOLGE UND MISSERFOLGE 72 Bei manchen komplexen Gesetzmäßigkeiten und vor allem bei Regeln, die ein Zurückblicken im Eingabestrom über viele Zeitschritte erfordern, stößt die Generalisierung einer musikalischen Interpretation mit künstlichen neuronalen Netzen also an seine Grenzen. Was dagegen sehr gut funktioniert, ist das Erlernen von häufig auftauchenden Regelmäßigkeiten im Kontext weniger Ereignisse, oder direkte Zusammenhänge mit einer aktuellen Eingabe. Das einleitend unter 5.2.1 beschriebene Beispiel mit den Kindermelodien zeigt diese beiden erlernbaren Eigenschaften sehr gut. Eine Note muss hier nach ihrer Länge klassifiziert werden. Nur kurze“ Noten sind von einer Verschiebung für ” die erwünschte schwingende Spielweise relevant. Befindet sich die Notenlänge im Bereich einer zu verschiebenden Note, muss nur noch in den vorhergegangenen Eingaben geprüft werden, ob die letzte Note bereits verschoben war oder nicht und dementsprechend die Deltazeit-Ausgabe gesetzt werden. Einen sehr einfachen direkten Zusammenhang zwischen Ausgabe und aktueller Eingabe stellt beim Kindermelodien-Beispiel das Betonen von markierten Noten auf den ersten Schlag dar. Auch in den Klavieraufnahmen kamen solche Zusammenhänge vor. So wurden bei der Spielweise von Hans-Jörg Paliege höhere Noten fast immer lauter angeschlagen. Die Umsetzung dieser Regelmäßigkeit stellt für ein neuronales Netz kein Problem dar. Kapitel 6 Schluss Eine musikalisch wertvolle Interpretation klassischer Klavier-Stücke beinhaltet viele extrem komplexe und selbst für den Menschen nicht klar erkennbare Gesetzmäßigkeiten. Dass ein künstliches neuronales Netz mit den sehr wenigen zur Verfügung stehenden Trainingsdaten keine zufrieden stellende Generalisierungsfähigkeit besitzen kann, zeichnete sich im Verlauf der Arbeit schon relativ bald ab. Spätestens bei der musikalischen Analyse gemeinsam mit dem Pianisten wurde deutlich, von wie vielen unterschiedlichen Variationen eine Interpretation geprägt wird. Trotzdem ist es interessant zu sehen, dass manche Variationsschemata bezüglich des Kontextes weniger Noten prinzipiell ganz gut erlernt werden können. Der Sprung von den Grundlagenexperimenten in den Abschnitten 5.2 und 5.3 hin zu Tests mit den komplexen Klavieraufnahmen in Abschnitt 5.4 ist unter Umständen zu groß. Interessant wäre ein neuer Ansatz, bei dem versucht wird, die Komplexität der Daten zu reduzieren. Verzichtet man auf Variationen der Notenlängen, lässt sich als Trainingsziel (wie in [22] und [23]) ein geglätteter Lautstärken- und Tempo-Verlauf bestimmen. Möglicherweise wird dadurch eine bessere Generalisierungsfähigkeit in Bezug auf den Gesamtverlauf eines Stücks erzielt. Die Komplexität der Daten ließe sich auch reduzieren, indem man einzelne Variationsaspekte während der Datenerhebung ausschließt. Tempoänderungen im Gesamtverlauf lassen sich beispielsweise durch ein erneutes Einspielen von Phrasen mit Taktgebung vermeiden. Dabei bekommt der Pianist eine Tempovorgabe und spielt zu einem Metronom, das ihm die Schläge vorgibt. Zeitliche Verschiebungen bewegen sich dann nur noch in einem viel engeren Kontext. Eine andere interessante Nutzung von neuronalen Netzen mit der gewählten Datenrepräsentation wäre ein Training mit vielen Einzelaufnahmen derselben Phrase. Bei einem Netz-Test ließe sich damit eine gemittelte perfekte“ Variante er” zeugen. Vereinzelte Ausrutscher oder andere ungewollte Spielweisen werden bei genügend großer Trainingsmenge vernachlässigt. 73 74 Als Erweiterung des EVL/EDL-Ansatzes könnte man versuchen, das Einschieben oder Löschen von Noten zuzulassen. Auch der Ansatz von [19] und [14] lässt solche speziellen Ereignisse zu. Unter Umständen führt auch ein Test mit einem anderen Musik-Stil zu besseren Ergebnissen. Für diese Diplomarbeit wurden die Walzer vor allem wegen der guten Digitalisierbarkeit von Klavier-Musik verwendet. Falls entsprechend gut funktionierende MIDI-Abnahmetechniken für andere Instrumente zur Verfügung stehen, lassen sich damit ähnliche Versuche durchführen. Als Datenrepräsentation dürfte sich EVL/EDL mit kleinen Umformungen auch gut eignen. Sehr variationsreiche Daten, die zudem möglicherweise weniger komplex als die der KlavierAufnahmen sind, könnten beispielsweise monophone Aufnahmen von GitarrenSolos liefern. ANHANG 75 Anhang A MIDI-Parameter Aufbau von Header- und Track-Chunk sowie Ereigniscodes des Datenbereichs in MIDI-Dateien: Bytes 4 4 2 2 2 Header-Chunk Beschreibung ID MThd“ ” Headerlänge (06) MIDI-Typ Anzahl der Tracks Zeitformat Track-Chunk Bytes Beschreibung 4 ID MTrk“ ” 4 Tracklänge (n) n Datenbereich Code 0x8 0x9 0xA 0xB 0xC 0xD 0xE Datenbytes 2 2 2 2 1 1 2 Kanalbezogene Ereignisse Beschreibung Note-Aus“ auf Kanal ” Note-An“ auf Kanal ” Aftertouch polyphon Steuerereignisse, z.B. Fußpedal Programmwechsel Aftertouch monophon Änderung der Tonhöhen-Steuerung ANHANG Code 0xF0 0xF2 0xF3 0xF6 0xF7 0xF8 0xFA 0xFB 0xFC 0xFE 0xFF 76 Datenbytes n 2 1 0 0 0 0 0 0 0 0 Code 0xFF0002 0xFF01n 0xFF02n 0xFF03n 0xFF04n 0xFF05n 0xFF06n 0xFF07n 0xFF2001 0xFF2F00 0xFF5103 0xFF5405 0xFF5804 0xFF5902 0xFF7Fn Systembezogene Ereignisse Beschreibung Für Definition neuer systemexklusiver Funktionen Song-Pointer Song-Auswahl Tonart-Anfrage Ende einer systemexklusiven Sequenz Zeitsynchronisation Song-Pointer auf Startposition setzen, Start Fortsetzung beim nächsten 0xF8-Ereignis Laufende Sequenz unterbrechen, Stopp MIDI-Verbindungscheck System-Reset Datenbytes 2 n n n n n n n 1 0 3 5 4 2 n 0xFF-Meta-Ereignisse Beschreibung Nummerierung von Patterns und Tracks Speicherung von Texten Copyright Zuordnung für Namen von Sequenzen & Tracks Instrumentnamen Songtext Marker setzen Hinweispunkt zur Filmvertonung Kanal-Bezug der folgenden Meta-Ereignisse Track-Ende Setze Tempo SMPTE-Offset Taktart Tonart Systemabhängige Informationsübertragung ANHANG 77 Anhang B Vorschlag zur EVL-Visualisierung mit Gnuplot Umformung von EVL zu EVL mit globalen Ereignispositionen: ${commands_dir}/calc_pos melody02.evl melody02.evl2 Gnuplot-Code des Scripts: set terminal postscript eps enhanced color "Times-Roman" 16 set output "melody02.eps" set size 1.3,1 set xlabel "Zeit [sec]" set xrange [0:11] dy = 0.2 dx = 0.02 set yrange [0:95] set grid ytics back set title "Ausschnitt aus melody02" set ytics ("C1" 36-10, "C2" 48-10, "C3" 60-10, \ "C4" 72-10, "C5" 84-10, "C6" 96-10) set bars 0 set label "Fuß-\npedal" at 0.46,11 center plot \ "melody02.evl2" using ($2/1000+$3/2000):($5-11):($3/2000) \ with xerrorbars lt 3 lw 6 pt 0 notitle, \ "melody02.evl2" using ($2/1000+$3/2000):($5-11):($3/2000)-dx \ with xerrorbars lt 14 lw 3.5 pt 0 notitle, \ "melody02.evl2" using ($2/1000+$3/2000):((1-$1)*16):($3/1000) \ with boxes fs solid 1 lt 1 notitle, \ "melody02.evl2" using ($2/1000+$3/2000):((1-$1)*16)-dy:($3/1000)-dx \ with boxes fs solid 1 lt 15 notitle ANHANG 78 Anhang C Erlernen der kontextsensitiven Grammatik an bn cn Verwendet wird ein dreischichtiges neuronales Netzwerk mit jeweils vier Ein- und Ausgabe-Knoten. Dabei stehen je drei Knoten für die Buchstaben a, b und c der zu erkennenden Sprache. Eine zusätzliche Status-Eingabe S gibt an, ob eine neue Sequenz beginnt. Der Ausgabewert T bestimmt, wann die Sequenz zu Ende ist. Parameter gelten als gesetzt, wenn sie mit einer 1 belegt sind und als ungesetzt bei einer -1. Die Aufgabe des Netzes ist, die nächstmöglichen Zeichen vorherzusagen. Eine neue Sequenz beginnt immer mit gesetztem Status-Eingabewert. Danach folgen ein oder mehrere gesetzte a’s und dann dieselbe Anzahl von b’s und c’s. Abb. 7.1 zeigt die Eingabesequenz und gewünschte Ausgabesequenz für n = 1. Abbildung 7.1: Netzein- und ausgabe bei an bn cn für n = 1 Trainiert wird mit zehn Sequenzen der Wörter mit n von 1 bis 9 und mit n = 50. Als Generalisierungs-Test wird ein längeres n von 100 verwendet. Das zu trainierende Netz besteht aus zwei Blöcken mit jeweils zwei LSTM-Zellen. Diese verwenden Forget-Gates und Guckloch-Verbindungen. Mit einer Lernrate von 0.00001 und einem Momentum von 0.98 sinkt der SQE nach 10000 Trainingsepochen unter 0.01 (s. Abb. 7.2). Der Generalisierungs-Test ist in Abb. 7.3 aufgeführt. Die roten Kreise zeigen, dass alle Sprünge bei den Parameter-Änderungen für die vier Netz-Ausgaben korrekt, bzw. mit nur sehr geringer Unsicherheit“ ausgeführt werden. ” Das Beispiel mit Quelltext und makefile ist für Interessierte im Internet bei [3] unter anbncn“ abrufbar. ” ANHANG 79 0.3 0.25 MSE 0.2 0.15 0.1 0.05 0 0 1000 2000 3000 4000 5000 6000 Epochen 7000 8000 9000 10000 Abbildung 7.2: Verlauf des SQE beim Training erwünscht gelernt 1 T 0 −1 ✔ ✔ ✔ ✔ 1 ✔ a 0 −1 ✔ 1 b 0 −1 ✔ ✔ ✔ ✔ 1 c 0 −1 0 50 100 ✔ ✔ ✔ ✔ 150 200 Position in Ausgabesequenz 250 Abbildung 7.3: Generalisierung für n = 100 300 ANHANG 80 Anhang D Kurzbeschreibung der verwendeten LSTM-Bibliothek Im Rahmen dieser Arbeit verwenden wir zur Simulation von neuronalen Netzen die LSTM-Bibliothek von Alex Graves ([4]). Die Bibliothek wurde in C++ implementiert und unterstützt LSTM-Zellen mit Forget-Gates und GucklochVerbindungen sowie eine Vielzahl von Lernverfahren. Die wichtigsten Funktionen und Parameter werden nachfolgend kurz beschrieben. Dieser Anhang soll einen Überblick über die Leistungsfähigkeit der Bibliothek geben. Er eignet sich auch zum Nachschlagen für Neueinsteiger, die sich mit der Bibliothek vertraut machen wollen. Für diese Arbeit wurde eine frühe Beta-Version verwendet. Dabei waren manche Funktionen noch nicht vollständig implementiert und an manchen Stellen hatte sich toter“ Code eingeschlichen. Voraussichtlich ” in diesem Jahr soll jedoch eine dokumentierte und voll funktionsfähige Version als Open-Source veröffentlicht werden. Kurz zur Anwendung der Bibliothek. Für das Ansteuern praktisch aller benötigten Funktionen wurde ein Steuer-Interface aufgesetzt. Dieses lässt sich mit #include <network interface.h> einbinden. Die Beschreibung der Netzarchitektur wird in einer .net“-Datei abgelegt und kann mit der Funktion netLoad ” geladen werden. Parameter für den Lernverlauf speichert man in einer .par“” Datei und lädt diese mit der Funktion netParamLoad. Netzein- und ausgaben nutzen standardmäßig das netCDF-Format1 . Netzausgaben können optional auch im XML-Format abgespeichert werden. Beispiele zur Anwendung der Bibliothek findet man unter [3]. wichtige Funktionen des Steuer-Interfaces bool netLoad(char *filename, char* outputFilename, bool bidirectional, int wtUpdateFlag, int gradCalcFlag, int prevContext, int futureContext, bool backProj) netLoad führt eine Vielzahl von Netz-Initialisierungen durch. In filename wird die zu ladende Datei mit den Informationen zur Netzarchitektur (.net) angegeben. outputFilename bestimmt das Präfix der während eines späteren Netztrainings erzeugten Dateien (z.B. mit den Suffixen error report.txt“ oder best.par“). Ist bidirectional auf true gesetzt, wird das ” ” Lernverfahren von [25] angewendet. Mit den Flags wtUpdateFlag und gradCalcFlag lassen 1 plattformunabhängiges Format zur komprimierten Ablage wissenschaftlicher Daten – Infos unter [9] ANHANG 81 sich verschiedene Methoden zur Bestimmung der Gewichtsänderungen beim Lernen festlegen. In der vorliegenden Arbeit wurde hierfür ausschließlich WU GRADIENT DESCENT und GC BPTT verwendet. prevContext und futureContext legen fest, wie viele vorangehende und nachfolgende Tupel der Eingabesequenz parallel als Netzeingabe verwendet werden sollen. Die ursprüngliche Eingangsknoten-Anzahl wird also mit (prevContext+futureContext) multipliziert. Mit auf true gesetztem backProj läuft der Rückpropagierungsprozess über die Eingabeschicht hinaus. Dazu wird vorne eine weitere Schicht angehängt. Wir verwenden in dieser Arbeit jedoch immer backProj=false. Als Rückgabewert liefert netLoad bei erfolgreicher Initialisierung den Wert true. bool netLoadTrainingData(const char*filename, bool valOnTestSet, double valSetFraction double trainSetFraction, double trainOffsetFraction, double testSetFraction, bool nextStep) netLoadTrainingData bestimmt, welche Eingabedaten dem Netz zugeführt werden sollen. Die Funktion wird in den Versuchen dieser Arbeit sowohl zum Training als auch zum Testen eines bereits fertig trainierten Netzes verwendet. Bei file muss es sich um eine Datei im netCDF-Format handeln. Die Eingabedaten lassen sich mit den Parametern valSetFraction, trainSetFraction und testSetFraction anteilsmäßig auf eine Evaluierungs-, Trainings- und Testmenge aufteilen. Sollen alle in der Eingabedatei enthaltenen Daten für ein Netztraining verwendet werden, setzt man valSetFraction=testSetFraction=0.0 und trainSetFraction=1.0. Ein mit true belegtes valOnTestSet bewirkt, dass der Evaluierungsfehler nicht über der Evaluierungsmenge sondern über der Testmenge berechnet wird. trainOffsetFraction bestimmt prozentual, ab welcher Sequenz die tatsächliche Trainingsmenge beginnen soll. Standardmäßig verwenden wir ein trainOffsetFraction von 0.0. Ist nextStep auf true gesetzt, wird das Netz lediglich darauf trainiert, das nächste Tupel der Eingabesequenz zu erlernen. Standardmäßig setzen wir diesen Wert natürlich auf false. Der Rückgabewert von netLoadTrainingData ist bei der Beta-Version immer true. void netBuild() netBuild initialisiert das Netz und muss vor einem Training oder Testen aufgerufen werden. bool netParamLoad(const char *filename) Mit netParamLoad werden die Parameter einer Parameter-Datei file geladen. Die Datei darf neben den weiter unten beschriebenen Parametern auch den Netzzustand, also alle Gewichte und Aktivierungen beinhalten. War das Laden der Datei erfolgreich, liefert die Funktion den Wert true. ANHANG void 82 netRandomizeWeights(double range, bool random, bool weightGuessing) Mit netRandomizeWeights werden die Gewichte des Netzes mit Zufallswerten zwischen [−range..range] oder mit range selbst belegt, je nachdem ob random auf true oder false gesetzt ist. Bei auf true gesetztem weightGuessing erfolgt kein Zurücksetzen des Netzes für ein neues Training. Wir verwenden immer weightGuessing=false. bool netLearn(int numSeqs, int numEpochs) netLearn startet die eigentliche Lernprozedur. Trainiert wird solange bis numSeqs EingabeTupel durch das Netz propagiert wurden oder für numEpochs Trainingsepochen auf der gesamten Trainingsmenge trainiert wurde. Wird ein Parameter auf 0 gesetzt, spielt er keine Rolle für den Lernabbruch. Sind beide Parameter gleich 0, kann der Lernvorgang noch durch ein Unterschreiten der in der Lern-Parameter-Datei (.par) beschriebenen Variablen maxTestsNoBest oder stopVal beendet werden. Bei erfolgreichem Trainingsverlauf ist der Rückgabewert true. void netSave(const char *filename) Nach dem Training kann man die aktuellen Parameter und Netz-Gewichte mit netSave abspeichern. Übergeben wird filename mit der Endung .net“. netSave erzeugt dann automatisch ” auch eine .par“-Datei mit Informationen über den Trainingsverlauf und die Endgewichte. ” bool netOutputData(const char*inFile, const char*outFile, int fileType, bool wholeEpoch, int numSequences, int firstSeqNum, int dataSet, bool fullUpdates, bool printLabels, bool printSeqs) Für ein späteres Testen des Netzes können die sich verändernden Aktivierungen/Zustände bequem mithilfe von netOutputData in eine Datei geschrieben werden. Bei inFile handelt es sich um eine Textdatei, die beschreibt, welche Aktivierungen während des Abarbeitens einer Eingangs-Sequenz (z.B. geladen durch LoadTrainingData!) aufgezeichnet werden sollen. Ein Eintrag timeSeries l2 acts“ in inFile führt beispielsweise zur sequentiellen Ausgabe der ” Aktivierungen aller Einheiten aus der zweiten Schicht. Geschrieben werden die Informationen in outFile. Dessen Format kann man mit fileType bestimmen (erlaubte Werte: FT XML und FT NETCDF). Da wir in dieser Arbeit ein bereits trainiertes Netz nur auf einzelne Test-Datensätze anwenden, belegen wir wholeEpoch mit false, numSequences mit 1 und firstSeqNum mit 0. dataSet gibt an, wecher Teil der Datensequenz verwendet werden soll (DST TRAIN, DST TEST oder DST VALIDATION). Die letzten drei Parameter werden in dieser Arbeit standardmäßig mit false belegt. War die Ausgabe erfolgreich, wird von netOutputData der Wert true zurückgegeben. ANHANG 83 const char *netGetInfo(bool verbose) Zum Debuggen lassen sich fast alle wichtigen aktuellen Parameterwerte mithilfe von netGetInfo ermitteln. Setzt man den Parameter verbose auf true, werden zusätzlich zu den Netzparametern auch noch die Trainingsparameter zurückgegeben. Die Parameter lassen sich dann beispielsweise mit cout<<netGetInfo(true)<<endl; ausgeben. Aufbau einer .net“-Datei ” Die Beschreibung der Netzarchitektur in einer .net“-Datei beginnt immer mit ” der Anzahl der Schichten. In den Zeilen danach werden die einzelnen Schichten definiert. Dabei beginnt eine Zeile entweder mit I“ (Eingabe-Schicht), L“ ” ” (Schicht mit LSTM-Zellen), B“ (Schicht mit herkömmlichen Zellen) oder O“ ” ” (Ausgabe-Schicht). Danach folgen durch Leerzeichen getrennt Parameter, welche die entsprechende Schicht genauer definieren. Ein I“ benötigt als Parameter nur die Anzahl der Eingabe-Knoten. ” L“ erfordert sechs Parameter (ein siebter Parameter ist optional): ” • Anzahl der Blöcke • Konstellation der Aktivierungsfunktionen von Zellen-Eingang, Zellen-Ausgang und den Toren. Mögliche Werte: 0 (M2_M1_LOG), 1 (ID_ID_LOG), 2 (M2_ID_LOG), 3 (LOG_LOG_LOG), 4 (M2_M2_LOG), 5 (TANH_TANH_LOG), 6 (M1_M1_LOG), 7 (M02_M2_LOG) • Anzahl der Zellen pro Block • Boolean-Wert für Forget-Gates • Boolean-Wert für Guckloch-Verbindungen • Boolean-Wert für connect from the gates“ (standardmäßig auf 0 setzen!) ” • Netz-Tendenz (optional). Mögliche Werte: 0 (NORMAL_BIAS), 3 (LSTM_SEPP_BIAS) 1 (LSTM_STD_BIAS), 2 (LSTM_OPEN_BIAS), B“ folgen zwei Parameter: ” • Anzahl der Knoten • Aktivierungsfunktion. Mögliche Werte: 0 (HYP_TAN), 1 (IDENTITY), 2 (LOGISTIC), 3 (MAXMIN2), 4 (MAXMIN1) O“ benötigt zwei Parameter: ” • Anzahl der Ausgabe-Knoten ANHANG 84 • Aktivierungsfunktion. Mögliche Werte: 0 (LOG_LEAST_SQUARES), 1 (CROSS_ENTROPY), 2 (MULTIPLE_INDEPENDENT_ATTRIBUTES), 3 (LINEAR_LEAST_SQUARES), 4 (M2_LEAST_SQUARES) Nach den Zeilen mit den Beschreibungen der einzelnen Schichten wird festgelegt, welche gerichteten Verbindungen zwischen den Schichten geknüpft werden sollen. Eine Verknüpfung wird immer durch ein Quadrupel beschrieben. Die einzelnen Quadrupel reiht man dann hintereinander in der Zeile an. Werte werden wieder durch Leerzeichen getrennt. Die ersten beiden Werte eines Quadrupels bestimmen Start- und Ziel-Schicht der Verknüpfung. Schichten werden dazu mit 0 beginnend durchnummeriert. Der dritte Wert ist boolesch und beschreibt (auf redundante Weise), ob es sich um eine rückläufige Verbindung handelt. Im letzten Wert des Quadrupels kann prozentual die Verknüpfungs-Intensität der Verbindung bestimmt werden (1 bedeutet vollständig verknüpft). Eine Verbindung ausgehend von einer virtuellen Schicht (referenziert durch eine -1) bestimmt, ob die Knoten der Zielschicht bei der Eingangssumme noch ein so genanntes Bias berücksichtigen. Wichtige Parameter einer .par“-Datei ” Die .par“-Datei beinhaltet die für das Netztraining erforderlichen Parameter. ” Zusätzlich kann sie auch Informationen über einen Trainingsverlauf und die Gewichte und Zustände des Netzes speichern. Die nachfolgende Tabelle zeigt eine (unvollständige) Liste wichtiger Parameter. Identifier learnRate momentum batchType Typ real real int stopVal maxTestsNoBest real int autosave boolean EpochsPerErrCheck int Beschreibung Wert der Lernrate η Wert für das Momentum µ 0: Online-Lernen 1: Fehlerberechnung nach jeder Sequenz 2: Fehlerberechnung nach jeder Lernepoche falls > 0: Stoppkriterium für den Fehler falls > 0: Training stoppt, wenn der Fehler auf der Validierungs-Menge seit maxTestsNoBest Lernepochen nicht mehr gesunken ist. Bei 1 werden während des Trainings die Netzzustände abgespeichert. Die Fehlerausgabe erfolgt alle EpochsPerErrCheck Lernepochen. Glossar In diesem Kapitel werden Begriffe und Abkürzungen, die im Laufe der Diplomarbeit auftauchen der Übersichtlichkeit halber aufgelistet und kurz beschrieben. Backpropagation → Rückpropagierung BPTT Abkürzung für backpropagation through time. Ein Lernverfahren für → rekurrente Netze. CEC Abkürzung für constant error carousel. Zentraler Baustein einer → LSTM Zelle. Das konstante Fehlerkarussell besteht aus einem Netzknoten mit Identitätsfunktion und mit einer 1.0-gewichteten Kante auf sich selbst. Dynamik Im Musik-Bereich bezieht sich die Dynamik auf Lautstärkenveränderungen. Bei Tasteninstrumenten spricht man auch von Anschlagdynamik. In dieser Diplomarbeit wurde die Dynamik in Gesamtdynamik“ (bezogen ” auf den Verlauf des Stücks) und auf notenbezogene Anschlagdynamik’ (im ” Kontext einzlner Noten) unterteilt. EDL Abkürzung für Event differences list. Ein EDL-Datenstrom (bzw. eine EDL-Datei) repräsentiert mit drei Parametern die Unterschiede zwischen zwei → EVL-Datenströmen (normalerweise Notentext und Interpretation). EVL Abkürzung für Eventlist. EVL ist ein für diese Diplomarbeit entwickeltes Format zur Darstellung von Musikdaten als Ereignisstrom mit sechs Parametern. EVL-Daten können in einer EVL-Datei gespeichert werden. FF-Netze Abkürzung für Feed-Forward-Netze → vorwärtsgerichtete Netze Generalisierung Kernfrage beim Training → künstlicher neuronaler Netze. Kann ein Netz von den Trainingsdaten einer Problemstellung auf richtige Ausgaben bei ungesehenen Netzeingaben verallgemeinern, so spricht man von Generalisierungsfähigkeit. Klaviatur Die Tasten eines Klaviers KNN Ein Forschungsgebiet der künstlichen Intelligenz ist das der künstlichen neuronalen Netze. Sie bestehen aus miteinander verknüpften → Neuronen. 85 GLOSSAR 86 LSTM Abkürzung für long short-term memory. Spezielle Netzarchitektur, bestehend aus LSTM-Blöcken und LSTM-Zellen. Eine LSTM-Zelle besitzt einen Zustand, dieser wird im → CEC gespeichert. MIDI Abkürzung für musical instrument digital interface. Datenübertragungsprotokoll für musikalische Steuerinformationen. Mit MIDI verknüpft ist auch das Standard MIDI-Dateiformat. Momentum Parameter für Netztraining. Das Momentum kann das Training entscheidend beschleunigen. Monophonie Einstimmigkeit bei Musik. Monophone Musik besteht nur aus einzeln gespielten Tönen. Gegensatz → Polyphonie MSE Abkürzung für mean squared error. Der mittlere quadratische Fehler ist im Bezug auf → KNNs das arithmetische Mittel der Abweichungsquadrate von Ist- und Sollwerten an den Netzausgaben. Neuron Grundlegende Entität eines → KNNs. Neuronen sind durch gewichtete Kanten miteinander verbunden. Eingaben werden meist aufsummiert, mittels einer Aktivierungsfunktion gequetscht und dann wieder ausgegeben. OCR Abkürzung für optical character recognition (optische Zeichenerkennung) Overfitting → Überanpassung Partitur Notentext. Genauer: Untereinander angeordnete Noten der Einzelstimmen. Bei klassischer Klaviermusik besteht die Partitur normalerweise aus zwei Einzelstimmen. Polyphonie Bei Musik mit mehreren gleichzeitig erklingenden Tönen spricht man von Polyphonie (Mehrstimmigkeit). Gegensatz → Monophonie Rekurrente Netze Auf die Netzausgaben wirken sich nicht nur die Netzeingaben, sondern auch Aktivierungen interner Knoten aus. Das Netz besitzt Zyklen. Gegensatz → vorwärtsgerichtete Netze Rhythmik Bezeichnet die zeitliche Abfolge von Noten oder Ereignissen in einem Musikstück. Die Rhythmik wird in dieser Arbeit in die zwei Bereiche moto” risch bedingte zeitliche Verschiebungen und unterbewusste Umformungen“ und Temposchwankungen“ unterteilt. ” RTRL Abkürzung für real-time recurrent learning. Ein Lernverfahren für → rekurrente Netze. Rückpropagierung Das am weitesten verbreitete Lernverfahren bei → KNNs. Gewichte des Netzes werden durch das aus der Optimierung bekannte Gradientenabstiegsverfahren angepasst. Dadurch wird der Fehler an der Netzausgabe minimiert. GLOSSAR 87 Sequenzer Einheit zur parametrisierten Erzeugung von Klangfolgen und Musik. Neben Sequenzer-Hardware gibt es auch eine Vielzahl von SequenzerProgrammen. Sythesizer Gerät zur Klangerzeugung. Der jeweilige Klang kann entweder durch eine komplexe elektronische Verschaltung oder durch die Wiedergabe einer vorher aufgenommenen Klangquelle generiert werden. Überanpassung (engl. overfitting) Oft auftretendes Phänomen beim Netztraining. Es werden nicht mehr die Gesetzmäßigkeiten mit denen man von einer Eingabe auf die richtige Ausgabe schließen kann erlernt, sondern alle Eingaben einfach auswendig gelernt. Überanpassung tritt meist dann auf, wenn das Netz für eine gegebene Problemstellung zu viele Gewichte und Kanten besitzt. Validierungs-Menge Während des Netztrainings kann man zusätzlich den Fehler auch mit einer Validierungs-Menge berechnen. Steigt dieser Fehler an, während der für den Gradientenabstieg verwendete Fehler weiter sinkt, tendiert das Netz zur → Überanpassung. Vorwärtsgerichtete Netze Azyklischer Sonderfall eines → KNNs. Das Netz kann keinen internen Zustand annehmen. Gegensatz → rekurrente Netze Literaturverzeichnis und Verweise [1] Auflistung gängiger Sequenzer-Programme zur Erstellung und Nachbearbeitung von MIDI-Dateien → http://www.sonicspot.com/sequencers.html. [2] Backpropagation: kurze Beschreibung des Verfahrens mit nützlichen Querverweisen → http://de.wikipedia.org/wiki/Backpropagation. [3] Begleitendes Material für die Diplomarbeit: Sourcecodes, Hörbeispiele, Analysen → http://www.xsession.de/uni/da oder die beigelegte CD-ROM. [4] C++-Bibliothek für neuronale Netze mit LSTM-Unterstützung. Programmierer: Alex Graves ([email protected]) vom Istituto Dalle Molle di Studi sull’Intelligenza Artificiale (IDSIA). Informationen zur zukünfigen Downloadmöglichkeit → http://www.idsia.ch/~alex. [5] Classical Piano Midi Page. Archiv mit zahlreichen MIDI-Dateien zum Download → http://www.piano-midi.de. [6] Internationale Yamaha Homepage → http://www.yamaha.com. [7] MIDI-Datei-Archiv mit übersichtlicher Indizierung nach Komponisten. Für die MIDI-Dateien gibt es größtenteils zusätzlich eine mit MusiXTex gesetzte Version der Partitur. → http://www.icking-music-archive.org. [8] MIDI Manufacturers Association Homepage → http://www.midi.org. [9] netCDF (Network Common Data Form) von Unidata. Bibliothek zur komprimierten Ablage wissenschaftlicher Daten. Informationen und Download → http://www.unidata.ucar.edu/packages/netcdf. [10] Umfangreiches MIDI-Datei-Archiv mit Informationen über die jeweiligen Interpreten. Als Einschränkung sind nur zwei Dateien pro Tag downloadbar. → http://www.kunstderfuge.com. [11] C. M. Bishop. Neural networks for pattern recognition. Oxford University Press, 1995. 88 LITERATURVERZEICHNIS UND VERWEISE 89 [12] G. Dorffner. Folien zu Neural Computation 1 - Vorlesung am Zentrum für Hirnforschung des Instituts für medizinische Kybernetik und artificial intelligence der medizinischen Universität Wien, WS 05/06. [13] B. Hammer. Script zu Neuronale Netze - Vorlesung am Institut für Informatik der Universität Osnabrück, WS 99/00. [14] R. Ramirez A. Hazan. Modeling Expressive Music Performance in Jazz. In Proceedings of “Artificial Intelligence in Music and Art”, Clearwater, USA, 2005. [15] S. Hochreiter. Untersuchungen zu dynamischen neuronalen Netzen. Diplomarbeit am Institut für Informatik, Lehrstuhl Prof. Brauer, Technische Universität München, 1991. [16] S. Kienzl. Automatische Erkennung und Verarbeitung polyphoner Gitarrenklänge. Diplomarbeit am Institut für Informatik, Lehrstuhl V, Technische Universität München, 2005. [17] J. Schmidhuber. An O(n3 ) learning algorithm for fully recurrent networks. Technical Report FKI15191, Institut für Informatik, Technische Universität München, 1991. [18] R. J. Williams und D. Zipser. Gradientbased learning algorithms for recurrent connectionist networks. Technical Report NUCCS909, Northeastern University Boston, College of Computer Science, 1990. [19] R. Ramirez, A. Hazan E., Gómez und E. Maestre. Understanding expressive transformations in saxophone jazz performances using inductive machine learning. In Proceedings of Sound and Music Computing, 2004. [20] F. A. Gers, J. Schmidhuber und F. Cummins. Learning to forget: Continual prediction with LSTM. Neural Computation 12(10), pages 2451–2471, 2000. [21] D. Wierstra, J. Schmidhuber und F. J. Gomez. Evolino: Hybrid Neuroevolution / Optimal Linear Search for Sequence Prediction. In Proceedings of the 19th International Joint Conference on Artificial Intelligence (IJCAI), pages 853–858, 2005. [22] A. Tobudic und G. Widmer. Relational ibl in classical music. Technical Report TR-2004-12, Österreichisches Forschungsinstitut für Artificial Intelligence Wien, 2004. [23] A. Tobudic und G. Widmer. Learning to play like the great pianists. In Proceedings of the 19th International Joint Conference on Artificial Intelligence (IJCAI), pages 871–876, 2005. LITERATURVERZEICHNIS UND VERWEISE 90 [24] R. J. Williams und J. Peng. An efficient gradient-based algorithm for online training of recurrent network trajectories. Neural Computation 4, pages 491–501, 1990. [25] A. Graves und J. Schmidhuber. Framewise phoneme classification with bidirectional LSTM networks. In Proceedings of the International Joint Conference on Neural Networks (IJCNN), 2005. [26] F. A. Gers und J. Schmidhuber. Recurrent nets that time and count. In Proceedings of the International Joint Conference on Neural Networks (IJCNN), 2000. [27] F. A. Gers und J. Schmidhuber. LSTM recurrent networks learn simple context free and context sensitive languages. IEEE Transactions on Neural Networks 12(6), pages 1333–1340, 2001. [28] F. A. Gers, N. Schraudolph und J. Schmidhuber. Learning precise timing with LSTM recurrent networks. Journal of Machine Learning Research 3, pages 115–143, 2002. [29] S. Hochreiter und J. Schmidhuber. Long short-term memory. Neural Computation 9(8), pages 1735–1780, 1997. [30] S. Russell und P. Norvig. Künstliche Intelligenz: ein moderner Ansatz. Pearson Studium, 2. Auflage, 2004.