Neural Networks



  • Könnt ihr gute Bücher zu dem Thema empfehlen?

    Begleitend schaue ich gerade die Webinare von Geoffrey Hinton auf Coursera an

    https://class.coursera.org/neuralnets-2012-001/lecture

    Allerdings verstehe ich dort nicht alles, so das ich gerne eine gute Lektüre zu dem Thema lesen würde, dass C++ verwendet...



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Sewing schrieb:

    Könnt ihr gute Bücher zu dem Thema empfehlen?

    Begleitend schaue ich gerade die Webinare von Geoffrey Hinton auf Coursera an

    https://class.coursera.org/neuralnets-2012-001/lecture

    Allerdings verstehe ich dort nicht alles, so das ich gerne eine gute Lektüre zu dem Thema lesen würde, dass C++ verwendet...

    kommt drauf an auf welcher Abstraktionsebene du dich damit beschäftigen willst.
    Wenn du wirklich das mathematische Fundament verstehen willst, kann ich dir Bishop - Pattern Recognition and Machine Learning empfehlen.

    Fang mal klein an und implementiere das Perzeptron ( https://en.wikipedia.org/wiki/Perceptron ). Damit kannst du Daten, welche linear separierbar (d.h. du kannst eine Trennlinie oder Ebene zwischen z.B. rot und blau markierte Datenpunkte malen) sind, klassifizieren.

    Kannst dir auch mal aktuelle Publikationen zu dem Thema anschauen, z.B. ImageNet Classification with Deep Convolutional
    Neural Networks
    . "Deep Learning" ist das Stichwort. Wird zum Beispiel auch bei der Facebook Gesichtserkennung verwendet: DeepFace: Closing the Gap to Human-Level Performance in Face Verification

    * alle Publikationen sowie den Bishop findet man per Google frei im Internet.



  • Danke schob mal.
    Aber gibt es kein wirklich gutes Anfänger Buch das anhand von Beispielen mit C++ da rangeht?



  • Vergiss C++! Mach das in python mit entsprechenden Grafik-Libs, die dir die linear trennbaren Daten und die Ebene, die sie trennt, schön visualisieren.
    Das ist in Python verhältnismäßig wenig Code, zumal du mit nur einer Zeile so etwas wie eine Singulärwertszerlegung machen kannst, um die Korrelation zwischen Variablen herauszufinden, um anschließend eine Dimensionsreduktion machen zu können, was zu besseren Ergebnissen führt. Installiere dir dafür die Libs numpy und matplotlib.



  • Sind das Bibs oder Schnittstellen von Python zu C++?

    Weshalb wird für Deep Learning Zeugs eigentlich so oft Python verwendet?



  • Beides. Libs, die Schnittstellen zu C oder Fortran Libs bieten.
    Mit python kannst du eben mit wenig Aufwand viel erreichen und mit diesen Libs hast du auch eine gute Performance. Insbesondere zum Lernen macht C++ überhaupt keinen Sinn, da du für dieselbe Funktionalität einen größeren Aufwand hast.



  • Python kann man durchaus als Matlab Ersatz sehen, wenn man all die Dinge wie numpy und matplotlib dazuinstalliert.

    Im Gegensatz zu C++ kann man sich mehr auf das Problem an sich konzentrieren, anstatt über Pointer und ähnliches nachdenken zu müssen (überspitzt formuliert).

    Möchte ich z.B. PCA machen, so hab ich das in Matlab oder Python in ein paar Zeilen erledigt. In C++ ... keine Ahnung ... müsste man mal eine geeignete Bibliothek suchen, müsste sich erstmal wieder einarbeiten, usw.
    Hab z.B. mal die Dichtefunktion einer Normalverteilung in C++ gesucht. Klar, gibt es mittels boost. Aber bis ich kapiert habe, wie die ganze Template Magic funktioniert ist einiges an Zeit vergangen (kann natürlich auch sein dass ich einfach zu blöd für boost bin).
    Kurz gesagt: Python ist einfacher!

    Natürlich wird der Algorithmus in der Regel nach C++ portiert, sobald es Richtung "real live" geht. Man wird kaum einen größeren Prozessor (z.B. im Auto) verbauen, nur um Python darauf ausführen zu können. C hingegen lauft quasi überall, und C++ inzwischen auch schon auf sehr vielen Plattformen. Gerade bei komplexeren Dingen ist es vorteilhaft, C++ verwenden zu können, weil das die Programmierung vereinfacht. Z.b. ist das Bildverarbeitungsmodul des Mars-Rovers in C++ geschrieben, der Rest in C.

    Am besten lädst du dir mal Python und numpy runter. Außerdem bietet sich http://scikit-learn.org/stable/ für diverse Machine Learning Probleme an.
    Hast du Linux? Wenn ja, dann verwende Linux statt Windows, die Installation ist unter Linux nämlich maximal einfach, und es funktioniert alles auf Anhieb!


Log in to reply