Deep Learning Flashcards
Was ist ein deep network ?
Ein Multi-Layer Netzwerk mit einer Anzhal von hidden Layers.
Wiederholungen von Operationen. einfache Operationen in jedem Layer –> komplexe resultierende Operation
Deep networks lernen gute Repräsentationen und dann ouput layer als Klassifikator anwenden. –> man braucht labelled Daten (supervised).
MLP: völlig verbunden, Anzahl an output Neuronen = Anzahl der Klassen
Was haben alle Aktivierungsfunktionen eines deep Networks gemeinsam?
Beispiele?
input und output layer h^k, weight matrix, Nichtlinearitäten (tanh/max zwischen Null und dem Wert)
SIDGMOID (tanh), RELU(max)
CNN ?
wann deep learning method?
Von biologischen Prozessen inspiriertes Konzept. Für Audio/Bilddateien.
Grundsätzlich besteht die Struktur eines klassischen Convolutional Neural Networks aus einem oder mehreren Convolutional Layer, gefolgt von einem Pooling Layer. Diese Einheit kann sich prinzipiell beliebig oft wiederholen, bei ausreichend Wiederholungen spricht man dann von Deep Convolutional Neural Networks, die in den Bereich Deep Learning fallen.
Bild –> Filter –> Feature Maps (=mehrere Repräsentationen vom Input), die features sind durch lineare Filter extrahiert, bevor man weiter macht wendet man eine Nichtlinearität an (Relu z.B.) –> wiederholen –> Pooling (die Größe der FeatureMaps reduzieren) –> wiederholen
–> am Ende das output layer = Klassifizierer
die Feature werden am Ende globaler (von kleinem Ausschnitt des Bildes zum größeren),, da kleine Feature maps mit Ausschnitt (small patch –> deeper –> small patch will look at at a very large patch of the image.
deep learning basiert auf wechem Prinzip?
auch CNN inspiriert von?
- Retina: wie eine deep structure mit Schichten (cone, BCells,HCells): ähnlicher Effekt
- Output, dass man wieder als input nimmt
Mit feedbackverbindungen: Filter mit un- und endlicher Impulsantwort (NIIR, FIR)
CNN: visuelle Verarbeitung im primären visuellen Cortex (einfache Zellen, Orientierungsspalten, komplexe Zellen)
CNN: -.
CNN, Pooling?
Durchschnitt oder Max. der Variablen eines fensters nehmen –> die Größe der FeatureMaps reduzieren
Convolution /Faltung
Inputvektor(y-1), outputvektor (y)
Output= Input * weightmatrix
MLP (generelles neuronalles Netzwerk): uneingeschränkte weight matrix (mit versch. weightgrößen)
ANNs und CNNs: weight matrix basiert auf sparsity
learning theorie: Wie bekommen wir MLP, das generelle Netzwerk spezieller? also welchen Bias müssen wir einführen, um zu einer nicht so komplexen Maschine zu gelangen –> Generalisierung ?
zwei Bedingungen als Bias (können nicht gelernt werden, werden bestimmt)
weight matrix (Filtermatrix) hat nur Diagonale Komponenten, die von Null unterschiedlich sind. (sparsity) und alle weights auf der Diagonalen sind gleich große.
- output neuron nicht gewichtete Summe der inputs, sondern nur von einem kleinen Bereich des Inputs
- sparse connections (output abhängig von kleinem Bereich des Inputs –> meisten weights = 0)
- shared weights
Wann macht deep learning keinen Sinn?
Wenn man nur lineare Berechnungen/Operationen durchführt, da man sie als eine lineare Operation aufschreiben könnte.
Nur mit Nichtlinearen wird man von der deep struktur profitieren.
Warum sind die Parameter 1. Größe des pooling Fensters und Schritt so wichtig in der learning theory?
Es handelt sich um Komplexität.
Nicht möglich die VC-Dim. von diesen Netzwerken zu berechnen, aber man kann argumentieren, dass die Komplexität von der Parameteranzahl/ Größe der des Netzwerkes.
Vergrößerung des Pooling –> Reduzierung der Feature maps –> Reduzierung der Komplexität –> bessere Generalisierung
Wie optimieren wir deepe netzwerke?
durch Backpropagation (die Filter (weights) vollständig oder nur in manchen layers verändern, aber nicht die Größe/hyperparameter) (Rückkopplung) und Feinabstimmung
Training Fehler reduzieren
Entweder merkst du, dass das Netzwerk nicht komplex genug ist, um zu lernen –> pooling reduzieren, mehr layer hinzufügen
oder du merkst, dass Trainingsfehler reduziert sich sehr gut, aber der Überprüfungsfehler beim Testen wird nicht weniger –> pooling erhöhen
Alternativen zu unsupervised
Ein vorgelerntes deep Netzwerk von einem ähnlichen Problem nutzen.
–> das Netzwerk auf die neue Aufgabe fine tunen –> retrain den output layer, oder noch den davor, wenn nicht gut genug
Trend war: je deeper, desto besser, aber…?
Lösung/Methode?
Je tiefer du auch gehst, desto kleiner wird die Auflösung (durch mehr pooling layers)
–> ResNet: skip Connection, feed the previous feature map ??
Warum funktioniert deep learning so gut?
- brain-inspired (sich nach während einer langen Zeit entwickelt/angepasst)
- Anzahl an Daten wird größer und schnelles Berechnen verbessert sich
- repräsentation learning mit supervised learning kombinieren (compressing für ein spezifisches Problem)
- Magic-Theory (unabhängig zum Ort ein Pixel) pooling is linked
- sandwich theory: linear (PCA: Korrelationen minimieren, aber nicht höhere Ordnung der Redundanz minimieren), nichtlinear (RELU: kann statistische Abhängigkeiten höherer Ordnung in Korrelationen umwandeln) –> abwechselnd
- -> Möglichkeit: Abhängigkeiten zunehmender Ordnung zu reduzieren, indem Sie nur Korrelationen in jeder Schicht reduzieren. –> removing redundancies (featuremaps werden immer sparser)
- Bag of tricks