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.