Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt

*Natürlich nur, um maschinelles Lernen zu erlernen. Unter den leicht unzufriedenen Blicken seiner geliebten Frau.

Es gibt wahrscheinlich keine Anwendung, die so einfach auf die Ebene der Wirbelsäulenreflexe einwirkt wie Tinder. Um es zu nutzen, brauchen Sie nur einen Finger zum Wischen und ein paar Neuronen, um die Mädchen oder Männer auszuwählen, die Ihnen am besten gefallen. Eine ideale Implementierung von Brute Force bei der Paarauswahl.

Ich entschied, dass dies eine gute Möglichkeit wäre, ein wenig Gefühl für maschinelles Lernen auf einer neuen Grafikkarte zu bekommen. Jetzt muss ich meiner Frau nur noch erklären, dass ich keine neue, dickere Frau brauche und nur neuronale Netze trainiere.

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt

Was ist das Problem mit Dating-Netzwerken?

Es gab so eine Ressource – Ashley Madison. Konkret, mit dem Slogan „Das Leben ist kurz. Eine Affäre haben." Das Hauptpublikum sind verheiratete Männer, die nebenbei eine Affäre suchen. Auch die Monetarisierung macht Spaß – zusätzlich zum Standard „Punkte zum Liken und Schreiben ausgeben“ verlangten sie 19 US-Dollar, um das Konto eines Benutzers spurlos zu löschen.

Im Jahr 2015 wurde die Website auf natürliche Weise geleakt und 60 GB personenbezogener Daten gelangten an die Öffentlichkeit. Neben vielen zerstörten Familien lieferte dieses Leck den Analysten viele interessante Informationen. Ich habe immer vermutet, dass es auf Dating-Seiten viel mehr Männer gibt, aber in diesem Fall stellte sich heraus, dass es ziemlich interessant war. Journalistin Annalee Newitz Analyse geleakter Daten stellte fest, dass von 5 Millionen Nutzern nur 12 echten Mädchenkonten ähnelten und regelmäßig genutzt wurden. Der Rest waren nur Bots, die mit männlichen Besuchern chatten.

Ein solches Überwiegen männlicher Accounts ist nicht nur für diese Ressource typisch, sondern auch für die meisten anderen Dating-Sites. Ich bin sicher, dass viele diese zweifellos unfaire Situation erlebt haben, wenn man eine Bekanntschaft sorgfältig planen muss, das Mädchen sich aber nur registrieren muss. Lassen wir die Qualität dieser Fangemeinde außer Acht, aber es ist unbestreitbar, dass sich das Gleichgewicht zwischen Angebot und Nachfrage eindeutig zugunsten der Mädchen verschoben hat.

Tinder-Funktion

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt
Der ideale Brutal Forcer im Geschlechterverhältnis

Das Hauptmerkmal dieser Plattform sind die geringen Kosten pro Bekanntschaft. Ein Zufall von zwei Wischbewegungen genügt und schon kommuniziert man mit einer potenziell interessanten Person. Das Problem besteht darin, dass das gleiche Ungleichgewicht zwischen den Geschlechtern dazu führt, dass die meisten Mädchen Dutzende Matches pro Tag haben. Das bedeutet, dass sie höchstwahrscheinlich keine Zeit haben werden, Ihnen im Kreise der anderen Kandidaten Aufmerksamkeit zu schenken.

Es ist ganz klar, dass die Plattform wenig Möglichkeiten bietet, die tiefe innere Welt einer Person anhand eines anderthalb Sekunden langen Blicks auf ein Foto im Badeanzug oder beim Fahren eines modisch getönten Autos zu beurteilen. Wenn Sie also auf Ihren Fotos nicht einfach göttlich aussehen, haben Sie keine andere Wahl, als Ihre Chancen durch eine Adoption zu erhöhen R-Strategie bei einigen Arten. Einfach ausgedrückt: Wir werden rohe Gewalt anwenden und Volumen aufnehmen, um unsere Chancen auf einen Zuchterfolg zu erhöhen. Da Sie manchmal durch Essen und Schlafen abgelenkt werden müssen und die Anzahl der Wischbewegungen begrenzt ist, werden Sie es wahrscheinlich vorziehen, dass automatisch die Mädchen oder Männer ausgewählt werden, die Ihrem Geschmack am besten entsprechen. Kleine Rothaarige oder große Brünette – es liegt ganz bei Ihnen.

