Πίνακας περιεχομένων[Κρύβω][Προβολή]
Οι τεχνικές βαθιάς μάθησης γνωστές ως «νευρωνικά δίκτυα γραφημάτων» (GNNs) λειτουργούν στον τομέα του γραφήματος. Αυτά τα δίκτυα έχουν βρει πρόσφατα χρήση σε διάφορους τομείς, όπως η όραση υπολογιστών, τα συστήματα συστάσεων και η συνδυαστική βελτιστοποίηση, για να αναφέρουμε μερικά.
Επιπλέον, αυτά τα δίκτυα μπορούν να χρησιμοποιηθούν για την αναπαράσταση πολύπλοκων συστημάτων, συμπεριλαμβανομένων των κοινωνικών δικτύων, των δικτύων αλληλεπίδρασης πρωτεΐνης-πρωτεΐνης, των γραφημάτων γνώσης και άλλων σε διάφορους τομείς μελέτης.
Ο μη ευκλείδειος χώρος είναι ο χώρος όπου λειτουργούν τα δεδομένα γραφήματος, σε αντίθεση με άλλους τύπους δεδομένων όπως οι εικόνες. Για την ταξινόμηση κόμβων, την πρόβλεψη συνδέσμων και τα δεδομένα συμπλέγματος, χρησιμοποιείται ανάλυση γραφήματος.
Σε αυτό το άρθρο, θα εξετάσουμε το Γράφημα Νευρικό σύστημα αναλυτικά, τους τύπους του, καθώς και πρακτικά παραδείγματα χρησιμοποιώντας το PyTorch.
Λοιπόν, τι είναι το Graph;
Ένα γράφημα είναι ένας τύπος δομής δεδομένων που αποτελείται από κόμβους και κορυφές. Οι συνδέσεις μεταξύ των διαφόρων κόμβων καθορίζονται από τις κορυφές. Εάν η κατεύθυνση υποδεικνύεται στους κόμβους, το γράφημα λέγεται ότι είναι κατευθυνόμενο. διαφορετικά, είναι μη κατευθυνόμενη.
Μια καλή εφαρμογή των γραφημάτων είναι η μοντελοποίηση των σχέσεων μεταξύ διαφόρων ατόμων σε α κοινωνικό δίκτυο. Όταν αντιμετωπίζετε περίπλοκες περιστάσεις, όπως συνδέσμους και ανταλλαγές, τα γραφήματα είναι πολύ χρήσιμα.
Χρησιμοποιούνται από συστήματα συστάσεων, σημασιολογική ανάλυση, ανάλυση κοινωνικών δικτύων και αναγνώριση προτύπων
. Η δημιουργία λύσεων που βασίζονται σε γραφήματα είναι ένα ολοκαίνουργιο πεδίο που προσφέρει μια διορατική κατανόηση σύνθετων και αλληλένδετων δεδομένων.
Γράφημα Νευρωνικό Δίκτυο
Τα νευρωνικά δίκτυα γραφημάτων είναι εξειδικευμένοι τύποι νευρωνικών δικτύων που μπορούν να λειτουργήσουν σε μορφή δεδομένων γραφήματος. Η ενσωμάτωση γραφήματος και τα συνελικτικά νευρωνικά δίκτυα (CNN) έχουν σημαντικό αντίκτυπο σε αυτά.
Τα νευρωνικά δίκτυα γραφημάτων χρησιμοποιούνται σε εργασίες που περιλαμβάνουν πρόβλεψη κόμβων, ακμών και γραφημάτων.
- Τα CNN χρησιμοποιούνται για την ταξινόμηση εικόνων. Ομοίως, για την πρόβλεψη μιας κλάσης, τα GNN εφαρμόζονται στο πλέγμα εικονοστοιχείων που αντιπροσωπεύει τη δομή του γραφήματος.
- Κατηγοριοποίηση κειμένου με χρήση νευρωνικών δικτύων επανάληψης. Τα GNN χρησιμοποιούνται επίσης με αρχιτεκτονικές γραφημάτων όπου κάθε λέξη σε μια φράση είναι ένας κόμβος.
Για την πρόβλεψη κόμβων, ακμών ή πλήρων γραφημάτων, χρησιμοποιούνται νευρωνικά δίκτυα για τη δημιουργία GNN. Μια πρόβλεψη σε επίπεδο κόμβου, για παράδειγμα, μπορεί να επιλύσει ένα πρόβλημα όπως ο εντοπισμός ανεπιθύμητης αλληλογραφίας.
Η πρόβλεψη συνδέσμων είναι μια τυπική περίπτωση σε συστήματα συστάσεων και μπορεί να είναι ένα παράδειγμα προβλήματος πρόβλεψης από πλευράς αιχμής.
Γράφημα Τύποι νευρωνικών δικτύων
Υπάρχουν πολυάριθμοι τύποι νευρωνικών δικτύων και στην πλειοψηφία τους υπάρχουν Συνελικτικά Νευρωνικά Δίκτυα. Θα μάθουμε για τα πιο γνωστά GNN σε αυτό το μέρος.
Γράφημα Convolutional Networks (GCNs)
Είναι συγκρίσιμα με τα κλασικά CNN. Αποκτά χαρακτηριστικά κοιτάζοντας τους κοντινούς κόμβους. Η συνάρτηση ενεργοποίησης χρησιμοποιείται από τα GNN για την προσθήκη μη γραμμικότητας μετά τη συγκέντρωση διανυσμάτων κόμβου και την αποστολή της εξόδου στο πυκνό στρώμα.
Αποτελείται από συνέλιξη γραφήματος, ένα γραμμικό επίπεδο και μια συνάρτηση ενεργοποίησης μη μαθητή, στην ουσία. Τα GCN διατίθενται σε δύο κύριες ποικιλίες: Spectral Convolutional Networks και Spatial Convolutional Networks.
Γράφημα δίκτυα αυτόματης κωδικοποίησης
Χρησιμοποιεί έναν κωδικοποιητή για να μάθει πώς να αναπαριστά γραφήματα και έναν αποκωδικοποιητή για να προσπαθήσει να ανακατασκευάσει γραφήματα εισόδου. Υπάρχει ένα στρώμα συμφόρησης που συνδέει τον κωδικοποιητή και τον αποκωδικοποιητή.
Δεδομένου ότι οι αυτόματοι κωδικοποιητές κάνουν εξαιρετική δουλειά στον χειρισμό της ισορροπίας κλάσεων, χρησιμοποιούνται συχνά στην πρόβλεψη συνδέσμων.
Νευρωνικά δίκτυα επαναλαμβανόμενων γραφημάτων (RGNN)
Σε δίκτυα πολλαπλών σχέσεων, όπου ένας μεμονωμένος κόμβος έχει πολλές σχέσεις, μαθαίνει το βέλτιστο μοτίβο διάχυσης και μπορεί να διαχειριστεί τα γραφήματα. Προκειμένου να αυξηθεί η ομαλότητα και να μειωθεί η υπερπαραμετροποίηση, χρησιμοποιούνται κανονικοποιητές σε αυτή τη μορφή νευρωνικού δικτύου γραφημάτων.
Για να έχουν καλύτερα αποτελέσματα, τα RGNN απαιτούν λιγότερη επεξεργαστική ισχύ. Χρησιμοποιούνται για τη δημιουργία κειμένου, την αναγνώριση ομιλίας, τη μηχανική μετάφραση, την περιγραφή εικόνων, την προσθήκη ετικετών βίντεο και τη σύνοψη κειμένου.
Περιφραγμένα δίκτυα νευρωνικών γραφημάτων (GGNN)
Όσον αφορά τις μακροπρόθεσμες εξαρτώμενες εργασίες, υπερέχουν των RGNN. Με τη συμπερίληψη κόμβων, ακμών και χρονικών πυλών σε μακροπρόθεσμες εξαρτήσεις, τα νευρωνικά δίκτυα με πύλη γραφήματος ενισχύουν τα επαναλαμβανόμενα νευρωνικά δίκτυα γραφημάτων.
Οι πύλες λειτουργούν παρόμοια με τις Gated Recurrent Units (GRUs) καθώς χρησιμοποιούνται για την ανάκληση και τη λήθη δεδομένων σε διάφορα στάδια.
Υλοποίηση Νευρωνικού Δικτύου Graph χρησιμοποιώντας Pytorch
Το συγκεκριμένο ζήτημα στο οποίο θα επικεντρωθούμε είναι ένα κοινό ζήτημα κατηγοριοποίησης κόμβων. Έχουμε ένα μεγάλο κοινωνικό δίκτυο που ονομάζεται musae-github, το οποίο συντάχθηκε από το ανοιχτό API, για προγραμματιστές GitHub.
Οι άκρες δείχνουν τις σχέσεις αμοιβαίων ακολούθων μεταξύ των κόμβων, οι οποίοι αντιπροσωπεύουν προγραμματιστές (χρήστες πλατφόρμας) που έχουν πρωταγωνιστήσει σε τουλάχιστον 10 αποθετήρια (σημειώστε ότι η λέξη αμοιβαία υποδηλώνει μια μη κατευθυνόμενη σχέση).
Με βάση τη θέση του κόμβου, τα αποθετήρια με αστέρι, τον εργοδότη και τη διεύθυνση email, ανακτώνται τα χαρακτηριστικά του κόμβου. Πρόβλεψη εάν ένας χρήστης του GitHub είναι προγραμματιστής ιστού ή προγραμματιστής μηχανικής εκμάθησης είναι το καθήκον μας.
Ο τίτλος εργασίας κάθε χρήστη χρησίμευσε ως βάση για αυτήν τη λειτουργία στόχευσης.
Εγκατάσταση του PyTorch
Για να ξεκινήσουμε, πρέπει πρώτα να εγκαταστήσουμε PyTorch. Μπορείτε να το διαμορφώσετε ανάλογα με το μηχάνημά σας από εδώ. Εδώ είναι το δικό μου:
Εισαγωγή μονάδων
Τώρα, εισάγουμε τις απαραίτητες ενότητες
Εισαγωγή και εξερεύνηση των δεδομένων
Το επόμενο βήμα είναι να διαβάσετε τα δεδομένα και να σχεδιάσετε τις πρώτες πέντε σειρές και τις τελευταίες πέντε σειρές από το αρχείο ετικετών.
Μόνο δύο από τις τέσσερις στήλες—το αναγνωριστικό του κόμβου (δηλ. χρήστης) και το ml_target, που είναι 1 εάν ο χρήστης είναι μέλος της κοινότητας μηχανικής μάθησης και 0 διαφορετικά— είναι σχετικές με εμάς σε αυτήν την περίπτωση.
Δεδομένου ότι υπάρχουν μόνο δύο κατηγορίες, μπορούμε τώρα να είμαστε σίγουροι ότι η εργασία μας είναι ένα ζήτημα δυαδικής ταξινόμησης.
Ως αποτέλεσμα σημαντικών ανισορροπιών τάξης, ο ταξινομητής μπορεί απλώς να υποθέσει ποια τάξη είναι η πλειοψηφία αντί να αξιολογήσει την υποεκπροσωπούμενη κατηγορία, καθιστώντας την ισορροπία της τάξης έναν άλλο κρίσιμο παράγοντα που πρέπει να ληφθεί υπόψη.
Η γραφική παράσταση του ιστογράμματος (κατανομή συχνότητας) αποκαλύπτει κάποια ανισορροπία επειδή υπάρχουν λιγότερες κατηγορίες από τη μηχανική μάθηση (ετικέτα=1) από ό,τι από τις άλλες κλάσεις.
Κωδικοποίηση χαρακτηριστικών
Τα χαρακτηριστικά των κόμβων μας ενημερώνουν για το χαρακτηριστικό που σχετίζεται με κάθε κόμβο. Εφαρμόζοντας τη μέθοδο μας για την κωδικοποίηση δεδομένων, μπορούμε να κωδικοποιήσουμε αμέσως αυτά τα χαρακτηριστικά.
Θέλουμε να χρησιμοποιήσουμε αυτή τη μέθοδο για να ενθυλακώσουμε ένα μικρό μέρος του δικτύου (ας πούμε, 60 κόμβους) για εμφάνιση. Ο κωδικός παρατίθεται εδώ.
Σχεδιασμός και εμφάνιση γραφημάτων
Θα χρησιμοποιήσουμε γεωμετρικό φακό. δεδομένα για τη δημιουργία του γραφήματος μας.
Για τη μοντελοποίηση ενός μεμονωμένου γραφήματος με διαφορετικές (προαιρετικές) ιδιότητες, χρησιμοποιούνται δεδομένα που είναι ένα απλό αντικείμενο Python. Χρησιμοποιώντας αυτήν την κλάση και τα ακόλουθα χαρακτηριστικά - όλα είναι τανυστές φακού - θα δημιουργήσουμε το αντικείμενο του γραφήματος μας.
Η μορφή της τιμής x, η οποία θα εκχωρηθεί στα κωδικοποιημένα χαρακτηριστικά κόμβου, είναι [αριθμός κόμβων, αριθμός χαρακτηριστικών].
Το σχήμα του y είναι [αριθμός κόμβων] και θα εφαρμοστεί στις ετικέτες των κόμβων.
ευρετήριο ακμών: Για να περιγράψουμε ένα μη κατευθυνόμενο γράφημα, πρέπει να επεκτείνουμε τους αρχικούς δείκτες ακμών για να επιτρέψουμε την ύπαρξη δύο διακριτών κατευθυνόμενων ακμών που συνδέουν τους ίδιους δύο κόμβους αλλά δείχνουν προς αντίθετες κατευθύνσεις.
Απαιτείται ένα ζεύγος ακμών, το ένα που δείχνει από τον κόμβο 100 στο 200 και το άλλο από το 200 στο 100, για παράδειγμα, μεταξύ των κόμβων 100 και 200. Εάν παρέχονται οι δείκτες ακμών, τότε έτσι μπορεί να αναπαρασταθεί το μη κατευθυνόμενο γράφημα. [2,2*αριθμός αρχικών άκρων] θα είναι η μορφή τανυστήρα.
Δημιουργούμε τη μέθοδο γραφήματος σχεδίασης για να εμφανίσουμε ένα γράφημα. Το πρώτο βήμα είναι να μετατρέψουμε το ομοιογενές δίκτυό μας σε ένα γράφημα NetworkX, το οποίο στη συνέχεια μπορεί να σχεδιαστεί χρησιμοποιώντας το NetworkX.draw.
Φτιάξτε το μοντέλο μας GNN και εκπαιδεύστε το
Ξεκινάμε κωδικοποιώντας ολόκληρο το σύνολο δεδομένων εκτελώντας κωδικοποιημένα δεδομένα με light=False και στη συνέχεια καλώντας build graph με light=False για να δημιουργήσουμε ολόκληρο το γράφημα. Δεν θα επιχειρήσουμε να σχεδιάσουμε αυτό το μεγάλο γράφημα επειδή υποθέτω ότι χρησιμοποιείτε μια τοπική μηχανή που έχει περιορισμένους πόρους.
Οι μάσκες, οι οποίες είναι δυαδικά διανύσματα που προσδιορίζουν ποιοι κόμβοι ανήκουν σε κάθε συγκεκριμένη μάσκα χρησιμοποιώντας τα ψηφία 0 και 1, μπορούν να χρησιμοποιηθούν για να ειδοποιήσουν τη φάση εκπαίδευσης ποιοι κόμβοι πρέπει να συμπεριληφθούν κατά τη διάρκεια της εκπαίδευσης και για να πούμε στη φάση συμπερασμάτων ποιοι κόμβοι είναι τα δεδομένα δοκιμής. Πυρσός γεωμετρικός.μεταμορφώνεται.
Ένας διαχωρισμός σε επίπεδο κόμβου μπορεί να προστεθεί χρησιμοποιώντας τις ιδιότητες μάσκας εκπαίδευσης, μάσκας val και μάσκας δοκιμής της κλάσης AddTrainValTestMask, οι οποίες μπορούν να χρησιμοποιηθούν για τη λήψη ενός γραφήματος και τη δυνατότητα να καθορίσουμε πώς θέλουμε να κατασκευαστούν οι μάσκες μας.
Απλώς χρησιμοποιούμε το 10% για εκπαίδευση και χρησιμοποιούμε το 60% των δεδομένων ως σύνολο δοκιμών ενώ χρησιμοποιούμε το 30% ως σύνολο επικύρωσης.
Τώρα, θα στοιβάξουμε δύο επίπεδα GCNConv, το πρώτο από τα οποία έχει έναν αριθμό χαρακτηριστικών εξόδου ίσο με τον αριθμό των χαρακτηριστικών στο γράφημά μας ως χαρακτηριστικά εισόδου.
Στο δεύτερο επίπεδο, το οποίο περιέχει κόμβους εξόδου ίσους με τον αριθμό των κλάσεων μας, εφαρμόζουμε μια συνάρτηση ενεργοποίησης relu και παρέχουμε τα λανθάνοντα χαρακτηριστικά.
Ο δείκτης ακμής και το βάρος ακμής είναι δύο από τις πολλές επιλογές x που μπορεί να δεχθεί το GCNConv στη συνάρτηση προώθησης, αλλά στην περίπτωσή μας χρειαζόμαστε μόνο τις δύο πρώτες μεταβλητές.
Παρά το γεγονός ότι το μοντέλο μας θα μπορεί να προβλέψει την κλάση κάθε κόμβου στο γράφημα, πρέπει να προσδιορίσουμε την ακρίβεια και την απώλεια για κάθε σύνολο ξεχωριστά ανάλογα με τη φάση.
Για παράδειγμα, κατά τη διάρκεια της προπόνησης, θέλουμε να χρησιμοποιήσουμε το σετ προπόνησης μόνο για να προσδιορίσουμε την ακρίβεια και την απώλεια προπόνησης, και ως εκ τούτου εδώ είναι όπου οι μάσκες μας είναι χρήσιμες.
Για να υπολογίσουμε την κατάλληλη απώλεια και ακρίβεια, θα ορίσουμε τις συναρτήσεις της συγκαλυμμένης απώλειας και της συγκαλυμμένης ακρίβειας.
Εκπαίδευση του μοντέλου
Τώρα που έχουμε ορίσει τον εκπαιδευτικό σκοπό για τον οποίο θα χρησιμοποιηθεί ο φακός. Ο Adam είναι ένας κύριος βελτιστοποιητής.
Θα διεξάγουμε την εκπαίδευση για συγκεκριμένο αριθμό εποχών, παρακολουθώντας παράλληλα την ακρίβεια επικύρωσης.
Επίσης σχεδιάζουμε τις απώλειες και τις ακρίβειες της εκπαίδευσης σε διάφορες εποχές.
Μειονεκτήματα του Γραφικού Νευρωνικού Δικτύου
Η χρήση GNN έχει μερικά μειονεκτήματα. Το πότε να χρησιμοποιήσουμε το GNNa και πώς να βελτιώσουμε την απόδοση των μοντέλων μηχανικής εκμάθησης θα μας ξεκαθαρίσουμε αφότου τα κατανοήσουμε καλύτερα.
- Ενώ τα GNN είναι ρηχά δίκτυα, συνήθως με τρία επίπεδα, τα περισσότερα νευρωνικά δίκτυα μπορούν να προχωρήσουν βαθιά για να βελτιώσουν την απόδοση. Δεν είμαστε σε θέση να αποδίδουμε στην αιχμή σε μεγάλα σύνολα δεδομένων λόγω αυτού του περιορισμού.
- Είναι πιο δύσκολο να εκπαιδεύσουμε ένα μοντέλο σε γραφήματα, καθώς η δομική του δυναμική είναι δυναμική.
- Λόγω του υψηλού υπολογιστικού κόστους αυτών των δικτύων, η κλιμάκωση του μοντέλου για παραγωγή παρουσιάζει προκλήσεις. Η κλιμάκωση των GNN για παραγωγή θα είναι δύσκολη εάν η δομή του γραφήματος σας είναι τεράστια και περίπλοκη.
Συμπέρασμα
Τα τελευταία χρόνια, τα GNN έχουν εξελιχθεί σε ισχυρά και αποτελεσματικά εργαλεία για θέματα μηχανικής μάθησης στον τομέα των γραφημάτων. Μια θεμελιώδης επισκόπηση των νευρωνικών δικτύων γραφημάτων δίνεται σε αυτό το άρθρο.
Μετά από αυτό, μπορείτε να ξεκινήσετε τη δημιουργία του συνόλου δεδομένων που θα χρησιμοποιηθεί για την εκπαίδευση και τη δοκιμή του μοντέλου. Για να κατανοήσετε πώς λειτουργεί και τι είναι ικανό, μπορείτε επίσης να πάτε πολύ πιο μακριά και να το εκπαιδεύσετε χρησιμοποιώντας ένα διαφορετικό είδος δεδομένων.
Καλή κωδικοποίηση!
Αφήστε μια απάντηση