 Ja, wir freuen uns heute hier zu sein. Wir sind heute hier aus zwei Gründen. Der eine ist, dass wir massive Mathe-Geeks sind. Ich glaube, das ist vielleicht mit vielen hier gemein. Und der andere ist, dass wir eigentlich schon immer mal in einer Band sein wollten, in einer richtig coolen Band. So eine Band. Die brauchen natürlich auch richtig coole Texte. Und ja, leider sehen wir es nicht ganz, als die Literaten. Die Literaten des 21. Jahrhunderts. Und andererseits haben wir festgestellt, dass zeitgenössische Popkultur doch eher eintönige Texte schreibt. Und deswegen haben wir uns gedacht, hey, vielleicht können wir Texte ja auch einfach selber generieren. Genau. Und wir haben uns gedacht, hey, das wäre doch eigentlich total cool, wenn wir so Mix-Texte hätten aus deutschen großen Literaten wie Goethe und Schiller. Aber auch so deutschen Qualitätsrapper, wie zum Beispiel Bushido oder Sido oder KIZ und Kollege. Und deswegen haben wir dem Tog jetzt den wunderschönen deutschen Namen gegeben. Von Botstein bis zu Bergeshöhen, was sich zusammensetzt aus dem aktuellen Bushido-Album und Goethe Prometheus. Genau. Im Laufe des Projekts ist dann auch mittlerweile sehr wichtige Personen dazugekommen. Louis, der ist ja heute nicht da, der guckt von Amsterdam zu. Und der hat uns letterweise sein Server zur Verfügung gestellt. Weswegen wir jetzt das folgende Feature präsentieren können? Genau. Also wir haben jetzt noch eine Website, wo ihr das selbst ausprobieren könnt, was wir jetzt vorstellen. Das sieht so aus. Die Domain ist Karin Ulrich.info slash gedichtet. Die seht ihr jetzt auch noch mal auf ein paar anderen Folien die Domain. Also sie wird immer irgendwo sein. Und da könnt ihr ein paar Einfragsbuchstaben eingeben, vielleicht einen kleinen Satz. Dann geht's auf los geht's. Und dann generiert der Algorithmus ein Gedicht oder ein paar Zahlen aus einem Gedicht. Und die könnte man dann auch Twittern. Deswegen gibt's da diesen schönen Twitter-Button. Und dann gibt es dann auch zwei Hashtags, einmal eben vom Botstein bis zu Bergeshöhen und den offiziellen Camp Hashtag. Jetzt gibt es noch eine Warnung. Wir sind keine großen Spezialisten, was es angeht, Server zu leiten. Das heißt, wir haben einen sehr kleinen Server. Das kann sein, dass die Website immer abschmiert oder dass es zu längeren Queues kommt, Gebitten und Verzeihung. Aber an sich hat Karin gerade gezeigt, dass es gehen könnte. Genau. Die große Frage ist natürlich jetzt, wie funktioniert denn das eigentlich? Pauschale einfache Antwort mit Supervised Machine Learning. Ich bin mir jetzt sicher, dass ein paar Leute in dem Raum sind, die natürlich wissen, was das ist. Für die anderen, die nicht wissen, was das ist, werde ich vielleicht nochmal in drei Sätzen erklären. Also, was wir für Machine Learning brauchen, ist einerseits erstmal Daten, richtig viele Daten. Und zwar Daten in Paar. Also wir brauchen Observationen und wir brauchen Ziele. Was sind solche Observationen? Observationen sind zum Beispiel die Wetterdaten von heute. Und so Ziele werden dann zum Beispiel, wie das Wetter denn morgen wird. Oder anderes Prominentes Beispiel von Facebook. Wir haben Observationen, also zum Beispiel Bilder. Und wir hätten gern, oder die Ziele sind, hey, wir sehen den, den sehen wir dann da auf den Bildern. Also Lisa, Tom und Klaus zum Beispiel. Und was wir dann machen, ist, unsere Observationen und unsere Ziele in so richtig komplexe Modelle zu stecken. Das ist quasi der Kern von Supervised Machine Learning. Also, dass wir uns diese komplexen Modelle richtig aussuchen und dass wir die richtig so tunen, dass das dann passt. Und dann können wir zwei Sachen damit machen, nämlich einerseits können wir dann neue Observationen reinstecken. Also ein Bild, wo wir nicht wissen wer drauf ist zum Beispiel. Und dann sagt uns das Modell, hey, da ist jetzt keine Ahnung, nur Lisa drauf und nicht mehr Tom und Klaus. Und andererseits können wir natürlich auch Paare, also Observationen und Ziele generieren. Das machen zum Beispiel gerne Physiker, wenn die wissen wollen, welche Domains auch Teilchen aufeinander klatschen. Das hat ja jetzt noch nicht so furchtbar viel mit Gedichten zu tun oder mit Texten. Aber wir wissen immerhin erstmal eins, wir brauchen Daten. Und was wir uns dann besorgt haben, erster Schritt Daten besorgen, nennt man auch Detamining. Wir haben uns besorgt erstmal alle Gedichte, die wir finden konnten von Goethe, von Schiller, von Bushido, von Sido, von KIZ und Kollege. Das ist so ungefähr 1,5 Megabyte. Und dann haben wir uns noch 500 Megabyte Wikipedia-Dump runtergeladen. Können wir uns jetzt mal merken, Wikipedia hat ja jetzt nicht so viel mit Gedichten zu tun, kommen wir aber später noch drauf zurück, wofür wir das noch gebrauchen können. So, jetzt erinnert euch in der letzten Folie, nach den Daten kommen die komplexen Modelle. Das Problem ist nur, ja, wie gebe ich denn den komplexen Modellen? Die sind so von der Natur her eher mathematisch, diese Sätze, ne? Da müssen wir erstmal noch gucken, dass wir die irgendwie besser zu den Modellen füttern können. Das heißt also, wir nehmen jetzt unseren Text, das ist jetzt hier zum Beispiel mal Bedecke deinen Himmelzeug aus dem Prometheus und wir teilen den in seine Einzelheiten auf. Das können Wurther sein, das können einzelne Buchstaben sein, in dem Fall habe ich jetzt einfach mal Silben gebildet, ja? Also wir haben B, Decke, deinen Himmelzeug, das ist schon mal besser, ne? Da hat irgendwie der Computer jetzt Einheiten, mit denen der umgehen kann, was aber für Mathe immer noch besser ist, sind richtige Zahlen. Und das heißt, wir indexen die jetzt. Was wir machen ist, wir geben jeder einzigartigen Silbe einen einzigartigen Index, also wir sehen zum Beispiel das B, das hat eine Null und alle Leerzeichen, die haben immer den Index 3. So, jetzt gehen wir noch einen Schritt weiter, das ist eigentlich erstmal perfekt, ne? Wir haben Zahlen und Computer können super mitzahlen und für den Grund, den ich dann später noch erkläre, ändern wir die Repräsentationen. Und zwar machen wir das folgendermaßen, wir zählen erstmal alle Silben, die wir haben. In unserem Beispiel sind das jetzt zum Beispiel 9 und wir machen ein Vektor mit 9 Nullen und überall, wo der Index ist, dann setzen wir eine 1, ne? Klang jetzt schwer, ist aber gar nicht so schwer, also B, da ist wieder an der ersten Stelle die 1 und immer an der vierten Stelle in dem Vektor bei den Leerzeichen ist zum Beispiel jetzt eine 1. Wacht jetzt vielleicht noch nicht so viel Sinn, das wirkt ein bisschen aufgeblasen. Wir werden später aber dazu kommen, warum das eine kluge Idee war, das so zu machen. So, jetzt können wir eigentlich zu den komplexen Modellen kommen, nicht? Oder doch nicht? Also, was haben wir denn jetzt gemacht? Also, wir haben jetzt eine Menge Text, ne? Und dann haben wir jetzt auch so gemacht, dass der Computer den lesen kann. Ja, aber was sind jetzt die Observationen und was sind die Ziele? Observationen können wir uns vielleicht noch einfach denken. Das ist einfach, was wir da jetzt gelesen haben, B-Decke, deinen Himmel, so ist. So, und wenn wir jetzt wissen wollen, was die Ziele sind, dann müssen wir uns eigentlich erst mal fragen, was sollen das Modell machen? Und was unser Modell macht und was die meisten Sprachmodelle machen, ist quasi die nächste Einheit voraus zu sagen, auf rund der vorangegangenen Einheit. Also, wenn ich jetzt zum Beispiel anfange mit B, dann würde ich eigentlich gern, dass mein Netzwerk oder mein komplexes Modell sagen kann, hey, die nächste Silbe, die jetzt kommt, das wäre D, ne? Oder wenn wir jetzt dahinten bei Himmel sind, also wir haben jetzt schon Himm, ne? Und auch den ganzen B-Decke deinen Himm, dann würden wir eigentlich gerne wissen, ah, die nächste Silbe, die wir jetzt idealerweise melden, ne? Also, was wir jetzt machen, ist einfach, wir verschieben das ganze Textfeld einfach nur um eins, sodass das Netzwerk quasi immer schon vorher wissen muss, was später kommt, ne? So, und jetzt kommen wir auch schon, ach, dann nochmal eine Zusammenfassung von dem, was wir gemacht haben, also wir können jetzt zum Beispiel in diesem, der schönen Animationen hier sehen, stecken das Englische Wirt in unseren Reparationsumwandler, dann kommt dieser Vektor raus mit den vielen Nullen, den ich gezeigt habe, und dann stecken wir denen das komplexe Modell, was wir dann später Neurales Netzwerk nennen, und dann kommen Wahrscheinlichkeiten idealer Reise raus für was als nächstes kommt, ne? So, jetzt machen wir das, suchen wir uns ein Beispiel aus, sagen wir hier, und wie sieht jetzt dieses Modell ganz konkret aus? Wir nehmen diese Silbemell, wir erinnern uns an die Darstellung, ne? Also, das kommt natürlich nicht als Mel in das komplexe Modell oder das Neurales Netzwerk, sondern als Vektor, und dann multiplizieren wir dann im Matrix ran, die nennen wir auch Gewichte, und dann kommt wieder ein Vektor raus, vielleicht für diejenigen, die nicht so mit Mathe, das ist auch die einzige und letzte Folie, drei Minuten abschalten, und dann gibt es Gedichte versprochen. Also, wir nehmen diesen Vektor, der das Mel repräsentiert, und wir multiplizieren den mit der Matrix, und dann kommt eine sogenannte hidden representation dabei raus, also eine innere oder eine versteckte Repräsentation unserer Silbe, und dann machen wir das Ganze nochmal mit einem anderen Gewicht, das nennen wir We Out, und dann kommt, nachdem wir das skaliert haben, idealerweise so ein Vektor raus, dessen Wert es sich auf eins addieren. Die Klugen werden's merken, den anderen erklär ich's. Das war nicht politisch korrekt. Also, was wir dann sehen, ist quasi eine Superwahrscheinlichkeitsverteilung. Also, wir können quasi aufgrund der Silbe mel, dann sagen, hey, als nächstes ist am wahrscheinlichsten ein Leerzeichen, oder beziehungsweise das sollte so sein, wenn unser Netzwerk schlecht ist, dann macht's halt irgendwas, aber idealerweise kommt dann ein Leerzeichen danach. Das Problem ist jetzt nur bei unserem Netzwerk, hier sehen wir ja, da kommt jetzt nur das Wort mel rein. Wir werden aber ja gerne, dass das Netzwerk mehr weiß, als das Wort mel. Also, machen wir das einfach nochmal, da kommt jetzt die Silbe, die da vorkommt, machen wir da genau dasselbe, wir multiplizieren das mit derselben Matrix, kommt wieder so eine innere Repräsentation raus. So, jetzt müssen wir die noch irgendwie einbinden, ja, dann brauchen wir noch eine Matrix daran und addieren die dann da auf die innere Repräsentation. Das könnte ich jetzt so sukzessive ganz lange fortsetzen, bis wir am Anfang des Satzes sind, so lange wie wir wollen. Und so, das ist auch schon die ganze, das ganze Geheimnis von dem Modell, so funktioniert das. Also, wir nehmen immer noch ein paar Hinterritte dazu und dann addieren wir die immer weiter drauf und dann irgendwann hoffen wir, kriegt das einfach dadurch, dass das immer diese Information von hinten hat, kriegt das dann genug mit, um zu sagen, hey, wir machen jetzt ein sinnvolles Nächstes, ein sinnvolles Nächstesilbe. So, jetzt werden sich vielleicht schon die ersten Fragen, ja, die Gewichte, die sind ja schön, wie stimme ich die denn jetzt, wie geht denn das? Und das ist tatsächlich eine sehr gute Frage und das ist auch irgendwie die schwarze Kunst im Deep Learning. Die muss man nämlich tatsächlich einstellen, die Gesichter. Und das ist ein relativ schwieriger, iterativer Prozess, den nennt man auch Netzwerktraining, weil der eben iterativ ist. Und darüber will ich aber gar nicht so viel sagen, weil das tatsächlich gar nicht so leicht ist. Aber so viel sei gesagt, das hat 20 Jahre gedauert, bis man das heute so gut hinkriegt, wie man es bekommt. So, jetzt habe ich viel geredet über das Modell, jetzt sind wir auch schon fertig. Ich würde gerne mal ein Gedicht aus dem ersten Modell, was wir so trainiert haben, präsentieren. Opfer. Opfer sind der Straße mit dem Freund. Ist der Straße schwer, die Straße schwer. Sind die schweren, so wie die Schwanz, ist der Schwanz. War ich die Straße schwer, die Schwanz, wieder ein Herz zu sehen? Ich bin der Schwanz, in der Schweine schwer. Schaut, ich bin der Schweine. Und sein Das ist der Straße schwer, die Straße schwer. Und wieder geht nicht mehr. Das ist ja jetzt noch nicht so doll, ne? Oder doch, ist es vielleicht doch doll. Jetzt müssen wir uns nochmal Gedanken machen, was haben wir denn in den Netzwerk gegeben? Den Netzwerk haben wir gegeben nur einzelne Buchstaben. Also nicht die 7, ich habe das jetzt im Beispiel so gemacht, weil das einfacher war, weil wir haben in den Netzwerken einzelne Buchstaben gegeben. Und was das jetzt schon gelernt hat, ist eigentlich total klasse. Wir haben gelernt, deutsche Wörter zu bilden. Das sind alles deutsche Wörter, die wiederholen sich zwar verflucht oft, und es kommt verdammt auf dieselben Wörter vor. Aber immerhin, das hat ja schon mal gelernt. Und so ein bisschen Kramatik ist auch dabei, klingt zwar noch avant-garde, aber naja, aber wir wollten weiter, wir wollten mehr. Und dann haben wir erstmal den Bayerischen Rundfunk oder den Süddeutschen Rundfunk bemüht. Und er hat so eine nette Statistik mal rausgegeben über das Vokabular in deutschen Reptexten. Ah, wer rausgefunden? So Sido und Bushido haben eigentlich ein vergleichsweise geringes Vokabular. Nicht ganz so schlimm wie Helene Fischer, aber dennoch recht gering. Also haben wir gesagt, die schließen wir jetzt aus, oder wir nehmen nur noch wenige von deren Texten. Und wir nehmen dafür Kollege und KIZ, weil die Tatsachen relativ hohen World Count haben. Und jetzt erinnern wir uns nochmal an eine der allerersten Folien, wo wir gesagt haben, hey, bei den Daten holen wir uns auch Wikipedia-Daten runter. Das macht jetzt Sinn, weil wir können jetzt nämlich sagen, okay, wir lassen jetzt erstmal unser komplexes Modell mit den Wikipedia-Daten trainieren, weil das dann nämlich erstmal grundlegende Sachen über die deutsche Sprache lernt. Also was sind denn überhaupt deutsche Wörter? Wo mache ich vielleicht Kommas oder einfach wo es in die Space ist, damit schon mal, wenn nicht so viele Daten Verbrauchung in Anführungsstrichen. Das ist jetzt mit unserem kleinen Verbessern-Datensatz. Und dann ist das Netzwerk entstanden, was ihr jetzt auch auf dem Server quasi ausprobieren könnt. Und wir haben nochmal ein letztes Gedicht. Vom Bordstein bis zu Wergeshöhlen. Sind zu seinen Herzen, ihr der Gang, eine Deine Weinen der Flammen, ich schön die Schwanz und kauf die Sternen sein geschickt, in der Mensch und sind den Schweinen der Wart, mit die Tage geschweigt. Den Herzen in der Bett der Nacht der Sternen schwer der Körper, aus dem Mund in Deinen Straßen, Kollege der Breite Rapper. Frauen sind auf der Code und String. Deine Schwanz, die Fern, ich geb den King, ist durch den Pussen wie der Kenner King. Als letztes möchte ich nochmal gerne Danke sagen an alle, die mitgeholfen haben. Am besten nochmal einen großen Applaus an Louis, bitte. Der hat ganz viel geholfen, dass das heute ja läuft. Und Fabian und Sarah, die haben gemacht, dass das alles ein bisschen hübscher aussieht, als wir das geplant haben. Und natürlich an ganze CCT-Team, die das hier möglich gemacht haben. Wie sind wir noch Zeit? Vielen, vielen Dank, aber auch an euch, Karin und Max, dass ihr euch auf die Bühne getraut habt, dass ihr den anderen das vorgestellt habt. Jetzt möchte ich euch noch die Chance geben, da wir sehr gut in der Zeit sind. Es ist noch gut Zeit für Fragen. Bitte kommt zum Mikro vor. Die anderen Seiten in den Gängen steht eins. Keine Fragen? Ich bin früh in der Zeit. Doch, doch, doch kommt. Mikro, bitte, möglichst nicht an den Mund. Ja, genau. Ich bin ja immer... Oh, große Halle, geil. Ich bin jetzt gerade ein klein wenig zu spät gewesen, weil ihr den unbenannt habt, irgendwie. Ich habe es, das war alles ein bisschen knapp. Das Klang eben so, das war das, was die Maschine gemacht hat. Anhand der Daten, also Songtexte, die ihr, die den gefüttert habt, richtig? Richtig. Gut, das habe ich mitgeschnitten. Und es gibt die Möglichkeit, das mit anderen Texten selber zu machen, habe ich das richtig verstanden? Es gibt die Möglichkeit, das mit allen sequenziellen Daten zu machen. Das ist nicht nur auf Texte beschrieben. Ihr könnt euren Linux-Girne-Datatzache reinhauen und das wird euch funktionierende Linux-Girne rausschmeißen. Ihr könnt euer Latech-gekohletes-Mattebuch da reinschmeißen und das wird euch funktionierenden Latech-Text rausschmeißen. Also geht viel. Ja, das ist geil, weil ich bin Autorin und würde gerne wissen, was ich von WordCount habe. Das ist ja der Hammer. Ah, das weiß ich nicht. Geht das? Was von WordCount? Das habe ich, das Wort habe ich gerade bei euch gelernt. Ist das der Umfang des Wortschatzes? Ach so, ja genau, der Umfang des Wortschatzes in der gesamten Diskographie dieser Künstler. Okay, cool. Vielen Dank, das war super interessant. Danke. Hallo. Ich habe mich in den Raum gespielt während dem Talk mit der Website. Mir ist es bloß aufgefallen, dass am Ende immer, also öfters auftritt, dass nur ein Buchstabe erscheint. Ist das ein Back- oder ein Glitch? Absicht. Sollte, hoffentlich nicht bei dem Back, wie viel gibst du denn ein? Nur ein bis drei Worte. Probier's nochmal. Nein. Hallo. Vielleicht habe ich es nicht ganz mitbekommen, aber welchen Einfluss hat jetzt der Wikipedia-Dump? Er hat nur über die Songtexte gesprochen, aber die Wikipedia jetzt da Einfluss hatte, habe ich nicht ganz verstanden. Also das macht man generell gern, wenn man seine Modelle, das heißt Fortsrainieren möchte, also man will schon mal so ein bisschen in die richtige Richtung schieben. Richtig. Dann haben die quasi von dem Wikipedia-Dump kann man so sagen. Okay, und dann schiebt hier hinterher noch die Songtexte oben drauf. Und deswegen hat das ein höheres Gewicht als der Wikipedia-Dump, oder? Genau, weil wir das danach quasi dann wieder quasi fährlernen zum Teil, was von Wikipedia kam, kommt dann eigentlich eine mehrgedichtartige Struktur dabei raus. Okay, danke. Von links gibt's noch eine Frage? Ja. Habt ihr das Ganze auch mal mit der Englischen Wikipedia probiert? Das haben ganz viele schon mit der Englischen Wikipedia probiert, ja. Ich kann papertechnisch Alex Graves empfehlen oder Joffrey Hinton, wenn man da nachschlagen möchte. Okay, und eine fertige Implementierung davon gibt's auch? Mehrere ja. Okay, danke. Und von links wieder. Ja, hallo, danke für den Vortrag. Ich wüsste gerne, welche Ideen wir sehen, besonders hinsichtlich zum Beispiel Fersmaß oder Reimer. Interessanterweise sind die meisten Modelle, die heute so funktionieren, mit Buchstaben. Es hat einfach den Vorteil, dass das Vokabular, also die Länge dieses Vektors relativ beschränkt ist, nämlich nur auf, wie viel jetzt UTF-8 oder whatever Zeichen hat. Und wenn ich jetzt Silben nehme, oder Würter, dann bin ich schnell bei 10.000 langen und deswegen neigen heute die meisten dazu, also diese Buchstaben zu nehmen. Und wir haben gedacht, hey, wir könnten das eigentlich mal mit Silben probieren, dann kriegt er vielleicht diesen Rhythmus besser hin. Das hat aber tatsächlich nicht so gut funktioniert, leider. Für unser Beispiel jetzt. Ansonsten ist es einfach ein extrem aktives wissenschaftliches Feld gerade. Also da passiert wirklich viel, wirklich schnell. Und man könnte noch annehmen, dass es hilft, wenn man noch viel mehr Gedichte dem Algorithmus füttert. Wenn das Verhältnis noch ein bisschen in Richtung Gedichte gedrückt wäre, wäre natürlich vorteilhaft. Kann man euch also Gedichte zukommen lassen und ihr füttert das damit? Oder muss man das alles selber machen? Es ist gar nicht so schwer selber zu machen. Aber für alle die Fragen haben, wir sind dann bestimmt noch verfügbar. Ja genau, seid ihr irgendwo verfügbar? Schön. Bitte geht auf die Webseite und probiert das aus, bitte. Und widet das? Genau. Oh, und wir möchten uns entschuldigen, falls irgendwann mal unrespektabler Content dabei rauskommt, ja. Qualitätsreppe ist leider politisch nicht ganz korrekt. Wir konnten das jetzt für den Vortrag filtern, aber das kann sein, dass das hier und da mal bei den Generationen bei rumkommt. Dann bitte ein herzliches Dankeschön und dass Sie uns so gute neue Ideen gegrillt haben.