Προγραμματισμός

14 εργαλεία ανοιχτού κώδικα για να αξιοποιήσετε στο έπακρο τη μηχανική μάθηση

Φιλτράρισμα ανεπιθύμητων μηνυμάτων, αναγνώριση προσώπου, μηχανές προτάσεων - όταν έχετε ένα μεγάλο σύνολο δεδομένων στο οποίο θα θέλατε να πραγματοποιήσετε προγνωστική ανάλυση ή αναγνώριση προτύπων, η μηχανική εκμάθηση είναι ο τρόπος να πάτε. Ο πολλαπλασιασμός του ελεύθερου λογισμικού ανοιχτού κώδικα έχει καταστήσει ευκολότερη την εφαρμογή της μηχανικής μάθησης τόσο σε μεμονωμένα μηχανήματα όσο και σε κλίμακα και στις πιο δημοφιλείς γλώσσες προγραμματισμού. Αυτά τα εργαλεία ανοιχτού κώδικα περιλαμβάνουν βιβλιοθήκες όπως Python, R, C ++, Java, Scala, Clojure, JavaScript και Go.

Apache Mahout

Το Apache Mahout παρέχει έναν τρόπο δημιουργίας περιβάλλοντος για τη φιλοξενία εφαρμογών μηχανικής μάθησης που μπορούν να κλιμακωθούν γρήγορα και αποτελεσματικά για να ικανοποιήσουν τη ζήτηση. Το Mahout συνεργάζεται κυρίως με ένα άλλο γνωστό έργο Apache, το Spark, και αρχικά σχεδιάστηκε να συνεργαστεί με το Hadoop για χάρη της εκτέλεσης κατανεμημένων εφαρμογών, αλλά έχει επεκταθεί ώστε να συνεργάζεται με άλλα κατανεμημένα back end όπως τα Flink και H2O.

Το Mahout χρησιμοποιεί μια γλώσσα συγκεκριμένης περιοχής στη Σκάλα. Η έκδοση 0.14 είναι ένας σημαντικός εσωτερικός αντιδραστήρας του έργου, με βάση το Apache Spark 2.4.3 ως προεπιλογή.

Συνθέτω

Η σύνθεση, από την Innovation Labs, στοχεύει ένα κοινό πρόβλημα με μοντέλα μηχανικής μάθησης: επισήμανση μη επεξεργασμένων δεδομένων, τα οποία μπορεί να είναι μια αργή και κουραστική διαδικασία, αλλά χωρίς την οποία ένα μοντέλο μηχανικής μάθησης δεν μπορεί να αποφέρει χρήσιμα αποτελέσματα. Η Σύνθεση σάς επιτρέπει να γράφετε στο Python ένα σύνολο λειτουργιών επισήμανσης για τα δεδομένα σας, έτσι ώστε η επισήμανση να μπορεί να γίνει όσο το δυνατόν πιο προγραμματικά. Μπορείτε να ορίσετε διάφορους μετασχηματισμούς και κατώφλια στα δεδομένα σας για να διευκολύνετε τη διαδικασία επισήμανσης, όπως η τοποθέτηση δεδομένων σε κάδους βάσει διακριτών τιμών ή ποσοτικών.

Βασικά εργαλεία ML

Το πλαίσιο Core ML της Apple σάς επιτρέπει να ενσωματώνετε μοντέλα μηχανικής μάθησης σε εφαρμογές, αλλά χρησιμοποιεί τη δική του ξεχωριστή μορφή μοντέλου εκμάθησης. Τα καλά νέα είναι ότι δεν χρειάζεται να προκατασκευάσετε μοντέλα σε μορφή Core ML για να τα χρησιμοποιήσετε. Μπορείτε να μετατρέψετε μοντέλα από σχεδόν κάθε κοινό πλαίσιο μηχανικής εκμάθησης σε Core ML με Core ML Tools.

Το Core ML Tools λειτουργεί ως πακέτο Python, οπότε ενσωματώνεται με τον πλούτο των βιβλιοθηκών και εργαλείων μηχανικής μάθησης Python. Μπορούν να μετατραπούν μοντέλα από TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learn, LibSVM και XGBoost. Τα μοντέλα νευρωνικών δικτύων μπορούν επίσης να βελτιστοποιηθούν για το μέγεθος χρησιμοποιώντας τον κβαντισμό μετά την προπόνηση (π.χ. σε ένα μικρό βάθος που εξακολουθεί να είναι ακριβές).

