Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder

*Μόνο για χάρη της εκμάθησης Machine Learning, φυσικά. Κάτω από το ελαφρώς ανικανοποίητο βλέμμα της αγαπημένης του γυναίκας.

Πιθανότατα δεν υπάρχει εφαρμογή τόσο απλή στο επίπεδο των σπονδυλικών αντανακλαστικών όσο το Tinder. Για να το χρησιμοποιήσετε, χρειάζεστε μόνο ένα δάχτυλο για να σύρετε και μερικούς νευρώνες για να επιλέξετε τα κορίτσια ή τους άντρες που σας αρέσουν περισσότερο. Ιδανική εφαρμογή ωμής δύναμης στην επιλογή ζευγαριών.

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

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder

Ποιο είναι το πρόβλημα με τα δίκτυα γνωριμιών;

Υπήρχε ένας τέτοιος πόρος - η Ashley Madison. Συγκεκριμένα, με σύνθημα «Η ζωή είναι μικρή. Εχω σχέση." Το κύριο κοινό είναι παντρεμένοι άνδρες που αναζητούν μια σχέση στο πλάι. Η δημιουργία εσόδων είναι επίσης διασκεδαστική - εκτός από το τυπικό "ξοδέψτε πόντους για να τους αρέσει και να γράφετε", ζήτησαν 19 $ για να διαγράψουν τον λογαριασμό ενός χρήστη χωρίς ίχνος.

Το 2015, ο ιστότοπος διέρρευσε φυσικά και 60 GB προσωπικών δεδομένων διέρρευσαν στον δημόσιο τομέα. Εκτός από πολλές κατεστραμμένες οικογένειες, αυτή η διαρροή παρείχε πολλές ενδιαφέρουσες πληροφορίες στους αναλυτές. Πάντα υποψιαζόμουν ότι υπήρχαν πολύ περισσότεροι άντρες σε ιστότοπους γνωριμιών, αλλά σε αυτή την περίπτωση αποδείχτηκε αρκετά ενδιαφέρον. Η δημοσιογράφος Annalee Newitz αναλύοντας δεδομένα που διέρρευσαν διαπίστωσε ότι από 5 εκατομμύρια χρήστες, μόνο 12 ήταν παρόμοιοι με πραγματικούς λογαριασμούς κοριτσιών και χρησιμοποιούνταν τακτικά. Τα υπόλοιπα ήταν απλώς bots που συνομιλούσαν με άνδρες επισκέπτες.

Μια τέτοια υπεροχή στους λογαριασμούς ανδρών είναι χαρακτηριστική όχι μόνο για αυτόν τον πόρο, αλλά και για τους περισσότερους άλλους ιστότοπους γνωριμιών. Είμαι βέβαιος ότι πολλοί έχουν αντιμετωπίσει αυτήν την αναμφίβολα άδικη κατάσταση, όταν πρέπει να προγραμματίσετε προσεκτικά μια γνωριμία, αλλά το κορίτσι πρέπει απλώς να εγγραφεί. Ας αφήσουμε στην άκρη την ποιότητα αυτού του πλήθους θαυμαστών, αλλά το γεγονός είναι αναμφισβήτητο ότι η ισορροπία προσφοράς και ζήτησης μετατοπίζεται σαφώς υπέρ των κοριτσιών.

Χαρακτηριστικό Tinder

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder
Η ιδανική ωμή δύναμη στις σχέσεις των φύλων

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

