No video

CNNs Convolutional Neural Networks Basiswissen

  Рет қаралды 18,546

Udo Würtz

Udo Würtz

4 жыл бұрын

Bilderkennung ist eines der klassischen Themen der KI. Doch wie funktioniert diese? Was bedeuten Begriffe wie Features, Convolution, CNN und andere? Wie analysiert man Bilder mit hoher Pixelanzahl? Dieses und anderes mehr wird in diesem Video näher betrachtet. Es geht um die Prinzipien von Convolutional Neural Networks, gepaart mit der Betrachtung eines echten Models und ein Live-Beispiel zur Bilderkennung.

Пікірлер: 52
@michaelbaumann5867
@michaelbaumann5867 Жыл бұрын
Sie haben CNNs am besten erklärt! Das hilft mir sehr in meiner Abschlussarbeit :D
Жыл бұрын
Das freut mich sehr! Alles Gute für die Abschlussarbeit :)
@heinzpeter9988
@heinzpeter9988 2 жыл бұрын
Sehr liebevoll gemacht.
2 жыл бұрын
Dankeschön 😄
@simonh1349
@simonh1349 2 жыл бұрын
Tolles Video, danke!
@isabellam.7151
@isabellam.7151 2 жыл бұрын
Vielen Dank für die Mühe und diese wirklich tollen Videos / Tutorials. Sie helfen mir ungemein den Sachverhalt besser zu verstehen, sodass ich diesen in der Praxis auch anwenden kann. Sie sammeln hier mächtig Karmapunkte!! :) Eine Kleinigkeit möchte ich dennoch monieren: Es ist "das" Video, nicht "der". Ich bitte um Verzeihung dieser Erbsenzählerei, aber ich musste es gesagt haben.
@wasgeht2409
@wasgeht2409 2 жыл бұрын
Wow, hab dein Video eben erst entdeckt. Was für eine gute Qualität ! Sieht man echt selten. Direkt mal abonnieren ;)
2 жыл бұрын
Danke für das Feedback :) Demnächst werde ich auch ein Video zum Thema GAN's machen. Was ist das? Wie geht das? Geht um künstliche Menschen, die echt aussehen aber nicht existieren. Zum selber nachbauen, natürlich.
@wasgeht2409
@wasgeht2409 2 жыл бұрын
@ Genau, Deep Fakes. Finde ich sehr interessant. Was du dir eventuell auch mal anschauen könntest, wäre Quantum Machine Learning. Gerade Qiskit von IBM ist ziemlich nice ;)
@haraldhuber3077
@haraldhuber3077 4 ай бұрын
Hallo Herr Würtz, vielen Dank für das sehr aufschlussreiche Video. Was ich allerdings noch nicht ganz verstanden habe ist, wie die Zuteilung der Werte bei Video (35:59) auf das X und das O bestimmt wird. warum werden hier einzelne Werte dem Wert O zugeordnet (wie z.Bsp. 0,53 ganz unten, jedoch nicht der Wert 0,63 in der Mitte). Vielen Dank für Ihre Antwort.
3 ай бұрын
Hallo Herr Huber, ich stehe gerade noch auf dem Schlauch mit den Werten, die Angabe war bei 35:59 aber da habe ich diese Werte nicht. Übersehe ich da was? Generell ist es so, dass diese Darstellung natürlich anschaulich vereinfacht ist, damit man das nachvollziehen kann. Da wir wissen, dass wir ein X in der Eingangsinformation haben, ist die Abstimmung hier auch am stärksten. Ausgehend von den Werten, die auch die Pixeldarstellung für das X am stärksten repräsentieren.
@os-channel
@os-channel Жыл бұрын
Ist "Filtern" nicht gleich "Convolution"? In beiden Fällen werden doch Feature Maps erstellt. Oder ist "Filtern" die Mathematik hinter "Convolution"? Trifft es das besser?
Жыл бұрын
Hallo, gute Frage, danke dafür :) In diesem Kontext ist es das letztlich das Gleiche. Dazu habe ich einen Link, bei dem dieses Thema sehr ausführlich diskutiert wurde: stats.stackexchange.com/questions/154798/difference-between-kernel-and-filter-in-cnn/188216#188216 Streng genommen ist letztlich eine Konvolution die Anwendung eines Filters, welche die (Aktivierungs = Feature) Map bildet.
@BunDinYo
@BunDinYo 3 жыл бұрын
Richtig guter Input. (☞゚ヮ゚)☞
2 жыл бұрын
Vielen Dank! :)
@micknamens8659
@micknamens8659 2 жыл бұрын
51:45 Der Fehler sollte besser die Summe der Quadrate der einzelnen Fehler sein. Im andern Fall würden sich Fehler mit entgegengesetzen Vorzeichen aufheben, z.B. wenn die Ausgabe des Netzes für X und O beide 0,5 sind, die Fehler also -0,5 und +0,5 sind.
@siradmiral5399
@siradmiral5399 2 жыл бұрын
Hallo Herr Würtz, Ich möchte gerne eine Präsentation in der Schule zum Thema Bilderkennung machen und wollte fragen ob ich zu diesem Zweck Screenshots aus ihrem Video verwenden darf, da es mir viel Arbeit Ersparen würde die ganzen Raster nicht selbst nachzustellen. Viele Grüße
2 жыл бұрын
Ja klar, kein Problem. Wäre nett, wenn Du (ich bin der Udo) wiegehtki.de als Quelle mit angibst, klein unten drunter. Wäre nett aber kein Muss. Falls Du was spezielles brauchst, kann ich auch mal was aus der Folie direkt kopieren und Dir schicken. Screenshots sind überhaupt kein Problem.
@siradmiral5399
@siradmiral5399 2 жыл бұрын
@ Vielen Dank ich werde sie natürlich als Quelle angeben falls ich noch etwas brauche melde ich mich
@road2nohand
@road2nohand 4 жыл бұрын
Hallo Herr Würtz, erstmal vielen Dank für die guten Videos. Habe bereites einige gesehen :D Z.z. schreibe ich selber eine Studienarbeit über Neuronale Netze und bin dermaßen begeistert, dass am liebsten in dem Bereich entwickeln würde. Nun ist es so das ich in einem duales Wirtschaftsinformatik Studium bin und gerade merke das die technische Tiefe nicht sehr tief ist :| Kennen Sie Firmen bei denen man sich bewerben könnte und ggf. das Studium parallel fortsetzen könnte? Über eine Antwort würde ich mich sehr freuen :D
4 жыл бұрын
Hallo und vielen Dank für das positive Feedback! Freut mich sehr, wenn ich weiteres Interesse am Thema KI wecken konnte :) Beim Thema Studium bin ich etwas blank, aber ich weiß natürlich dass auch Fujitsu sowas anbietet. Einfach nach "Fujitsu Duales Studium" suchen, dann kommt eine Site mit den Informationen dazu. Hoffe, es hilft. Alles Gute für die Zukunft!
@TobsCom
@TobsCom 4 жыл бұрын
Hallo Herr Würtz, vielen Dank für Ihre Videos! Das Thema ist wirklich recht komplex und die Vorstellungskraft versagt oft. Bei Stelle 49:55 sieht man die vielen Layer des CNN. Kann man es sich so vorstellen, dass in den ersten Layern (d.h. Convolution, Pooling, ReLU) die Rohdaten (z.B. Bilder) quasi vor-verarbeitet werden? Das heißt, die Features werden mit den Rohdaten abgeglichen und die Übereinstimmung immer weiter verdichtet? Dabei würden dann neue, d.h. abgeleitete 2D-Datensätze (= kleinere Bilder)) erzeugt, deren einzelne Pixel dann am Ende den restlichten, vollvernetzten Neuronen-Schichten zugeführt werden, ähnlich wie in Ihrem Video über NN? Im Beispiel bestünde das CNN also aus 8 Vorverarbeitungsschichten und zwei Layern eines "klassischen" NN?
4 жыл бұрын
Hallo Herr Herfert, vielen Dank für die interessanten Fragen! Im Grunde sehen dies das schon richtig, gerne würde ich 2,3 Aspekte noch etwas deutlicher hervorheben wollen. Die Features als solches werden bei den Convolutional Layern zum Einsatz gebracht. Das heißt, hier findet die eigentliche "echte Auswertung" des Materials statt. Aus den Features werden die sog. FeatureMaps gebildet um die Bildinformation in Zahlen (=Gewichtungen) zu bekommen. Pooling hilft bei der Verkleinerung des Materials damit man die Bildgrößen kleiner bekommt. Beim Thema ReLu in Bezug auf CNN scheiden sich die Geister, bei vielen CNN's findet man die gar nicht. Die Idee dahinter ist eigentlich, die Rechenvorgänge zu beschleunigen bzw. das Ergebnis klarer zu bekommen. Ob das immer was bringt? Muss man ausprobieren. Aber Sie sehen das schon richtig, durch die Schichten wird das Bild analysiert. Wenn Sie mal zur Stelle 2:44 gehen, also an den Anfang, dann sehen Sie warum das so ist: Hier werden immer mehr Details erkannt bis schließlich Gesichter oder Autos (in diesem Beispiel) identifiziert werden. Für den Fall, dass Sie sich mal das in Live anschauen wollen (also wie ein Model wirklich ausschaut) folgender Hinweis: Installieren Sie sich Anaconda (Anaconda Navigator) und dann mit Anaconda Tensorflow + Keras sowie das Jupyter Notebook. Starten Sie dann die erzeugte Umgebung und geben im Jupyter Notebook folgende Befehle ein, gefolgt von STRG+Enter zum Ausführen: 1. from keras.applications.vgg16 import VGG16 2. model = VGG16() 3. print (model.summary()) Dann bekommen Sie eine sehr schöne Darstellung der Schichten von VGG16, einem beliebten Model zur Bilderkennung. Die Ausgabe finden Sie übrigens auch unten stehend, mit interessanten Aspekten. Zum Beispiel bei input_1 sieht man die Bildgröße (224x224) und das es ein farbiges Bild sein kann (3 Farbinformationen = RGB). Dann sehen Sie jede Menge Conv Layer und auch MaxPooling Layer. Bei den MaxPooling Layern fällt sofort auf, dass diese die Bildhgröße verkleinern, schauen Sie z.B. mal auf block1_pool. Hier sieht man, wie aus 224x224 Pixel aus der vorherigen Schicht dann 112x112 Pixel gemacht werden. Die Dritte Zahl gibt übrigens die Anzahl der sogenannten Ausgabekanäle (je nachdem auch Feature-Kanäle), die die nächste Schicht versorgen. Sie finden hier keine ReLu, nebenbei bemerkt. Ganz unten werden dann die Ausgabeschichten dargestellt bis hin zum Prediction Layer (Dense), der wie im Video gezeigt das Ergebnis abbildet. Ürbigens: Schauen Sie mal, wie viele Parameter es bei diesem Model gibt: 138,357,544 (!!) Da ist man doch froh, dass die im Hidden Layer liegen und man sich nicht drum kümmern muss. Ich hoffe, dass ich Ihnen damit weiter helfen konnte. Im übrigen werde ich in den nächsten Tagen ein Video einstellen, bei dem Sie eine Echtzeit-Bilderkennung mit YOLO und OpenCV nachbauen können. Vermutlich Sonntag oder Montag sollte der Video fertig sein, ich habe da jetzt 8 Wochen dran gearbeitet, ich hoffe das er Ihnen gefällt. Beste Grüsse, Udo Würtz Model: "vgg16" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) (None, 224, 224, 3) 0 _________________________________________________________________ block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 _________________________________________________________________ block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 _________________________________________________________________ block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 _________________________________________________________________ block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 _________________________________________________________________ block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 _________________________________________________________________ block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 _________________________________________________________________ block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 _________________________________________________________________ block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 _________________________________________________________________ block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 _________________________________________________________________ block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 _________________________________________________________________ block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 _________________________________________________________________ block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 _________________________________________________________________ block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 _________________________________________________________________ block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 _________________________________________________________________ block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 _________________________________________________________________ block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 _________________________________________________________________ block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 _________________________________________________________________ block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 _________________________________________________________________ flatten (Flatten) (None, 25088) 0 _________________________________________________________________ fc1 (Dense) (None, 4096) 102764544 _________________________________________________________________ fc2 (Dense) (None, 4096) 16781312 _________________________________________________________________ predictions (Dense) (None, 1000) 4097000 ================================================================= Total params: 138,357,544 Trainable params: 138,357,544 Non-trainable params: 0
@TobsCom
@TobsCom 4 жыл бұрын
@ Herzlichen Dank für Ihr Feedback. 1) Woher kommen die Features? Ich meine, muss man die irgendwie vorgeben bzw. aus einem Pool auswählen (z.B. der Strich von oben links nach unten rechts) oder wird das standardmäßig auf solche geometrischen Strukturen abgesucht und ist im Framework so eingebaut oder passiert die Feature-Erzeugung "zufällig"? 2) Mir ist nun klar wie einfache Features wie Kanten im Bild gefunden werden, jedoch verstehe ich noch nicht, wie daraus dann komplexe Formen (z.B. Augen, Münder, Gesichter,...) komplettiert werden? 3) Mein "Problem" ist, dass ich mir Mathematik immer irgendwie grafisch darstellen muss, d.h. eine Funktion aufmalen, um mir deren Auswirkung zu verbildlichen. Ich denke es geht vielen Mitmenschen so und eine bildliche Darstellung der Abläufe im CNN würde sicher helfen. Ich weiß nicht, ob es möglich ist, aber vielleicht kann man ja den kompletten Ablauf zur Erkennung des X oder O´s inkl Trainingsphase irgendwie bildlich darstellen? Es ist zwar schon teilweise (sehr gut!) im Video zu sehen, aber wie es sich im zeitlichen Ablauf und in den vollvernetzten Schichten entwickelt, dass "sehe" ich noch nicht. 4) Wieso der Video? :-)
4 жыл бұрын
Hallo Herr Herfert, die Features werden während des Trainings eines Model / Neuronalen Netzes gebildet. Im Grunde verstecken sich hinter den Convolutional Layern letztlich Softwarefunktionen. Je nach Netz (z.B. VGG16, Resnet50 usw. usw.) sind diese unterschiedlich aufgebaut. Das liegt daran, dass diese Netze unterschiedliche Aufgaben wahrnehmen sollen, beispielsweise werden VGG's im Bereich von selbstfahrenden Fahrzeugen oder ähnlichem eingesetzt (Durchaus auch in modifizierter Form, je nach Einsatzzweck). Hinter den Softwarefunktionen steckt viel Arbeit und Mathematik, hier arbeiten nicht selten ziemlich viele Spezialisten, Mathematiker usw. sehr lange daran um das funktional zu bekommen. Anschließend werden solche Netze vortrainiert, dass heißt mit bekannten Daten gefüttert so dass bereits die Features von solchen Netzen gebildet werden. Somit ist es sofort und leichter anwendbar. Außerdem haben viele Anwender solcher Netze nicht immer geeignete Hardware für das Training zur Verfügung, weil teuer. Vortrainierte Netze sind da sehr willkommen. (Bei komplexen Anwendungen wie selbstfahrende Fahrzeuge wird das Training mit speziellen Daten von den Firmen meist neu durchgeführt was übrigens leicht Wochen dauern kann). Das alles funktioniert erstaunlich gut und ein trainiertes Model kann dann auch unbekannte Bilder gut erkennen. Das Problem bei all diesen Vorgängen: wir kennen den Input und was raus kommt (Output) aber was in den Hidden Layers exakt vor sich geht, wissen wir nicht. Das ist mehr oder weniger eine Blackbox. Hier kommen wir dann zu Themen wie Explainable AI, bei denen Wissenschaftler weltweit versuchen die Entscheidungen von Neuronalen Netzen nachvollziehbar zu machen. Um es kurz zu machen: Komplexe Deep Learning Netze sind eine Black Box. Insofern ist die Darstellung von diesen Vorgängen äußerst schwierig denn wenn wir eine klare Funktion ableiten könnten, hätten wir es ja erklärt. Teilbereiche sind einfach: Gradientenabstieg, Gewichtung etc. Das grosse Ganze leider nicht. Jetzt könnte man sagen: ist ja egal, solange es funktioniert. Das Problem ist, dass z.B bei einem Unfall des o.g. Fahrzeugs man schon wissen muss, warum das Fahrzeug möglicherweise falsch entschieden hat. Und das geht so nicht, leider. Was kann man machen? Beispielsweise Situationen nachstellen und mit geänderten Daten neu trainieren und schauen was raus kommt. Unter anderem deshalb dauert auch die Entwicklung solcher Systeme so lange. Zur Frage wie das Bild analysiert wird: ConvLayer fangen erst mit der Erkennung von einfachen Merkmalen an und werden dann Schicht für Schicht komplexer bis schließlich z.B. ein Gesicht identifiziert werden kann. Bei dem Video wollte ich darauf aufmerksam machen, dass in Ķürze was neues und interessantes kommt :) und diese Live-Beispiel auch zu Ihren Fragen passen wird, nämlich wie ein vortrainiertes Model Objekte in Echtzeit identifiziert. Beste Grüße, Udo Würtz
@TobsCom
@TobsCom 4 жыл бұрын
@ , vielen Dank für Ihre Hilfe. Ich habe Anaconda, Tensorflow und Keras installiert und habe mir wie beschrieben mal die VGG 16 CNN_Übersicht ausgeben lassen. Wie kann ich dieses spezielle CNN "ausprobieren"? Gibt es da ein Tutorial, welches Sie empfehlen können? Ich möchte quasi mal ein paar Bilder eingeben und bisschen spielen. Vielleicht das CNN trainieren
@thebroyt2323
@thebroyt2323 2 жыл бұрын
50:49 sie nennen als Fehler für das O den Wert 0.49 jedoch ist der Soll-Wert 0 weshalb ich mich frage ob dort nicht eher -0.51 stehen müsste?
2 жыл бұрын
Mathematisch ist das auf den ersten Blick korrekt. Tatsächlich repräsentiert die Zahl letztlich eine Wahrscheinlichkeit in % und die ist positiv dargestellt. Der Fehlerwert 0.49 ist dabei nur eine Momentaufnahme; will sagen: 100% (51%+49% = 0.51+0.49) wäre bei "O" ja sowieso falsch. Anders gesagt: Wenn das Netz zu 100% korrekt handeln würde (passiert nicht und wäre vermutlich auch nicht gut da man dann möglicherweise ein Overfitting hätte und das Netz die Trainingsdaten auswendig gelernt hätte; aber ignorieren wir das jetzt mal für dieses Beispiel), dann wäre bei "X" 0% Fehler (100% Idealergebnis - 100% tatsächliches Ergebnis) und bei "O" 100% Fehler (100% Idealergebnis - 0% tatsächliches Ergebnis). Jetzt kommt aber das Problem und es ist wichtig sich das zu verdeutlichen: Das Netz weiß ja zu Anfangs gar nicht, dass "X" richtig und "O" falsch ist. Es geht somit ergebnisoffen vor und versucht durch verschiedene Durchläufe sich dem zu nähern und letztlich zu schauen, wo sich die geringste Fehlerquote ergibt. Heißt: Ich, Neuronales Netz, setze erstmal die Zielwahrscheinlichkeit für "X" auf 100% und für "O" auch auf 100%, da ich ja vorher nicht weiß, was hinterher rauskommen wird. Dann rechne ich rum und komme bei "X" auf einen kleinen Fehlerwert (Die Abweichung von meiner 100% Annahme ist sehr klein (100%-92%); muss also ein "X" sein) und bei "O" komme ich auf einen hohen Fehlerwert (ich nahm an, es ist zu 100% ein "O", habe jetzt aber einen hohen Fehlerwert (100%-51%), muss also doch kein "O" sein). Das Netz hat also gar nicht das Ziel, die Antwort EXAKT zu wissen sondern sich über Wahrscheinlichkeiten zu nähern. Das Ergebnis mit der geringsten Fehlerwahrscheinlichkeit gewinnt. Wichtig: Das Netz kann sich dabei auch irren; genau deshalb ist das Design und Training von Modellen so wichtig. Siehe selbstfahrende Fahrzeuge, da hat eine falsche Annahme der KI u.U. fatale Folgen. Die 1und 0 auf dem Slides dient dabei nur dem Betrachter als Hilfestellung, was die eigentlich richtige Antwort wäre. Ich hoffe, ich habe das halbwegs gut rüberbringen können :-)
@thebroyt2323
@thebroyt2323 2 жыл бұрын
@ danke für die ausführliche Erklärung 👍
@guitarpikstar
@guitarpikstar 3 жыл бұрын
Hallo Herr Würtz, schönes Video, was ich mich aber Frage (und auch leider schon länger Suche): Wie werden die Filter bei mehrfach hintereinander geschachtelten Convolutional Layern designed? In ihrem Beispiel (34:17) kommt ein Bild rein und wieder 3 Bilder der 3 Filter raus. Da wir aber 2 Schichten haben, müssten es doch 9 Bilder für 2d Filter oder 3 Bilder für 3d Filter sein? Was ist hier also die "richtige" herangehensweise?
3 жыл бұрын
Tatsächlich ist das eine stark vereinfachte Darstellung, um die prinzipielle Funktionsweise von CNN's darstellen zu können. Die Frage ist natürlich berechtigt und geht schon über das Basiswissen hinaus :) Dazu würde ich auch den Video zum Thema Objekterkennung mit YOLO empfehlen, da gehe ich nochmal deutlich tiefer in den Aufbau solcher Netze ein. Als weitere Information und Ergänzung vielleicht noch folgendes: CNN's lernen lernen grundsätzlich mehrere Merkmale parallel für eine bestimmte Eingabe, bedeutet: nicht nur einen Filter oder zwei oder drei (wie im Video dargestellt um es verständlich zu machen). Das kann stattdessen eher schnell eine hohe 2 oder gar 3-stellige Anzahl an Filtern sein. (Das darzustellen wäre allerdings im Video der Overkill geworden). Bitte bedenken: die Anzahl an Filtern ergibt sich aus der Architektur des Netzes. Nehmen wir also mal an, Ihr Modell würde mit 32, 64, ... oder sagen wir, 512 Filter arbeiten, dann sind das 512 Möglichkeiten die Features (= landen dann in der Feature-Map wie gezeigt) aus der Eingabe zu extrahieren und letztlich die Eingabedaten zu "sehen". Dadurch ergibt sich auch die Fähigkeit, spezifische Linien, Muster etc. in den jeweiligen Trainingsdaten überhaupt zu erkennen (sog. Spezialisierung). Das bedeutet umgekehrt, wenn wir tatsächlich nur 3 Filter hätten, wäre das für den realen Einsatz definitiv nicht ausreichend. Bitte auch bedenken: Wir nutzen bei Farbbildern mehrere Kanäle, typischerweise 3 für Rot, Grün, Blau. Das habe ich auch nochmal in dem Video zu YOLO und Objekterkennung dargestellt. Da gehe ich explizit auf den Netzaufbau ein und da sieht man auch sehr schön die verschiedenen Schichten und Kanäle dazu. Zurück zu den Kanälen: Wenn wir also 3 Kanäle benutzen, dann sind das Datentechnisch gesehen aus Sicht des Netzes auch 3 (verschiedene) Bilder, auch wenn wir nur 1 Bild als Eingangsinformation zur Verfügung stellen. Insofern muss das der Filter auch berücksichtigen, das nennt man auch "Tiefe des Filters". Aus unserem 3x3 Filter würde dann auch ein 3x3x3 Filter werden. Die Kanäle habe ich allerdings in dem Video nicht näher beleuchtet weil es hier mehr um ein Grundverständnis von CNN's geht. Gleichwohl: Wenn ein Layer des CNN's z.B. 32 Filter hat, dann sind diese also nicht nur 2D wie das Bild, welches analysiert wird sondern durch die Kanäle tatsächlich 3D, die Farbinformation wird also auch durch entsprechende Filter-Gewichtungen dargestellt. Aber wie werden die Filter überhaupt erzeugt? Die Magie (wenn man so will) bei CNNs ist, dass wir nicht wissen (können), wie die Filter für ein bestimmtes Problem auszusehen haben. Das CNN findet automatisch heraus, wie jeder Filter aussehen sollte. Dies wiederum geschieht durch Backpropagation (siehe auch Basiswissen Neuronale Netze). Also jedes Mal, wenn ein Trainingsbeispiel (oder ein Stapel von Beispielen) das Netzwerk durchläuft, werden die Werte innerhalb jedes Filters um einen kleinen Betrag aktualisiert. Dieser kleine Betrag wird mit Hilfe der Ableitungen einer Verlustfunktion bestimmt. Bei jedem Schritt des Trainingsverfahrens verändern sich somit die Werte in den einzelnen Filtern sukzessive zu einem Wert, der die Verlustfunktion minimiert (=Fehler/Verlust Richtung 0) und dadurch die beste Qualität der Vorhersagen erzeugt (Idealzustand). Das ist auch das Gute an den Frameworks, (TensorFlow & Co.), diese nehmen uns die Arbeit im Grunde ab. Ich hoffe, dass ich damit etwas weiter helfen konnte.
@guitarpikstar
@guitarpikstar 3 жыл бұрын
@ Hallo Herr Würtz, mit so einer schnellen und doch umfangreichen Antwort habe ich nicht gerechnet, vielen Dank! zu meinem Hintergrund: Ich habe in meiner Masterarbeit mit Fully-Connected Layern, Autoencodern und Rekurrenten Netzen gearbeitet und auch ein eigenes Framework dazu programmiert (Ausführung & Training der Netze über Gradientenabstiegsverfahren). Daher sind mir ANNs nicht fremd. Für meine Promotion möchte ich Sonarbilder mit unter Anderem CNNs analysieren. Da ich die Dinge immer gerne von grundauf verstehen möchte, wollte ich auch hier mein Framework erweitern, anstatt eine "Instant-Lösung" wie TensorFlow o.Ä. zu nutzen. Weitere Vorteile wären natürlich auch, dass ich das Framework genau auf meine Anforderungen zuschneiden kann. Leider finde ich wenig Material, welches CNNs von A-Z erläutert. Vom Training, zu den unterschiedlichen Unterarten, zu einem (Framework-freien) Beispielcode. Und wenn man doch mal etwas findet, dann ist es stark vereinfacht (towardsdatascience.com/training-a-convolutional-neural-network-from-scratch-2235c2a25754). Ich fürchte, meine Fragestellung war nicht konkret genug, daher versuche ich sie nochmal anders zu stellen: Wir haben ein Schwarz-Weiß-Bild a 28x28 Pixel. Dieses kommt in ein Convolutional-Layer mit 4 Filtern (z.B. 3x3). Ergo müssen 4 gefilterte Ergebnisse aus der Schicht entspringen. Nach Max-Pooling möchte ich eine weitere Convolutional-Layer anknüpfen. In dieser sind 5 Filter. Muss ich nun alle Kernel mit allen 4 Zwischenbildern filtern oder müssen diese 5 Filter dreidimensional sein (z.B. 3x3x4), damit die korrelierten Features aus den unterschiedlichen Filtern in der ersten Schicht beachtet werden? Können Sie mir vielleicht eine gute Quelle (außer Ihrer Videos natürlich) hierfür empfehlen? Gerne auch in textform?
3 жыл бұрын
@@guitarpikstar Jetzt wird das etwas klarer, danke für die Darstellung. Tatsächlich habe ich selbst noch kein Framework selbst bauen müssen, in jedem Fall ist das aber mal ein interessante Herausforderung. Ein Vorteil sind sicher s/w Bilder, insofern sollte ein Kanal ausreichen und die Tiefe des Bildes passt mit der Tiefe der Filter, was ebenfalls sehr wichtig ist. Hier noch ein paar Gedanken dazu, ohne das Framework selbst im Detail zu kennen: Normalerweise würde eine nachfolgende Schicht i.d.R. das doppelte oder dreifache der Anzahl an Filtern der vorherigen Schicht haben, da die vorherigen Schichten die High Level Features extrahieren welche dann weiter verarbeitet werden. Im vorliegenden Fall also 8 bzw. 12, was natürlich mit zunehmender Anzahl Schichten auch den Rechenaufwand erhöht. Insofern sehe ich den Punkt "Muss ich nun alle Kernel mit allen 4 Zwischenbildern filtern" als gegeben, da letztlich die FeatureMap die Eingabe für den nächsten Layer darstellt. Würde die nachfolgenden Filter dagegen wie als Option beschrieben um eine weitere Dimension erhöht, wäre das aus meiner Sicht irgendwann nicht mehr zu handhaben, auch aus einer Compute-Sicht. Ich denke, die Tasache dass die Eingangsinformation mit 28x28 recht übersichtlich ist, sollte nicht dazu verleiten bei einem (sozusagen ebenso überschaubarem) Netzwerk hier unbewusst unnötige Komplexität zu versuchen die vermutlich auch nicht zielführend sein wird. An der Quelle bin ich noch dran, ich habe dazu auch einen Bekannten angetriggert. Da er allerdings viel unterwegs ist und in US beheimatet ist, kann das manchmal etwas dauern. Mal schauen, ob ich da was brauchbares finde.
3 жыл бұрын
Hallo Guitarpikstar, ich habe ein Feedback zu dem Thema von meinem Bekannten Brandon bekommen. Interessant ist, dass er das Thema mit den Filtern anders machen würde. Ich würde an dieser Stelle empfehlen ihm zu folgen da er beim Selbstbau von Frameworks entsprechende Erfahrung hat und das wiederum auch in seinen Kursen behandelt. Insofern würde er die Tiefe erhöhen, was ich nicht gemacht hätte, allerdings nutze ich auch vorhandene Frameworks wie YOLO, TensorFlow etc. und schreibe keine eigenen. However, Brandon ist da sehr erfahren und u.a. Principal Data Scientist bei Microsoft gewesen, er kennt das im Detail. Auch hier: ich bekomme nichts dafür wenn jemand seinen Kurs bucht oder nicht, Brandon und ich kennen uns länger und tauschen uns zu Inhalten aus; er ist fachlich sehr gut und macht seinen Kanal mit den KI Themen in Englisch. Insofern: viel Spaß beim Framework - Bauen :) ".... Good specific questions. 1. "Do I now have to filter all kernels with all 4 intermediate images or do these 5 filters have to be three-dimensional (e.g. 3x3x4), so that the correlated features from the different filters are observed in the first layer?" The latter. I had this same question when I first was implementing a CNN. This question inspired a LinkedIn post in case others had the same question. www.linkedin.com/feed/update/urn:li:activity:6811211411901992960/ 2. "I can't find much material that explains CNNs from A-Z. From training, to the different subtypes, to a (framework-free) sample code." It's possible that my End-to-End Machine Learning courses on the topic will meet this requirement. They are wrapped in a very lightweight framework, but the emphasis is on readable, student-friendly code. One-dimensional CNNs course: e2eml.school/321 Two-dimensional CNNs course: e2eml.school/322 Code for 1D convolution layer: gitlab.com/brohrer/cottonwood/-/blob/main/cottonwood/conv1d.py Code for 2D convolution layer: gitlab.com/brohrer/cottonwood/-/blob/main/cottonwood/conv2d.py I hope this helps. Best of luck finding your new normal this year.... " Brandon .."
@guitarpikstar
@guitarpikstar 3 жыл бұрын
@ Hallo Herr Würtz Vielen Dank für die Mühen und tolle Antwort! Ich schaue mir die Kurse an. Mit freundlich Grüßen Guitarpikstar
@freakfreak786
@freakfreak786 3 күн бұрын
32:50 Diese Aktivierungsschicht mit ReLU ist doch wichtig, oder nicht? Das sorgt für Nichtlinearität und ermöglicht dem Netzwerk komplexere Muster zu lernen. Zusätzlich verbessert es die effizienz des Netzwerks und reduziert Overfitting. Beim max-pooling und auch beim average-pooling ist diese Aktivierungsschicht entscheidend. Wieso ist das denn bitte umstritten?
3 күн бұрын
Grundsätzlich richtig, aber es gibt ein paar Nachteile die konzeptionell zu berücksichtigen sind, also ggfs. andere oder weitere Varianten der ReLu erfordern oder andere Vorgehensweisen. Beispiele: -Dead Neurons: Manchmal können Neuronen inaktiv werden und nie wieder aktiviert werden, wenn sie einmal einen negativen Wert annehmen. Nicht gut. -Exploding Gradients: In sehr tiefen Netzwerken können die Gradienten zu groß werden und das Training destabilisieren. Auch nicht gut. -Wenig bis kaum relevant (ehrlicherweise): Nicht-differenzierbar bei Null. ReLU ist an der Stelle Null nicht glatt (hat keinen definierten Anstieg), was aber in der Praxis selten ein Problem ist.
@freakfreak786
@freakfreak786 2 күн бұрын
Vielen lieben dank für diese ausführliche Erklärung
@whataday3910
@whataday3910 3 жыл бұрын
Die 3x3 Felder, die du bei 15:00 zeigst heißen Filter richtig? Nun bin ich häufig schon über den Begriff Kernel gestolpert. Bei einem rgb Bild werden dreidimensionale Filter angewendet. Ist dann ein Teil eines Filter für einen Eingangskanal ein Kernel? Also ist bei einem Graustufen Bild ein Filter einem Kernel gleichzusetzen?
3 жыл бұрын
Filter ist der Begriff für das was sie machen (filtern); Filter besitzen i.d.R. feste Pixel-Größen (z.B. 3 x 3) welche als Kernel-size bezeichnet wird.
@whataday3910
@whataday3910 3 жыл бұрын
@ ist ein Filter, der auf ein rgb Bild angewendet wird dann dreidimensional?
3 жыл бұрын
@@whataday3910 Streng genommen wäre es so, tatsächlich werden meistens 3 Filter (r+g+b) genommen, welche jeweils 2D sind. Klingt ähnlich aber ist doch was anderes als ein einziger Filter der wirklich 3D ist.
@whataday3910
@whataday3910 3 жыл бұрын
@ Ahh okay ich hatte bisher aus Foren rausgelesen, dass ein Filter bei RGB aus drei Kernels besteht und dann jeder Kernel ein 2D Filter für einen Input ist. Dann schaue ich hier nochmal genau.
3 жыл бұрын
@@whataday3910 Das meint letztlich das Gleiche. Aber 3 Filter 2D ist halt nicht das Gleiche wie 1 Filter 3D...
@whataday3910
@whataday3910 3 жыл бұрын
Muss bei 50:26 nicht bei der richtigen Antwort für Null auch eine "1" stehen?
3 жыл бұрын
Nein, da das zu erkennende Objext ein X ist. Insofern muss die richtige Antwort bei O Null sein (also: nein=0=kein O bzw. ja=1=X) ;)
@whataday3910
@whataday3910 3 жыл бұрын
@ ahhhh es geht um den Zustand. Wenn das Objekt eine Null ist dann wäre der richtig zu erwartende Wert also eine 1.
@whataday3910
@whataday3910 3 жыл бұрын
@ aber musste dann nicht der Fehler auch 0,51 sein wenn ich als richtige Antwort eine Null für die Klasse 0 bei dem Eingangsaobjekt X erwarte?
3 жыл бұрын
Hier muss man etwas um die Ecke denken. Auf den ersten Blick erscheint das so, da stimme ich zu. Aber aus Sicht des neuronalen Netzes ist es anders: Es identifiziert ein X und ein O. Beides nicht zu 100%, also entscheidet (wie immer) die Fehlerrate. Ist es ein X? Fehlerrate sehr niedrig, Tendenz "X". Ist es O? Fehlerrate höher als "X", also eher kein "O". Die Spalte "Richtige Antwort" ist nur für uns Menschen gedacht, das Neuronale Netz rechnet 100%-Aktuelle Antwort. Und das sind dann 0.08 bzw. 0.49.
@sylus121
@sylus121 2 жыл бұрын
52:01
Neuronale Netze - Basiswissen
1:07:46
Udo Würtz
Рет қаралды 86 М.
This is why Deep Learning is really weird.
2:06:38
Machine Learning Street Talk
Рет қаралды 378 М.
Jumping off balcony pulls her tooth! 🫣🦷
01:00
Justin Flom
Рет қаралды 28 МЛН
Inside Out Babies (Inside Out Animation)
00:21
FASH
Рет қаралды 23 МЛН
EVOLUTION OF ICE CREAM 😱 #shorts
00:11
Savage Vlogs
Рет қаралды 12 МЛН
KI und Machine Learning - Schwerpunkt Reinforcement Learning
1:13:49
bm Informatik
Рет қаралды 6 М.
37C3 -  Lass mal das Innere eines Neuronalen Netzes ansehen!
39:02
media.ccc.de
Рет қаралды 51 М.
MIT Introduction to Deep Learning | 6.S191
1:09:58
Alexander Amini
Рет қаралды 430 М.
But what is a convolution?
23:01
3Blue1Brown
Рет қаралды 2,6 МЛН
Rekurrente Neuronale Netze: Wie Computer lesen lernen
59:40
dida Machine Learning
Рет қаралды 1,3 М.
CNN: Convolutional Neural Networks Explained - Computerphile
14:17
Computerphile
Рет қаралды 854 М.
Watching Neural Networks Learn
25:28
Emergent Garden
Рет қаралды 1,2 МЛН
Jumping off balcony pulls her tooth! 🫣🦷
01:00
Justin Flom
Рет қаралды 28 МЛН