Ich beschäftige mich mit CNNs (Convolutional Neural Networks) aufgrund ihrer Anwendungen in der Bildverarbeitung. Ich bin bereits mit standardmäßigen neuronalen Feed-Forward-Netzen vertraut, daher hoffe ich, dass einige Leute hier mir helfen können, den zusätzlichen Schritt zum Verständnis von CNNs zu machen. Folgendes denke ich über CNNs:
- In herkömmlichen Feed-Forward-NNs haben wir Trainingsdaten, bei denen jedes Element aus einem Merkmalsvektor besteht, den wir in den NN in der "Eingabeebene" eingeben. Bei der Bilderkennung könnte also jedes Pixel nur eine Eingabe sein. Das sind unsere Merkmalsvektoren. Alternativ könnten wir manuell andere - wahrscheinlich kleinere - Merkmalsvektoren erstellen.
- Der Vorteil des CNN besteht darin, dass es stärkere Merkmalsvektoren erzeugen kann, die gegenüber Bildverzerrung und Position unveränderlicher sind. Wie die folgende Abbildung zeigt (aus diesem Lernprogramm ), generieren CNNs Feature-Maps, die dann in ein standardmäßiges neuronales Netzwerk eingespeist werden (es handelt sich also wirklich um einen riesigen Vorverarbeitungsschritt).
- Die Art und Weise, wie wir diese "besseren" Merkmale erhalten, ist durch abwechselnde Faltung und Unterabtastung. Ich verstehe, wie die Unterabtastung funktioniert. Nehmen Sie für jede Feature-Map nur eine Teilmenge der Pixel, oder berechnen Sie den Durchschnittswert der Pixel.
Aber ich bin hauptsächlich verwirrt darüber, wie der Faltungsschritt funktioniert. Ich kenne die Faltungen aus der Wahrscheinlichkeitstheorie (Dichte für die Summe zweier Zufallsvariablen), aber wie funktionieren sie in CNNs und warum sind sie effektiv?
Meine Frage ähnelt dieser, aber ich bin mir nicht sicher, warum der erste Faltungsschritt funktioniert.