Τι είναι ένα νευρωνικό δίκτυο στη τεχνητή νοημοσύνη
- Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database - 7 Οκτώβριος 2024
- Τι είναι η PostgreSQL και πως κάνουμε μία πλήρης εγκατάσταση - 2 Σεπτέμβριος 2024
- Πώς ρυθμίζουμε το replication του GoldenGate ώστε να διαβάζει από το Standby του Oracle Data Guard - 2 Αύγουστος 2024
Πολλές φορές ακούμε για τεχνητή νοημοσύνη (AI), σε παιχνίδια, κινητά και διάφορες εφαρμογές αλλά τι ακριβώς είναι και που μας εξυπηρετεί;
Στην γλώσσα προγραμματισμού Python έχουμε αρκετές βιβλιοθήκες τεχνητής νοημοσύνης. Αυτές κάνουν χρήση νευρωνικών δικτύων με βιβλιοθήκες όπως Τensorflow, Κeras, pyTorch, scikit.
Μοντέλα
Το πρώτο που θα πρέπει να κάνουμε με την χρήση τους είναι να φτιάξουμε ένα μοντέλο. Το μοντέλο αυτό όταν θα είναι δομικά έτοιμο θα πρέπει να εκπαιδευτεί (trained) με ένα dataset (πλήθος δεδομένων). Ανάλογα με το πόσες φορές εκπαιδευτεί (το μοντέλο) θα ανέβει η ακρίβεια του. Ο αριθμός των εκπαιδεύσεων ονομάζετε epochs.
Μπορούμε να φτιάξουμε ένα δικό μας μοντέλο, είτε να χρησιμοποιήσουμε κάποιο από τα έτοιμα στις βιβλιοθήκες. Επίσης μπορούμε να το κάνουμε εμείς train ή να το χρησιμοποιήσουμε pretrained.
Machine learning vs Deep learning
Σε ένα μοντέλο τεχνητής νοημοσύνης έχουμε ένα input layer που τροφοδοτούμε τα δεδομένα. Στην συνέχεια τουλάχιστον ένα layer που κάνει την μετατροπή (hidden layer) και τέλος ένα output. Σε αυτή την περίπτωση μιλάμε για machine learning.
Στην περίπτωση που έχουμε πάνω από ένα hidden layer τότε μιλάμε για deep learning.
To deep learning χρησιμοποιείτε σε περιπτώσεις που πρέπει να φιλτράρουμε πολλές φορές, ώστε να μπορούμε να έχουμε ένα συμπέρασμα.
CNNs για μια έκτη αίσθηση
Υπάρχουν πολλοί τύποι νευρωνικών δικτύων αλλά θα ασχοληθούμε συγκεκριμένα με τα CNN (convolutional neural network).
Την χρήση τους την συναντάμε καθημερινά. Σε αναγνώριση κειμένου, αντικειμένων/προσώπων σε φωτογραφίες και βίντεο, αναγνώριση copyright σε μουσική και πολλά άλλα.
Το δίκτυο σε κάθε hidden layer χωρίζει την εικόνα σε μικρά πινακάκια μου ονομάζονται tensors. Με ένα φίλτρο (συνήθως 3×3 πίνακα) που ονομάζεται kernel (κάτι σαν αυτά του Instagram). Το φίλτρο διαμορφώνει την εικόνα περνόντας πάνω από το κάθε tensor.
Activation functions
Σαν αποτέλεσμα έχει δημιουργηθεί ένα activation map με τα διαμορφομένα tensors. Έπειτα εφαρμόζεται μία activation function που συνήθως είναι η ReLu. Η χρήση της ReLu απλά βάζει μηδέν σε όποια τιμή του πίνακα (tensor) είναι κάτω από μηδέν.
Στην συνέχεια εφαρμόζεται μια άλλη function που ονομάζεται max pooling. Η χρήση της ουσιαστικά συμπυκνώνει τον πίνακα σε λιγότερες διαστάσεις, κρατώντας την μέγιστή τιμή ανάλογα το βήμα που έχουμε ορίσει.
Επιλέγεται maxpooling 1D, 2D, 3D ανάλογα αν κάνουμε convert σε κείμενο, εικόνα ή βίντεο αντίστοιχα.
Όλη αυτή η διαδικασία ανήκει στο πρώτο hidden layer. Μπορεί να έχουμε περισσότερα και να γίνεται η αντίστοιχη διαδικασία και σε ένα δεύτερο, τρίτο κλπ.
Το αποτέλεσμα
Λίγο πριν το αποτέλεσμα έχουμε το flatten layer. Εκεί συγκρίνονται όλα τα δεδομένα που έχουμε μαζέψει με όλες τις πιθανές απαντήσεις. Στο τέλος ανάλογα το τι έχει το μεγαλύτερο probability μας δίνει αυτό σαν απάντηση στο output. Η διαδικασία αυτή γίνεται μέσω της function soft max ή sigmoid.
Οπότε τελικά που μας χρησιμεύει ένα νευρωνικό δίκτυο;
Με το νευρωνικό δίκτυο όπως είδαμε και στο παράδειγμα μπορέσαμε μέσα από όλη αυτή την διαδικασία να πάρουμε μια απάντηση στην ερώτηση αν έχει καστανά μάτια η τίγρης στην φωτογραφία.
Η απάντηση αυτή ανάλογα την ακρίβεια του μοντέλου έχει μεγαλύτερη πιθανότητα να είναι σωστή.
Κάνοντας χρήση τα δεδομένα από εικόνες και ήχο που έχουμε συλλέξει. Η εφαρμογή μπορεί να λύσει πολύπλοκα προβλήματα όπως κατηγοριοποίηση, αναγνώση κειμένου και ομιλίας.