Φλοιός

Το Cortex παρέχει έναν βολικό τρόπο εξυπηρέτησης προβλέψεων από μοντέλα μηχανικής εκμάθησης χρησιμοποιώντας Python και TensorFlow, PyTorch, Scikit-learn και άλλα μοντέλα. Τα περισσότερα πακέτα Cortex αποτελούνται από λίγα μόνο αρχεία - τη βασική σας λογική Python, ένα αρχείο cortex.yaml που περιγράφει ποια μοντέλα θα χρησιμοποιήσουν και τι είδους υπολογιστικούς πόρους θα εκχωρήσουν, και ένα αρχείο requirements.txt για την εγκατάσταση των απαιτούμενων απαιτήσεων Python. Όλο το πακέτο αναπτύσσεται ως κοντέινερ Docker σε AWS ή σε άλλο σύστημα φιλοξενίας συμβατό με το Docker. Οι πόροι υπολογισμού κατανέμονται με τρόπο που ανταποκρίνεται στους ορισμούς που χρησιμοποιούνται στο Kubernetes για ίδιο, και μπορείτε να χρησιμοποιήσετε GPU ή Amazon Inferentia ASICs για να επιταχύνετε την προβολή.

Featuretools

Η τεχνική χαρακτηριστικών ή η δημιουργία χαρακτηριστικών, περιλαμβάνει τη λήψη των δεδομένων που χρησιμοποιούνται για την εκπαίδευση ενός μοντέλου μηχανικής μάθησης και την παραγωγή, συνήθως με το χέρι, μιας μετασχηματισμένης και συγκεντρωτικής έκδοσης των δεδομένων που είναι πιο χρήσιμη για την εκπαίδευση του μοντέλου. Το Featuretools σάς παρέχει λειτουργίες για να το κάνετε αυτό μέσω αντικειμένων Python υψηλού επιπέδου που δημιουργούνται με τη σύνθεση δεδομένων σε πλαίσια δεδομένων και μπορεί να το κάνει για δεδομένα που εξάγονται από ένα ή περισσότερα πλαίσια δεδομένων. Το Featuretools παρέχει επίσης κοινά πρωτόγονα για τις λειτουργίες σύνθεσης (π.χ. time_since_pre sebelumnya, για να παρέχετε χρόνο που έχει παρέλθει μεταξύ των στιγμιότυπων των δεδομένων με χρονική σήμανση), οπότε δεν χρειάζεται να τα κάνετε μόνοι σας.

GoLearn

Το GoLearn, μια βιβλιοθήκη μηχανικής μάθησης για τη γλώσσα Go της Google, δημιουργήθηκε με τους δύο στόχους της απλότητας και της προσαρμογής, σύμφωνα με τον προγραμματιστή Stephen Whitworth. Η απλότητα έγκειται στον τρόπο φόρτωσης και χειρισμού των δεδομένων στη βιβλιοθήκη, η οποία διαμορφώνεται σύμφωνα με τους SciPy και R. Η προσαρμοστικότητα έγκειται στο πώς ορισμένες από τις δομές δεδομένων μπορούν εύκολα να επεκταθούν σε μια εφαρμογή. Η Whitworth δημιούργησε επίσης ένα περιτύλιγμα Go για τη βιβλιοθήκη Vowpal Wabbit, μία από τις βιβλιοθήκες που βρέθηκαν στην εργαλειοθήκη Shogun.

Γκράδιο

Μία κοινή πρόκληση κατά τη δημιουργία εφαρμογών μηχανικής εκμάθησης είναι η δημιουργία ενός ισχυρού και εύκολα προσαρμοσμένου περιβάλλοντος εργασίας χρήστη για τους μηχανισμούς κατάρτισης μοντέλων και προβολής προβλέψεων. Το Gradio παρέχει εργαλεία για τη δημιουργία διεπαφών χρήστη μέσω διαδικτύου που σας επιτρέπουν να αλληλεπιδράτε με τα μοντέλα σας σε πραγματικό χρόνο. Αρκετά περιλαμβανόμενα δείγματα έργων, όπως διεπαφές εισόδου στον ταξινομητή εικόνας Inception V3 ή το μοντέλο αναγνώρισης χειρογράφου MNIST, σας δίνουν μια ιδέα για το πώς μπορείτε να χρησιμοποιήσετε το Gradio με τα δικά σας έργα.

