 Herzlich Willkommen zur zweiten Vorlesung Data Science und unsere Vorlesung steht unter dem Motto Data has a better idea. Wir haben in der ersten Vorlesung sehr viel über Data Science gelernt. Was ist das? Was hat das mit einem Unternehmen zu tun? Wie implementiere ich ein Data Science Projekt? Wir haben kennengelernt aus was AI Artificial Intelligence eigentlich besteht, nämlich dem Machine Learning und dem Deep Learning. Mit dem Machine Learning haben wir uns intensiv schon auseinandergesetzt. Wir haben es kategorisiert. Wir haben Inhalte kennengelernt und wir haben ein bisschen gelernt, was es denn bedeutet, Machine Learning zu betreiben, welche Missen da dahinter stehen und was man letzten Endes damit alles anfangen kann. Wir haben allerdings einen sehr essenziellen zukunftsrechtigen Teil ausgelassen, nämlich das Deep Learning und die neuronalen Netzwerke, die ebenfalls ein Teil des Machine Learning und der Artificial Intelligence sind. Und genau hiermit beschäftigen wir uns in dieser Veranstaltung im zweiten Teil unserer Data Science Vorlesung, nämlich mit Neural Networks und Deep Learning. Und der Themenkomplex der neuronalen Netzwerke sowie das Deep Learning gehört als Teil des Machine Learning zum Komplex der Artificial Intelligence, das heißt zur künstlichen Intelligenz, wie ich es gerade schon erwähnt habe. Und ich muss einfach ein paar Worte vorweggenemen, denn im Alltag wird allerdings Artificial Intelligence und Deep Learning gleichgesetzt und meistens ein bisschen verteufelt. Ich habe das hier mal als Terminatorisierung der Menschheit gleichgesetzt, nachdem immer mehr mediale Meldungen kommen, dass auf einmal eine AI Dota 2 spielen kann, Go spielen kann, Schachmeister fertig macht und wenn man sich in YouTube zum Beispiel Videos von CodeBullet ansieht, Arcade Games spielen kann oder komplexere Computerspiele in einer Geschwindigkeit erlernen und ausführen kann, die für normale Menschen nicht möglich sind oder eben größere Projekte wie die AI von Google, die angefangen hat, eine eigene Sprache zu entwickeln, sehen sie schon, dass man mit Artificial Intelligence im Sinne der neuronalen Netze und das Deep Learnings erstaunliche und phänomenale Ergebnisse erreichen kann. Und wir werden uns ein bisschen damit befassen, was ist denn nun eigentlich ein neuronales Netzwerk? Was ist denn eigentlich Deep Learning und müssen wir tatsächlich Angst haben, Aller Elon Musk, dass AI die Welt übernehmen wird oder haben wir doch noch ein bisschen Zeit oder sind wir schon längst verloren, übernimmt die AI uns alle, werden wir bald von Maschinen regiert, da gibt es ja genug Filme, wenn sie ein bisschen googeln oder ist das alles keine Magie, sondern wahrscheinlich ein bisschen linearer Algebra und sehr viel Computerspeicher. Genau mit diesen Fragen werden wir uns in diesem Veranstaltungsteil befassen. Das Feld ist sehr umfassend. Daher habe ich einen eigenen Vorlesungsteil extra, den neuronalen Netzen und im Deep Learning gewidmet, damit wir hier auch etwas ausführlicher über die Mechaniken sprechen können, aber auch hier gilt, dass wir keine Spezialtobologien besprechen können, dass wir keine hoch komplexen Algorithmen implementieren werden können aufgrund des zeitlichen Umfangs. Jedoch möchte ich sie in die Lage zu versetzen, grundsätzlich ihnen zu zeigen, was ist ein neuronales Netzwerk, wie funktioniert das, wie kann ich das von Grund auf selber erzeugen und was steckt da eigentlich dahinter? Ich spoilere jetzt einfach mal ein bisschen und schreihe in den Raum lineare Algebra, Mathe, Hust, Hust. Sie werden feststellen, dass das alles kein Hexenwerk ist, allerdings die Möglichkeiten schon phänomenal sind, was man hiermit alles anfangen kann. Und bevor wir uns der Vorlesung tatsächlich widmen, möchte ich ein kurzes Recap machen. Was ist den Artificial Intelligence, Machine Learning und Deep Learning? Was bedeutet das denn alles? Ich habe das zwar am Anfang der letzten Vorlesung mal eingeblendet und habe Ihnen das erzählt, aber ich möchte hier nochmal etwas genauer darauf eingehen. Was ist ein Artificial Intelligence, der schöne blaue Kreis? Das ist die Nachahmung der Intelligenz oder des Verhaltens von Menschen oder anderen Lebewesen, die keine Maschinen sind. Und wir möchten quasi, dass eine Maschine lernt, sich wie ein Mensch zu verhalten oder menschliche Denkmuster anzunehmen oder selbstständig denken, agieren und handeln zu können, ohne großartige Entscheidungsmuster vorzugeben. Wir möchten, wir als Menschheit haben den Ansporn, künstliche Intelligenz zu schaffen, daher auch der Name. Als Unterkategorie oder als Teil der Artificial Intelligence ist das Machine Learning. Das ist eine Technik, mit dem wir den Computern beibringen können, aus Daten heraus zu lernen und das selbstständig zu tun auf Trainingsbasis und nicht herzugehen und ein komplexes Set an Entscheidungsregeln selbst zu implementieren, hart zu implementieren, sondern der Computer soll in eine Lage versetzt werden, Daten getrieben, Erkenntnisse und Entscheidungen selbstständig zu treffen. Und ein Teil dieses Machine Learnings ist das Deep Learning. Das ist eine Technik, die das Machine Learning dazu inspiriert hat, indem wir uns unser Gehirn als Vorlage genommen haben, ein neuronales Netzwerk basierend auf dem Netzwerk unserer eigenen Neuronen. Also quasi, wir möchten einen Computer bauen, der unser Gehirn imitiert, um damit zu erreichen, einen Computer in die Lage zu versetzen, menschliche Verhaltensmuster und Intelligenz zu zeigen. Ich recapituliere hier mal nochmal kurz, wie denn so was funktionieren könnte. Wir haben eine Input-Schicht im Supervised Learning, hier haben wir einen netten Elefanten, einen Känguron, einen Bingoin und wir haben hier Teile, kleine Striche, die immer komplexer werden bis das Programm erkennt, okay, das ist ein Elefant, das ist das Label dazu und wir werden diese Feature immer komplexer werden lassen, dass der Computer lernen kann, okay, das ist ein Elefant und sie haben hier nochmal eine Wiederholungskategorisierung dastehen und ich möchte jetzt damit beginnen, ihnen erstmal in Übersicht zu geben, was wir in dieser Vorlesung denn eigentlich alles kennenlernen werden. Wir werden uns als erstes mal mit dem menschlichen Gehirn beschäftigen, wie ist das denn ganz grob aufgebaut und was ist ein Neuron überhaupt und wie kann ich daraus etwas abstrahieren, wie kann ich daraus eine Topologie abstrahieren, die wir in den Datenwissenschaften nutzen können. Ich werde ihnen einen Überblick über neuronale Netze geben, über die Topologien, die verfügbar sind, einen Auszug hier raus zumindest und werde ihnen anschließend das einfachste Modell, die einfachste Abstraktion des menschlichen Gehirns, nämlich das Perceptronenmodell vorstellen, das Perceptron Modell und danach werden wir uns ein bisschen mit Aktivierungsfunktionen auseinandersetzen müssen. Wir erweitern das Perceptron Modell in das Multilayer Perceptron Modell, steigen dann ein in Deep Learning Neural Networks, beschäftigen uns damit, was das Gradientdissentverfahren ist, was Lossfunktionen sind und geben hier mal einen Überblick und wir werden uns auch noch mit Regularisierungen von neuronalen Netzen kurz befassen und ich werde Ihnen im Anschluss daran noch einige Exkurse geben, die im technologischen Feld eben vorhanden sind, aber nicht direkt etwas mit neuronalen Netzen und Deep Learning zu tun haben. Wir beginnen hier ganz einfach mal mit dem menschlichen Gehirn und ich habe es mir hier ziemlich leicht gemacht, ich habe mir hier ein Lehrbuch herausgezogen, nachdem ich selber kein Biologe bin und ich zitiere hier einfach mal Erregungen von anderen Zellen werden lokal auf die verästeltenden Dräden übertragen und breiten sich als elektrische Spannungsänderungen über die Membran der Nervenzelle aus mit zunehmender Entfernung schwächer werdend. Einander überlagern laufen sie im Bereich des Pericarions zusammen, wo sie gesammelt und integrierend verarbeitet werden. Dies geschieht durch räumliche und zweitliche Summation der verschiedenen Änderungen des Membrampotentials, das heißt Energie, die diese Membramen errennt hat. Das heißt, wir bekommen Erregungen von Zellen, die den Dräden aufnehmen, als elektrische Signale weiter schicken, die über die Entfernung schwächer werden und die dann gesammelt zu mir verarbeitet werden. Fahren wir doch einfach mal fort. Vom Ergebnis der Summation am Ort des Aktionshügels hängt es ab, ob hier nun das Schwellenpotential überschritten und somit jetzt ein Aktionspotential gebildet wird oder nicht. Das ist ein sogenanntes Alles- oder Nichts-Gesetz. Entstehende Aktionspotentiale sind ausdruckte Erregungen einer Nervenzelle. Sie werden aufeinander folgend über den Aktionenfortsatz weitergeleitet, an dessen Endigung wird die Erregung auf andere Zellen übertragen. Was bedeutet das jetzt? Wir bekommen von Zellensignale, die werden als elektrische Impulse weitergeleitet und wenn ein gewisses Schwellenpotential überschritten wird, dann passiert eine Aktion und die wird weitergegeben. Fahren wir fort. Vom Zellkörper einer Nervenzelle gehen verschiedene plasmatische Fortsätze aus, die den Dräden sind feinverästelte Nervenzellfortsätze, die vom Sommer auswachsen und Kontaktstellen für andere Zellen bilden, deren Erregung hier auf die Nervenzelle übertragen werden kann. Über eine Synapse wird das Neuron mit einer bestimmten Zelle verknüpft und nimmt mit der lokal zugeordneten post-synaptischen Membranregion eines däntritensignale auf. Nachdem jetzt jeder von uns natürlich ein studierter Biologe ist, der das alles verstehen kann, habe ich Ihnen hier mal ein Bildchen zusammengebaut, einer Nervenzelle. Wir sehen hier die däntriten, die für die Signalaufnahme zuständig sind. Wir sehen den Aktionhügel, der für die Kudierung und Verstärkung vorhanden ist. Wir haben die Marktscheide, die isoliert diese Sachen weiter gibt und wir haben hier unten die Synapsen, die das eben weiter überträgt. Und wir sehen hier ganz links mal so bildhaft, wie denn so eine Reizfunktion denn aussehen kann. Und was möchten wir daraus denn jetzt machen? Wir sehen so funktioniert eine Nervenzelle, so funktionieren die Nervenzellen in unserem Gehirn. Und ich habe ja eingangs erwähnt, ja, wir möchten genau das, was diese Nervenzelle tut, künstlich generieren. Wir möchten ein Gehirn künstlich mittels eines Computers erzeugen und wir schauen uns jetzt mal genauer an, wie funktioniert das denn. Ja, ich fange hier einfach mal mit einem Überblick über neuronale Netzwerke an, bevor wir uns überhaupt mit irgendetwas anderem beschäftigen. Wir machen immer noch eine Top-Down Vorlesung, das bedeutet, ich zeige Ihnen jetzt erst einmal die einen Auszug der gigantischen Variationen und Netztopologien, die ist denn bisher schon schön zusammengeschrieben, den gibt, damit Sie auch sehen können, welchen Umfang denn neuronale Netze inzwischen angenommen haben. Es gibt wie gesagt eine große Anzahl verschiedener Topologien, die je nach Anwendungsgebiet unterschiedlich ausgeartet sind und es gibt verschiedenste Zelltypen, die man hier verwenden kann. Eine sehr gute Zusammenstellung wurde vom Asimov-Institut vorgenommen, welche wir uns jetzt näher mal betrachten werden. Ich schalte hierzu einfach mal in meinem Browser und zeige Ihnen diesen neuronalen Netz so. Wie versprochen sind wir hier jetzt auf der Webseite des Asimov-Instituts und wir haben hier den Neural Network Zoo, der 2016 hier mal eingestellt wurde. Ich nehme mir die Freiheit hier direkt einfach mal runter zu Zoom. Sie finden hier eine Beschreibung und Sie sehen hier direkt einen schönen Chart von sehr verbreiteten neuronalen Netzen, der nicht vollständig ist, wohlgemerkt, aber die meisten hauptsächlich verwendeten Topologien enthält. Sie haben hier an der Seite die Feststellung, dass es ganz verschiedene Zellarten gibt, auch wenn wir diese künstlich replizieren wollen. Sie sehen hier oben unser Perceptron, mit dem wir uns beschäftigen werden. Wir haben unser Feed Forward Modell und Sie haben hier noch eine Radial Basis Function Network und Sie sehen hier, wenn ich nach unten scrolle, was für eine Varietät an unterschiedlichsten neuronalen Netzwerken es gibt und ich denke, Sie verstehen auch, warum wir auf diesem Grunde heraus in dieser Veranstaltung nicht jede Netztopologie einzeln besprechen werden können. Wir werden uns hier oben mit den einfachsten dieser neuronalen Netztypen befassen, damit Sie die grundlegenden Verständnisse dafür finden können und dass Sie die auch verstanden haben. Was Sie schon kennen aus den stochastischen Prozessinnen heraus ist hier die Markov-Ketter, die gibt es hier auch als neuronales Netz als Topologie. Damit haben wir uns schon befasst, aber diese ganzen komplizierten Netztopologien, die Sie hier finden können, mit denen beschäftigen wir uns in dieser Veranstaltung nicht. Sollte Sie das tiefer interessieren, können Sie hier auf dieser Webseite herunterscrollen. Da finden Sie eine kurze Beschreibung der gängigsten Topologiearten für fast die genutzt werden und Sie haben hier meistens auch die Original-Paper dazu, das heißt für diejenigen, die gerade ein GRU in die Welt setzen möchten, finden Sie hier weiterführende Quellen, auf die ich Sie hier einfach verweisen werde. Ich scrolle jetzt hier noch einmal nach oben und dann springe ich auch zurück in unsere Vorlesung. Bitte sehen Sie es mir nach, dass ich nicht in der Lage bin, jede einzelne Netztopologie mit Ihnen zu besprechen. Ich werde mit Ihnen allerdings die Grundlagen soweit erörtern, dass Sie diese komplexeren Strukturen ebenfalls durchdringen und nachvollziehen können. Wir haben gerade gesehen, dass es eine sehr, sehr, sehr große Varietät an neuronalen Netztopologien gibt. Wir werden hier aber sehr, sehr, sehr viele Schritte zurückgehen und uns ganz anfänglich einfach mal damit befassen, wie kann ich denn ein menschliches Neuron überhaupt technisch replizieren? Wie geht das denn überhaupt? Und deswegen befassen wir uns zunächst einmal mit dem Perceptron-Model und wir möchten das menschliche Hickey hin replizieren. Das ist das Ziel in der AI. Wir möchten quasi einen Computer erzeugen, erschaffen, der denken kann wie ein Mensch. Das ist das ganz große Ziel am Ende. Und wir möchten reale Neuronen des zerebralen Cortex künstlich imitieren. Das ist so die Grundidee, die wir haben. Das heißt, wir machen jetzt eine richtig drastische Simplifikation. Ich bin mir bewusst, dass jeder Gehirnforscher, jeder Biologe schreiend aus dem Fenster springen würde, wenn er diese Simplifikation eines Neurons und des Gehirns sehen wird. Aber für uns ist es eigentlich ein intuitiver Zugang zu dem, was wir hier eigentlich erreichen möchten. Wir haben vorher gesehen, es gibt die Dentriden, die sind zu Informationsaufnahme zuständig. Die leiten den Impuls an den Nukleus weiter, der die Information verarbeitet und das Axon oder die Synapsen geben diese Informationen entsprechend eine Schwellwertes weiter. Das ist so die Grunddenkidee. Und nachdem das Axon eben die Information weiter gibt, gibt es neue Dentriden, die diese wieder aufnehmen in einem anderen Neuron. Das soll mal unsere Grundarbeitshypothese sein. Die ist biologisch sicher nicht ganz korrekt. Wahrscheinlich fehlen da noch so ein paar tausend Seiten Details zwischendrin. Sehen Sie es mir nach. Wir bleiben jetzt mal bei dieser Simplifikation. Wir haben Informationen, die werden aufgenommen, die werden verarbeitet und die werden weitergegeben. Und zwar, wie dann eine andere Einheit, die diese Information wieder aufnimmt, bis am Ende eine Aktion daraus entsteht. Und wir abstrahieren hier raus ein simples Modell, eines sogenannten Perceptrons, also ein Perceptron. Und was machen wir denn jetzt? Wir haben vorher gesehen, wir haben die Informationsaufnahme. Das heißt, wir brauchen irgendwelche Inputs, irgendwelche Reize, die aufgenommen werden können. Und diese Inputs bezeichnen wir hier einfach mal als x1 bis xm. Und was passiert mit diesen Inputs? Die werden gewichtet, mittels Gewichten w1 und wm. Und diese multiplikative Zusammenführung von Gewicht und Input wird noch mit einem bias versehen. Dieser bias dient dazu, den Fall x gleich 0 abzudecken, so dass wir verhindern können, dass manche Neuronen später erst gar nicht anspringen können, weil der Input 0 ist. Das möchte man verhindern. Daher haben wir hier noch einen bias. Das heißt, wir haben hier drei Variablen, die in unser Perceptron-Model einfließen. Wir haben die x1 bis xm als Inputs. Wir haben die w1 bis wm als Gewichte dieser Inputs. Und wir haben jeweils noch einen bias. Und diese Summe, also die Summe der gewichteten Inputs plus bias dient wiederum als Input eine Aktivierungsfunktion, deren Ergebnis den letztendlichen Output darstellt. Und ich springe noch mal eins zurück. Wir haben ja gesehen, die Dendriden machen die Informationsaufnahme. Der Nucleus verarbeitet diese Informationen des Axon bzw. diese Napsten geben diese Informationen weiter in unserem biologisch nicht korrekten, aber simplifizierten Modell. Und was machen wir jetzt hier daraus? Wir sagen, wir haben x1 bis xm, das sind Inputs. Diese werden gewichtet. Das heißt, die werden irgendwie verarbeitet und weiter gereicht. Und diese Summe dieser gewichteten Inputs dient als weitere Input einer neuen Einheit, und zwar eine Aktivierungsfunktion. Und diese Aktivierungsfunktion entscheidet letztendlich. Gibt es ein Aktionspotenzial? Kommt da was raus oder nicht? Und wir nehmen die Summierten Inputs, die gewichteten Summierten Inputs, jagen die durch eine Aktivierungsfunktion und erhalten einen Output. Ganz vereinfacht, sieht das Modell jetzt einfach mal folgendermaßen aus. Wir haben Inputs, die fließen in unser Neuron rein. Das sehen Sie links unten. Da haben wir noch einen Bias dazu und dann kommt da wieder was raus. Das heißt ganz vereinfacht, sieht unser Modell jetzt so aus, dass wir unsere Y-Dachschätzung haben und dies das Gewicht mal den Input plus den Bias. Und wenn Sie in dieser Veranstaltung ein bisschen aufgepasst haben, dann haben wir dieses Y ist gleich Wx plus B, doch schon einige Male gesehen. Und ich habe Ihnen das hier unten einfach mal hingemalt. Wx plus B ist in diesem Fall nichts anderes wie eine Geradengleichung. Und dieses B der Bias ist effektiv die Bestimmung des Achsenabschnittes und das Gewicht W ist nichts anderes wie die Bestimmung der Steigung. Wenn wir das W verändern, dann drehen wir diese gerade nach links oder nach rechts und wenn wir unseren Bias verändern, dann verschieben wir, parallel verschieben wir diese gerade nach oben und nach unten. Das ist das, was passiert, wenn wir ein einzelnes Neuron uns nun betrachten in dieser Logik. Natürlich haben wir nicht nur einen Input, deswegen habe ich das Perceptron-Model hier einfach mal nochmal etwas komplexer dargestellt. Sie sehen ganz links unsere x1 bis xm. Das sind unsere Inputs in unser Neuronemodell. Diese werden mit w1 bis wm gewichtet, dann haben wir noch einen Bias dazu und dann wird das aufsummiert. Das heißt, wir bilden die gewichtete Summe der Inputs plus das Bias und diese Summe fließt dann in eine Aktivierungsfunktion und das Ergebnis dieser Aktivierungsfunktion bildet den Output unseres Perceptron-Modells. Ich rekapituliere das Ganze noch einmal. Wir haben Inputs x1 bis xm, diese werden mit w0 bis wm gewichtet und mit einem Bias versehen, die werden aufsummiert und diese Summe dient wiederum als Input eine Aktivierungsfunktion, deren Ergebnis unser Output unserer Schätzung y-Dach ist. Wenn wir das jetzt formal darstellen möchten, haben wir unser y-Dach, das ist unser Output und das ist dieser Output, der ist die Aktivierungsfunktion von unserem Bias plus der Summe aller gewichteten Inputs. Wenn wir das Ganze jetzt in, nachdem wir nicht jedes Mal so viele Summen schreiben möchten und wir später diese Modelle auch noch erweitern werden, schreiben wir das hier ganz einfach als g von w0 mal b ist unser Bias plus die transponierte x-Vektor mal den Gewichtsvektor, dann müssen wir nicht so viel hinschreiben. Das ist nichts anderes wie zu sagen, okay, wir nehmen unseren Bias, dazu rechnen wir die Summe aller gewichteten Inputs, das sind die Inputs der Aktivierungsfunktion und das Ergebnis dieser Aktivierungsfunktion ist unsere Schätzung für unser y-Dach, das ist unser Output und so funktioniert im Grund unser Perceptron Model. Das ist unsere ganz einfache simplifizierte Darstellung, wie können wir denn ein Neuron technisch replizieren und wie können wir daraus ein Signal bzw. ein Aktivierungspotenzial erkennen und was ist denn jetzt nun eine Aktivierungsfunktion? Wir machen das am Beispiel der Sigma-Funktion und diese Aktivierungsfunktion skaliert jede reale Zahl auf das Einheitsintervall, welches als Wahrscheinlichkeitsverteilung interpretiert werden kann. Das heißt, wir haben ganz, ganz viele gewichtete Inputs, die werden aufsummiert und je nachdem was als Ergebnis nach der Aktivierungsfunktion rauskommt, ist das eine Wahrscheinlichkeit für den Eintritt gewisse Ereignisse, die wir vorher festgelegt haben. Das klingt jetzt ziemlich kryptisch, ich habe Ihnen hier gleich einmal ein Rechenpreispiel mitgebracht. Für das Perceptron Modell mit einer Sigma-Funktion, Sie sehen, wir haben jetzt zwei Inputs, unser x1, unser x2, das Gewicht für x1 ist 3, das Gewicht für x2 ist minus 2, wir haben ein bias von 1 und der Gewicht des bias ist ebenfalls 1 und die Summierung hier raus wird durch eine Sigma-Deaktivierungsfunktion gegeben und das Ergebnis dieser Sigma-Funktion ist unsere Schätzung y-Dach. Und wenn wir uns das jetzt nochmal anschauen, das Beispiel Perceptron-Model mit Sigma-Funktion, ich wiederhole gerne noch einmal diese Formulierung, die in der ersten Zeile steht, weil diese Formulierung ist essentiell für alles weitere, was in den Neuronal-Netzwerken später noch passieren wird. Wir haben einen Output, unser y-Dach, das ist das, was unser Neuron ausgeben soll und das ist eine Aktivierungsfunktion und zwar, was kommt in diese Aktivierungsfunktion hinein. Der Input der Aktivierungsfunktion ist der Gewicht der bias plus die Summe aller gewichteten Inputs, die eben unser Neuron enthält oder erhält und in unserem Beispiel, was wir gerade angezeigt haben, ist das die Aktivierungsfunktion von 1, das ist unser bias plus den transponierten Vektor der Inputs, der x1 und x2, mal der Gewichte, also 3 und minus 2 und wenn wir das hinschreiben, dann ist eben unser Output nichts anderes wie die Aktivierungsfunktion von 1 plus 3x1 minus 2x2 und wenn wir das Ganze zum Ausrechnen mit der Sigma-Funktion, wie Sie haben ja die Sigma-Funktion in dieser Veranstaltung nun schon öfter kennengelernt, wir setzen dann diese Inputs in unsere Sigma-Funktion ein und wir sagen jetzt einfach mal, wir haben einen neuen Input und zwar unser x-Vektor ist minus 1 und 2 und wenn wir das dann ausrechnen können, ist das die Aktivierungsfunktion von minus 6, also setzen wir minus 6 in unsere Sigma-Aktivierungsfunktion ein und erhalten für unseren Output ca. 0,02. So, was sind denn jetzt eigentlich Aktivierungsfunktionen für? Was brauche ich die denn überhaupt? Was bedeutet das denn überhaupt? Weil rechnen tue ich ja vorher eigentlich auch schon irgendwas, für was brauche ich Aktivierungsfunktionen? Aktivierungsfunktionen nehmen die aufsummierten, gewichteten Inputs, inklusive der Biases und skalieren diese beziehungsweise bestimmen, welches Neuron aktiviert wird, beziehungsweise wie stark diese, ich nenne es jetzt mal Feuern sollen, also es wird bestimmt mittels der Aktivierungsfunktion ob ein Neuron überhaupt aktiviert wird und wenn ja, wie stark und in welche Maße. Das ist quasi die Steuerung, das ist das die Verarbeitung, die wir vorher in unserem Modell mit Nucleus bezeichnet haben. Jeder Biologe würde mich hier über die Wiese jagen, aber für unsere simplifizierten Darstellungsmöglichkeiten belassen wir es mal hierbei. Wir haben ein Neuron, das bekommt ein Input, das sind hier unsere gewichteten Inputs und wird diese verarbeiten. Und diese Verarbeitung passiert mittels der Aktivierungsfunktionen und am Ende kommt ein Ergebnis raus, ob das Neuron überhaupt feuert oder nicht und wenn ja, wie stark. Dafür brauchen wir Aktivierungsfunktionen und für verschiedenste Probleme existieren verschiedene Aktivierungsfunktionen mit Schwellwerten. Das bedeutet, dass selbst wenn die Aktivierungsfunktion einen Wertliefer, der nicht gleich null ist, muss ein gewisser Schwellwert überschritten sein, damit eine Aktivierung des Neurons stattfinden kann. Wenn in unserem menschlichen Gehirn jedes Neuron bei jedem Reiz feuern würde, dann würden wir nicht mehr sehr viel machen können. Weswegen ein gewisser Schwellwert überhaupt erst erreicht sein muss, damit eine Aktion überhaupt stattfinden kann. Das bedeutet, das Signal der Input muss stark genug sein, um eine Aktion auslösen zu können und das replizieren wir künstlich am Computer mittels unserer Aktivierungsfunktion mit Schwellwerten und ich werde Ihnen jetzt nachfolgend einen ganz kurzen Auszug, einen kurzen teilweise Überblick über die gängige Funktionen geben. Seien Sie sich bewusst, dass es Dutzende Aktivierungsfunktionen gibt, die man sich auch maßschneidern kann, je nachdem welches Problem ich denn vorliegen habe und die Siegmeutfunktionen, die haben wir ja bereits früher in unserer Vorlesung schon vorgestellt. Das war die logistische Regressionsfunktion, die wir im Teil zum Machine Learning schon kennengelernt haben und ich springe jetzt hier einfach mal weiter und zeige Ihnen ein paar Ausschnitte aus Aktivierungsfunktionen. Wir haben zum einen die logistische Funktion, also unsere Siegmeutche Aktivierungsfunktion. Die Formel habe ich Ihnen hier hinten dargestellt und wenn Sie sich den Grafen ansehen, liefert uns diese logistische Funktion einen glatten Übergang zwischen Negativ und Eins. Das sehen Sie hier sehr gut und was gibt es noch? Es gibt eine binäre Stufenfunktion, die Binary Step Funktion. Sie sehen, die ist ähnlich wie die Siegmeutfunktion, aber die ist viel härter. Hier gibt es entweder Null oder es gibt Eins und mehr gibt es eigentlich nicht. Während die logistische Funktion einen glatten Übergang zwischen der Null und der Eins schafft, sehen wir in der binären Stufenfunktion einen ziemlich harten Übergang. Das bedeutet entweder ist das Neuron aktiviert oder eben halt nicht Null und Eins. Mehr gibt es hier nicht. Was haben wir noch für Aktivierungsfunktionen? Wir haben den Tangents Hyperbolicus. Der hat den Vorteil gegenüber oder was heißt Vorteil? Der hat eine Abwandlung gegenüber der Siegmeutfunktion und zwar ist dieser zwischen minus Eins und Eins definiert. Das bedeutet, dass ich hier Outputs erhalten kann, die sich zwischen minus Eins und plus Eins befinden, was im Vergleich zu einer binären Treppe oder einer Siegmeutfunktion zwischen Null und Eins einen Unterschied gibt. Und hier kommt es halt ganz stark darauf an, was habe ich denn für ein Problem vorliegen? Was für ein Problem muss ich lösen? Was soll da am Ende rauskommen? Und wenn Sie sich jetzt die Siegmeutfunktion betrachten, die Formulierung hierfür ist relativ komplex auch zur Implementierung. Es gibt hier inzwischen eine nette Abkürzung, nenne ich das mal, die auch sehr gerne benutzt wird. Das ist die sogenannte Rectified Linear Unit, die RELU Funktion, die ist eben Null für alle Inputs, die kleiner Null sind und ist dann eben der Wert des Inputs für die Inputs, die größer wie Null sind. Und dann ist das das. Und damit sind wir mit Aktivierungsfunktionen an sich eigentlich auch schon durch. Ich beginne jetzt nun einfach mal unser einfaches Perceptron Modell, was ich Ihnen gerade vorgestellt habe, zu erweitern und wir sprechen nun im folgenden über das Multilayer Perceptron Modell. Anders als das einfache Modell können natürlich auch mehrere Aktivierungszellen sowie Ausgabezellen vorhanden sein. Und das Netzwerk, welches so entsteht, besteht aus so genannten Schichten zu Englisch Layer. Und es existiert eine Input Layer, das ist die Schicht, wo unsere X-Werte quasi in unser Netzwerk hineinfließen. Es gibt keine bis viele Hidden Layer sowie eine Output Layer. Das Wort Hidden Layer kommt daher, dass wenn wir mehrere Hidden Layer haben, wir nicht mehr nachvollziehen können, was in diesen Layern eigentlich genau passiert. Deswegen nennen die sich Hidden Layer und es ist auch eine Riesen-Diskussion, was man damit anfangen kann, weil eigentlich sind Hidden Layer eine große Blackbox. Es gibt einige Dissertationen zum Thema. Ist das tatsächlich eine Blackbox? Wie kann man das doch ein bisschen kontrollieren? Das lassen wir hier erst mal weg, beziehungsweise kommen wir später noch mal darauf. Ich rekapituliere noch mal. Wir haben eine Input Layer, hier kommen unsere X-Werte rein, hier fließen die Reize von außen in unser Neurohne rein und dann haben wir eine bis viele Hidden Layer sowie eine Output Layer, wo hinten noch was rauskommt. Und die Outputs einer Layer sind Inputs der Darauffolgenden. Ich habe eine Input Layer, da fließen die externe Reize rein, die werden gewichtet, verarbeitet, kommt durch eine Aktivierungsfunktion und dann fließen die in eine neue Layer rein und so weiter und so weiter. Deswegen sind die Outputs einer Layer die Inputs der nächsten Layer. Das ist wichtig, dass Sie das verstehen. Sind alle Neuronen einer Schicht, also einer Layer, mit allen der Vollgeschicht verbunden. Das heißt, jedes Neuron der ersten Layer sind mit allen Neuronen der zweiten Layer verbunden. Dann wird diese Schicht als Dicht oder auch als Dance Layer bezeichnet. Das ist insofern wichtig, sobald Sie sich mal mit TensorFlow oder Skeetag Learn im Code befinden, dass Sie wissen, was denn ein Dance Layer ist. Da wird dieser Begriff uns noch mal über den Weg laufen. Und ich werde nun nachfolgen dieses Perceptron Model, was ich mit Ihnen jetzt hier ganz einfach erarbeitet habe von einem Neuron hin bis zu mehreren Inputs, mal erweitern, dass wir uns Schritt für Schritt dem Deep Learning nähern können. Wir haben hier mal unser Multi Layer Perceptron Model noch mal ein bisschen einfacher dargestellt. Wir haben unsere Input Layer, das in unsere x1 bis xm. Wir haben hier eine Mittelschicht, das sind z1 bis z2. Hier haben wir nur zwei Neuronen sogar und der Input dieser x1 bis xm fließt in beide Zets. Das heißt, x1 bis xm fließt in z1 und in z2 und werden hier mittels einer Aktivierungsfunktion zu den Outputs y1 Dach und zu den y2 Dach verarbeitet. Wobei so ein zi, was ist denn dieses z, was ist denn dieses Neuron hier? Was tut das? Das nimmt alle biases und gewichteten Inputs auf und verarbeitet die mittels einer Aktivierungsfunktion. Sie merken, ich wiederhole mich hier schon ein bisschen und natürlich kann ich das auch noch mal einen Schritt für allgemeiner. Ich habe meine Input-Schicht x1 bis xm und dieser Kasten, dieser blaue Kasten, den Sie hier sehen mit dem Kreuz drinnen, bedeutet, dass jedes dieser x1 bis xm mit jedem dieser z1 bis zd1 verbunden ist. Ich springe noch mal ein zurück. Sie sehen, dass hier sehr viele Striche schon da sind und wenn man das natürlich erweitert, wird das unübersichtlich. Deswegen bedienen wir uns hier dieses blauen Kastens. Dieser blaue Kasten bedeutet, dass die Schicht x und die Schicht z eine dichte Schicht ist, eine Dense-Layer sind. Das heißt, jedes x1 bis xm ist mit jedem z1 bis zd1 verbunden und ergibt uns unseren Gewichts-Vektor W. Beachten Sie bitte, dass dieser Exponent Klammer 1 hier kein Exponent im eigentlichen Sinne sind, sondern das ist der Gewichtsfaktor der ersten Layer. Diese 1 und im hinteren diese 2 gibt Ihnen einen Index an, in welcher Layer Sie sich denn gerade befinden. Wir werden, wenn wir Richtung Deep Learning waren, dann feststellen, dass die Indexierung doch etwas umfangreicher werden wird. Deswegen sage ich das gleich schon mal vorweg. Dieses W1 bezieht sich darauf, dass das der Gewichts-Vektor der ersten Layer ist. Und W2 ist eben der Gewichts-Vektor der zweiten Layer. Natürlich ist es hier auch möglich, diese y1 und y2 noch bis y, je nachdem, wie viele Outputs Sie benötigen, zu erweitern. Also es ist nicht nur auf zwei gebunden, da kann es auch mehrere geben, je nachdem, was Sie natürlich am Ende erreichen möchten. Das vorallgemeinerte Modell besteht aus einer Input Layer x, welche multipliziert mit den Gewichten der ersten Layer W1, als neue Inputs in die erste Hidden Layer laufen. Ich nenne das jetzt mal laufen, in denen die Gewichteten Inputs z mittels Aktivierungsfunktionen g von z verarbeitet werden. Die Ergebnisse der gewichteten Inputs und der Aktivierungsfunktion werden erneut gewichtet, mit den Gewichten W2, der zweiten Schicht und bilden aufsummiert die Ergebnisse der Output Layer y und dach. Ich springe noch einmal eins zurück. Wir haben hier unsere Inputs x1 bis xm, das ist unsere Input Layer. Diese sind dense, das bedeutet sie laut sind mit jedem z der Hidden Layer in der Mitte verbunden und sie sind gewichtet. Das bedeutet diese x1 bis xm werden mit unserem Gewichtsvektor W1 gewichtet und laufen hier in unsere z Variablen hinein. Dort werden sie mittels einer Aktivierungsfunktion verarbeitet und die Outputs dieser Aktivierungsfunktionen laufen wieder durch einen gewichteten Vektor W2 und bilden dann aufsummiert unsere Outputs. Das bedeutet ich habe Inputs x1 bis xm, diese gewichte ich mit unserem Gewichtsfaktor W1. In der Hidden Layer werden diese aggregierten gewichteten Inputs in einer Aktivierungsfunktion verarbeitet und diese D1 Outputs dieser Aktivierungsfunktionen selbst werden wieder gewichtet mit unserem Vektor W2 und dann erneut aufsummiert um unsere Outputs y1 und y2 Dach zu ergeben. Wie lässt sich das ganze jetzt formal darstellen? Wir betrachten uns jetzt ein einziges Neuron aus der Hidden Layer, also ein ze aus der mittleren Schicht und ein Output Neuron, also ein yi Dach und wir nehmen im folgenden an, dass der Bayes gleich eins ist, daher entfällt er auch in den unten darstehenden Formulierungen und wie sieht denn jetzt ein einziges Hidden Neuron aus, also ein ze, wie setzt der sich denn zusammen und da werden sie feststellen, das haben wir schon mal irgendwie gehört die letzten paar Minuten. Wir haben unser Gewicht des Bayes mal den Bayes, der Bayes ist in diesem Fall eins, also steht hier nur das Gewicht des Bayes da, unser W0i aus der ersten Layer plus die Summe aller Inputs mal eben der zugehörigen Gewichte, auch aus der ersten Layer, das haben wir ja eben gerade schon gesehen, sobald wir eine dense Layer haben, ist jeder Input mit jedem Neuron verwunden, das bedeutet alle Inputs laufen in jedes Neuron der Hidden Layer hinein, das bedeutet ein zi, also ein Neuron der Hidden Layer besteht quasi aus dem gewichteten Bayes plus der gewichteten Summe aller Inputs. Was passiert anschließend? Wie setzt sich denn jetzt nun unser Output zusammen, unser Yi Dach? Wie setzt sich ein Output Neuron denn nun zusammen? Wir haben hier nun die zweite Schicht, also den Schritt zwischen der Hidden Layer und der Output Layer, deswegen haben wir hier den Bayes aus der zweiten Layer gewichtet plus die Summe von J gleich eins bis D eins aller Hidden Neurons mal der Gewichte durch eine Aktivierungsfunktion berechnet. Das ist hier unser Output, ich wiederhole das nochmal, ein Hidden Neuron setzt sich zusammen aus dem gewichteten Bayes plus dem gewichteten Aggregierungen aller Inputs und unser Outputs setzt sich zusammen aus dem Bayes der zweiten Layer plus den gewichteten Aggregierungen der Hidden Neurons und das ganze dient als Input eine Aktivierungsfunktion und das Ergebnis dieser Aktivierungsfunktion ist unser Output. Wie sieht denn jetzt nun eine Single Unit im Detail aus? Das heißt, wir betrachten uns jetzt hier exemplarisch unsere Hidden Neurons und davon das Hidden Neuron Z2. Wie setzt sich das denn zusammen? Das ist, dass der Gewichte dabei ist, der Bayes ist hier immer noch eins plus die Summe aller gewichteten Inputs und dann kann man hier natürlich auch noch ausschreiben, das ist dann natürlich der Gewichte dabei ist plus der erste Input mal Gewicht plus der zweite Input mal Gewicht bis zum enden Input mal Gewicht und so weiter und wenn sie jetzt natürlich ganz ganz viele Neuronen haben, haben sie hier halt nicht nur eine Gleichung, sondern sie bekommen ein Gleichungssystem, das ist da anschließend später noch zu lösen und optimieren gilt. Also sie sehen meine Spoiler vom Anfang, dass ein neuronales Netzwerk sehr viel mit linearer Allgebrat zu tun hat, hat sich auch bewahrheitet und sie sehen auch, dass bisher noch nicht sehr viel Magie und noch nicht sehr viel Terminator sein hier dabei war. Vielleicht ändert sich das jetzt gerade nochmal. Wir fangen jetzt nämlich tatsächlich an uns mit sogenannten Deep Learning Neural Networks auseinander zu setzen und wir beschäftigen uns damit, was ist denn ein Deep Learning Neural Network, worin unterscheidet sich das denn von dem, was wir bisher gelernt haben und wir fangen hier einfach einmal an. Was ist denn nun der große Unterschied zwischen unser Multi Layer Perceptron Modell und Deep Learning Neural Networks, wie kann man das dann ineinander erweitern? Es gibt hier jetzt nicht unbedingt eine fixe Definition, allerdings ist es so, dass ich aus einer MIT Vorlesung entnommen habe, dass als Deep Learning oder Deep Learning Neural Network im generellen neuronale Netze bezeichnet werden, die mindestens über zwei Hidden Layer verfügen und ich schließe mich diese Definition hier einfach einmal an. Für uns in diesem Kurs bezeichnen wir als Deep Learning Neural Networks alle neuronalen Netze, die mehr wie zwei Hidden Layer haben. Wie sieht das denn grafisch aus? Wir haben auf der linken Seite wieder unsere Input Layer, bestehend aus X1 bis Xm Neuronen, die wir jeweils einen Input implizieren. Danach haben wir verschiedene blaue Boxen, das bedeutet, dass hier multiple Hidden Layer auftreten können. Ich habe Ihnen hier in der Mitte einfach mal die Karte Hidden Layer dargestellt mit den Hidden Neurons ZK1 bis ZKNK und dann haben wir wieder eine beliebige Anzahl von Hidden Neurons und ganz am Ende haben wir wieder unsere Output Layer. In dem Fall bin ich bei den zwei Output Y1-Dach und Y2-Dach geblieben. Sie können hier natürlich aber auch nur einen Output haben Y1-Dach oder eben beliebig viele, je nachdem welche Problemstellung Sie denn mit dieser Architektur oder mit dieser Topologie des Netzes lösen möchten. Wie lässt sich denn jetzt nun hier ein Hidden Neuron der Karten Layer denn darstellen? Wir bleiben bei unserer Notation, dass der Bayes gleich eins ist und wir stellen uns jetzt die Frage aus der Karten Hidden Layer, das J Neuron ZKJ. Wie ist das denn geschaffen? Wie sieht das denn aus? Wir haben hier wieder unseren gewichteten Bayes der Karten Layer plus die gewichtete Summe mit den Gewichten der Karten Layer. Aber diesmal passen Sie auf, haben Sie die Ergebnisse der Aktivierungsfunktion der vorherigen Layer, also der ZK-1J. Das bedeutet, Sie haben hier nicht mehr die Inputs stehen, so wie wir es in unserem multiplen Perceptron Modell gesehen haben, sondern wir haben hier die Aktivierungsfunktionergebnisse aufsummiert der vorherigen Schicht und die gewichtet geben wieder hier unseren Input für unsere neue Layer. Das ist das Prinzip, das ich Ihnen hier schon mehrfach erläutert habe. Ich wiederhole das gerne noch einmal. Wir haben Karten Layer. In der Karten Hidden Layer betrachten wir uns das Hidden Neuron ZJ aus der Karten Layer und das setzt sich zusammen aus dem gewichteten Bayes der Karten Layer plus der Aggregation der Aktivierungsfunktionergebnisse der vorherigen Layer und diese gewichtet. So, was fange ich jetzt denn damit an? Wie kann ich das denn optimieren? Was bringt mir das denn? Um das zu verstehen, müssen wir uns zunächst einmal mit zwei Konzepten befassen, und zwar dem Gradient Descentverfahren und Verlustfunktion, also Lost Functions, und ich gebe Ihnen hier einen kurzen Überblick. Wir beginnen hier mit den Verlustfunktionen und zwar erst einmal noch mal einen Schritt zurück. Wir haben gerade gesehen, wie sich ein Deep Learning Neural Network denn zusammensetzt und errechnet, wie man diesen Output durch das Netzwerk berechnen kann. Dieser Output ist eine Schätzung des Netzwerkes, welchen man mit den realen Daten validieren und vergleichen möchte. Daher haben wir auch im Machine Learning diesen Teil mit, wir splitten unsere Daten in Test Trainings und Validierungs sets durchgeführt. Diese ganze Übung dient dazu, die Ergebnisse unseres Algorithmus, die Ergebnisse des neuronalen Netzes mit den realen Daten zu vergleichen und zu validieren, um festzustellen, ob das, was wir hier sehr, sehr, sehr aufwendig berechnen, auch irgendwo einen Sinn hat, in statistisch annehmbaren Grenzen liegt und wirklich eine Genauigkeit besitzt, mit der man auch arbeiten kann und interpretierbare, verwertbare Ergebnisse erzielen kann. Ich habe es hier anders hingeschrieben. Ich habe hier gesagt, hier ist man an der Schätzgenauigkeit der Prädiktion interessiert. Das bedeutet genau das, wenn wir schon dieses Riesenrad drehen, um Daten zu validieren, in großen Mengen zu bereinigen, um das Ganze einem neuronalen Netzwerk als Input darzureichen, dann aufwendigerweise sehr viel zu berechnen. Da möchten wir natürlich auch ein Ergebnis erhalten, was von der Schätzgenauigkeit, von dem Output her, von der Schätzung sehr genau und sehr exakt ist und so in eine Art und Weise, dass wir damit arbeiten können. Und diese Schätzgenauigkeit möchte natürlich in irgendeiner Art und Weise bestimmt werden. Um diese zu bestimmen, bedient man sich sogenannte Kosten- oder Verlustfunktionen zu Englisch, Loss- oder Kostfunctions. Und diese Lossfunktionen dient dazu, die Divergence zwischen realen versus vorhergesagten Daten zu bestimmen. Das heißt, wir benutzen diese Verlustfunktion, um festzustellen, wie weit ist denn unsere Schätzung, wie unser neuronales Netz uns ausgibt? Das neuronales Netz sagt jetzt hier, Lieber Dozent Vogel, meine Ergebnisse sind fünf und viel Spaß damit, aber wir wissen jetzt noch nicht, ob diese fünf, die das neuronales Netzwerk mir jetzt nun ausgibt, ob man ja damit tatsächlich arbeiten könnte oder nicht. Wenn die echte Antwort 42 gewesen wäre, dann sind wir da etwas zu weit weg. Wenn die echte Antwort 5,1 gewesen wäre, dann kommt es aber immer noch auf unsere Problemstellung an, ob die 5,1 von der 5 nicht doch zu weit weg ist. Sie sehen, es ist gar nicht so einfach, festzulegen, wann unsere Schätzgenauigkeit denn hinreichend ist und wann wir damit arbeiten können. Und ich habe Ihnen das hier mal für ein Deep Learning Neural Network im Allgemeinen hingeschrieben. Ich habe Ihnen hier mal die Verlustfunktion J von W hingeschrieben. Das ist effektiv der Durchschnitt der Verlustfunktion über eben die Inputs, die gewichtet wurden und die Outputs. Und es gibt hier eben verschiedene Verlustfunktionen, die wir für dieses L in der obigen Funktion hernehmen können. Es gibt die Quadratic Cost Functions. Es gibt die Mean Squared Error Loss Functions. Die MSEs haben wir bereits kennengelernt, als wir uns mit den Regressionsverlustmaßen im Teil Regressions, das Supervised Learnings befasst haben. Und es gibt natürlich noch die Binary Cross Entropy Losses. Entropy hatten wir im Teil über Classifications, dass es so etwas gibt. Und ich werde Ihnen nun im folgenden Mal nochmal diese Verlustfunktionen vorstellen, damit Sie auch eine Idee haben, wie das ganze denn aussehen kann. Den MSE haben wir ja wie gerade schon erwähnt in der Vorlesung schon gehört. Der ist nichts anderes, wie hier eben unser echter Output minus unsere Schätzung, unsere Prediction quadriert und aufsummiert, also die sumierte, quadrierte Abweichung und daraus ein Mittelwert berechnet. Das steht ja auch schon im Namen Mean Squared Error. Genau das berechnen wir hier auch, unsere YIs, das sind unsere realen Werte, minus eben unsere Funktion der Impuls und der Gewichte, das ist unsere Prediction. Und wir berechnen hier die Differenz davon, quadrieren das ganze umbildende Durchschnitt. Das hier ist dann unsere Verlustfunktion, das haben wir schon kennengelernt. Die Cross Entropy, die ist etwas komplexer, funktioniert aber in etwa ähnlich. Wir haben hier unsere YIs mal den Logarhythmus der Prediction plus 1 minus den realen Werten mal dem Logarhythmus von 1 minus der Prediction und das Ergebnis dieser Cross Entropy ist eben als Wahrscheinlichkeit interpretierbar. Ich werde jetzt hier auch nicht so genau darauf eingehen, sollten Sie das jemals brauchen, dann können Sie das in Python direkt implementieren oder ich sehe gezwungen, Sie auf weiterführende Literatur zu verweisen. Wir stellen uns jetzt zunächst einmal die Frage, so was, was bringt uns das denn jetzt eigentlich? Für was berechne ich hier eine Verlustfunktion, für was brauche ich ein deep neural network, was ich mit Daten füttere, die ich vorher aufwendigst überhaupt erst mal erzeugen musste. Es ist ja schön, dass ich jetzt hier einen Verlust habe. Das ist ganz toll, davon kann ich mir bildlich einen Verlustkeks kaufen, aber wie mache ich denn hier jetzt weiter? Das Ziel ist natürlich nun, den Verlust des neuronalen Netzwerkes zu minimieren, um Predictionen zu erhalten, welche so exakt wie möglich sind. Denken Sie kurz drüber nach, wenn unser Fehler, der sich ja zusammensetzt in irgendeiner gearteten Weise aus realer Daten verglichen mit der Schätzung des Netzwerkers, wenn ich diesen Fehler minimiere, bin ich natürlich mit meiner Schätzung sehr, sehr nahe an den realen Werten dran. Deswegen ist diese Minimierung das, was im Training des Netzwerkes geschieht. Wir haben am Anfang in der ersten Vorlesung Machine Learning gelernt, wir müssen unseren Datensatz splitten in Test Training oder Test Training Validierung, je nachdem, wie detailliert sie unterwegs sein möchten und wie genau sie arbeiten möchten. Auf jeden Fall haben wir unseren Datensatz gesplittet in ein Teil, mit dem wir das Netzwerk überhaupt das mal lernen lassen und einen Teil, mit dem wir es danach validieren. Das bedeutet, wir nehmen Teile unsere Daten, trainieren das Netzwerk und danach füttern wir dem Netzwerk neue Daten, die das Netzwerk vorher nicht gekannt hat und schauen, wie gut das dann darauf performt. Das führt dann in diese Thematik, die wir schon besprochen haben mit Uber und Underfitting. Hier ist es allerdings so, wie lernt das Netzwerk denn? Wie trainiert sich das Netzwerk denn? Wie geht das denn überhaupt vonstatten? Und hier ist es so, wir nehmen Inputs, damit lassen wir das Netzwerk einfach mal loslaufen und wir bekommen ein Ergebnis. Dieses Ergebnis wird mit den echten Daten verglichen und wir bekommen ein Verlust. Und diesen Verlust möchten wir natürlich nun minimieren und diese Minimierung ist das, was im Training geschieht. Und genauer dargestellt werden die Gewichte des Netzwerkes angepasst, um einen veränderten Verlust zu erhalten. Denken Sie da doch nochmal drüber nach. Ich habe das formal hier unten mal hingeschrieben, dass wir natürlich eine Minimierung von diesen Gewichten haben wollen, die als Vektor quasi dann eine optimierte Version dieser Verlustfunktion ausgibt. Aber ich lasse diese Formel hier mal beiseite und springe nochmal auf unser Bild hier zurück. Wir haben hier Inputs, die sind fix. Wir haben unsere Daten, die in das Netzwerk hineinfließen. Wenn wir nicht gerade die Daten manipulieren möchten oder neue Daten verwenden, was nicht Ziel der Übung ist, können wir an unsere Input-Layer nicht wirklich was verändern. Wenn wir uns jetzt nun unsere Hidden-Layer ansehen, wie funktioniert die Hidden-Layer. Hier kann ich nochmal gerne auf die Formel springen. Wir haben einen Byes. Ja gut, den kann man ein bisschen verändern, wenn man möchte, aber das ist jetzt auch nicht unbedingt der heilige Graal. Und wir haben hier unsere Summation. Der Ergebnisse von Aktivierungsfunktionen und in diesen Aktivierungsfunktionen steht eben die Hidden-Layer, die da vorstand und diese Hidden-Layer bedient sich aber auch der Inputs. Die sind ja fix. Das heißt, welche Werte kann man denn tatsächlich verändern, um das neuronale Netz anders rechnen zu lassen? Hier gibt es eigentlich nur eine einzige variablen Art, die man verändern kann. Und das sind die Gewichte. Ich springe hier direkt mal nochmal auf unsere aktuelle Folie zurück. Den einzigen Vektor, die einzigen Parameter, an denen wir in dem neuronalen Netzwerk drehen können, sind die Gewichte. Die Inputs sind fix. Die haben wir vorher bereitgestellt. Die kriegen wir so. Damit müssen wir leben. Wir können nicht einfach die Daten manipulieren. Das macht man nicht. Und die Outputs dieser Hidden-Layer bestehen ja eigentlich nur aus gewichteten Inputs durch eine Aktivierungsfunktion geschoben. Die Aktivierungsfunktion ist hier erst mal völlig egal. Die einzigen Variablen, die wir tatsächlich verändern können, die wir aktiv anpassen können, sind natürlich die Gewichtungen. Wenn wir natürlich die Gewichtungen verändern, verändern sich die gewichteten Summierungen der Inputs und dementsprechend liefern die Aktivierungsfunktion andere Outputs. Und wenn natürlich andere Outputs durch das Netzwerk laufen, kommt natürlich am Ende auch eine andere Schätzung heraus. Das heißt, wir stellen hier fest, die einzige Möglichkeit, ein Netzwerk zu trainieren und ein Netzwerk zu optimieren, ist es, die Gewichte entsprechend so anzupassen, dass die Verluste, also Prediction des Netzwerkes gegen Echtdaten so klein wie möglich wird. Das heißt, wir sehen uns der Aufgabe gegenüber, die Gewichte des Netzwerkes so zu verändern, dass die Verlustfunktion minimal wird. Das ist das, was hier unten formal dargestellt ist. Das heißt, wir müssen eine Gewichtsvektor W finden für jede Layer für jedes Neuron, was dazu führt, dass meine Verlustfunktion, die hinten die Schätzung des Netzwerkes mit den Echtdaten vergleicht, so klein wie möglich wird, weil das dann dazu führt, dass unsere Schätzung so genau wie möglich an den realen Daten dran ist unter der Bedingung, dass wir nicht overfinden. So, das wird jetzt etwas komplizierter. Wir haben jetzt natürlich lauter, einfache Beispiele gehabt. Stellen Sie sich ein Deep Learning Null Network vor, was M-Inputs hat, K-Hidden Layer und lassen Sie es nur 2 Outputs sein. Das ist ja egal, aber wir haben hier mehrere Tausende, teilweise mehrere Zehntausende oder noch mehr Neuronen, die ein Gewicht besitzen. Das heißt, wir haben hier ein Optimierungsproblem, was uns vor die Aufgabe stellt, sehr, sehr, sehr viele Gewichte anzupassen. Und da sind die Möglichkeiten natürlich sehr, sehr groß und da müssen wir uns eine nette Möglichkeit ausdenken, wie wir das denn erreichen können überhaupt. Weil, denken Sie mal ein bisschen darüber nach, dass Sie merken, wir machen hier wieder kreatives Denken Vorstellungsvermögen, wenn Sie jetzt natürlich so ein Deep Learning Null Network haben mit M-Inputs und K-Hidden Layern, dann erhalten Sie natürlich eine enddimensionale Oberfläche, bestehend eben aus den Tensoren, mit einer Steigung, welche dem Gradienten der Gewichte entspricht. Möchte man nun eine Optimierung vornehmen, berechnet man normalerweise das erste Differenzial der Verlustfunktion und rechnet das eben aus. Das funktioniert hier aber nicht, weil wir hier nicht nur einfach eine Geradengleichung haben, sondern wir haben Tensoren und bei Tensoren nimmt man hier eben analog den Gradienten, den ich Ihnen hier mal hingemalt habe und wie kann ich Ihnen das jetzt dann grafisch verdeutlichen? Ich gehe mal davon aus, dass nicht alle von Ihnen in der Lage sein werden, sich eine enddimensionale Oberfläche vorzustellen mit einem Gradienten drin. Deswegen brechen wir das Ganze jetzt mal auf ein Neuron runter, auf ein einziges. Wir machen das jetzt ganz einfach zweidimensional. Wir haben unser Gewicht und wir haben unsere Kosten und wir haben die Ableitung der Kostenfunktion. Das ist hier diese orange Linie, die Sie sehen können und der Gradient ist in dem Fall nichts anderes wie die Tangente an jedem Punkt, der mir eben die Steigung gibt und was machen wir damit denn jetzt? Sie sehen ganz unten, wir haben eine Minimumkostenfunktion und wir möchten genau diese Gewichte haben. Dieses Gewicht haben, dass die Kosten minimiert. Das ist die Aufgabe hier, weil wir dann mit unserer Schätzung so nah wie möglich eben an unseren Realdaten da sind und wir haben irgendein Gewicht, mit dem wir das Netzwerk einfach mal haben anfangen lassen zu rechnen. Das ist hier eben oben unser Initial Weight und wir gehen jetzt in Richtung des Gradienten absteigen. Das bedeutet, wir legen an dieses Initial Weight. Das ist ein Punkt auf dieser Ableitungsfunktion der Kosten. Legen wir eine Tangente. Diese Tangente hat eine Steigung in diesem Punkt und hat auch allgemein eine Steigung und wir können jetzt natürlich nach oben gehen, positive Steigung oder wir können nach unten gehen und deswegen heißt das Gradient-Descent-Verfahren, weil wir diesen Gradienten nutzen und in Richtung der absteigenden Steigung, in Absteigend hier hinabgehen. Deswegen heißt das Gradient-Descent-Verfahren. Das heißt, wir gehen jetzt einfach mal einen inkrementellen Schritt nach unten. Das sehen Sie hier an diesen Fallchen und dann machen wir das nochmal. Wir gehen hier ein Stück nach unten und dann berechnen wir diesen Gradienten erneut und so weiter und so weiter und so so lange bis wir unten im Tal bei den minimalen Kosten angekommen sind. Das klingt logisch. Wir haben hier unsere Ableitung der Kostenfunktion und wir gehen solange mit unseren Gewichten, mit unseren Gradienten nach unten bis wir bei den minimalen Kosten angekommen sind, weil dann haben wir die Gewichtskombination, welche uns die minimalen Kosten auskippt, was bedeutet, dass unsere Prediction so genau wie möglich ist. Jetzt haben wir natürlich das Problem, wie ist denn diese Schrittweite, die wir hier gehen wollen? Sie sehen hier, das sind jetzt hier nur ein paar Fallchen, aber effektiv, wie groß machen wir denn diese Schritte? Wir sind immer noch bei unserem ganz vereinfachten Beispiel. Wir sind immer noch bei einem Neuron. Wir sind hier immer noch bei einer zweidimensionalen Kostenfunktion, wie Sie hier sehen können, Kosten und Eingewicht. Und Sie sehen, wenn wir hier die Lernrate sehr groß haben. Das heißt, wenn wir die Schritte zu groß machen, dann haben wir die Gefahr des sogenannten Overshooting. Das bedeutet, dass wir die Schritte zu groß haben und wir einfach über unser Minimum drüber schießen. Das heißt, wir kommen auf der anderen Seite raus und haben das Minimum ein bisschen verfehlt. Das wollen wir natürlich nicht. Und wenn wir die Lernrate, also die iterativen Schritte kleiner machen, dann kommen wir natürlich unten an. Dauert erstens länger und zweitens haben wir das Problem, wenn wir uns nicht mehr in dieser einfachen Welt befinden, dass wir in einem lokalen Minimum stecken bleiben und das lokal und das globale Minimum einfach verpassen. Wie sieht das denn jetzt aus, wenn wir nicht nur Eingewicht haben, sondern wie ich es gerade gesagt habe, ein deep neural Network haben, was aus dutzenden Tausenden Neuron besteht und aus Tensoren besteht, die es zu optimieren gilt oder eben zu minimieren gilt, dann erhalten wir hier eine Oberfläche. Das ist jetzt hier dreidimensional, weil es ist uns einfach nicht möglich, irgendwie tausend Dimensionen grafisch darzustellen. Aber ich denke, sie haben die Idee verinnerlicht, was hier passiert. Sie haben hier auf einmal nicht mehr nur eine Parabelkurve, sondern sie haben hier tatsächlich eine Oberfläche, an der sie das Minimum finden müssen. Und da wird das natürlich interessant. Interessant deswegen, weil wir nicht sofort erkennen können, wo das globale Minimum denn überhaupt liegt. Natürlich, wir haben hier eine dreidimensionale Oberfläche, da ist das vielleicht noch möglich, aber in der Regel haben wir ja mehr wie Dreidimension. Und daher zu gehen und ein globales Minimum zu finden, ist eigentlich ein übertrieben komplexer Vorgang. Also ich sage mal bei unserem einfachen Beispiel, ich klicke hier nochmal zurück, da ist es einfach das Minimum zu finden, es gibt nämlich nur eins, sondern das globale, gleich das lokale Minimum, da haben wir nur einen Minimum. Wenn wir uns jetzt allein schon unsere dreidimensionale Oberfläche hier an sehen, dann sagen sie mir auf den ersten Blick, wo hier das globale Minimum liegt und wie wir dahin kommen. Das ist natürlich in höheren Dimensionen noch viel viel viel anspruchsvoller. Aber was machen wir denn hier? Effektiv genau das gleiche Gradient-Dissent. Das heißt, wir fangen an einem beliebigen Punkt an, gehen die Steigung abwärts hinunter schrittweise und schauen einfach mal, wo wir rauskommen. Und das Ganze ist natürlich nicht nur willkürlich, welche Schritte des Gradient-Dissent-Verfahrens sind notwendig. Wir fangen an und setzen die Gewichte, diesen Gewichtsvektor W einfach mal gemäß einer Normalverteilung zufällig. Wir setzen zufällige Gewichte und wir wiederholen das Ganze dann bis eine Konvergenzeintritt. Solche Folien haben sie, denke ich, nun schon öfter gesehen. Wir setzen irgendetwas zufällig ein und iterieren dann so lange bis irgendetwas eintritt, was wir gerne möchten. Und was machen wir hier denn? Wiederholen bis Konvergenzeintritt, wir berechnen den Gradienten, also die partiezielle Ableitung der Verlustfunktion nach den Gewichten. Dann passen wir die Gewichte an. Dieses Eta, was Sie hier sehen können, das ist eben unsere Lernrate. Das heißt, wir verändern diese Gewichte ein bisschen, je nachdem wie die partielle Ableitung des Gradienten sich eben zusammensetzt. Und dann setzen wir die Gewichte wieder ein und dann fangen wir von vorne an. Ich springe nochmal eine Folie zurück. Sie sehen hier ganz oben, wir fangen zufällig mal auf diesem roten Hügel an und dann gehen wir einen Schritt nach unten. Und dann berechnen wir den Gradienten erneut und dann gehen wir wieder einen Schritt nach unten, solange bis wir nicht mehr weiter kommen. Das ist das, was Sie hier formal sehen. Wir fangen zufällig irgendwo an, dann berechnen wir den Gradienten, gehen in Richtung des Gradientens einen Schritt nach unten. Das machen wir, indem wir die Gewichte anpassen. Und zwar mit einer Lernrate Eta, dann setzen wir diese Gewichte ein und dann wiederholen wir das Ganze immer und immer und immer wieder, solange bis der Gradient sich eben nicht mehr wirklich ändert, bis eine Konvergänz eintritt. Und dann haben wir zumindest mal ein lokales Minimum gefunden. Ob das jetzt nur das globale Minimum ist oder ob es eine Stelle auf diese enddimensionalen Oberfläche gibt, in dem wir eine noch bessere Minimierung erreichen, ist damit allerdings noch gar nicht gesagt. Und da fängt das Problem eigentlich an und da fängt es an, wirklich komplex zu werden. Und da muss ich Sie an dieser Stelle auch einfach auf weiterführende Literatur verweisen, die sich intensiv mit diesem Thema beschäftigt. Eine kleine Warnung vorab, das ist mathematisch, denke ich, etwas anspruchsvoller. Aber für diejenigen, die sich tiefer hier mit befassen wollen, da gibt es eine Riesen-Varietät an Literatur auf verschiedenen Niveaus. Allerdings ist es so, ich kann Ihnen hier zeigen, dieser Vorlesung, dass es dieses Gradient, die Sendverfahren gibt, was es tut, wie man natürlich solche Probleme löst. Ich bin jetzt in einem lokalen Minimum gelandet. Ich möchte aber ein anderes haben oder weiß ich denn jetzt überhaupt, dass das mein lokales Minimum ist oder ist das das globale Minimum? Ich weiß es ja vor, eine herein schon gar nicht. Und das ist eine sehr komplexe Aufgabe, der wir uns hier nicht mehr widmen können. Wir machen jetzt Folgendes. Wir haben jetzt gesehen, okay, wie können wir die Gewichte anpassen, so dass wir eben die Verlustfunktion minimieren. Das ist das, was wir gerade mit dem Gradient, die Sendverfahren kennengelernt haben. Wir haben Inputs, die fließen durch ein neuronales Netzwerk. Das liefert uns einen Output. Diesen Output vergleichen wir mit unseren realen Daten. Wir rechnen einen Verlust, der sich aus einer vordefinierten Verlustefinition speist. Und dann wollen wir das Ganze irgendwie noch minimieren. Wir wollen unseren Fehler, den wir machen, so klein wie möglich haben. Daher bedienen wir uns dem Gradient-Sendverfahren. Was uns die Gewichte so anpasst in unserem Netzwerk, dass wir eine Minimierung der Verlustfunktion erhalten. Und jetzt ist natürlich die Frage, wie lernt denn jetzt unser Netzwerk? Wie passiert das denn überhaupt? Wie passen sich denn nun die Gewichte in unserem Netzwerk denn überhaupt an? Wie funktioniert das denn? Und hier sprechen wir von der sogenannten Backpropagation. Und das ist ein Verfahren, welches das überwachte Lernen des Netzes beinhaltet. Und hier eben mittels dieses Gradient-Desend-Verfahrens. Und die Berechnung erfolgt hier über die partiellen Ableitungen der Verlustfunktion mittels der Kettenregel für alle Gewichte. Wenn Sie jetzt natürlich ein Deep Learning Neural Network haben mit, lassen Sie es 100.000 Einheiten, 100.000 Neuronen sein, dann sind Sie hier erst mal eine Weile beschäftigt und brauchen immense Rechenleistung. Ich zeige Ihnen das hier einfach mal an einem Beispiel, an unserem Gewicht für W2. Also wir haben hier einen Input X, der wird gewichtet mit dem Gewicht der ersten Layer. Daraus wird der Neuronenwert der ersten Hidden Layer berechnet. Dieser wird dann wieder gewichtet und durch eine Aktivierungsfunktion geschoben, solange bis wir unseren Output erhalten und daraus berechnen wir unsere Verlustfunktion. Wenn wir jetzt das natürlich optimieren möchten, müssen wir natürlich unsere Gewichte W1 und W2 so anpassen, dass unser J von W minimiert wird. Nachdem wir jetzt gesagt haben, wir schauen uns nur das Beispiel W2 an, bedeutet das natürlich, dass wir unsere partielle Ableitung der Verlustfunktion nach W2 berechnen müssen. Und das ist unsere partielle Ableitung der Verlustfunktion nach dem geschätzten Output, mal die Ableitung des geschätzten Outputs nach dem Gewicht, Kettenregel. Und das müssen wir natürlich nicht nur für ein einziges Gewicht machen, sondern für alle. Das klang jetzt sehr spannend, das ist sehr aufwändig. Und wie können wir denn nun diese Lernrate optimieren? Das klingt natürlich sehr langwierig. Ich habe jetzt 10.000 Gewichte, die ich berechnen muss. Das ist schon zeitaufwändig. Gibt es denn Möglichkeiten, hier schneller zu sein? Kann man dieses Netzwerk schneller und besser trainieren? Muss ich wirklich jeden einzelnen Punkt einzeln abwandern, wenn ich in diese Oberfläche hinein laufe oder gibt es andere Möglichkeiten? Ich habe Ihnen hier mal einen Auszug von den gängigsten Algorithmen gegeben. Das, was wir gerade gesehen haben, den Plain Vanilla Gradient Descent, dann gibt es noch eine adaptive Möglichkeit, einen Adaptive Gradient Descent, zum Beispiel das Adam Verfahren. Das ist sehr gut. Das werden wir in den Coding-Videos auch noch kennenlernen. Hier wird nicht jeder Schritt berechnet, sondern die Schrittweite wird dynamisch angepasst. Das heißt, unsere Lernrate Eta variiert, je nachdem, wo wir uns dann auf der Oberfläche gerade befinden. Und es gibt noch ein Stochastik-Gradient Descent-Verfahren, was sich kleiner Batches bedient. Das heißt, es wird nicht alles gleichzeitig berechnet, sondern in Scheibchen. Und das ist dann natürlich schneller. Da geht es natürlich auch darum, was wir hier in dieser Vorlesung machen werden, sind sehr, sehr kleine neuronale Netze mit sehr überschaubaren Datenmengen, die man lokal auf einem Computer speichern und erzeugen kann. Wenn Sie jetzt natürlich einen Big Data Lake haben und serverseitig hier in Google Style riesengroße Netzwerktopologien implementieren möchten, dann wird das natürlich etwas spannend. Und da ist natürlich dann auch Zeit ein Kostenfaktor. Wir haben ja in der Vorlesung über Data Science Teil 1 gelernt, das Data Science dazu dienen soll, geschäftskritische Fragestellungen und Probleme zu lösen. Wenn Sie jetzt natürlich Ihr neuronales Netzwerk dazu nehmen möchten, Produktionsprozesse anzupassen oder ein neues Produkt auf den Markt zu bringen, da ist es natürlich so, wenn Ihr Netzwerken, abgesehen von den Energie- und Hardwarekosten, wenn Sie damals zwei, drei, vier Wochen davor sitzen müssen, bis Sie überhaupt Ergebnisse haben, kostet das natürlich Ressourcen und Geld. Und wenn Sie natürlich einen Alkorithmus implementieren können, der Ihnen etwa ähnliche Ergebnisse liefert, aber nur eine Woche rechnet, dann haben Sie sich quasi ein faktisches Monatsgehalt für Ihr ganzes Team gespart. Und da ist es schon schön, wenn Sie Verfahren haben, die das Ganze schneller machen können. Und wir verlassen das jetzt auch schon wieder. Sie merken, es ist mir im Umfang dieser Vorlesung nicht möglich, noch tiefer in die Materie einzusteigen. Bevor wir uns nun der Regularisierung widmen, wiederhole ich nochmal im kurzen Recap, was haben wir denn bisher gelernt? Wir haben gelernt, wir haben eine Input-Layer, wir haben mehrere Hidden-Layer und wir haben eine Output-Layer und wir sprechen von Deep Learning Neural Networks, wenn wir mehr wie zwei Hidden-Layer aufweisen. Wir haben diese Impots, die werden gewichtet, laufen dann als neue Inputs in unsere Hidden-Layer rein, werden dort aggregiert und mittels eine Aktivierungsfunktion als neue Output herausgegeben, was eben unserem Output dazu dient, das nochmal zu aggregieren, nochmal zu gewichten, dann kommen wir zu einem Ergebnis, unser Netzwerk, dem wir Daten füttern. Dieses Netzwerk erzeugt uns eine Schätzung, die wir mit den echten Daten vergleichen können, je nachdem, wie groß unser Fehler ist, möchten wir den natürlich reduzieren, damit wir genauere Schätzungen abgeben können und damit das Netzwerk genauer arbeiten kann. Und dazu bedienen wir uns eine Verlustfunktion. Wir nehmen die Prediction, die unser Netzwerk uns auskiebt und vergleichen die mit den totalen Daten und berechnen anhand einer Verlustfunktion einen Fehlerwert. Diesen möchten wir minimieren. Diese Minimierung ist allerdings nur möglich, indem wir die Gewichte anpassen, weil die Gewichte des Netzwerkes die einzigen Faktoren sind, die wir aktiv verändern können. Und nachdem wir nicht nur ein Gewicht haben, sondern viele bedienen wir uns dem Gradient, die Sendverfahren, was es uns erlaubt, zumindest mal ein lokales Minimum zu finden und schrittweise herzugehen und eben diese Verlustfunktion zu minimieren. Diese Minimierung erfolgt dadurch, dass wir die Gewichte anpassen, entsprechend eine Lernrate und diese Gewichtsanpassung muss ja durch das Netzwerk laufen und das geschieht mittels der Backpropagation, welche anhand der partiellen Ableitungen und der Kettenregel der Verlustfunktion funktioniert. Das war jetzt vielleicht etwas viel, aber das war jetzt das Ganze nochmal in Kurzform. So was ist jetzt Regularisierung? Wir haben zuvor eine Optimierung vorgestellt, bei der wir natürlich unsere Verluste minimieren sollen, aber diese Optimierung hat starke Einschränkungen, vor allem bei der Generalisierung der Netze, das heißt bei der universellen Anwendbarkeit auf verschiedene neue Datensätze. Wir haben natürlich die Problematik des Under- und Overfittings schon gesehen, das haben wir in der ersten Vorlesung schon gehört, aber wir haben halt grundlegend das Problem, dass wenn wir ein Netzwerk trainieren, wir das mit dem Trainingsdatensatz machen und wenn wir das Ganze validieren, also mit dem Test- oder Validierungsdatensatz, dann passt sich das Netzwerk nicht mehr an. Das habe ich vorher noch nicht erwähnt gehabt. Sobald wir das Training abgeschlossen haben und dem Netzwerk neue Daten zur Verfügung stellen, werden sich diese Gewichte nicht mehr verändern. Das machen wir während des Trainings danach nicht mehr. Und nun ist es halt so, wann habe ich denn zu viel trainiert? Wann ist mein Netzwerk auf das Trainingsdatensatz so eingeschossen, dass es neue Daten nicht mehr verarbeiten kann? Oder habe ich zu wenig trainiert, dass es die neuen Daten und die Trainingsdaten nicht wirklich versteht? Und hier gilt es halt, die optimale Trainingsstufe des Netzwerkes zu treffen, um Over- und Underfitting zu vermeiden und ein Netzwerk zu haben, eine deep learning neural network Lösung, die generell einsetzbar ist, egal welchen Daten im Haushalt ich diesen Netzwerk gebe, betreffend halt der Trainingsvorgabe entsprechen. Natürlich, wenn wir ein deep neural network bilden, was Bilder erkennen kann, brauche ich diesen Netzwerk keine Aktienkurse füttern, zum Beispiel. Aber es ist so, dass dieses Netzwerk natürlich Bilder jedwede Art verarbeiten können soll. Und hier haben wir die Problematik, dass wenn wir das Netzwerk generalisieren möchten und generell die optimale Trainingsstufe finden möchten, dann haben wir eine Overfitting Problematik, der wir uns irgendwie widmen müssen. Und Sie haben ja gerade schon gesehen bei dem Gradient descent back propagation Verfahren, dass das an sich schon sehr, sehr, sehr komplex ist. Das ist an sich schon mal nicht einfach überhaupt ein globales Minimum zu finden für höher dimensionale Oberflächen. Und jetzt komme ich auch noch her und sage Ihnen ja bitte noch die optimale Trainingsstufe finden. Das ist nicht ganz trivial, sage ich mal. Und es gibt hier zwei Verfahren, welche hier Abhilfe schaffen können. Das sind die sogenannten Dropouts und das sind sogenannte Early Stoppings. Ich werde das Ganze hier nur in Kürze anreisen. Das ist auch die letzte Folie zu neuronalen Netzen und deep neural networks. Und wir werden diese zwei Verfahren allerdings in unserem Python Coding Videos wiedersehen. Da habe ich Ihnen ein Skript erstellt, in denen Sie damit mal selber rumspielen können. Was sind denn jetzt Dropouts? Dropouts ist ein gewisser Prozentsatz der Neuronen, der die nächste Iteration nicht durchlaufen wird. Also die werden ausgestoppt, die werden ausgebremst, die werden angehalten und nicht angepasst. Das führt dazu Overfitting zu verhindern. Das heißt, ich nehme einen gewissen Prozentsatz meiner Neuronen, eines Layers und diese Gewichte werde ich im nächsten Iterationsschritt nicht anpassen. Und das kann ich natürlich für jede Schicht machen. Und es gibt das sogenannte Early Stopping. Das ist ein automatisierter Trainingsstopp, sofern der Validierungsfehler zu groß wird. Und hier kommen wir jetzt mal um die lange, lange, lange Schleife, dieses Test Training und Validierungs Set Splits zu schließen. Ich bilde ein Validierungs Set und wenn dieser Validierungsfehler auf Basis dieses Validierungs Set zu groß wird, bricht das Training des Netzwerkes automatisiert ab. Das werden wir auch in unseren Coding Videos noch sehen. Also mit Dropouts und Early Stoppings haben Sie natürlich die Möglichkeit, hier eine gewisse Kontrolle hineinzubekommen und bei Early Stoppings haben Sie halt den großen Vorteil, dass Sie nicht selber raten oder irgendwie herausfinden müssen, wann denn nun genug genug ist, sondern das wird ja automatisiert durchgeführt. Was wir jetzt noch machen werden, was ich Ihnen hier noch mitgebracht habe, ist ein Ausblick und weitere technologische Möglichkeiten. Das heißt, wir werden um diese Veranstaltungen abzuschließen. Kurz Exkurse machen in diese Themenfelder, die Sie hier unten sehen können. Wir werden noch mal evolutionäre Algorithmen und neuronale Netze kombinieren, im sogenannten Neat Algorithmus. Den werden wir auch in den Python-Videos noch mal selbstständig erarbeiten. Den können Sie dann ausführen. Wir werden einen ganz kurzen, einen sehr, sehr kurzen Exkurs in Natural Language Processing machen, in Speech Recognition, in Recommender Systems, in Blockchain und Cryptocurrencies und wir werden noch mit IoT und Big Data arbeiten. Das ist das, was wir jetzt in der restlichen Veranstaltung noch anreißen werden. Der Grund, warum ich diese Exkurse mit hier aufgenommen habe, ist, weil eben diese Vorlesung ein Top-Down-Ansatz für Data Science sein soll und ich es mit mir nicht vereinbaren konnte, Ihnen diese Dinge vorzuhalten und selbst wenn die jetzt hier nur sehr kurz angerissen werden, möchte ich, dass Sie zumindest wissen, worum es denn hier geht, damit Sie nicht dieser Basswörterrei zum Opferfall, die ich eingangs in dieser Vorlesung erwähnt habe. Wir beginnen hier direkt mal mit dem ersten Kurz Exkurs und zwar mit dem Neat Algorithmus, dem Neuro Evolution of Augmenting Topologies und was ist das denn? Das ist ein genetischer Algorithmus, welcher die Topologie als auch die Gewichte der Verbindungen im neuronalen Netz evolviert. Das heißt, das ist ein Algorithmus, der die Topologie und die Gewichte des Netzwerkes selbstständig anpassen kann und quasi im Sinne genetischer Algorithmen entwickelt und natürlich auch in einem Generationsmodell grundsätzlich die zu favorisierenden Elemente weiterführt und den Rest als obsolet entfallen lässt. Das werden wir später noch sehen. Ich habe Ihnen unten hier mal so ein Sinnbild dazu geparkt. Die Kernessenz ist, wir können neuronale Netzwerke und genetische Algorithmen verbinden in einer Art, dass das Netzwerk tatsächlich eine Evolution unterliegt. Da sind wir schon sehr nahe an dem Sinnbild, was wir eigentlich mit den neuronalen Netzen erreichen möchten. Wir möchten, dass die sich entwickeln. Wir möchten daraus wirklich eine künstliche Intelligenz züchten und das ist mit diesen Neat Algorithmen schon ganz gut. Sie werden auch in den Coding-Videos sehen, dass man damit fenomenale Ergebnisse erreichen kann und mehr möchte ich hierzu eigentlich gar nicht sagen. Wir sehen den Rest in Python und sind mit diesem ersten Exkurs schon wieder durch. Ich möchte hier als nächstes auch ganz kurz in der Kürze der Würze in die Sprachverarbeitung hineingehen, also nicht nur in die Speech Recognition, die beschäftigt nachher noch, sondern in die Natural Language Processing. Und zwar, was ist das denn? Das ist sogenannte Computer-Linguistik, die erforscht die maschinelle Verarbeitung natürlicher Sprachen. Sie erarbeitet die theoretischen Grundlagen der Darstellung, Erkennung und Erzeugung gesprochener und geschriebener Sprache durch Maschinen. Bei Natural Language Processing an sich geht es hier in erster Linie einmal um Textverarbeitung. Wie kann ich denn einem Computer beibringen, geschriebenen Text zu verstehen und auszuwerten? Hier haben wir in unserem Lehrstuhl auch schon ein Research Paper dazu geschrieben, das befindet sich in Veröffentlichung. Und man kann hier im Natural Language Processing eigentlich zwischen zwei Dingen entscheiden, unterschreiten zwischen dem Syntax. Hier gibt es die Grammar Induction, Lematization, Morphological Segmentation, Parsing-Elemente, Stamming und Word Segmentations, die man hier ausführen kann. Und es gibt zum Zweiten die Semantik, in dem man hier Maschinentranslations eingeben kann, Named Entity Recognitions und andere Möglichkeiten hat, eben geschriebener Sprache durch einen Computer verarbeiten zu lassen. Ich denke eines dieser Beispiele, was jeder von Ihnen, wenn Sie die Hand aufs Herz legen, wahrscheinlich öfter nutzt, wie er es offiziell zugeben möchte, ist Diebel, der es Ihnen erlaubt, eben Sprachen ineinander zu übersetzen auf Basis einer künstlichen Intelligenz. Hier wird auch Natural Language Processing verwendet. Nachdem wir gerade schon in der Computerlinguistik sind, ist es auch so, dass wir nicht nur den geschriebenen Text verarbeiten können, sondern es ist auch möglich, Sprache, die gesprochene Sprache, so wie Sie, Sie gerade von mir hören, durch einen Computer verarbeiten zu lassen. Und die automatische Spracherkennung ist ein Teilgebiet der angewandten Informatik, der Ingenieurswissenschaften und ebenfalls auch der Computerlinguistik. Sie beschäftigt sich mit der Untersuchung und Entwicklung von Verfahren, die Computern, die gesprochene Sprache der automatischen Datenerfassung zugänglich macht. Die Spracherkennung ist zu unterscheiden von der Stimm- bzw. Sprecherkennung, die einem biometrischen Verfahren zur Personen- Identifikation folgt. Das heißt, wenn Sie jetzt einen Sprachgesteuertes Schloss haben, wo Sie sagen müssen, mein Name ist Elfrieder, dann ist es nichts, was mit Speech Recognition zu tun hat, sondern dann ist es ein biometrisches Verfahren. Das müssen Sie bitte unterscheiden. Die Speech Recognition befasst sich damit, die gesprochene Sprache als Daten einem Computer nutzbar zugänglich zu machen. Und ich habe Ihnen hier auch einmal ein Sinnbild dargestellt, wie das denn funktionieren kann. Sie haben die analoge Sprache, das ist das, was Sie bei mir jetzt zum Beispiel hören. Das wird verarbeitet in Referenzvektoren und wird einem sogenannten Decoder übergeben. Das ist quasi die Erkennung. Hier wird ein akustisches Modell gebildet, wo quasi gewisse Frequenzen, gewissen Wörtern zugeordnet werden, die mit einem Wörterbuch einem Dictionary übersetzt werden und als Text ausgegeben werden oder eben Wiedereilsprache. So kann man ein gesamtes Sprachmodell bauen und man kann natürlich auch hier die Liste der bestehenden Wörter extrahieren. Wenn Sie sich natürlich jetzt beim MIT ein bisschen umschauen, gibt es da auch Deep Learning Veranstaltungen und ich möchte, dass Ihnen jetzt nicht vorenthalten, was man mit auch Facial Recognition Software und Speech Recognition Software im Einklang alles erreichen kann und erlaube es mir hier einfach in die MIT Deep Learning Vorlesung hineinzuspringen, um Ihnen diesen Auszug zu zeigen. Das ist der vierte Jahr. Jetzt lernen wir diesen Auszug. Und jedes Jahr sieht es einfach, dass es größer und größer ist. 6S191 ist ein 1-week intensiver Bootcamp auf alles Deep Learning. In der Zeit, an diesem Punkt, habe ich oft versucht, Sie eine Synopsis über den Auszug zu geben und zu erzählen, dass Sie alle die wahnsinnigen Dinge, die Sie lernen werden, Sie werden die Fundamentale in Deep Learning bekommen und ein bisschen praktischer Knowledge über die Art, wie Sie die Algorithmen der Deep Learning in Ihrer eigenen Forschung und auf ein paar coole, lab-geladene Softwareprojekte. Aber dieses Jahr habe ich mir gedacht, dass wir etwas anders machen können. Und statt von mir zu erzählen, wie groß das Auszug ist, habe ich mir gedacht, dass wir jemanden aus der Außenklasse einzuschauen, um das zu machen. Also schauen wir uns das erst mal an. MIT 6S191. Die offizielle introductory Kurs auf Deep Learning, taught here at MIT. Deep Learning ist revolutionisiert in so many fields, from robotics to medicine and everything in between. You'll learn the fundamentals of this field and how you can build some of these incredible algorithms. In fact, this entire speech and video are not real and were created using deep learning and artificial intelligence. And in this class, you'll learn how. It has been an honor to speak with you today. We are now talking about NLP and Speech Recognition. And just go on with recommender systems. And what are recommender systems? These are recommendation services. And they always come in handy when it's a huge amount of objects. For example products, music pieces, films or news articles. And so on. From which users should be recommended a small amount of them. It might sound like it's not so reliable yet. Ich werfe jetzt allerdings einfach mal 2, 3 Wörter hier rein. Amazon Prime und Netflix. YouTube. Ich denke, das haben sie schon gehört. Andere Kunden haben sich ebenfalls angesehen. Andere Kunden haben sich für folgende Produkte interessiert. Andere Nutzer schauten sich folgende Videos ebenfalls an. Andere Nutzer haben folgenden Filmen gesehen. Das sind recommender Systeme. Und dabei geht es meist darum dem Benutzer, das Entdecken für ihn neuer und interessanter Objekte zu erleichtern. Das heißt, ich möchte als Anbieter, z.B. ich bin jetzt Netflix, ich möchte ihnen es erleichtern, Serien und Filme zu sehen, die ihnen zusagen und die sie interessieren könnten. Und Ziel des Betreibers eines Empfehlungsdienstes ist die Umsatzsteigerung, z.B. bei der Empfehlung von Produkten. Wenn ich jetzt nicht mehr Netflix bin, sondern Amazon, und sie interessieren sich für ein Buch über neuronale Netzwerke, dann wird ihnen, wenn sie sich die Seite dann erneut anschauen, wahrscheinlich das eine oder andere weitere Buch, die Systeme entfällt, es ins Auge springen. Natürlich ist das Interesse dahinter ein rein wirtschaftliches. Es ist niemand daran interessiert, sie glücklich zu machen, weil wir wollen alle nur ihr Bestes und zwar ihr Geld. Weil wenn ich was finde, was sie glücklich macht an meinen Produkten, wenn sie sich für das Deep Learning Buch so sehr interessieren, dass sie daraus glücklich werden, dann sind sie auch dazu geneigt, noch eins zu kaufen. Und um noch eins kaufen zu können, ist es natürlich einfacher, wenn ich ihnen das natürlich in der Box nebenan zum sofort kaufen, einfach anzeige. Und jetzt ist es natürlich so, dass ich als Anbieter hier eine Nutzensteigerung meines Angebots erreichen möchte. Ist natürlich logisch, ich möchte ihnen hier Sachen verkaufen. Wenn sie dabei noch glücklich sind, umso besser. Aber jetzt ist halt die Frage. Ich kann natürlich als Amazon nicht jeden meiner Kunden persönlich fragen, hey, was sind denn deine Vorlieben? Was magst du denn gerne so? Wie mache ich das denn? Und dazu nutze ich Recommender Systems. Recommender Systems lassen sich in drei Kategorien einteilen. Einmal Content-Based, Collaborative Filtering, also auch Model-Based, Memory-Based. Und es gibt Hybridemethoden. Ja, da gibt es verschiedene Möglichkeiten. Ich habe ihnen das hier in Kürze mal zusammengepackt. Es gibt Collaborative Information, also die User-Item-Interaktionsmatrix. Das heißt, ich sehe, welche Produkte sie denn interessiert haben von allen meinen Produkten, die ich habe. Und ich sehe, welche dieser Nutzer quasi diese Produkte geliked oder eben auch bestellt hat. Und wenn ich dazu noch quasi die Features, die Sie als Kunde haben, dazu parken und die Produktfeatures dazu parken und das in ein etwas komplexes Modell schaufeln, um das umgangssprachlich auszudrücken, dann komme ich natürlich dazu, Ihnen empfehlen zu können, was Sie denn mögen könnten. Und ich habe Ihnen hier nur ein kurzes Beispiel mitgebracht, wo Sie eben diese User-Item-Interaktionsmatrix haben mit N-Users und M-Items. Und wenn Sie die Bund anmalen, können Sie natürlich mit Klassifikationsalgorithmen wie K-Nearest Neighbors in dieser Matrix quasi Kategorisierungen erstellen, die den Produkten zuweisen und eben diese Labels so benennen, dass das halt positiv, neutral oder negativ gelabelt ist. Das heißt, diese Produkte besser nicht vorschlagen, diese Produkte vorschlagen. Ich bin jetzt mal sehr ketzerisch und sage, dass es wahrscheinlich nicht empfehlenswert ist, einem Kunden, der sich 10 Bücher über vegane Ernährung, Umweltschutz und Fridays for Futures gekauft hat, das Grillbuch für die Haltungsform 1 vorzuschlagen. Das kommt vielleicht nicht ganz so gut an wie ein weiteres Buch, wie rette ich die Welt für Fortgeschrittener. Und Sie können hier natürlich mit diesen ganzen Maschinen-Learning-Algorithmen, die wir hier in dieser Veranstaltung kennengelernt haben, solche Recommendersysteme aufbauen. Der Aufbau-Säure-Systeme ist allerdings sehr komplex, deswegen habe ich hier nur ein Exkurs daraus gemacht, um Ihnen das einfach mal zu zeigen, wie denn die Welt um sie rum eigentlich funktioniert. Wir, wenn wir Netflix schauen, wenn wir uns auf Amazon Prime bewegen, wenn wir uns auf YouTube bewegen, wenn wir uns auf Amazon auf dem Marktplatz bewegen, egal wo wir uns online bewegen, egal wo wir einen Benutzer-Account haben, bei den ganzen großen Anbietern laufen solche Recommendersysteme im Hintergrund und versuchen uns natürlich, die Dinge, die wir mögen, mit weiteren Dingen, die wir mögen, können schmackhaft zu machen. Und es funktioniert, wenn wir jetzt ehrlich sind und mal in uns gehen, wie oft haben wir Produkte gekauft, einfach nur, weil sie uns gefallen und nebendran mit einer hier sofort Kaufenbox versehen wurden, die wir, wenn dieses Produkt uns nicht angezeigt worden wäre, gar nicht erst angeschaut hätten. Also diese Recommendersysteme sind sehr mächtig und deswegen war es meine Überzeugung, ihnen diese auch mal näher zu bringen. Und wir kommen jetzt zu unserem vorletzten Exkurs, und zwar zu einem sehr gehypten, heiß diskutierten und auch für uns in den Finanzmärkten relevanten Thema, und zwar Blockchain und Cryptocurrencies. Ich denke, es gibt die letzten Jahre kein so ein heiß diskutiertes Thema wie AI und Blockchain. Blockchain ist das, was allen Banken, und das sind vielleicht 90, 95 Prozent aller Banken global, das Wasser kalt den Rücken runterlaufen lässt, weil sie technologisch in der Steinzeit leben und IT-Infrastrukturen aus den 80er Jahren haben und von Technologie keinen blassen Schimmer. Das muss ich jetzt einfach mal so in die Welt reinschmeißen. Blockchain hat die Welt nachhaltig verändert und das ist disruptive Technologie. Das ist ein Beispiel hierfür, wie man ein Zahlungsverkehrsystem oder allgemein ein sicheres System aufbauen kann ohne Banken. Betrachten wir den Zahlungsverkehr ist mit der Blockchain eine Bank redundant. Das ist eine Wahrheit, die möchte kein Vorstand hören. Das ist eine Wahrheit, die möchte kein Banker wahrhaben und das ist eine Wahrheit, die die großen Konzerne vielleicht verstehen und vielleicht irgendwie für sich nutzbar machen wollen, aber die langfristig gesehen den Bankenkonkurrenz macht und die für Banken, Staatssysteme und Finanzmarktsysteme, ECB und sonstige gefährlich sein kann. Weswegen in den Medien und auch bei der Berichtserstattung Cryptocurrencies nicht als Zahlungsmittel anerkannt werden oder eben die Banken kreifern, kreifern und hetzen gegen diese Technologie bis sie verstanden haben, dass sie dagegen einfach absolut nichts tun können und nun mehr schlecht als recht versuchen sich dieser Technologie her zu werden und 95 Prozent davon werden scheitern und das ist sehr ketzerisch, das ist sehr provokativ und ich stehe hier aber auch einfach dazu. Blockchain ist eine Technologie, die unser Leben nachhaltig verändern wird in den USA ist es inzwischen möglich, sich mit Kryptowährungen, die auf der Blockchain basieren Häuser zu kaufen die Technologie lässt sich in diesem Sinne und das spreche ich ein bisschen Elon Musk nicht aufhalten und da kann eine ECB und da können die Banken dieser Welt sich auf den Kopf stellen die Blockchain wird bleiben, die Blockchain ist da und die Blockchain wird sie die nächsten Jahre weiterhin herausfordern und was ist denn jetzt eine Blockchain? Blockchain ist ein unglaublich gehypter Begriff genauso wie Bitcoins als Cryptocurrency auch es gibt so viele windige Start-ups, die sagen wir machen hier ein AI getriebenes Blockchain-Tech-Unternehmen und sitzen dann im letzten Endes in irgendeinem Loch und tippen die Daten per Hand ein aber hauptsach einmal Millionen von Fördergeldern eingesammelt Sie merken ich schweife schon wieder ab ich komme jetzt einfach mal zum Punkt eine Blockchain ist eine kontinuierlich erweiterbare Liste von Datensätzen, so genannten Blöcken die mittels kryptografischer Verfahren miteinander verkettert sind klingt jetzt nicht mehr so spannend und nicht mehr so gehyped und irgendwie auf einmal ganz nüchtern und jeder dieser Blöcke also jeder dieser Datensätze enthält dabei typischerweise einen kryptografisch sicheren Hash also einen Streuwert des vorhergehenden Blocks einen Zeitstempel und eben Transaktionsdaten und dieses Konzept wird als Distributed Ledger Technology dezentral geführte Kontobuchtechnologie oder DLT bezeichnet was heißt das jetzt ich habe einen Datensatz der wird kryptografisch mit dem nächsten Datensatz verknüpft und basiert auf dem Block auf dem Datensatz der zuvor in der Kette in dieser Liste steht und das ist quasi eine dezentrale Kontobuchtechnologie warum habe ich jetzt so auf den Banken rumgeritten warum habe ich jetzt hier ein bisschen Finanzbanken und Finanzmarkt System bashing betrieben ist was ist denn die Hauptaufgabe abgesehen von diesen ganzen korrupten Deutsch Bank Investment Banking Geschichten was eine Bank tun soll Kontoführung diese Technologie diese Blockchain Technologie erlaubt es Kontoführung ohne Banken zu betreiben und das ist disruptiv und das streut in diese ganze Branche rein weil jede Bank in ihrem innersten Kern ihre Aufgabe entmächtigt wurde durch eine Blockchain und wie genau funktioniert das jetzt nochmal ich nehme das Beispiel was jedem von ihnen bekannt sein sollte wir reden jetzt mal über Bitcoins es gibt aber tausende verschiedene Kryptowährungen die auch teilweise auf anderen mathematischen Konzepten beruhen und auf anderen Rechenarten ich beziehe mich hier einfach auf dem Bitcoin weil das eben das erste ist was aufkam und was den meisten natürlich auch ein Begriff ist und was ist denn jetzt eine Bitcoin die Blockchain ist eine sogenannte Blockkette ist das Journal in dem alle Bitcoin Transaktionen verzeichnet werden sie besteht aus einer Reihe von Datenblocken in denen jeweils eine oder mehrere Transaktionen zusammengefasst und mit einer Prüfsumme versehen sind das heißt diese Daten sind gehasht diese Blocken sind gehasht das heißt um einen neuen Block hin zuzufügen muss der vorherrige Hash mit dem vorherrigen Block validiert werden und neue Blöcke werden in einem rechenintensiven Prozess erschaffen der sich Mining nennt und anschließend über das Netzwerk an die Teilnehmer verbreitet wird die Blockchain so wie es im Moment im Bitcoin vorhanden ist hat derzeit eine Größe von über 262 Gigabyte das ist der Stand aus dem Februar 2020 und wie funktioniert das denn jetzt genau sie haben eine Transaktion das ist ein Block sie haben einen Besitzer der hat ein Public Key und ein Private Key dieser Key wird gehasht und das ist quasi der Hash des Owners des ersten Transaktionsblockes und dieser Hash muss mit dem Key des vorherrigen Owners validiert werden also sie erzeugen sich einen Public Key der wird gehasht und dieser Hash muss zum Private Key und zum Key des vorherrigen Besitzers passen sonst ist die Blockchain korrumpiert und sie können nicht weitermachen das heißt in kompliziert und weise ausgedrückt dass diese Kette stimmt es ist nicht möglich so einfach möglich hier irgendwelche Betrügereien einzubauen weil das natürlich von vornherein validiert werden muss man nimmt quasi den Public Key des ersten Owners um natürlich dann die Verifikation des vorherrigen Owners zu falsifizieren dass sie neben den Private Key des ersten Owners und validieren quasi damit den nächsten Block und so weiter das ist das was sie hier sehen das ist die Grundidee von Blockchain und das ist zumindest damals sehr manipulationssicher gewesen weil wie möchten sie hier denn interminieren und das ist eine Technologie die keine Kontoführungsgebühren braucht die keine Transaktionsgebühren nämlich wie die meisten Banken denen sonst nichts mehr einfällt fällt weil sie technologisch noch im Mittelalter leben und das ist gefährlich für viele es ist aber nicht nur so dass Blockchain allein Cryptocurrencies sind das ist ein Punkt den muss ich hier einfach mal klarstellen Blockchain ist nicht nur Cryptocurrencies in den Medien wird das immer breit gereden Blockchain ist gleich Bitcoin ist gleich Kryptowährung ist gleich Cyberkriminalität diese Cyberkriminalität gab es vor 2008 auch schon diese Cyberkriminalität gab es vor Bitcoin auch schon und ich sage ihnen eins die meisten Banken schieben als Argument vor ja das ist ja für kriminelle Aktivitäten gut naja das ist ein schweizer nummeren Konto auch und ich denke das lasse ich hier mal oder ein Briefkasten auf Panama und ich denke ich lasse das jetzt hier einfach mal so stehen also dass es einfach eine neue Art dezentrale Kontoführung der man sich halt anpassen muss und diese Blockchain Technologika nicht nur auf Cryptocurrencies angewandt werden es gibt eine riesen Varietät an Blockchain Transaktionen die losgelöst sind von einer Währung und bevor ich mich jetzt hier in den Details verliere springe ich zu unserem letzten Exkurs Teil und auch zum letzten Teil dieser Vorlesung und zwar so IoT und Big Data IoT Internet of Things ist ein Sammelbegriff für Technologien einer globalen Infrastruktur der Informationsgesellschaften die es ermöglicht physische und virtuelle Gegenstände miteinander zu vernetzen und sie durch Informations- und Kommunikations- Techniken zusammenarbeiten zu lassen Ziel des IoT ist es automatisch relevante Informationen aus der realen Welt zu erfassen miteinander zu verknüpfen und im Netzwerk verfügbar zu machen Ja, was heißt das jetzt? Ich springe direkt mal eine Folie weiter das heißt, dass ich Produktionsmaschinen mit einem Netzwerk verbinden kann und Daten aus der Produktion in Echtzeit verarbeiten kann mittels Machine Learning Algorithmen mittels neuronaler Netzwerke ich kann ganze Fabriken und Produktionssysteme in Echtzeit miteinander verbinden ich kann natürlich auch wenn die eine Produktion um 0,02% absinkt obwohl ich das von außen gar nicht sehen würde direkt Signale an die nächste Produktionshalle senden bittet die Prozesse zu verlangsamen ich kann das durchautomatisieren in Echtzeit das ist das was IoT ist ich kann aus sämtlichen Bereichen der Infrastruktur die wir so kennen Daten in Echtzeit verarbeiten und Maschinen miteinander verknüpfen ich habe ihnen hier mal noch eine nette Übersicht mitgebracht in der sie das nochmal ansehen können und das führt uns natürlich auch zu einer immensen Datenmenge die hier auf uns einströmt und deswegen habe ich IoT und Big Data einfach mal zusammengefasst was ist denn nun Big Data? ein Exelsheet ist leider kein Big Data tut mir leid also viele die dann sagen wow wir machen hier Big Data und dann sehe ich vielleicht eine kleine SQL-Datenbank und dann sehe ich ein paar Exelsheets nein einfach nein das ist kein Big Data Big Data bezeichnet Datenmengen welche zu groß zu komplex und zu schnelllebig oder zu schwach strukturiert sind um sie mit manuellen und herkömmlichen Methoden der Datenverarbeitung auszuwerden das heißt die meisten Sachen die wir bisher hier im Kurs kennengelernt haben sind auf Big Data Probleme gar nicht anzuwenden weil die Daten massen zu groß sind und klassische relationale Datenbanksysteme SQL-Datenbanken sowie Statistik und Visualisierungsprogramme sind oft nicht mehr in der Lage derart große Datenmengen überhaupt zu verarbeiten geschweigend das Problem ist bei relationalen Datenbanksystemen wie der SQL-Datenbank dass sich strukturierte Daten benötige die meisten Big Data-Datenlakes sind unstrukturiert die muss ich erstmal in eine Form bringen die ich überhaupt verarbeiten kann und für Big Data kommen daher neue Arten von Datenspeicher- und Analyse-Systemen zum Einsatz die parallel auf bis zu hunderten oder tausenden von Prozessoren beziehungsweise Server-Arbeiten das nennt sich dann Distributed Systems wenn Sie sich da mal ein paar Bücher dazu ansehen könnte ich hier noch eine neue Vorlesung aufsetzen Distributed Systems Architectures also Big Data ist ein ganz anderes Beast wie das was wir hier bisher gemacht haben ja und deswegen wenn Ihnen irgendjemand was erzählt von Axlesheet und Big Data dann rennen Sie bitte aus dem Raum verlassen Sie das Gebäude und holen Sie Hilfe für denjenigen es ist einfach so Big Data wenn Sie jetzt ein Großunternehmen sind was produziert und jede Maschine jede Sekunde Daten liefert und Sie das in der Weile laufen lassen dann bekommen Sie Dimensionen von Daten die Sie sich so gar nicht mehr wirklich vorstellen können wo hunderte hunderttausende von Servern miteinander verbunden werden um solche Datenmassen überhaupt verarbeiten zu können das ist Big Data und ich habe Ihnen zum Abschluss dieser Vorlesung das Ganze noch einmal in eine schöne Grafik gepackt was ist Big Data? wir haben unstrukturierte Daten wir haben strukturierte Daten wir haben Sensordaten das ist das zum Beispiel was in einer Maschine oder in einem Motor vorhanden ist stellen Sie sich einfach mal ein ganz einfaches Beispiel vor Sie haben ein Verbrennungsmotor mit einem Sensor und dieser Sensor liefert Ihnen in Echtzeit Daten über die dynamischen thermodynamischen Prozesse die in diesem Motor ablaufen allein hier bekommen Sie eine Tatennmasse die Sie sich so gar nicht vorstellen können und natürlich gibt es noch Public Data Open Data von den ganzen Messstationen sonstigen Einrichtungen die öffentlich zugänglich sind wir sind in Deutschland hier leider leider was Open Data angeht immer noch im Mittelalter unterwegs in den USA können Sie sich Open Data-mäßig alles was erhoben wird auf Ihren Computer ziehen und da reden Sie auch von ganz vielen Daten ums kurz zu machen wir haben diese Akklimeration von diesen ganzen Datentypen die ich Ihnen gerade erzählt habe und die werden durch Data Analytics Funnel getrieben das heißt die müssen Sie erst mal runter reduzieren im Volumen und je weiter Sie das Volumen dieser Daten herunterschrauben das so höher wird die Qualität nachdem Sie die Daten auch konsensieren und verarbeiten und am Ende haben Sie daraus ein Nutzen in dem Sie kostenreduktion in der Produktion haben können Sie sind schneller Sie machen bessere Entscheidungen und natürlich ist es auch so dass Sie neue produktive Services anbieten können wenn Sie natürlich Produktionsdaten in Echtzeit verarbeiten können und intelligente Produktionssysteme implementieren können die gegenseitig auf eine andere Rücksicht nehmen nenne ich das jetzt mal und das hat nichts aber auch aufs Verrecken nichts mit einem Excel-Sheet zu tun das kann ich jetzt am Schluss nur nochmal richtig plakativ in den Raum werfen Big Data ist eine ganz andere Dimension der Datenverarbeitung und damit bin ich mit meiner Vorlesung hier auch am Ende wir sind mit den Data-Science-Themen fertig ich hoffe Sie haben etwas mitgenommen ich hoffe es hat Ihnen zugesagt es freut mich, dass Sie hier teilgenommen haben und wir werden uns in den Python Coding-Videos wiedersehen sowie zur nächsten Vorlesung über algorithmische Handelssysteme bis dahin wünsche ich Ihnen alles Gute bleiben Sie gesund