Είναι ξεκάθαρο ότι η πλατφόρμα υπονοεί ελάχιστες ευκαιρίες για να αξιολογήσει κανείς τον βαθύ εσωτερικό κόσμο ενός ατόμου από μιάμιση δεύτερη ματιά σε μια φωτογραφία με μαγιό ή να οδηγεί ένα μοντέρνο φιμέ αυτοκίνητο. Επομένως, εάν δεν φαίνεστε απλώς θεϊκοί στις φωτογραφίες σας, δεν έχετε άλλη επιλογή από το να αυξήσετε τις πιθανότητές σας υιοθετώντας r-στρατηγική σε ορισμένα είδη. Με απλά λόγια, θα λάβουμε ωμή βία και θα πάρουμε όγκο για να αυξήσουμε τις πιθανότητές μας για επιτυχία αναπαραγωγής. Δεδομένου ότι μερικές φορές χρειάζεται να αποσπάτε την προσοχή σας από το φαγητό και τον ύπνο και τα κτύπημα είναι περιορισμένα, πιθανότατα θα προτιμήσετε ο αυτοματισμός να επιλέγει τα κορίτσια ή τους άνδρες που ταιριάζουν καλύτερα στα γούστα σας. Κοντές κοκκινομάλλες ή ψηλές μελαχρινές - εξαρτάται από εσάς.

Συλλογή δεδομένων

Πρώτα απ 'όλα, χρειάζεστε πολλά δεδομένα για κανονική ακρίβεια. Όποιος έχει αντιμετωπίσει μηχανική εκμάθηση γνωρίζει πόσο δύσκολο μπορεί να είναι να δημιουργήσει ένα σωστά συλλεγμένο και επισημασμένο σύνολο δεδομένων. Θεωρητικά, οποιοσδήποτε παρόμοιος πόρος θα είναι κατάλληλος ως πηγή δεδομένων, είτε πρόκειται για το Instagram είτε για άλλα κοινωνικά δίκτυα. Αλλά είναι καλύτερο να εκπαιδευτείτε σε εκείνα τα δείγματα στα οποία θα λειτουργήσει το δίκτυο στο μέλλον.

Ας πάρουμε ως βάση το αποθετήριο Tinder Automation. Οι φωτογραφίες του Tinder είναι πάντα διαθέσιμες στο κοινό, αλλά η λειτουργία "μου αρέσει" είναι ήδη περιορισμένη. Επομένως, είναι απαραίτητο να εξαγάγετε όλα τα έμβια όντα εντός της ακτίνας και να τα σημειώσετε προσεκτικά. Πρώτα πρέπει να χρησιμοποιήσετε ένα αρκετά απλό σενάριο:

from skimage.io import imread, imsave, imshow, show
import matplotlib.pyplot as plt
import pynder
from helpers import get_access_token, get_login_credentials
from io_helper import save_image

email, password, FBID = get_login_credentials()
FBTOKEN = get_access_token(email, password)
session = pynder.Session(facebook_token=FBTOKEN)

while True:
    users = session.nearby_users()
    for user in users:
        photos = user.get_photos()
        print("Fetched user photos..")
        for photo in photos:
            print(photo)
            image = imread(photo)
            imshow(image)
            show()

            input_string = "Write 1 to like. Write 2 to dislike."
            ans = str(input(input_string)).lower()

            if ans == "1":
                save_image(image, photo, True)
            else:
                save_image(image, photo, False)

Θα σας επιτρέψει να επισημάνετε το σύνολο δεδομένων όσο το δυνατόν γρηγορότερα με δύο μόνο κουμπιά. Η βασική παγίδα έγκειται στο γεγονός ότι η βιβλιοθήκη werkzeug έχει σπάσει τη συμβατότητα προς τα πίσω και θα πρέπει να αναγκαστεί να την υποβαθμίσει. Διαφορετικά βγάζει αυτό το σφάλμα.

Traceback (most recent call last):
  File "img_scrape.py", line 4, in <module>
    from helpers import get_access_token, get_login_credentials
  File "/home/someone/tmp/TinderAutomation/helpers.py", line 1, in <module>
    import robobrowser
  File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/__init__.py", line 3, in <module>
    from .browser import RoboBrowser
  File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/browser.py", line 8, in <module>
    from werkzeug import cached_property
ImportError: cannot import name 'cached_property'