Daten sammeln

Zunächst einmal benötigt man für eine normale Genauigkeit viele Daten. Jeder, der schon einmal mit maschinellem Lernen in Berührung gekommen ist, weiß, wie schwierig es sein kann, einen korrekt erfassten und gekennzeichneten Datensatz zu erstellen. Als Datenquelle eignet sich theoretisch jede ähnliche Ressource, sei es Instagram oder andere soziale Netzwerke. Am besten ist es jedoch, an den Beispielen zu trainieren, an denen das Netzwerk in Zukunft arbeiten wird.

Nehmen wir das Repository als Grundlage Tinder-Automatisierung. Die Fotos von Tinder sind immer öffentlich zugänglich, die „Gefällt mir“-Funktion ist jedoch bereits eingeschränkt. Daher ist es notwendig, alle Lebewesen im Umkreis zu extrahieren und sorgfältig zu markieren. Zuerst müssen Sie ein ziemlich einfaches Skript verwenden:

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)

Damit können Sie den Datensatz schnellstmöglich mit nur zwei Schaltflächen markieren. Die größte Gefahr besteht darin, dass die Werkzeug-Bibliothek keine Abwärtskompatibilität aufweist und zu einem Downgrade gezwungen werden muss. Andernfalls wird dieser Fehler ausgegeben.

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'

Daher müssen Sie in „requirements.txt“ Werkzeug==0.16.1 schreiben. Dann wird es losgehen.
Das zweite Problem besteht darin, genau diesen Token zu bekommen. Die Standardmethode aus dem Repository hat bei mir nicht funktioniert, aber ich habe es geschafft, sie von der Entwicklerkonsole abzurufen. Gehen Sie dazu zu Link und extrahieren Sie die Antwort auf die POST-Anfrage in www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Darin suchen wir nach „access_token“. Aus irgendeinem Grund hat es beim ersten Mal nicht funktioniert, aber dann habe ich es gefunden und fest in das Skript einprogrammiert.

Anforderungen an den Datensatz

Es gibt mehrere wichtige Anforderungen an Datensätze für maschinelles Lernen:

  1. Ausreichend
  2. Gleichmäßigkeit
  3. Vielfalt

In diesem Fall sind mindestens 10000 Fotos erforderlich, um ein adäquates Modell zu erstellen. Ja, das ist eine Menge. Das ist eigentlich der Grund, warum Dienste so beliebt sind Amazon Mechanischer TürkeHier können Sie gegen eine Gebühr das Markup Ihres Datensatzes an andere Personen delegieren. Möchten Sie andererseits wirklich, dass Ihr Bot wundervolle asiatische Mädchen mit Mondgesicht oder ebenso schöne Mädchen mit indischen Wurzeln mag? Dennoch sollte das Modell Ihren Geschmack widerspiegeln.

Es gibt keine besonderen Probleme mit der Abwechslung; alle Fotos werden aus verschiedenen Blickwinkeln und mit unterschiedlicher Beleuchtung präsentiert. In Brillen, Kleidern, Badeanzügen und Skianzügen. Es kann zu Problemen mit der Einheitlichkeit des Datensatzes kommen. Wenn wir unsere Probe beschriften, sollte sie idealerweise aus ungefähr gleichen Teilen bestehen. Wenn Sie am Ende einen „verzerrten“ Datensatz erhalten, müssen Sie ihn mit Fotos aus anderen Quellen verwässern. Sie müssen attraktivere hinzufügen oder umgekehrt, Sie bestimmen sie anhand des Markup-Ergebnisses. Ich habe etwas bekommen, das zu etwa 60 % hübsch ist. Entweder bin ich nicht zu wählerisch, oder ich habe einfach Glück und es sind viele hübsche Mädchen da.

Auch die Hypothese, dass es unter ihnen viele Bots gibt, schließe ich nicht aus. Wir trainieren einen Bot, der andere Bots mögen wird. Darin liegt eine gewisse Ironie.

Datenverarbeitung

