Δημοσιεύτηκε: 16 Αύγ 2012, 23:22
από Dimitris
c7p έγραψε:Βέβαια εκτός από αγγλικά, πρέπει να έχεις και καλές γνώσεις μαθηματικών -ανάλυση και γραμμική άλγεβρα- για να τα κατανοήσεις πλήρως, δηλαδή γνώσεις τουλάχιστον πρώτου έτους. Επειδή είναι ένα εξειδικευμένο αντικείμενο, θα βλέπεις σχεδόν παντού μαθηματικά.

Τα μαθηματικά που χρειάζονται για τα νευρωνικά δίκτυα, εκτός ανάλυσης και γραμμικής άλγεβρας που δεν πας πουθενά χωρίς αυτά, περιλαμβάνουν και αριθμητική βελτιστοποίηση (ελαχιστοποίηση εν προκειμένω). Ένα νευρωνικό δίκτυο δεν είναι τίποτε άλλο από μία συνάρτηση με πολλές εισόδους και πολλές εξόδους και στην αρχή άγνωστες παραμέτρους. Τα δεδομένα εκπαίδευσης (training data) χρησιμοποιούνται για να λύσεις το πρόβλημα ελαχιστοποίησης σφάλματος μεταξύ του data output και του υπολογισμένου output από το δίκτυο. Αφού υπολογίσεις τις παραμέτρους του δικτύου κάνεις ουσιαστικά παρεμβολή (interpolation) για τα input που θες να υπολογισεις. To extrapolation (προεκβολή) είναι πάντα at your own risk. To πρόβλημα με τα NN (neural networks) είναι να υπερεκπαιδευτουν, οποτε θα κάνουν τελειο fit κάτι που θα οδηγησει σε ταλαντώσεις στο interpolation. Γι'αυτό χρειάζεται να υπολογιστεί η καμπύλη λάμδα και να επιλέχθουν έτσι οι παράμετροι ώστε να μειωνουν μεν το σφάλμα άλλα όχι σε τετοιο βαθμο που να δημιουργεί προβληματα. Γι'αυτο τα δεδομενα χωρίζονται σε training set & test set. Η καμπύλη λάμδα είναι μια άλλη μορφή της καμπύλης pareto από το multiobjective optimization.

Τώρα ανάλογα με τις συνδέσεις μεταξύ των νευρώνων έχεις και διαφορετική δομή στο δίκτυο, πχ με ή χωρίς ανάδραση. Επίσης οι συναρτήσεις των νευρώνων μπορεί να είναι είτε sigmoid ή radial basis. Ένα άλλο μεγάλο θέμα είναι πόσα layers και πόσους νευρώνες διαλέγεις ανα layer.

Αν προχωρήσεις παραπέρα θα χρειαστείς στοιχειώδεις γνώσεις από αντίστροφα προβλήματα (inverse problems) και στατιστική, γιατί ουσιαστικά έχεις ένα black box με το οποίο κάνεις data fitting. Το οποίο black box μπορείς έπειτα να το συνδυάσεις με μια a priori γνώση για τα δεδομένα σου, ένα μοντέλο δηλαδή, και να δημιουργήσεις ένα grey box.

Φυσικά τα νευρωνικά δίκτυα έχουν πολλές άλλες εφαρμογές εκτός της τεχνητής νοημοσύνης. Αν θέλεις απλώς να τα χρησιμοποιήσεις και όχι να προγραμματίσεις ένα τότε το πρόγραμμα R έχει σίγουρα πακέτα για ΝΝ και είμαι σχεδόν σίγουρος ότι και σε python υπάρχει πακέτο.