Η2Ο

Το H2O, τώρα στην τρίτη σημαντική αναθεώρησή του, παρέχει μια ολόκληρη πλατφόρμα για μηχανική εκμάθηση στη μνήμη, από την εκπαίδευση έως την εξυπηρέτηση προβλέψεων. Οι αλγόριθμοι του H2O είναι προσανατολισμένοι για επιχειρηματικές διαδικασίες - για απάτες ή για προβλέψεις τάσεων, για παράδειγμα, παρά για ανάλυση εικόνας. Το H2O μπορεί να αλληλεπιδρά με αυτόνομο τρόπο με καταστήματα HDFS, πάνω από το YARN, στο MapReduce ή απευθείας σε μια παρουσία του Amazon EC2.

Οι Hadoop mavens μπορούν να χρησιμοποιήσουν το Java για να αλληλεπιδράσουν με το H2O, αλλά το πλαίσιο παρέχει επίσης δεσμεύσεις για Python, R και Scala, επιτρέποντάς σας να αλληλεπιδράσετε με όλες τις βιβλιοθήκες που είναι διαθέσιμες και σε αυτές τις πλατφόρμες. Μπορείτε επίσης να επιστρέψετε στις κλήσεις REST ως τρόπος ενσωμάτωσης του H2O στο μεγαλύτερο μέρος κάθε αγωγού.

Όριξ

Η Oryx, ευγενική προσφορά των δημιουργών της διανομής Cloudera Hadoop, χρησιμοποιεί τα Apache Spark και Apache Kafka για να τρέξει μοντέλα μηχανικής εκμάθησης σε δεδομένα πραγματικού χρόνου. Το Oryx παρέχει έναν τρόπο κατασκευής έργων που απαιτούν αποφάσεις αυτή τη στιγμή, όπως μηχανές πρότασης ή ανίχνευση ζωντανών ανωμαλιών, οι οποίοι ενημερώνονται τόσο από νέα όσο και από ιστορικά δεδομένα. Η έκδοση 2.0 είναι σχεδόν πλήρης επανασχεδιασμός του έργου, με τα στοιχεία του να συνδυάζονται χαλαρά σε μια αρχιτεκτονική λάμδα. Νέοι αλγόριθμοι και νέες αφαιρέσεις για αυτούς τους αλγόριθμους (π.χ., για την επιλογή υπερπαραμέτρων), μπορούν να προστεθούν ανά πάσα στιγμή.

Κεραυνός PyTorch

Όταν ένα ισχυρό έργο γίνεται δημοφιλές, συχνά συμπληρώνεται από έργα τρίτων που διευκολύνουν τη χρήση. Το PyTorch Lightning παρέχει ένα οργανικό περιτύλιγμα για το PyTorch, έτσι ώστε να μπορείτε να εστιάσετε στον κώδικα που έχει σημασία αντί να γράψετε boilerplate για κάθε έργο.

Τα έργα Lightning χρησιμοποιούν μια δομή που βασίζεται στην τάξη, επομένως κάθε κοινό βήμα για ένα έργο PyTorch ενσωματώνεται σε μια μέθοδο κλάσης. Οι βρόχοι εκπαίδευσης και επικύρωσης είναι ημι-αυτοματοποιημένοι, οπότε πρέπει μόνο να παρέχετε τη λογική σας για κάθε βήμα. Είναι επίσης ευκολότερο να ρυθμίσετε τα αποτελέσματα της εκπαίδευσης σε πολλές GPU ή διαφορετικές μίξεις υλικού, επειδή οι οδηγίες και οι αναφορές αντικειμένων για να το κάνετε είναι συγκεντρωτικές.

Scikit-μάθετε