Επομένως, στο request.txt πρέπει να γράψετε Werkzeug==0.16.1. Μετά θα απογειωθεί.
Το δεύτερο πρόβλημα είναι να αποκτήσετε αυτό ακριβώς το διακριτικό. Η τυπική μέθοδος από το αποθετήριο δεν λειτούργησε για μένα, αλλά κατάφερα να την αποκτήσω από την κονσόλα προγραμματιστή. Για να το κάνετε αυτό, μεταβείτε στο σύνδεσμος και εξαγάγετε την απάντηση στο αίτημα POST στο www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Μέσα αναζητούμε το 'access_token'. Για κάποιο λόγο δεν λειτούργησε την πρώτη φορά, αλλά μετά το βρήκα και το έντυσα με σκληρό κώδικα στο σενάριο.

Απαιτήσεις συνόλου δεδομένων

Υπάρχουν πολλές βασικές απαιτήσεις για σύνολα δεδομένων μηχανικής εκμάθησης:

  1. Επάρκεια
  2. Ομοιομορφία
  3. ποικιλία

Η επάρκεια σε αυτή την περίπτωση απαιτεί τουλάχιστον 10000 φωτογραφίες για την κατασκευή ενός επαρκούς μοντέλου. Ναι, είναι πολλά. Αυτός είναι στην πραγματικότητα ο λόγος που οι υπηρεσίες όπως Αμαζόν Μηχανολόγος Τούρκος, όπου, έναντι αμοιβής, μπορείτε να αναθέσετε τη σήμανση του συνόλου δεδομένων σας σε άλλα άτομα. Από την άλλη, θέλετε πραγματικά στο bot σας να αρέσουν υπέροχα ασιατικά κορίτσια με φεγγάρι ή εξίσου όμορφα κορίτσια με ινδικές ρίζες; Ωστόσο, το μοντέλο πρέπει να αντικατοπτρίζει το γούστο σας.

Δεν υπάρχουν ιδιαίτερα προβλήματα με την ποικιλία· όλες οι φωτογραφίες παρουσιάζονται από διάφορες γωνίες και φωτισμό. Με γυαλιά, φορέματα, μαγιό και φόρμες του σκι. Μπορεί να προκύψει πρόβλημα με την ομοιομορφία του συνόλου δεδομένων. Στην ιδανική περίπτωση, όταν επισημαίνουμε το δείγμα μας, θα πρέπει να αποτελείται από περίπου ίσα μέρη. Εάν καταλήξετε με ένα "λοξό" σύνολο δεδομένων, θα πρέπει να το αραιώσετε με φωτογραφίες από άλλες πηγές. Θα χρειαστεί να προσθέσετε πιο ελκυστικά ή το αντίστροφο, θα τα προσδιορίσετε με βάση το αποτέλεσμα σήμανσης. Έχω κάτι γύρω στο 60% όμορφο. Είτε δεν είμαι πολύ επιλεκτική, είτε είμαι απλά τυχερή και υπάρχουν πολλά όμορφα κορίτσια τριγύρω.

Επίσης, δεν αποκλείω την υπόθεση ότι υπάρχουν πολλά bots ανάμεσά τους. Εκπαιδεύουμε ένα bot που θα αρέσει σε άλλα bot. Υπάρχει κάποια ειρωνεία σε αυτό.

Επεξεργασία δεδομένων

Έχουμε ένα σωρό φωτογραφίες με ετικέτα, αλλά είναι πολύ ανάμεικτες. Μέρα, νύχτα, από πίσω και άλλα. Με λύπη καταλαβαίνω ότι η διδασκαλία από φωτογραφίες από αντίστροφη γωνία δεν θα είναι ιδιαίτερα αποτελεσματική, αφού το δείγμα θα είναι πολύ ανομοιόμορφο. Ως εκ τούτου, η καλύτερη επιλογή θα ήταν να χρησιμοποιήσετε τα πρόσωπα ως ένδειξη αναφοράς της «χαριτωμένης». Ωστόσο, για εμάς, όπως και για άλλα πρωτεύοντα, αυτή είναι μια βασική παράμετρος.

Επομένως, ας χρησιμοποιήσουμε Καταρράκτες Haar. Αυτός είναι ένας εξαιρετικός αλγόριθμος που σας επιτρέπει να βρίσκετε πρόσωπα σε εικόνες με χαμηλό ποσοστό ψευδώς θετικών σφαλμάτων.

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder
Αυτό περιγράφεται με περισσότερες λεπτομέρειες στο εγχειρίδιο OpenCV

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

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder
Πηγή

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

