Ich habe in letzter Zeit die Theorie hinter ANNs studiert und wollte die "Magie" hinter ihrer Fähigkeit zur nichtlinearen Klassifizierung mehrerer Klassen verstehen. Dies führte mich zu dieser Website, auf der geometrisch gut erklärt wird, wie diese Annäherung erreicht wird.
So habe ich es verstanden (in 3D): Die verborgenen Ebenen können als Ausgabe von 3D-Schrittfunktionen (oder Turmfunktionen) betrachtet werden, die so aussehen:
Der Autor erklärt, dass mehrere solcher Türme verwendet werden können, um beliebige Funktionen zu approximieren, zum Beispiel:
Dies scheint sinnvoll zu sein, jedoch ist die Konstruktion des Autors eher so konstruiert, dass sie eine gewisse Intuition hinter dem Konzept vermittelt.
Wie genau kann dies jedoch bei einer beliebigen ANN validiert werden? Folgendes möchte ich wissen / verstehen:
- AFAIK die Annäherung ist eine glatte Annäherung, aber diese 'Intuition' scheint eine diskrete Annäherung zu liefern, ist das richtig?
- Die Anzahl der Türme scheint auf der Anzahl der verborgenen Schichten zu basieren - die obigen Türme werden als Ergebnis von zwei verborgenen Schichten erstellt. Wie kann ich dies (mit einem Beispiel in 3D) mit nur einer einzigen ausgeblendeten Ebene überprüfen?
- Die Türme werden mit einigen Gewichten erstellt, die auf Null gesetzt sind, aber ich habe nicht gesehen, dass dies bei einigen ANNs der Fall ist, mit denen ich herumgespielt habe. Wird es wirklich eine Turmfunktion sein? Kann es etwas mit 4 bis Seiten sein und sich fast einem Kreis annähern? (Der Autor sagt, dass dies der Fall ist, lässt dies jedoch als Selbststudium).
Ich möchte diese Approximationsfähigkeit in 3D wirklich für jede beliebige 3D-Funktion verstehen, bei der ein ANN mit einer einzelnen verborgenen Ebene approximiert werden kann. Ich möchte sehen, wie diese Approximation aussieht, um eine Intuition für mehrere Dimensionen zu formulieren.
Folgendes denke ich, was meiner Meinung nach helfen könnte:
- Nehmen Sie eine beliebige 3D-Funktion wie .
- Generieren Sie einen Trainingssatz von mit beispielsweise 1000 Datenpunkten, wobei sich viele Punkte auf der Kurve befinden, einige darüber und einige darunter. Diejenigen auf der Kurve sind als "positive Klasse" (1) und diejenigen nicht als "negative Klasse" (0) markiert.
- Füttere diese Daten einem ANN und visualisiere die Annäherung mit einer verborgenen Schicht (mit ungefähr 2-6 Neuronen).
Ist diese Konstruktion korrekt? Würde das funktionieren? Wie mache ich das? Ich bin noch nicht in der Lage, dies selbst umzusetzen, und suche diesbezüglich mehr Klarheit und Richtung - bestehende Beispiele, die dies zeigen, wären ideal.
Antworten:
Es gibt zwei großartige kürzlich erschienene Artikel zu einigen geometrischen Eigenschaften tiefer neuronaler Netze mit stückweise linearen Nichtlinearitäten (einschließlich der ReLU-Aktivierung):
Sie bieten dringend benötigte Theorie und Genauigkeit, wenn es um neuronale Netze geht.
Ihre Analyse konzentriert sich auf die Idee, dass:
Daher können wir tiefe neuronale Netze mit stückweise linearen Aktivierungen als Aufteilung des Eingaberaums in eine Reihe von Regionen interpretieren, und über jeder Region befindet sich eine lineare Hyperfläche.
Beachten Sie in der Grafik, auf die Sie verwiesen haben, dass die verschiedenen (x, y) -Regionen lineare Hyperflächen aufweisen (scheinbar entweder schräge oder flache Ebenen). Wir sehen also die Hypothese aus den beiden oben genannten Artikeln in Aktion in Ihren referenzierten Grafiken.
Darüber hinaus geben sie an (Hervorhebung der Mitautoren):
Grundsätzlich ist dies der Mechanismus, der es tiefen Netzwerken ermöglicht, unglaublich robuste und vielfältige Feature-Darstellungen zu erhalten, obwohl weniger Parameter als ihre flachen Gegenstücke vorhanden sind. Insbesondere können die tiefen neuronalen Netze eine exponentielle Anzahl dieser linearen Regionen lernen . Nehmen wir zum Beispiel Satz 8 aus dem ersten Artikel, auf den verwiesen wird:
Dies gilt wiederum für tiefe neuronale Netze mit stückweise linearen Aktivierungen, wie beispielsweise ReLUs. Wenn Sie sigmoidartige Aktivierungen verwenden würden, hätten Sie glattere sinusförmig aussehende Hyperflächen. Viele Forscher verwenden jetzt ReLUs oder eine Variation von ReLUs (undichte ReLUs, PReLUs, ELUs, RReLUs, die Liste geht weiter), weil ihre stückweise lineare Struktur eine bessere Gradienten-Backpropagation im Vergleich zu den Sigmoid-Einheiten ermöglicht, die sättigen können (sehr flach / haben) asymptotische Regionen) und töten effektiv Gradienten.
Dieses Exponentialitätsergebnis ist entscheidend, da sonst die stückweise Linearität möglicherweise nicht in der Lage ist, die Arten nichtlinearer Funktionen effizient darzustellen, die wir lernen müssen, wenn es um Computer Vision oder andere Aufgaben des harten maschinellen Lernens geht. Wir haben jedoch dieses Exponentialitätsergebnis, und daher können diese tiefen Netzwerke (theoretisch) alle Arten von Nichtlinearitäten lernen, indem sie sie mit einer großen Anzahl linearer Regionen approximieren.
Wenn Sie nur Ihre Intuition testen möchten, gibt es heutzutage viele großartige Deep-Learning-Pakete: Theano (Lasagne, No Learn und Keras darauf aufgebaut), TensorFlow, eine Reihe anderer, von denen ich sicher bin, dass ich gehe aus. Diese Deep-Learning-Pakete berechnen die Backpropagation für Sie. Für ein kleineres Problem wie das von Ihnen erwähnte ist es jedoch eine gute Idee, die Backpropagation selbst zu codieren, nur einmal zu tun und zu lernen, wie man sie mit einem Gradienten überprüft. Aber wie gesagt, wenn Sie es nur ausprobieren und visualisieren möchten, können Sie mit diesen Deep-Learning-Paketen ziemlich schnell loslegen.
Wenn man in der Lage ist, das Netzwerk richtig zu trainieren (wir verwenden genügend Datenpunkte, initialisieren es richtig, das Training läuft gut, dies ist ein ganz anderes Problem, um ehrlich zu sein), dann eine Möglichkeit, in diesem Fall zu visualisieren, was unser Netzwerk gelernt hat , eine Hyperfläche, besteht darin, unsere Hyperfläche einfach über ein xy-Netz oder Gitter zu zeichnen und zu visualisieren.
Wenn die obige Intuition korrekt ist, hat unser tiefes Netz bei Verwendung von tiefen Netzen mit ReLUs eine exponentielle Anzahl von Regionen gelernt, wobei jede Region ihre eigene lineare Hyperfläche hat. Der springende Punkt ist natürlich, dass die linearen Approximationen so fein werden können, weil wir exponentiell viele haben, und wir die Zackigkeit von allem nicht wahrnehmen, da wir ein ausreichend tiefes / großes Netzwerk verwendet haben.
quelle