Η Python έχει γίνει μια γλώσσα προγραμματισμού για τα μαθηματικά, την επιστήμη και τις στατιστικές λόγω της ευκολίας της υιοθέτησής της και του εύρους των βιβλιοθηκών που διατίθενται για σχεδόν οποιαδήποτε εφαρμογή. Το Scikit-learning αξιοποιεί αυτό το εύρος δημιουργώντας πάνω από πολλά υπάρχοντα πακέτα Python - NumPy, SciPy και Matplotlib - για μαθηματικά και επιστημονικά έργα. Οι προκύπτουσες βιβλιοθήκες μπορούν να χρησιμοποιηθούν για διαδραστικές εφαρμογές «πάγκο εργασίας» ή να ενσωματωθούν σε άλλο λογισμικό και να επαναχρησιμοποιηθούν. Το κιτ διατίθεται με άδεια BSD, οπότε είναι πλήρως ανοιχτό και επαναχρησιμοποιήσιμο.

Σογκούν

Το Shogun είναι ένα από τα έργα με τη μεγαλύτερη διάρκεια ζωής σε αυτήν τη συλλογή. Δημιουργήθηκε το 1999 και γράφτηκε σε C ++, αλλά μπορεί να χρησιμοποιηθεί με Java, Python, C #, Ruby, R, Lua, Octave και Matlab. Η τελευταία σημαντική έκδοση, 6.0.0, προσθέτει εγγενή υποστήριξη για τα Microsoft Windows και τη γλώσσα Scala.

Αν και δημοφιλές και ευρύ φάσμα, ο Shogun έχει ανταγωνισμό. Μια άλλη βιβλιοθήκη μηχανικής εκμάθησης με βάση το C ++, το Mlpack, υπάρχει μόνο από το 2011, αλλά ισχυρίζεται ότι είναι πιο γρήγορη και ευκολότερη στην εργασία (μέσω ενός πιο ολοκληρωμένου συνόλου API) από τις ανταγωνιστικές βιβλιοθήκες.

Spark MLlib

Η βιβλιοθήκη μηχανικής εκμάθησης για Apache Spark και Apache Hadoop, MLlib διαθέτει πολλούς κοινούς αλγόριθμους και χρήσιμους τύπους δεδομένων, σχεδιασμένα να λειτουργούν με ταχύτητα και κλίμακα. Παρόλο που η Java είναι η κύρια γλώσσα για εργασία στο MLlib, οι χρήστες Python μπορούν να συνδέσουν το MLlib με τη βιβλιοθήκη NumPy, οι χρήστες Scala μπορούν να γράψουν κώδικα ενάντια στο MLlib και οι χρήστες R μπορούν να συνδέσουν στο Spark από την έκδοση 1.5. Η έκδοση 3 του MLlib επικεντρώνεται στη χρήση του DataFrame API του Spark (σε αντίθεση με το παλαιότερο RDD API) και παρέχει πολλές νέες λειτουργίες ταξινόμησης και αξιολόγησης.

Ένα άλλο έργο, το MLbase, χτίζει πάνω από το MLlib για να διευκολύνει τη λήψη αποτελεσμάτων. Αντί να γράφουν κώδικα, οι χρήστες κάνουν ερωτήματα μέσω μιας δηλωτικής γλώσσας à la SQL.

Γουέκα

Το Weka, που δημιουργήθηκε από την Ομάδα Μηχανικής Μάθησης στο Πανεπιστήμιο του Waikato, τιμολογείται ως «μηχανική μάθηση χωρίς προγραμματισμό». Είναι ένας πάγκος εργασίας GUI που δίνει τη δυνατότητα στους υπευθύνους επεξεργασίας δεδομένων να συναρμολογούν αγωγούς μηχανικής μάθησης, να εκπαιδεύουν μοντέλα και να εκτελούν προβλέψεις χωρίς να χρειάζεται να γράφουν κώδικα. Το Weka συνεργάζεται απευθείας με τους R, Apache Spark και Python, το τελευταίο μέσω ενός άμεσου περιτυλίγματος ή μέσω διεπαφών για κοινές αριθμητικές βιβλιοθήκες όπως οι NumPy, Pandas, SciPy και Scikit-learn. Το μεγάλο πλεονέκτημα της Weka είναι ότι παρέχει περιηγητές, φιλικές διεπαφές για κάθε πτυχή της εργασίας σας, συμπεριλαμβανομένης της διαχείρισης πακέτων, της προεπεξεργασίας, της ταξινόμησης και της οπτικοποίησης.