Πρότυπο κτίριο

Θέλω να πω αμέσως ότι χωρίς μια καλή κάρτα βίντεο και CUDA, πιθανότατα απλά δεν θα αποκτήσετε ένα εκπαιδευμένο μοντέλο σε επαρκή χρόνο. Επομένως, στοχεύστε αμέσως σε υπολογισμούς σε εξειδικευμένα σύννεφα ή χρησιμοποιώντας python-CUDA.

Πήρα ένα βασικό παράδειγμα τριών επιπέδων από τον συγγραφέα του αποθετηρίου και, παραδόξως, έδειξε ακρίβεια περίπου 72%, που είναι αρκετά καλό αποτέλεσμα.

model = Sequential()
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(img_size, img_size, 3)))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Convolution2D(32, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
          
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

adam = optimizers.SGD(lr=1e-4, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
              optimizer= adam,
              metrics=['accuracy'])

Εάν υπάρχει ένα καλό δείγμα, τότε μπορεί κάλλιστα να είναι αρκετό για να αποκτήσετε ένα λειτουργικό μοντέλο.

Ας εκκινήσουμε το bot

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder

Ευχαριστούμε τον συγγραφέα του αποθετηρίου για μια έτοιμη επιλογή για γρήγορη δοκιμή της ιδέας. Στην πραγματικότητα, λειτουργεί αρκετά καλά στη βασική έκδοση και μπορεί, καταρχήν, να κυκλοφορήσει στη δική μας έτοιμος ενοικιασμένος διακομιστής. Δεν θα είναι δυνατή η εκπαίδευση ακόμα· αυτή τη στιγμή δεν παρέχουμε εικονικές μηχανές με υποστήριξη CUDA για υπολογισμούς, αλλά μπορείτε να εκτελέσετε κάτι 24/7 χωρίς προβλήματα. Το bot είναι αρκετά ελαφρύ, επομένως θα ήταν πιο κερδοφόρο να λάβετε ένα τιμολόγιο που πληρώνει για τους πόρους που χρησιμοποιούνται.

Ευρήματα

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder
Υποθέτω ότι είμαι πολύ χαριτωμένος. Και έχω πλούσιο εσωτερικό κόσμο. Πήρα περίπου 13 αγώνες μέσα σε μια ώρα. Επιπλέον, αρκετές φορές τα κορίτσια έγραψαν πρώτα.
Ως αποτέλεσμα, καταλήξαμε σε πολύ ωραίους διαλόγους, όπου είπα ότι μπήκα αποκλειστικά για να παίξω με τη μηχανική μάθηση και την επισήμανση δεδομένων. Ένα από τα κορίτσια ενδιαφέρθηκε εξαιρετικά, αφού η ίδια είναι προγραμματιστής. Υπάρχει μια έντονη αίσθηση ότι τελικά θα διαβάσει αυτή την ανάρτηση στο Habré. Ελπίζω πραγματικά ότι η Οξάνα θα διατηρήσει την ανωνυμία μου. 🙂
*κουνάει το πόδι και λέει γεια

Λίγα λόγια για την ηθική πλευρά του θέματος

Για να είμαι ειλικρινής, δεν μου αρέσει η όλη ιδέα της ρομποτοποίησης των σχέσεων μεταξύ ανδρών και κοριτσιών. Υπάρχει κάτι πολύ σωστό στο να πετάξεις το σακάκι σου στους ώμους ενός ψυχρού αγνώστου που στέκεται μόνος του. Ή πλησιάστε ένα όμορφο κορίτσι σε ένα καλοκαιρινό καφέ και πιείτε καφέ μαζί. Βγείτε ήδη πίσω από τις οθόνες.

Το καλοκαίρι είναι παντού. Ήρθε η ώρα να γνωριστούμε.

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder

Πώς να παραλάβετε 13 κορίτσια την ώρα χρησιμοποιώντας μηχανική εκμάθηση και Tinder

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο