Comment draguer 13 filles par heure grâce au machine learning et à Tinder

*Uniquement dans le but d’apprendre le Machine Learning, bien sûr. Sous le regard légèrement mécontent de son épouse bien-aimée.

Il n’existe probablement pas d’application aussi simple au niveau des réflexes spinaux que Tinder. Pour l'utiliser, vous n'avez besoin que d'un seul doigt pour glisser et de quelques neurones pour choisir les filles ou les hommes que vous préférez. Une implémentation idéale de la force brute dans la sélection de paires.

J'ai décidé que ce serait un bon moyen d'avoir une petite idée de l'apprentissage automatique sur une nouvelle carte graphique. Il ne me reste plus qu'à expliquer à ma femme que je n'ai pas besoin d'une nouvelle femme plus grosse et que j'entraîne simplement des réseaux de neurones.

Comment draguer 13 filles par heure grâce au machine learning et à Tinder

Quel est le problème avec les réseaux de rencontres ?

Il y avait une telle ressource - Ashley Madison. Spécifique, avec le slogan « La vie est courte. Avoir une affaire." Le public principal est constitué d’hommes mariés à la recherche d’une liaison à côté. La monétisation est également amusante : en plus des « dépenser des points pour aimer et écrire », ils ont demandé 19 $ pour supprimer le compte d'un utilisateur sans laisser de trace.

En 2015, le site a naturellement fuité et 60 Go de données personnelles ont fuité dans le domaine public. Outre de nombreuses familles détruites, cette fuite a fourni de nombreuses informations intéressantes aux analystes. J’ai toujours soupçonné qu’il y avait beaucoup plus d’hommes sur les sites de rencontres, mais dans ce cas, cela s’est avéré assez intéressant. Journaliste Annalee Newitz analyser les données divulguées a découvert que sur 5 millions d'utilisateurs, seuls 12 000 ressemblaient à de vrais comptes de filles et étaient utilisés régulièrement. Le reste n’était que des robots qui discutaient avec des visiteurs masculins.

Une telle prépondérance envers les comptes masculins est typique non seulement pour cette ressource, mais aussi pour la plupart des autres sites de rencontres. Je suis sûr que beaucoup ont été confrontés à cette situation sans aucun doute injuste, où il faut soigneusement planifier une connaissance, mais où la fille a juste besoin de s'inscrire. Laissons de côté la qualité de cette foule de fans, mais il est indéniable que la balance de l’offre et de la demande penche clairement en faveur des filles.

Fonctionnalité Tinder

Comment draguer 13 filles par heure grâce au machine learning et à Tinder
Le brutal forcer idéal dans les relations de genre

La principale caractéristique de cette plateforme est le faible coût par connaissance. Une coïncidence de deux swipes suffit et vous communiquez déjà avec une personne potentiellement intéressante. Le problème est que le même déséquilibre entre les sexes conduit au fait que la plupart des filles disputeront des dizaines de matchs par jour. Cela signifie qu’ils n’auront probablement pas le temps de prêter attention à vous parmi les autres candidats.

Il est clair que la plate-forme implique peu de possibilités d'évaluer le monde intérieur profond d'une personne à partir d'un coup d'œil d'une seconde et demie sur une photo en maillot de bain ou au volant d'une voiture teintée à la mode. Alors, si vous n’avez pas l’air tout simplement divin sur vos photos, vous n’avez d’autre choix que d’augmenter vos chances en adoptant r-stratégie chez certaines espèces. En termes simples, nous allons forcer brutalement et prendre du volume pour augmenter nos chances de succès de reproduction. Étant donné que vous avez parfois besoin d'être distrait par la nourriture et le sommeil, et que les balayages sont limités, vous préférerez probablement que l'automatisation sélectionne les filles ou les hommes qui correspondent le mieux à vos goûts. Petites rousses ou grandes brunes, c'est à vous de décider.

La collecte de données

Tout d’abord, pour une précision normale, vous avez besoin de beaucoup de données. Quiconque a été confronté au machine learning sait à quel point il peut être difficile de produire un ensemble de données correctement collectées et étiquetées. Théoriquement, toute ressource similaire conviendra comme source de données, qu'il s'agisse d'Instagram ou d'autres réseaux sociaux. Mais il est préférable de s'entraîner sur les échantillons sur lesquels le réseau travaillera à l'avenir.

Prenons le référentiel comme base Automatisation de l'amadou. Les photos de Tinder sont toujours accessibles au public, mais la fonction « j'aime » est déjà limitée. Par conséquent, il est nécessaire d’extraire tous les êtres vivants dans le rayon et de les marquer soigneusement. Vous devez d’abord utiliser un script assez simple :

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)

Il vous permettra de baliser l'ensemble de données le plus rapidement possible avec seulement deux boutons. Le principal écueil réside dans le fait que la bibliothèque werkzeug a rompu la compatibilité ascendante et devra être obligée de la rétrograder. Sinon, cela génère cette erreur.

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'

Par conséquent, dans exigences.txt, vous devez écrire Werkzeug==0.16.1. Ensuite, ça décollera.
Le deuxième problème est d’obtenir ce même jeton. La méthode standard du référentiel n'a pas fonctionné pour moi, mais j'ai réussi à l'obtenir depuis la console développeur. Pour ce faire, rendez-vous sur lien et extrayez la réponse à la requête POST dans www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. À l’intérieur, nous recherchons « access_token ». Pour une raison quelconque, cela n'a pas fonctionné la première fois, mais ensuite je l'ai trouvé et je l'ai codé en dur dans le script.

Exigences relatives aux ensembles de données

