+comunity+ machine learning - Input / Ideen für das nächste Treffen
Martin Schitter
ms at mur.at
Do Feb 15 16:55:10 CET 2018
Liebe Maggie!
Ganz lieben Dank für deine Ausführungen! Sie sind wirken -- wie so oft,
wenn du dich einbringst -- wunderbar inspirierend und nützlich!
Dass ich in vielen Punkten eine gänzlich andere Position vertrete und
oft geradezu gegenteilig argumentieren würde, ändert daran nichts. Im
Gegenteil, dadurch wird's erst richtig spannend und tatsächlich sinnvoll
sich damit in gemeinsamen Dialog auseinanderzusetzen.
## Computer als Instrument od. Gegenstand der Reflxion und Gestaltung
Schon im Verweis auf Rebecca Fiebrink und das Programm "Wekinator"
treten diese unterschiedlichen Zugänge deutlich hervor. So weit ich es
beim ersten groben Überfliegen richtig verstanden habe, werden hier
ML-Techniken hauptsächlich im Sinne einer Interface-Erweiterung
(Steuerung mittels Gesten etc.) genutzt. Das ist natürlich in der Tat
eine interessante Geschichte, obwohl es mich doch wieder unweigerlich
daran erinnert, wie sehr sich die damit verbundenen Zugänge
unterscheiden, je nachdem aus welchen Kunstsparte man kommt.
Im Musik-Umfeld scheinen mir Ansätze, die der unmittelbare Interaktion
und Improvisation im Zusammenspiel mit anderen Akteuren viel Raum und
Aufmerksamkeit schenken, nichts ungewöhnliches zu sein. Wer dagegen
Bilder oder Skulpturen fabriziert, oder an Texten bastelt, hat mit
diesem Aspekt in der Regel nicht viel zu tun.
ich persönlich erlebe das Arbeiten an der Umsetzung von computer- und
medienbezogenen Vorhaben meist eher in großer Nachbarschaft zu den
Letztgenannten, weil es meist viel eher von langwieriger Programmier-
bzw. technischer Umsetzungsarbeit im stillen Kämmerlein geprägt ist als
von einer abschließenden spielerischen Nutzung eines neu ersonnen od.
erweiterten Instruments.
Aber auch diese Zugangsweise hat natürlich ihre Stärken und Vorzüge.
Konzeptuelle Gesichtspunkte und die konkrete Gestaltung wachsen hier
einfach anders heran. Was im Kontext der Live-Performance als viel zu
unflexibel, komplex und unbeherrschbar im Weg stehen würde, kann hier
heranreifen und entflochten werden. Ein Prozess, der auf Grund seiner
Umsetzungsschwierigkeiten fast immer auch mit einem hohen Grad an
Reflexion der Mittel bzw. der Thematisierung von Parallelen zu anderen
alltäglichen Formen der Techniknutzung verbunden ist.
Aber so richtig befriedigend wirken diese Ansätze und die darin oft zu
entdeckende narzisstischer [Technik-]Verliebtheit, die ständig in die
bloße Wiedergabe von Spiegelbildern der Maschinen abzustürzen droht,
natürlich auch nicht. So gesehen haben Zugangsweisen, die sich mit einer
bewusst eingegrenzt instrumentellen Verwendungsweise begnügen, ganz
bestimmt auch ihre Daseinsberechtigung.
Man kann halt in diesen Fragen nicht so einfach aus seiner Haut heraus,
so dass es dann letztlich oft bei einem fast schon ein wenig
eifersüchtig wirkenden Blick hinüber zu den anderen bleibt.
## zu den erwähnten Werkzeugen und Arbeitsmitteln ganz allgemein
Ja, du hast recht, Gene Kogen versucht in seinen Vermittlungsbemühungen
tatsächlich sehr weit auf sein Zielpublikum zuzugehen bzw. Lösungen zu
benutzen, die speziell für die Anforderungen im Medienkunst-Umfeld
geschaffen wurden (Processing, OpenFrameworks, etc.).
Ich selbst bin kein großer Freund dieser Werkzeuge. Meiner Ansicht nach
droht man sich damit relativ schnell in ein abgeschlossenes Ghetto zu
manövrieren, das weit weniger gestalterische Freiheiten bietet, als wenn
man gleich mit Werkzeugen für Erwachsene basteln darf.
Trotzdem begrüße ich es natürlich, wenn einfach jeder verwendet, was er
bereits einigermaßen kennt und liebt!
Ich würde also höchstens Kollegen, die mich fragen, was sie lernen
sollten, davon abraten, zu "Processing" zu greifen. Die Empfehlung,
wenigstens "Python" zu lernen, würde mir da vermutlich schon weit eher
über die Lippen kommen. Sollte das jeweilige Gegenüber aber ungewöhnlich
motiviert oder besonders begabt erscheint, würde es vermutlich ohnehin
schnell wieder in eine missionarisch anmutende Predigt über die noch
wesentlich verlockenderen Vorzüge der Programmiersprache und
Glaubensrichtung "rust" übergehen.
[Das lassen wir jetzt hier aber besser bleiben.]
In der Praxis spielt's aber wirklich fast keine Rolle, welche
Programmiersprache, welches Betriebssystem od. welche anderen kreativen
Hilfsmittel verschiedene Teilnehmer nutzen oder bevorzugen -- irgendwie
bringt man fast alles dazu, notfalls halt übers Netz miteinander zu
kommunizieren bzw. ganz praktisch zu kooperieren.
Am schwierigsten finde ich es in diesem Zusammenhang zu beantworten,
welche Ansätze man tatsächlich heute nutzen soll, damit kompliziertere
Sachen nicht nur in experimenteller und skizzenhafter Form am eigenen
Rechner od. in irgendwelchen Perfomance- oder Ausstellungszusammenhängen
genutzt werden können, sondern darüber hinaus auch direkt im Webbrowser
zugänglich gemacht werden können? In der Hinsicht würde ich gegenwärtig
am ehesten zu irgendwas raten, das sich mit vertretbarem Aufwand nach
WebAssembly übersetzten lässt [also natürlich wieder: "rust!" :)] und
damit auch die Bedienungs- und Ausgabemöglichkeiten in einem solchen
Kontext möglichst optimal nutzen lässt. Leider wird's aber spätestens an
diesem Punkt recht kompliziert, weshalb das hier nur eingeworfen sei, um
den angesprochen "Ghetto"-Bedenken ein andere praxisrelevante
Herausforderung diametral gegenüberzustellen.
## ML-Toolkits im besonderen
Die Beispiele, die du verlinkt hast, um Neuronale Netze in Processing
quasi 'from scratch' zu implementieren, sind natürlich recht nett. So
etwas kann, wenn man es nicht ausschließlich nur als völlig
stumpfsinnige Abschreib- od. copy-and-paste-Übung versteht, durchaus
Sinn machen. Es ist immer recht eindrucksvoll, wenn man an Hand relativ
überschaubarer Code-Fragmente irgendwelche Techniken in ihrer
prinzipiellen Funtionsweise nachzuvollziehen lernt bzw. einfach auch vor
Augen geführt bekommt, dass das alles nicht unbedingt gleich völlig
undurchsichtig kompliziert und unüberblickbar sein muss.
Trotzdem macht es in der Praxis oft deutlich mehr Sinn, für die
jeweiligen Aufgaben passende spezielle Werkzeuge zu wählen. Dort kann
man dann mit einer paar verhältnismäßig übersichtlichen Zeilen
Programmcode weit mehr erreichen, als mit einer seitenlangen
undurchsichtigen Neuerfindung des Rads. Was aber vor allen Dingen auch
eine große Rolle spielt, ist die Tatsache, dass man mit derartigen
Toolkits auch sehr einfach auf jenen riesigen Erfahrungsschatz bzw.
gesammelte Verbesserungsbemühungen zurückgreifen kann, die über die
Jahre erst dazu geführt haben, dass diese Techniken heute tatsächlich
brauchbar funktionieren. Ganz einfachen Umsetzungen, wie sie diese
Processing-Lösungen repräsentieren, gleichen hier eher einer Zeitreise
zurück zu den Anfängen, als dass sie mit heute gängigen Mitteln
verglichen werden könnten.
Was also tatsächlich nutzen?
Ich würde gegenwärtig am ehesten zu "PyTorch" (http://pytorch.org/)
raten. Das ist zwar dem ungeliebtem f***-konzern entsprungen, aber
ansonsten wirklich eines der tollsten Werkzeuge in diesem Umfeld.
Allerdings ist das natürlich nur meine Einschätzung [die man ruhig mit
der nötigen Skepsis betrachten und ggF. offen kritisieren sollte]. In
letzter Zeit stützen sich immer mehr Veröffentlichungen und Forscher auf
genau dieses Werkzeug. In Wahrheit gibt es aber eine große Menge
ähnlicher Toolkits, die alle auch alle ihre jeweiligen ganz spezifischen
Vorzüge haben. So war/ist z.B. auch "Keras" (https://keras.io/) sehr
beliebt, aber auch "TensorFlow" (https://www.tensorflow.org/) spielt
eine recht bedeutende Rolle.
Auch, wenn es keinen Sinn macht, über die Vor- und Nachteile all dieser
Lösungen hier ausufernd zu referieren, kann man schon ein paar Kriterien
herausheben, die eine solche Empfehlung rechtfertigen:
Am wichtigsten finde ich den Umstand, dass die betreffenden
Arbeitsmittel Vernünftig dokumentiert sind, und auch im weiteren Umfeld
um sie herum, möglichst viel praktischer open source Beispielcode zu
finden ist, um wenigstens die gängigsten Techniken in einfachster Weise
praktisch zugänglich zu machen. In der Hinsicht ist dem PyTorch leider
noch immer ein wenig anzuspüren, dass es verhältnismäßig jung ist.
Mittlerweile gibt's zwar fast alles, wonach man sich sehnen könnte, aber
trotzdem wirkt bspw. Keras in dieser Hinsicht fast noch verlockender.
Das wird aber vom PyTorch u.a. dadurch wett gemacht, dass es viel besser
zu debuggen ist, da es im Gegensatz zu Keras nicht so sehr nur als
Abstraktions-Layer über anderen Lösungen liegt, sondern eben wirklich
ein stimmiges Ganzes bildet, dass sich wunderbar in das verwendete
Python-Sprachumfeld fügt. Das sind so in etwa die Gründe, die in letzter
Zeit viele bewogen haben, auf diese Lösung umzusteigen.
Wie schon oben bei den allgemeinen Arbeitsmitteln, kann ich aber auch
hier nur nocheinmal zu möglichst großer Pluralität der Mittel und des
Nebeneinanders verschiedenster Vorlieben ermuntern. Mehr als eine ganz
grobe Empfehlung, die als erste Orientierung dienen könnte, soll mein
Vorschlag also nicht sein.
Abschließend sei vielleicht noch erwähnt, dass ja auch derartige
spezialisierte Lösungen nicht unbedingt ausschließen, dass man darin
manche Dinge ganz bewusst von Grund auf selbst konstruiert, statt fertig
vorfindliche Mittel zu nutzen, um auf diese Weise ganz bewusst von den
einfachen theoretischen Grundlagen zu komplexeren Umsetzungen
vorzudringen -- ähnlich, wie es dein Processing-NN-Vorschlag nahe legt.
Derartiges bekommt man bspw. in dieser recht einfach gehaltenen PyTorch
lecture-Serie anschaulich vorgeführt:
https://www.youtube.com/playlist?list=PLlMkM4tgfjnJ3I-dbhO9JTw7gNty6o_2m
So viel im Augenblick zur Ergänzung deiner ermunternden Anregungen aus
meiner Sicht.
alles liebe
martin
Mehr Informationen über die Mailingliste comunity