Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1819:phasmid

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1819:phasmid [2019/03/11 14:11]
erchinger
ws1819:phasmid [2019/04/01 19:58] (aktuell)
stefanborn
Zeile 1: Zeile 1:
 +Wir haben nichts auszusetzen. :-)
 +
 ====== Phasmid - Der Prestige-Textgenerierungs Bot für Akademiker und Singles mit Niveau ====== ====== Phasmid - Der Prestige-Textgenerierungs Bot für Akademiker und Singles mit Niveau ======
 ==== Arda, Paul und Lucas ==== ==== Arda, Paul und Lucas ====
Zeile 54: Zeile 56:
  
 ==== Beispieltexte ==== ==== Beispieltexte ====
 +  * "​Mathesis and examining works like a specialfulness;​ the joints may attain any active matter of print days of the occupying voice."​ (Nach Lernen an einer Sammlung an Texten, unter Anderem den gesammelten Werken Sir Arthur Conan Doyles)
 +  * "The Cat sits on the mat whistling of clear to those metwith."​
 +  * "The Cat sits on the mat himself, killed the buzzin of his husband and apart from her his life. With slavery himself, or Mademoiselle George Washington, he followed a portlamaticwas simple."​ (Beide mit selbigem Text gelernt.)
 +  * "​America, ​ A plague in England'​s shame. Poor greatness, save our nightingale! Romeo, forgive me into myself, ​   So thou no more but furnight, English peace."​ (Gelernt anhand der gesammelten Werke von William Shakespeare.)
 +  * "​America [...] companies to make America Wealthy Again. We will Make America Great Again. [...] I am going to enforce allart heast that Hillary Clinton wants to carpet women and economic agenda can change."​ (Gelernt anhand gesammelter Speeches von Donald Trump im Laufe seiner Wahlkampagne.)
 +
 +==== Der Code ====
 +Wir haben den Code in einem interaktiven Notebook über Google Colabatory erstellt. Unter folgendem Link findet ihr das ausführbare Programm, mit Erklärungen. Dafür einfach die Anweisungen zum Beginn des Notebooks befolgen.
 +[[https://​colab.research.google.com/​drive/​1DrhbVbUbDL8KCqUw-Jtut-PeBDiUIhCt]] ​
 +Alternativ ist hier auch noch einmal eine downloadbare offline Version des Notebooks verfügbar, zusammen mit Modellparametern,​ welche sofort die Textgenerierung ohne neues trainieren ermöglichen: ​
 +{{:​ws1819:​phasmid_textgenerierung.zip|}}.
  
-  
 ===== Fazit ===== ===== Fazit =====
- +Zum Abschluss unseres Projektes sind wir sehr zufrieden mit dem Endergebnis. Besonders interessant war es sich in dieses doch sehr komplexe Thema einzuarbeiten und ein Grundverständnis für Maschinelles Lernen zu erhalten, welches vermutlich in der Zukunft noch wichtiger wird. Genau diese Komplexität war aber auch eines der größten Probleme mit unserem Projekt. Es hat sehr lange gedauert, bis wir  tatsächlich mit unserem Projekt wirklich beginnen konnten. So haben wir zwar auch zu Beginn versucht einiges für unser Projekt zu erarbeiten, jedoch konnten wir davon im Endeffekt praktisch nichts für unser finales Produkt benutzen. Genau diese Realisation hat gegen Ende auch zu gewisser Frustration geführt. Ich denke dies liegt in der Natur von Projekten die mit Maschinellem Lernen zu tun haben und ist eventuell für einen solchen Rahmen eher ungeeignet, unter Anderem auch, da wir uns somit weniger mit "​Programmieren"​ beschäftigen konnten. Trotzdem ist es wirklich sehr beeindruckend,​ welche Ergebnisse man mit verhältnismäßig geringem Aufwand erhalten kann. Sehr hilfreich war außerdem die Entdeckung des Google Services "​Google Colaboratory",​ einem sog. Notebook welches die Möglichkeit gibt online Code zu schreiben und auszuführen. Was jedoch Google Colab ausgezeichnet ist die GPU-Acceleration. Wie bereits angedeutet benötigt Machine Learning eine ungeheure Menge an Rechenaufwand,​ sodass Programme oft mehrere Stunden laufen müssen bevor man, selbst bei überschaubaren Projekten wie unserem, Ergebnisse auswerten kann (Was sehr frustrierend ist, wenn es dann nicht so funktioniert,​ wie man es sich erhofft hätte...). Jedoch kann diese Rechenzeit drastisch verkürzt werden, wenn man eine dedizierte Grafikkarte (GPU) verwendet. Google Colab stellt nun die Möglichkeit zur Verfügung leistungsstarke Recheneinheiten und eben Grafikkarten von Google zu verwenden und somit die Programme innerhalb von Minuten auszuführen. Eine super Entdeckung, welche vor Allem gegen Ende hin enorm geholfen hat.  ​ 
-===== Prozessschnipsel =====      +Tatsächlich ist auch nur noch wenig an unserem Projekt in unseren Augen zu verbessern und wir haben das meiste erreicht, was wir uns zu Beginn vorgestellt hatten. Eine Weiterentwicklung könnte sein den Bot in Echtzeit Daten analysieren zu lassen und somit tatsächliches Sprachverhalten in bspw. einem Chat mimen zu lassen. Auch ein besseres Verständnis für Kontext und Bedeutung von Wörtern wäre spannend und man könnte eventuell anstatt auf Zeichenbasis eventuell auf Silben- oder Wortbasis arbeiten um dies zu erreichen. Trotzdem sind wir sehr zufrieden mit unserem Endprodukt und während ich hier schreibe, schreibt Phasmid bereits ein neues unentdecktes Theaterstück von Shakespeare... ​
- +
  
 ===== Literatur/​Links:​ ===== ===== Literatur/​Links:​ =====
-komplette Twitch-Chatlogs unter: https://overrustlelogs.net +  * Stanford Internet Kurs zum Thema Machine Learning[[https://see.stanford.edu/​course/​cs229]] 
- +  * Playlist ​zu Neuronalen Netzwerken von 3Blue1Brown ​auf YouTube: [[https://​www.youtube.com/​playlist?​list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi]] 
-===== Protokoll ===== +  * Beispiel ​der Anwendung ​eines Neuronalen Netzwerkes ​auf Wortbasis zur Erzeugung von Werbetexten:​ [[https://​medium.com/​phrasee/​neural-text-generation-generating-text-using-conditional-language-models-a37b69c7cd4b]] 
-==== 29.11.2018 ==== +  * Kritischer Blick auf Rekurrente Neuronale Netzwerke: [[https://​towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0]]
-Wir haben zu Allererst ein Programm verfasst, mit welchem wir, via Web-Scraping,​ Chatlogs verschiedenster Streamer herunterladen können und somit benutzen. Schwierigkeiten traten primär ​auf beim formatieren des Programms und Kennenlernen des Pakets "​BeautifulSoup4"​Zum Ende hin hat dies aber funktioniert und der nächste Schritt wird sein, diese Daten ordentlich zu sortieren und speichern zu können. +
- +
-==== 06.12.2018 ===+
-Zum Beginn dieser Woche haben wir uns zuerst kurz theoretisch mit dem Thema der Text Analyse befasst, mit welchem sich Lucas auf Basis des Buches "​Applied Text Analysis with Python"​ weiter befassen wird. Außerdem haben wir einen Termin für ein gemeinsames Lernen über Machine Learning vereinbart. Ansonsten haben Arda und Paul an einer Datenstruktur für die vorher gescrapten Daten gearbeitet und einem Weg diese abzuspeichern und effektiv benutzbar zu machen. Dies ist uns zum Ende hin mit dem Paket "​pickles"​ gelungen, welches eine Liste mit allen Chatlogs ​eines Streamers über den gesamten ​auf der Webseite hochgeladenen Zeitraum erstelltZiel für die nächste Woche ist nun, mit der Textverarbeitung zu beginnen und auch die Textanalyse zu planen und gestalten. +
- +
-==== 13.12.2018 ==== +
-Diese Woche haben wir uns das erste mal mit Stefan getroffen um die Grundlagen des Machine Learning zu lernen um Sie später in unserem Projekt einzubauen. Zudem haben wir zuhause und zum beginn des Donnerstags die komplette Textverarbeitung fertiggestellt und in Log Dateien gepickeled. Während Lucas sich weiter mit "​Applied Text Analysis with Python"​ beschäftigt hat und sich über das Konzept des "bag-of-word" aufgeklärt hat. Haben Paul und Arda den Text bereinigt von allen Sonderzeichen etc. und diese gespeichert. Einen absoluten Wortzähler eingebaut (wie häufig ist jedes wort). Danach hat Paul sich mit n grammen auseinandergesetzt. Wir haben zum schluss trigramme von seagulls chat erstellt und deren häufigkeit ausgegeben. Wobei das häufigste trigramm "seagH seagH seagH" 105409 mal vorkam. Jedoch hat das unpickle unserer Daten relativ lange gebraucht. +
- +
-==== 20.12.2018 ==== +
-Nach der letzten Woche hat Paul direkt begonnen die Datenstruktur zu verbessern indem er nur noch die Nachrichten selber ohne die Timestamps und Nutzernamen speichert. Dies hat die Geschwindigkeit des Erstellens von Trigrammen und anderen Anwendungen drastisch verbessert. Danach hat Paul zudem ein Text-Generator mittels des Trigram Modells erstellt welcher zwar größtenteils Semantiklose jedoch bereits ganze Sätze ausgibt. Am Dienstag trafen wir uns zum zweiten mal für das Maschinelle Lernen und lernten diesmal Regression, Regularisierung und Klassifikation. Zudem führte uns Stefan verschiedene Modelle des Machine Lerning vor, wie das "​Dropout Regularisierung Modell"​ und "​convolutional layers"​ welche jedoch zu kompliziert sind um diese hier zu erklären. Wir haben noch die Chatlogs von Nightblue3 heruntergeladen und uns den Rest des Donnerstags mit word2vec beschäftigt. Dafür mussten wir zunächst ein Programm schreiben welches unsere existierenden Chatlogs in ein anderes Dateiformat wandelt, wie auch später erklärt. Word2Vec ist teil von gensim (ein Machine Learning Algorithmus) und wurde von Google entwickelt. Das Programm schaut sich an welche Wörter im gleichen Kontext benutzt werden. Dafür benötigt man eine Liste von Sätzen wo die Sätze als Liste von Wörtern dargestellt werden (daher auch das umwandeln unserer bereits existierenden Liste von Sätzen, wo ein Satz ein String ist, in die richtige Struktur.). Zurückgegeben wird ein Modell welches die Beziehungen der Wörter untereinander darstellen kann und auch die Darstellung mittels Vektoren zwischen Wörtern zurückgeben kann. Dieses konnten wir vollständig ausführen und planen nun nach den Ferien uns vollständig mit Machine Learning zu beschäftigen. +
- +
-==== 10.01.2019 ==== +
-In dieser Woche haben wir mit Stefan bei dem Machine Learning Treffen das erste mal ein Neuronales Netz gebaut und gelernt wie wir es trainieren. Deshalb haben wir heute angefangen unser Neuronales Netz zu planen. Insgesamt soll unser Neuronales Netz eine bestimmte Menge an buchstaben (zunächst 50), die den Anfang einer Nachricht bilden, übergeben bekommen und den darauf folgenden Buchstaben generieren. Dafür teilen wir zunächst unsere Nachrichten in einen Trainings-(X) sowie einen Testteil(Y) ​auf. Hierbei wird die Menge der X-Daten für das Trainieren des Netzwerkes diesem übergeben und die Y-Daten werden benutzt um die Vorhersagen des Modells zu testen und zu validieren. Die gesamte Umwandlung der Nachrichten in den X und Y Teil haben wir heute geschafft. Zudem hat Lucas angefangen unsere Dateien zu sortieren und hat dafür eine neue Unterstruktur innerhalb unseres Git-Verzeichnis erschaffen.+
  
-==== 17.01.2019 ​==== +===== Protokolle ===== 
-Seit des letzten Eintrags hat Paul bei sich zuhause bereits unser erstes Neuronales Netz erseltt und es an einem viertel der verfügbaren Trainingsdaten trainiert. Jedoch spuckt dieses nach Programmieren eines Programms welches das Netzt anwendet nur Ausgaben wie "h o o o o o o o o o o o" aus. Deshalb hat Paul den Rest der Zeit heute genutzt um das Neuronale Netz zu verbessern. Lucas hat heute weiter versucht den mastercleaned branch (der aufgeräumte Teil unseres Git-Verzeichnisses) aufzubauen, wobei mehrere Probleme aufgetaucht sind, wie beispielsweise Programme aus anderen Verzeichnisses zu importieren und zu verwenden, wobei alle Lösungen hierfür entweder aufwendig oder unsauber erscheinen. Zum Beispiel könnte man mit Verknüpfungen arbeiten oder oder gewisse Dateien vervielfältigen. Sicher ist jedoch, dass man für viele dieser Lösungen die Programme umschreiben müsste, was einige Geduld braucht.+Hier findet ihr unsere wöchentlichen [[ws1819:​phasmid:​Protokolle]].
  
-==== 24.01.2019 ​==== +===== Versionen ===== 
-Diesen Dienstag haben wir mit Stefan das "​Rekurente Neuronale Netzwerk"​ (RNN) kennengelernt und wie man es umsetztDies ist eine spezielle Art eines neuronalen Netzwerkes, welches lose gesprochen ein "​Gedächtnis"​ besitzt und somit besonders gut zeitliche Zusammenhänge in beispielsweise Sprache erfassen und Lernen kannDazu haben wir zudem eine Hausaufgabe bekommen, welche die Effizienz dieser RNNs zeigen sollFerner hat sich Lucas am Donnerstag mit der Organisation der Datenstruktur beschäftigt und diese zum größten Teil fertig gestellt bekommenAußerdem haben wir die Hausaufgabe bearbeitet, welche uns auch für unser Projekt helfen kann und soll. Hierfür mussten wir zuerst Daten für einen Benchmark generieren und diese dann im Anschluss mithilfe eines Machine Learning Algorithmus testen, welcher ein besonderes Muster innerhalb der Daten erkennen und erlernen sollLeider war die Umsetzung bisher noch nicht so erfolgreich und es wird noch einiges Fine-Tuning benötigt um ein erfolgreiches Ergebnis zu erzielen.+Das Programm funktioniert definitiv ​mit folgendem:​ 
 +  * Tensorflow: Version 1.13.
 +  * Numpy: Version 1.14.
 +  * Keras: Version 2.2.4
ws1819/phasmid.1552309861.txt.gz · Zuletzt geändert: 2019/03/11 14:11 von erchinger