Wir haben eine Menge markierter Fotos, aber sie sind sehr gemischt. Tagsüber, nachts, von hinten und andere. Mit Bedauern verstehe ich, dass das Unterrichten anhand von Fotos aus einem umgekehrten Winkel nicht besonders effektiv sein wird, da die Probe sehr uneben sein wird. Daher wäre es die beste Option, Gesichter als Referenzzeichen für „Niedlichkeit“ zu verwenden. Dennoch ist dies für uns, wie auch für andere Primaten, ein Schlüsselparameter.

Deshalb verwenden wir Haarkaskaden. Dies ist ein hervorragender Algorithmus, der es Ihnen ermöglicht, Gesichter in Bildern mit einem geringen Prozentsatz falsch positiver Fehler zu finden.

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt
Dies wird im Handbuch genauer beschrieben OpenCV

Im nächsten Schritt, wenn nur noch Gesichter in der Probe vorhanden sind, ist es sinnvoll, die Farbe zu entfernen. Tatsächlich müssen Sie sich kaum zwischen Pandoras wunderschöner blauer Bewohnerin oder der grünhäutigen Schönheit entscheiden.

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt
Quelle

Bei Hue-Menschen hat die Hautfarbe keinen wesentlichen Einfluss auf die Attraktivitätsbewertung.
Daher lohnt es sich, die Arbeit des neuronalen Netzwerks zu vereinfachen und nur Graustufen zu belassen.

Modellbau

Ich möchte gleich sagen, dass Sie ohne eine gute Grafikkarte und CUDA höchstwahrscheinlich einfach nicht in angemessener Zeit ein trainiertes Modell erhalten werden. Streben Sie daher sofort nach Berechnungen in spezialisierten Clouds oder mit Python-CUDA.

Ich habe ein einfaches dreischichtiges Beispiel vom Autor des Repositorys übernommen und überraschenderweise zeigte es eine Genauigkeit von etwa 72 %, was ein recht gutes Ergebnis ist.

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'])

Wenn ein gutes Muster vorliegt, kann es durchaus ausreichen, ein funktionsfähiges Modell zu erhalten.

Lassen Sie uns den Bot starten

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt

Vielen Dank an den Autor des Repositorys für eine vorgefertigte Option zum schnellen Testen der Idee. Tatsächlich funktioniert es in der Basisversion recht gut und kann grundsätzlich auf unserem gestartet werden fertig gemieteter Server. Ein Training wird noch nicht möglich sein; im Moment stellen wir keine virtuellen Maschinen mit CUDA-Unterstützung für Berechnungen zur Verfügung, aber Sie können etwas rund um die Uhr ohne Probleme ausführen. Der Bot ist recht leichtgewichtig, daher wäre es rentabler, einen Tarif zu wählen, der die verbrauchten Ressourcen abdeckt.

Ergebnisse

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt
Ich glaube, ich bin sehr süß. Und ich habe eine reiche innere Welt. Ich habe innerhalb einer Stunde etwa 13 Treffer erzielt. Außerdem schrieben die Mädchen mehrmals zuerst.
Das Ergebnis waren sehr schöne Dialoge, in denen ich sagte, dass ich nur gekommen bin, um mit maschinellem Lernen und Datenkennzeichnung herumzuspielen. Eines der Mädchen war äußerst interessiert, da sie selbst Entwicklerin ist. Es besteht das starke Gefühl, dass sie diesen Beitrag auf Habré irgendwann lesen wird. Ich hoffe wirklich, dass Oksana meine Anonymität wahrt. 🙂
*winkt mit der Pfote und sagt Hallo

Ein wenig über die ethische Seite des Problems

Ehrlich gesagt gefällt mir die Idee, die Beziehungen zwischen Männern und Mädchen zu robotisieren, nicht. Es ist etwas sehr Richtiges, einem kalten Fremden, der allein steht, die Jacke über die Schultern zu werfen. Oder gehen Sie in einem Sommercafé auf ein hübsches Mädchen zu und trinken Sie gemeinsam Kaffee. Kommen Sie schon jetzt hinter den Monitoren hervor.

Der Sommer ist allgegenwärtig. Es ist Zeit, sich kennenzulernen.

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt

Wie man mit maschinellem Lernen und Tinder 13 Mädchen pro Stunde abholt

Source: habr.com

Kommentar hinzufügen