Il existe plusieurs exigences clés pour les ensembles de données d’apprentissage automatique :

  1. Adéquation
  2. Uniformité
  3. Diversité

La suffisance dans ce cas nécessite au moins 10000 XNUMX photographies pour construire un modèle adéquat. Oui, c'est beaucoup. C'est en fait pourquoi des services comme Turc mécanique d'Amazon, où, moyennant des frais, vous pouvez déléguer le balisage de votre ensemble de données à d'autres personnes. D’un autre côté, voulez-vous vraiment que votre robot aime les merveilleuses filles asiatiques au visage lunaire ou les filles tout aussi belles aux racines indiennes ? Néanmoins, le modèle doit refléter vos goûts.

Il n'y a pas de problème particulier de variété : toutes les photographies sont présentées sous différents angles et éclairages. En lunettes, robes, maillots de bain et combinaisons de ski. Un problème peut survenir avec l’uniformité de l’ensemble de données. Idéalement, lorsque nous étiquetons notre échantillon, il devrait être composé de parties à peu près égales. Si vous vous retrouvez avec un ensemble de données « biaisé », vous devrez le diluer avec des photographies provenant d’autres sources. Vous devrez en ajouter des plus attractifs, ou vice versa, vous les déterminerez en fonction du résultat du balisage. J'ai quelque chose de joli à environ 60%. Soit je ne suis pas trop difficile, soit j'ai juste de la chance et il y a beaucoup de jolies filles dans le coin.

Je n’écarte pas non plus l’hypothèse selon laquelle il existe de nombreux robots parmi eux. Nous formons un bot qui ressemblera aux autres bots. Il y a une certaine ironie là-dedans.

Traitement des données

Nous avons un tas de photos taguées, mais elles sont très mitigées. De jour, de nuit, par derrière et autres. Avec regret, je comprends que l'enseignement à partir de photographies sous un angle inversé ne sera pas particulièrement efficace, car l'échantillon sera très inégal. Par conséquent, la meilleure option serait d’utiliser les visages comme signe de référence de « gentillesse ». Pourtant, pour nous, comme pour les autres primates, il s’agit d’un paramètre clé.

Par conséquent, utilisons Cascades de cheveux. Il s'agit d'un excellent algorithme qui vous permet de trouver des visages dans des images avec un faible pourcentage d'erreurs faussement positives.

Comment draguer 13 filles par heure grâce au machine learning et à Tinder
Ceci est décrit plus en détail dans le manuel OpenCV

À l’étape suivante, une fois que seuls les visages sont présents dans l’échantillon, il est logique de supprimer la couleur. En fait, vous n'aurez guère à choisir entre la belle habitante bleue de Pandore ou la beauté à la peau verte.

Comment draguer 13 filles par heure grâce au machine learning et à Tinder
Source

Chez les Hué, la couleur de la peau n’apporte pas une contribution significative aux évaluations d’attractivité.
Par conséquent, il vaut la peine de simplifier le travail du réseau neuronal et de ne laisser que des niveaux de gris.

Construction de maquettes

Je tiens à dire tout de suite que sans une bonne carte vidéo et CUDA, vous n'obtiendrez probablement tout simplement pas un modèle formé en temps opportun. Visez donc immédiatement les calculs dans des cloud spécialisés ou en utilisant python-CUDA.

J'ai pris un exemple de base à trois couches de l'auteur du référentiel et, étonnamment, il a montré une précision d'environ 72 %, ce qui est un assez bon résultat.

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

S’il existe un bon échantillon, il suffira peut-être pour obtenir un modèle réalisable.

Lançons le bot

Comment draguer 13 filles par heure grâce au machine learning et à Tinder

Merci à l'auteur du référentiel pour une option toute faite permettant de tester rapidement l'idée. En fait, il fonctionne plutôt bien dans la version de base et peut, en principe, être lancé sur notre serveur loué prêt à l'emploi. Il n'est pas encore possible de s'entraîner ; pour le moment, nous ne fournissons pas de machines virtuelles avec support CUDA pour les calculs, mais vous pouvez exécuter quelque chose 24h/7 et XNUMXj/XNUMX sans aucun problème. Le bot est assez léger, il serait donc plus rentable de prendre un tarif qui rémunère les ressources utilisées.

résultats

Comment draguer 13 filles par heure grâce au machine learning et à Tinder
Je suppose que je suis très mignon. Et j'ai un monde intérieur riche. J'ai eu quelque chose comme 13 matchs en une heure. De plus, à plusieurs reprises, les filles ont écrit en premier.
En conséquence, nous nous sommes retrouvés avec de très beaux dialogues, dans lesquels j'ai dit que j'étais venu uniquement pour jouer avec l'apprentissage automatique et l'étiquetage des données. L'une des filles était extrêmement intéressée, puisqu'elle est elle-même développeur. On a le fort sentiment qu’elle finira par lire ce message sur Habré. J'espère vraiment qu'Oksana conservera mon anonymat. 🙂
*agite la patte et dit bonjour

Un peu sur l'aspect éthique de la question

Pour être honnête, je n’aime pas l’idée de robotiser les relations entre hommes et filles. Il y a quelque chose de très bien à jeter votre veste sur les épaules d'un inconnu froid et seul. Ou approchez une jolie fille dans un café d'été et buvez un café ensemble. Sortez déjà de derrière les moniteurs.

L'été est partout. Il est temps de faire connaissance.

Comment draguer 13 filles par heure grâce au machine learning et à Tinder

Comment draguer 13 filles par heure grâce au machine learning et à Tinder

Source: habr.com

Ajouter un commentaire