Ξεκίνημα με νευρωνικά δίκτυα

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό stamatiou » 16 Αύγ 2012, 12:37

Τώρα τελευταία, έχω αρχίσει να ψάχνω πηγές για να μάθω για νευρωνικά δίκτυα, αλλά το μόνο που έχω βρει είναι αυτό: http://www.learnartificialneuralnetworks.com/. Αλλά λόγω των αγγλικών μου και του ότι είμαι τελείως καινούργιος στο χώρο, δεν μπορώ να τα κατανοήσω πλήρως. Μήπως έχετε τίποτα άλλες πηγές (είτε αγγλικά είτε ελληνικά); Δεν ξέρω αν παίζει ρόλο αλλά ενδιαφέρομαι για ανάπτυξη σε γλώσσες C ή C++.
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό konnn » 16 Αύγ 2012, 18:06

Νομίζω πως πρέπει να έχεις ήδη κάποιο background στην τεχνητή νοημοσύνη και στα δίκτυα (συγκεκριμένα αλγόριθμους επίλυσης δικτύων όπως αυτός ).
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3566
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό stamatiou » 16 Αύγ 2012, 18:50

konnn έγραψε:Νομίζω πως πρέπει να έχεις ήδη κάποιο background στην τεχνητή νοημοσύνη και στα δίκτυα (συγκεκριμένα αλγόριθμους επίλυσης δικτύων όπως αυτός ).

Τι σχέση έχει ο αλγόριθμος του Dijkstra με τα δίκτυα;
EDIT: *Νευρωνικά δίκτυα
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό Learner » 16 Αύγ 2012, 19:07

About Me
NickTux@GitHub

Spoiler: show
1. Ubuntu 18.04 LTS
2. Intel Core i3 CPU M 380 2.53GHz ‖ RAM 6GB ‖ Acer Aspire 5733
3. Intel Integrated Graphics [8086:0046] {i915}
4. wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Άβαταρ μέλους
Learner
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 9753
Εγγραφή: 08 Νοέμ 2010, 21:24
Τοποθεσία: Αθήνα
Launchpad: nicktux
IRC: NickTux
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό stamatiou » 16 Αύγ 2012, 20:12

1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό konnn » 16 Αύγ 2012, 22:16

stamatiou έγραψε:
konnn έγραψε:Νομίζω πως πρέπει να έχεις ήδη κάποιο background στην τεχνητή νοημοσύνη και στα δίκτυα (συγκεκριμένα αλγόριθμους επίλυσης δικτύων όπως αυτός ).

Τι σχέση έχει ο αλγόριθμος του Dijkstra με τα δίκτυα;
EDIT: *Νευρωνικά δίκτυα


:) Δεν είπα πως έχει άμεση σχέση , απλά ένα backround, μια γενικότερη γνώση δικτύων είπα. Εννοείται πως Dijkstra κλπ έχουν σχέση στα φυσικά δίκτυα.
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3566
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό c7p » 16 Αύγ 2012, 22:41

Υπάρχει course για τα νευρωνικά, στο https://www.coursera.org/course/neuralnets.
Βέβαια εκτός από αγγλικά, πρέπει να έχεις και καλές γνώσεις μαθηματικών -ανάλυση και γραμμική άλγεβρα- για να τα κατανοήσεις πλήρως, δηλαδή γνώσεις τουλάχιστον πρώτου έτους. Επειδή είναι ένα εξειδικευμένο αντικείμενο, θα βλέπεις σχεδόν παντού μαθηματικά.
Άβαταρ μέλους
c7p
powerTUX
powerTUX
 
Δημοσιεύσεις: 1849
Εγγραφή: 30 Μάιος 2009, 16:09
Τοποθεσία: Κατερίνη
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό Dimitris » 16 Αύγ 2012, 23:22

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 υπάρχει πακέτο.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό stamatiou » 17 Αύγ 2012, 21:20

Dimitris έγραψε:Τα δεδομένα εκπαίδευσης (training data) χρησιμοποιούνται για να λύσεις το πρόβλημα ελαχιστοποίησης σφάλματος μεταξύ του data output και του υπολογισμένου output από το δίκτυο.

Από εκεί και πέρα σε έχασα :P Επίσης γιατί κάποιος να φτιάξει ένα νευρωνικό δίκτυο αντί να χρησιμοποιείσει ένα έτοιμο;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Ξεκίνημα με νευρωνικά δίκτυα

Δημοσίευσηαπό Dimitris » 20 Αύγ 2012, 10:52

Αυτό ακριβώς έγραψα στο τέλος. Το πρόγραμμα R έχει πακέτα για ΝΝ και η python επισης. Ξεκίνα να διαβάζεις εσύ αυτά που σου έδωσαν και θα φτάσεις και σ'αυτό το σημείο.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι