 Willkommen zu meiner zweiten Präsentation am Easterhack. Heute geht es, wie man unschwer erkennen kann, um Generative Adversarial Networks. Der Talk wird ein bisschen langweiliger und normaler, wie mein letzter Talk über Security. Wir haben da jetzt einmal die komplette Inhalt und wir fangen nochmal an. Also, hallo, ich bin der Markus. Ich studiere Bioinformatik mit Schwerpunkt Machine Learning an der JCU in Oberösterreich. Und ich bin AI-Entwickler bei Catalyst. Das ist eine Software-Entwicklungsfirma. Und ich bin qualifiziert, den Talk zu halten, weil ich einmal ein Paper über Ganz geschrieben habe. Und mich zumindest einmal ein Monat damit beschäftigt habe. Und wie es ihr schon merkt, wird dieser Talk wunderbar, ist der Englisch. Dann einmal ein ganz, ganz grobter Überblick, wo wir sind. Unterfärter Informatik ist künstliche Intelligenz, also AI. Davon unterfärbt ist Machine Learning. Alternativ gibt es normale statistische Modelle oder Handcrafted Modelle im Prinzip. Und in Machine Learning gibt es dann Supervised Machine Learning, Ansupervised Machine Learning, Reinforcement Learning, Deep Learning und eben normale statistisches Lernen. Und die Kombination aus, also ein unterfärbt von Ansupervised Learning sind generative Modelle. Also wir haben Daten, und wir hätten gern mehr Daten mit ähnlicher Struktur. Und wir machen das mit Deep Learning. Das heißt, komplexe, non-lineare Modelle, um sehr mathematisch zu werden. Und eines dieser Modelle sind Generative Adversarial Networks. Das war jetzt sehr viel auf einmal. Darum habe ich nochmal was, eine kleine Machine Learning-Landkarte. Sie ist leider etwas schwer zu lesen. Eines der Standard-Toolkits für Machine Learning ist Scikit-Learn. Gerade für simplere Tasks wie Clustering ist es extrem beliebt und einfach zu bedienen und pfeifen. Und im Prinzip gibt es da ein Flow-Craft, der im Prinzip einfache Fragen stört, wie was wir eigentlich machen. Es wird vielleicht etwas schwer zu lesen sein, also gehen wir mal durch. Der Flow-Craft sagt im Prinzip, wir fangen an und dann, wie viel Daten haben wir und wo immer was klassifizieren oder Regressionen, also wo immer quasi irgendeiner Zeue, wie gut das qualitativ ist drauf da oder wo immer Clustering, also Gruppierung machen oder wo immer von hochdimensionaler Daten das auf niedrigdimensionalere Daten reduzieren und ganz, ganz unten durch mehrere sehr hässliche Pfeile markiert, ist dann, wir wollen die Struktur predicten, also zum Beispiel, wie diese Daten eigentlich ausschauen und wir wollen mehr Daten auf Basis dieser Strukturinformation generieren. Bekanntes Zitat von Richard Feynman war, what I cannot create, I do not understand und das ist eigentlich ein großes Problem im Machine Learning, dass man meistens die Daten nicht so wirklich versteht und an Supervised Learning, also dieses Unterford, indem wir uns bewegen, hilft uns unstrukturierte, nicht gelabelte Daten besser zu verstehen. Das war noch immer sehr abstrakt alles. Wir fangen nochmal an, speziell mit GANs. Ein GAN ist, wie ich schon gesagt habe, an Supervised Learning-Modell und es lernt eben Daten mit ähnlicher statistischer Verteilung zu reproduzieren Das kann man jetzt einerseits wirklich kurven oder Daten-Samples, aber Bilder kann man ebenfalls als Tensoren, also als mehr dimensionale Matrizen mit einer weiteren Dimension in die Tiefe, kann man sie vorstellen und dann sind Bühne eigentlich auch nur Millionen dimensionale Punkte mathematisch gesprochen. Es gibt ebenfalls zusätzlich zu der Ansupervised-Methode conditional GANs. Das ist, wenn man gelabelte Daten hat, dann kann man bei der Generierung die Information dieser Labels nutzen und kann Daten ähnlicher Ort oder kann mitgeben, wie die generierten Daten ausschauen sind. Zum Beispiel wir haben Hunde und Katzenbühne und wir können dann bei der Generierung sagen, dieses Bühn sei 100% Hund, 100% Katze oder ist das ein Zwischending-Ausserkummer oder ist so was Ausserkummer, das nichts von beiden ist. Und das coole an einem generativen Generative Adversarial Network ist, dass es im Prinzip zwei Netze sind, die gegeneinander arbeiten und die in künstlicher Intelligenz eigentlich recht beliebt ist, mit dem Maxspiel treiben, das heißt, der Generator versucht, ein Bild zu generieren, das so gut wie möglich ist und der Diskriminator versucht den Unterschied zwischen den echten Daten und den Generator Daten zu lernen. Das heißt, der kriegt immer ein Batch, also eine Gruppe an Daten, die sind durchgemischt und dann wird er dann auch bewertet, ob er herausfinden kann, sind das jetzt echte Daten, also sind das zum Beispiel echte Generierte Bühne, sind das echte Bühne von Katzen oder Generierte Bühne von Katzen und der wird dann über normale Machine Learning-Methoden, also gradient descent und ähnliches belohnt und im restlichen Teil werde ich den Generator, also das Ding, das Katzenbilder macht, mit G abkürzen und in Diskriminator, was im Prinzip meistens eine ähnliche Struktur wie ein Classifier hat, mit D abkürzen. Okay, das war jetzt alles super kompliziert, explain it like I'm five. Es gibt ein Detektiv oder ein Discriminator und es gibt dann einerseits echte Kunstbilder und es gibt andererseits ein Feltscher, der diesen Detektiv betrügen will, aber damit er nicht immer das Server generiert, hat der einen sogenannten Latent Space Input, das ist im Prinzip die Randomness, das kennt sich ähnlich vorstimmt wie beim Generieren an Sieht, aber er wandelt im Prinzip diese Randomness, meistens 100 oder 1000-dimensionale Daten, in den Zielspace der ähnliche Verteilung wie die echten Daten hat um. Aber dieser Latent Space Input gibt an, wo in diesem Zielverteilungsbereich das liegt. Also vereinfacht gesagt, der Generator braucht eine Inspiration für seine Randomness, weil es ist trotzdem nur normales Forward Net, der Multilayer Perceptron, also ein normales, neuronales Netz und das ist grundsätzlich deterministisch. Das heißt, damit es verschiedene Daten outputt, muss man verschiedene Daten reinfüttern. Dann nochmal ein Datenflussdiagramm, wie das Ganze ausschaut. Unser Latent Space ist in die meisten Modelle einfach nur Neues, den wir den Generator füttern und wir haben außerdem echte Daten, unser Datasample und diese beiden Daten mischen wir zusammen und gehen wir in Diskriminator und der sagt dann, ist das ein Datensample? Ja oder nein, das ist ein normaler Klassefire, wie man aus dem Machine Learning kennt. Mathematischer Hintergrund nochmal, also das Ganze mit Formeln, die ganz komplizierten langen Formeln aus dem Paper werde ich nicht geben, weil das wäre ein bisschen zu lang zu erklären, aber man hat einerseits X hat, ich weiß nicht wie man das auf Deutsch sagt, eine Stichprobe aus den echten Daten, üblicherweise wo immer entweder Bilder, ist dabei eigentlich die beliebteste Anwendung oder in der Bioinformatik Moleküle oder irgendwelche Zahlen, die uns irgendwelche Qualitäten angeben oder Text, aber Text sind wir im Prinzip auch nur Zahlen generieren und da nehmen wir aus unserem echten Datenset eine Stichprobe und außerdem nehmen wir eine Stichprobe ähnlicher Struktur und Dimension, also meistens eine mehr dimensionale Matrix, also eine normale Matrix ist ja X und Y und der Tensor hat dann noch beliebig viele Dimensionen in die Tiefe, aber ihr könnt es euch vorstellen wie ein Matrix und dann gibt es nur den Z, diesen latent Space Vector, diese Entropie, die wir verwenden um den Generator Inspiration bzw. einfach eine Art Random See zu geben, aber es ist eigentlich eine nonlineare Transformation und G ist, wie wir vorher schon definiert haben, eigentlich die Generator Funktion, der neuronale Netz ist ja einfacher Funktion, wo man irgendwas rein tut und irgendwas rausfällt in unserem Fall Random In und Daten unserer gewünschten Struktur als Output, das muss man halt davor so definieren aber man kann grundsätzlich Outputs beliebiger Dimensionalität sogar mit LSTMs Variable Length definieren und dieser Diskriminator ist im Prinzip ein normaler Classifier, der uns dann werte zwischen 0 und 1 oder minus 1 und 1 oder minus unendlich und unendlich ausgibt, das kann man beeinflussen durch die Aktivierungsfunktion und das spült dann bei der Optimierung und dann noch mal die semi-matematische Definition ich habe das jetzt etwas hässlich eingedeutscht, das wäre Minimal als Maximals aber im Prinzip versucht er immer der Generator das bestmögliche, also sein Loss zu minimieren im Machine Learning spricht man immer von Loss, also vom Fehler und wiederum der Diskriminator versucht seinen Reward zu maximieren und der versucht eben, dass er diskriminiert hat einerseits den Input vom Generator und andererseits X den echten Input Notation ist absichtlich für die Lesbarkeit nicht 100% nicht mathematisch richtig aber ich hoffe man versteht, auf was es rausrennt dann nochmal die Definition wenn man das ausprogrammiert und sagt mit diesen Formeln würde ich eigentlich nicht quälen aber man trainiert immer in einer Iteration das nennt sie im Machine Learning Epoche in einiges Steps nimmt man ein Mini-Batch also ein Sample von echter und von generierte Daten und updated dann diesen Diskriminator meistens mit Stochastic Gradient Descent oder andere Optimizer wie Adam aber das nehmen wir dann eigentlich in die Frameworks ab und es macht üblicherweise nicht super viel Unterschied und dann nimmt man auch noch diese Bewertung vom Generator, die kann man im selben Step Informationen wiederverwenden das ist praktisch an dem Ganzen dass man diesen Forward Pass und dieses Loss wiederverwenden kann und damit updated mal über Stochastic Gradient Descent dann auch noch diesen Generator dann zur Geschichte weil mein Paper das war nur Seminarpaper so ein 3-ECDS Mini Paper mit relativ viel Meta-Analyse und im Prinzip haben wir das Thema gesucht weil es in etwa vor einem halben Jahr ein ziemliches Hype-Thema war und angefangen hat das Ganze eben 2014 mit dem originalen Gan-Paper von Ian Goodfellow und wie man da sieht hat sich dann einfach sehr lange nichts da es hat einfach einmal sehr lange nervend interessiert weil die Performance vom Standard Generative Adversarial Network eigentlich relativ schlecht war und es hat auch keine wirklichen Anwendungsfälle geben der Grund war dass das einfach nur ein neuronales Netz mit alle Neuronen zu allen Neuronen verbunden also ein Dance-Net also auch ein Dance-Layer so ein üblicherweise Original Reasoning gehabt haben und daher auf Bilder was das Beispiel in dem Fall war relativ schlecht performt haben kurz darauf sind auch noch Conditional Generative Adversarial Networks also die wo man die Labels auch noch verwenden kann zum generieren die haben dann schon ein bisschen bessere Performance gehabt aber eigentlich hat der Hype gestartet mit unsupervised Representation Learning die Hype Convolutional Generative Adversarial Networks ich habe das mal abgekürzt weil das wäre über drei Zeilen gegangen wenn man das auch schreibt vom Redford und eigentlich ist das das Paper das diesen ganzen Hype gestartet hat und dann waren es eigentlich hauptsächlich iterative Improvements und man kann auch die Themen die hauptsächlich behandelt werden da auf dieser Seite sehen es ist relativ viel mit natürlich Generation als Tag also eher Daten generieren aber man kann nicht nur Daten generieren und meistens Image starten aber man kann auch Face oder Videodaten generieren und 3D-Daten sondern auch Forschungsgebiet, Audio ist mittlerweile Text und Language ist sehr beliebt in letzter Zeit worden und es geht eben hauptsächlich um generative Modelle wo es im ursprünglichen Modell eigentlich eher um Struktur erkennen geht dann einmal Ganz und semi-supervised Learning ein normales Gun war wirklich nur ein Dance Layer als Classifier der höhere Dimensionalität also der Latin Space Input in ein Ziel Space konvertiert hat am Anfang ist das sehr oft mit die M-Nist-Numbers also diese Hand geschriebenen Schwarz-Weiß-Zäuen in 28x28 Pixel gemacht worden und darauf hat es ganz okay performt das ist auch in diesem Gebiet eigentlich der Baseline Test wenn du ein generatives Modell schreib das nicht einmal 2 von 1 bis 10 generieren kann dann ist der generatives Modell nicht so gut wie man ewig zum trainieren braucht und diese Bühne haben ja eigentlich Label-Information im Sinne von alle Nuller in die Impot-Daten haben wir Nuller etatscht alle Einsam-Anseu-Etatscht und durch das ist die Idee von semi-supervised Learning und von conditional Generative Adversarial Networks entstanden ich habe euch da auf der Seite ein Bild geben wir haben jetzt nicht nur unsere Unlabel-Data sondern wir haben dazu auch Labels also nicht nur ein Bild da wo irgendwas zum singen ist das war ein Original-Modell und das hat dann auch mit Knur-Training und Knur-Click und Knur-Fein-Tuning Zeugen generiert und wirklich nur existierende Zahlen sondern wenn man diese Label-Information mitgibt dann kann man effizienter diese Daten generieren weil der Generator einfach mehr Information hat und der Generator spuckt dann eben auch dieses Label wieder mit aus und der Discriminator kriegt nur ein Reward wenn er nicht nur erkennt ist es das Bild wo ich das Label gepflegt habe vom Generator oder ist es Fake es gibt immer eigene Fake-Klasse in diesem Modell sondern er kriegt also nur wenn er sowohl die richtige Klasse fake, not fake beziehungsweise welche Namen dann kriegt er überhaupt ein Reward das heißt er hat eigentlich öfter keinen Reward kriegt was zu besseren Training führt hat dann kommen wir mal zu meiner Meinung nach dem Hauptpaper bei Ganz dass diesen Hype ausgelöst hat das war im Jahr 2015 wo gerade diese ganze Image-Recognition-Geschichte super bekannt worden ist und Facebook gerade angefangen dass es dieses Gesicht kennt zu dir Kerren und so weiter auf jedem Fall war dann das Step dass man einfach wie in alle anderen Netze die Bühne verarbeitet haben genau das server wissen einfach auf Generative-Adversarial-Networks angewendet hat es war eigentlich nur ein logischer Schritt dass man diese Convolution-Ractified-Linear-Unit und Batch-Normalization diese eigentlich in jedem Convolutional-Normal-Net also in jedem neuronalen Netz-Verbüt-Erkennung Standard verfahren um aus einem hochdimensionalen großen Bild im Endeffekt an einen Klassen-Label zu machen und diesen ganzen Prozess kann man eben auch rückwärts machen also wir haben da unseren 100-dimensionalen Z-Latentspace-Input und der wird dann transferiert auf viele kleine Bilder im Prinzip High-Level-Features und diese High-Level-Features werden dann aufgeblasen auf immer weniger und weniger Low-Level-Features bis dann in diesem V4-Ebene wirklich nur ein einzelnes RGB-Büt herausfällt und man kann sich das wirklich so vorstellen dass man aus diese Features bei Conv2 und Conv3 da wird man zum Beispiel sehen, wenn man als Gesichter generiert und dass da irgendwo in diese Daten sichtbar ist an dieser Stöpe diese Pixel eine Nase oder Augen auszukommen und eigentlich das Spannende, was ziemlich durch die Medien ganger ist was jetzt da eingeblättet hat war aus dieser Latentspace-Representation kann man also man kann aus dem Büt eine Latentspace-Representation rechnen und das ganze vorwärts und rückwärts betreiben also damit kann man Feature-Arypmetik betreiben was effektiv heißt man kann herausfinden im 100-Dimensionalen Latentspace-Raum gibt es dieses Feature männlich, weiblich, Brille, keine Brille und dieses Feature im Input-Raum kann man abziehen das heißt wenn man jetzt ein Foto von mir macht und man will mal Sonnenbrühen aufsetzen dann macht man zuerst ein Backward Pass in Latentspace dann addiert man das Sonnenbrillenfeature und dann macht man wieder ein Forward Pass und dann kommt ein Büt von mir mit Sonnenbrille raus oder zum Beispiel wie wir es da sehen männlich und weiblich oder man kann diesen Glasesvektor ebenfalls subtrahieren und das hat eigentlich für relativ viel Aufsehen gesorgt weil es eigentlich sagt hat dass dieses Netz ohne irgendwelche Label-Daten hinten nach kann man Wissen über die Daten nutzen und da hat man glaubt dass vermutlich das Netz irgendein intrinsisches Verständnis der Daten hat was genau das Ziel von unsuperweiß-Learning ist dass man ohne Labels Information extrahiert das Nachfolgepaper nur ein halbes Jahr später war Improve Techniques for Training Guns und da ist es im Prinzip um eine Menge minimale Erweiterungen gegangen die aber im Großen und Ganzen die Training Time und die Präzision und die Qualität vom Output um einiges erhöht haben einst der Probleme war auch immer relativ niedrig dimensionale Büder gehabt und um diese Verteilung das Ganzen Samplings abzubüden hat man relativ viel Büder in einer GPU haben können und GPU Speicher ist üblicherweise irgendwie oder so was limitiert pro GPU was oft nicht die ganze Vielfalt vom Sampling Space abbüden kann von daher hat es zum Beispiel Historic Averaging geben das in später Verfahren dann über ähnliche Verfahren nur mal angepasst worden ist beziehungsweise Virtual Batch Normalization wo man im Prinzip immer Durchschnittsfeature nicht geführt hat damit man mehr Information hat um diese Daten zu generieren außerdem einige kleine Optimierungen wie dass es einfach praktisch besser war war man die Labels nicht mit 1,0 also das ist zu 100% der Mann oder zu 100% der Frau sondern nur auf 0,9 Sets das war nicht mit irgendwie Theorie gebackt sondern das waren einfach nur hell bewiesene Sachen wo Forscher sich doch dann probieren mal das aus und das hat funktioniert und erst viel viel später sind dann einige von diese Ideen erforscht worden warum das eigentlich funktioniert das ist allgemein so ein Ding in neuronale Netze das Dinge oft einfach funktionieren und man Jahre später erst vielleicht eventuell herausfindet warum teilweise auch nur immer nicht da es dann hat es die Wasserstein ganz geben im Prinzip geht es da darum die normale Losfunktion ist die Kalberkleiber Divergence und eigentlich hast du die Distanz im Original die Earth Movers Distance da geht es aber jetzt nicht darum dass man die ganze Erde bewegt sondern eigentlich kann man sich das vorstellen dass es um den Aufwand geht die Verteilung zu bewegen also diese Gaskurve kann man sich vorstellen wie ein Erdhafen und in der traditionellen Kalberkleiber Divergence die im Prinzip dann die Losfunktion war auf die optimiert worden ist haben diese zwei Verteilungen also oben ist es ist und unten ist es soll die Server Divergence Kalberkleiber Divergence und die Wasserstein Distanz hat jetzt sehr vereinfacht gesagt dass wenn man diesen Erdhafen also diese im Fall von Bühnen sind es jetzt Pixel um ein Element Spatial verschiebt dass das weniger los verursacht wie wenn man das ans ganz andere Ende von dem Bühnen quasi verschiebt das heißt so oft bei One Errors im Bühnen sind damit weniger hart bestraft wurden und damit sind diese Netze im Training um ein Faktor 10 bis 100 schneller konvergiert und man hat das sogar veränden ist erstmalig in akzeptabler Zeit auf der CPU rechnen können durch diesen Trick und durch ein zweiten Trick der dann später auch noch mal verbessert worden ist weil alleine dieses Last das wir da gehabt haben hat nicht funktioniert weil das hat teilweise zu sehr großen Gradients also Ableutungen das ist das was man zur Optimierung verwendet geführt und zu da oben sieht man es Gradient Clipping war der erste Ansatz im Wassersteigen Gun Paper und im erweiterten Paper von einer anderen Forschungsgruppe haben sie dann Gradient Penalty gefunden was im Prinzip die Größe also die Länge des Ableutungsvektors im endimensionalen Raum in die Losfunktion mit Einbezirk das ist relativ kompliziert aber es ist eigentlich ein ganz cooler Trick mathematisch gesehen und was ich mit dem Kraft eigentlich zeigen will ist, dass das ganze Training um einiges stabiler geworden ist während man mit Gradient Clipping nur bis sie auf gute Sample-Ziehungen hoffen müssen hat dann gibt es einige Probleme mit Generative Adversarial Networks die immer noch existieren oder zumindest ich habe mich das letzte Mal vor einem halben Jahr eigentlich damit beschäftigt da waren das die Hauptprobleme und zwar meistens Outperform der Discriminator weil natürlich der Task von einem riesigen Büt von einem 1000x 1000x 3 Kanäle Büt herunter reduzieren aber Labels ist ein einfacher Task wie von einem kleinen Label in an Space was zu projizieren weil einfach da die richtigen Parameter heraus zu optimieren um einiges schwerer ist um weil es quasi weniger richtige Parameter gibt um dieses Ziel zu erreichen mit Gradient Penalty ist das zumindest und mit Wasserstellen ganz ist das zumindest etwas besser geworden dass einfach die Generatoren besser worden sind die Discriminatoren haben dann nicht viel Unterschied gemacht das hat dieses Training beschleunigt dann war ebenfalls oder ist nur immer Mod Collapse ein relativ großes Problem das heißt das Generatoren eigentlich dann auf ein Zustand kommen zu können wo sie nur noch ganz wenig hochqualitative Büder generiert haben die nicht von den echten Daten unterscheidbar sind weil das für Diskriminator und für die Formel Definition wie das funktioniert hat halt ein valider Input war also er hat dann eigentlich keine Feature Varianz mehr gehabt das war im Prinzip einfach nur der Heck des Generators wie er am einfachsten einen guten Score erreicht um wann er einmal seine Weight so optimiert hat dann ist er festgesteckt in diesem Zustand und hat sich nicht mehr aus diesem Zustand herausoptimieren können dadurch sind relativ wenig Daten quasi der Kreativität verloren einer der Ansätze war natürlich dass man Virtual Batches macht also das mit Improved DC Gans andererseits an unserer Unisan Colomp Gans erfunden worden wo diese Modes Outputs einander abstoßen es ist ein relativ komplexes System aber es passiert auf dem Konzept von Kolompische Ladungen aus der Physik und Gradient Penalty hat auch ein bisschen dabei geholfen Convergents war grundsätzlich immer ein Problem bzw. ob man nie gewusst Convergieren weil ein Klassifier Convergiert zum Beispiel immer das hat man schon bewiesen aber ein Generator es war ziemlich lang ob der überhaupt generiert das ist dann in ein Paper von unserer Uni für sehr spezielle Constraint-Szenarios und da sehr viel Umstände bewiesen worden im Paper Two Time Update Rule also T-Tour Paper und das in die meisten Fälle nicht in die Fälle die wir in der Realität haben ein Generator auf ein Optimum Convergieren kann und das Problem ist man hat immer noch einen IP nur 64x64 Pixel Büder generieren können was relativ schlecht ist und ein Video hat da mit extrem viel Comput aber auch mit einem neuen Modell Namens Progressively Growing Guns endlich den Lieb geschafft tausend mal tausend Büder zu generieren das ist eine Technologie die hinter ThisPersonThousandExists.com steckt zum Beispiel das ist ein Website die euch immer wieder aus Datenbank aus einer Gesichter Datenbank neue Gesichter generiert die relativ realistisch ausschauen und ein weiteres Problem ist bei generative Modelle natürlich immer kann man ja nicht verifizieren weil die Bewertung vom Discriminator ist ja nur relativ zum Generator und da ist ebenfalls mit der freischeeilen Seption Distance im Two Time Update Rule und darauf folgende ähnliche Distanzen ein Fortschritt basiert im Prinzip hab man dann nur High Level Features von Classifier verwendet ist jetzt allerdings auch zu komplex aber mittlerweile kann man anährend den Generation Prozess verifizieren nicht nur im Framework von dieser Generierung von Daten das war jetzt alles super langweilig und jetzt kommen wir mal zum Spannenden Teil was kann man damit alles machen man kann unter anderem einfach alle Bühne vom Pokémon aus einer Datenbank nehmen und fieden und das kommt bei Deep Convolutional Gans zum Beispiel außer ein paar davon schauen zumindest relativ sinnvoll aus aber es sind meistens eher Feature Arme Varianten das liegt daran daran dass diese Pokémon mit DC Gans trainiert worden sind die noch nicht diesen Wasserstein oft bei One Optimierung Teil gehabt haben dann kann man über diesen Latent Vector den wir besprochen haben wenn man schon männlich weiblich abbüden kann ebenfalls Dinge machen wie das Alter berechnen wenn man mehrere Trainingsbüter von Leithard wie so mal Jung und Alt sind und man kann dann von Schauspielern die man da sieht oder Politiker eben zeitlich vorwärts und rückwärts rechnen wie die Jünger und Öder auch schon was in früheren Modellen eigentlich nicht so gut klappt hat also es sind relativ überzeugende Bühne aber ebenfalls sehr niedrig auflösen also ich hab das jetzt nicht extra schlecht aber gerendert das ist schon das Maximum was diese Netze mit Universitätskapazitäten und Grafikquarten nach Tagen an Training produzieren können das ist immer nur ein Problem dann gibt's Super Resolution das ist ein spezieller Fall im Prinzip landen wir sie einfach aus dem Internet und haben hochaufflösende Bühne Scaled to Over und dann feedet man das Low und das High Respuit und dann versucht man dass der Generator das Upscaled also der kriegt das Input der Low Respuit und man das High Respuit und dann kommen wir aber auch die echten gelabelten Daten es ist jetzt etwas schwer zu sehen aber man erkennt's glaube ich zumindest beim vierten ein bisschen das die Augen also das ist ganz gute Ergebnisse zusammen leider habe ich die Büder nicht größer machen können und auch die dritte Speiten ist eben wie es dieses Paper macht dann gibt es das hat relativ viel Statitions und Aufmerksamkeit kriegt Cycle Guns man gibt dem Ganzen einfach zwei Büder und kann dann Style Transfer machen eben zum Beispiel eigentlich Foto dann in den Stil von gewisse Gemälde transferieren oder Pferde in Zebras und umgekehrt verwandeln was auch noch sehr beliebt war Semantic Segmentation Autonomous Driving ganz cool gewesen dass man eben als Input dann nicht irgendeiner Latents-Basting geben hat sondern dass man Ground Truth und Adversarial und Non-Adversarial das versucht hat und das eben der Adversarial Approach das Ganze verbessert hat also das ist eine Kombination aus normalen Segmentierungstechnologien und diese Adversarial-Technologien ans meiner Highlight ist Pix2Pix also ebenfalls Segmentierung und quasi Style Transfer Methode und da sieht man schon, man kann ein Foto in eine Semantische Segmentierungs-Map transformieren man kann ebenfalls Handzeichnungen wie man es da oben sieht also zum Beispiel Zeichnung von einer Tasche in eine echte Tasche relativ einfach durch Wander im Latents-Based die Muster dieser Tasche ändern man kann Fotos von am Dog auf Nacht ändern meiner Meinung nach ist es zumindest visuell ansprechendsten Ergebnisse an dem Ganzen, wann ich das interessiert ist das eigentlich ansterkularen Papers und was erst verkürzen gekommen ist ebenfalls mit GIFS Sie haben ein Tool entwickelt wo man leere Teile eines Bildes auf Basis der Umfeldinformation wieder nachgenerieren kann und es ist aktuell noch Proof of Concept und man braucht da immer noch mehr Grafikkarten, als man sie als Privatmensch leisten kann also so Real-Time wie das da funktioniert braucht man in etwa 2-3.000 Euro an Grafikkarten aber dann funktioniert das annähernd live mit der Information also man hat da natürlich zum generieren von dieser Hintergründe in dem Fall sehr viele Landschaftspüter in dem Fall sehr viele Püter von Bibliotheken und in dem Fall Püter von Menschen gefüttert und das war jetzt im Großen und Ganzen einmal meine Präsentation ist hier sehr viel verwirrte Gesichter Mikrofonengel und Fragen bitte Ok, fürs Recording weil es Mikrofonen nun nicht mag von welchen Mengen an Rechenkapazitäten sprich ich jetzt eigentlich üblicherweise verwendet man K80 oder vor ein paar Jahren noch K40 also spezielle Compute-Karten von Nvidia die kosten pro Stück in etwa 2-3.000-4.000 Euro und da hat halt so eine mittelgroße Universität wie die JKU A2 Server Rigs damit voll, also das sind unter 10 Stück und üblicherweise zum nur das einmal Computen ist es nicht so tragisch aber du musst bei neuronalen Netzen oft Hyperparameter Tuning machen und musst dann den ganzen Trainingsprozess hunderte Male mit verschiedenen Parameter ausführen und wenn es da ist da hat es relativ lang aber so ein simpler also jetzt z.B. MNIST läuft auf meiner GPU mit Wassersteinganz also auf einer 1060er habe ich glaube in 20 Minuten mittlerweile durch in der First Generation allerdings also in nur normale Gans ist es glaube ich eher so 6 Stunden-Grend bis man mal zu einem Erkenner hat auf dem Output und für diese Super Resolution-Sachen also 1024x1024 büder sind es dann eher so 3000 GPU-Tage auf 1080er waren oder sowas das war halt in Video selbst die machen Grafikkarten, die haben Grafikkarten und um dieses High-Resolution-Model zu trainieren also akzeptable Auflösungen weil alles unter 100x100 ist meiner Meinung nach knapp überhaupt erkennbar als dieses Motiv im VfAM Gesichter z.B. und in Video z.B. auch nur 6-Fache Speed-Ups erreicht aber wir sind nun immer im Vergleich zu verschiedenen Classifier-Modelle relativ langsam weil halt generieren allgemein schwerer ist im Learning-Bereich eigentlich für andere Methoden viel schneller sind aber es geht wieder oft um simplere Sachen wie z.B. Autoencoder die eigentlich simplere Operationen berechnen ich hoffe, ihr habt das beantwortet gibt es noch Fragen? noch Fragen? bei dem Beispiel mit dem Gesicht das Modell wurde trainiert mit dem Gesicht-Startensatz diese this person doesn't exist Sachen das Beispiel hier oben vom Image-Painting da gibt's Face-Image-Data-Set ich kann das nachher nochmal aussuchen es ist extrem beliebt und wird in diverse Face-Gun-Papers immer wieder erwähnt und ist ebenfalls so ein Standard-Penschmack weil er sagt der Name nicht ein aber ich kann es dann nachher aussuchen immer find's bei Google und irgendwo um die 10.000 bis 100.000 Bühne gibt's sonst noch Fragen? dahin? weil es angesprochen wurde für die semantische Beschreibung der Bilder was im Sinne selbst fand ein Autos von Relevanz zu sein schein gibt es da einen guten Klassifizierungs-Methode aus den neuronalen Netzwerken heraus dass man die Unsicherheit dieser Schätzungen beschreiben weil soweit ich die Ausgabe-Ebene immer verstanden hab ist es nicht die Unsicherheit sondern mehr das eigene Vertrauen in die Daten was anderes ist als die Mess-Unsicherheit und was auch von Tesla bei diesem einen Unfall wo der Wagen einmal unter so einem Lkw durchgefahren ist hinterher als Fehlerquelle dass man die Unsicherheit in neuronalen Netzwerken so schlecht schätzen kann das ist das normale Los in diesem speziellen Tesla-Fall war es zum Beispiel Bilddaten ganz einfach als ein Haufen Pixel betrachtest und das hat ein weißer Lkw und ein weißer Himmel für ein Kamera ein Haufen weißer Pixelsan und der einzige Unterschied ist dass du am Rand oder bei schwarzen Streifen in Schotten von diesem Lkw hast und das halt einfach diese normalen Losfunktionen im Prinzip nur das substrahieren voneinander und das sind das halt einfach sehr ähnliche Daten die auf nicht sehr gut optimierten Classifier halt einfach zu ähnliche Ergebnisse führen aber sonst ist das eigentlich also sonst ist das das eigentliche Los bei so Segmentierung und eigentlich ist es genau das auf das man optimiert und das funktioniert eigentlich ganz gut Parameter der Unsicherheit ja, das Los der Verlust deines neuronalen Netzes ist dieser Output also du kriegst zusätzlich diesen Discriminator den du dann auf Segmentierungen anwenden kannst und du kannst es auch reale Daten und die Segmentierung die du generiert hast kannst dir einen Unterschied davon machen und das ist eben dann dieses Los auf das du auch optimierst und das ist diese Certain die wir richtig die Daten sind wenn du natürlich auch falsche Daten trainiert hast dann ist das Los aber das ist mir die Certainty das ist nicht die Uncertainty die Los ist eigentlich Certainty soweit ich das verschaue na, Certainty ist das Gegenstück zu Uncertainty ja, das also es ist im Prinzip das same glaube ich verstehe die Frage nicht im Detail können wir nachher reden gibt es noch Fragen? ok glaubt dann haben wir's