Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja

*Izključno zaradi učenja strojnega učenja, seveda. Pod rahlo nezadovoljnim pogledom svoje ljubljene žene.

Verjetno ni aplikacije, ki bi bila tako preprosta na ravni hrbteničnih refleksov kot Tinder. Če ga želite uporabiti, potrebujete le en prst, da podrsate, in nekaj nevronov, da izberete dekleta ali moške, ki so vam najbolj všeč. Idealna izvedba surove sile pri izbiri parov.

Odločil sem se, da bi bil to dober način, da malo občutim strojno učenje na novi grafični kartici. Vse kar preostane je, da ženi razložim, da ne potrebujem nove debelejše ženske in samo treniram nevronske mreže.

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja

Kakšna je težava z mrežami za zmenke?

Obstajal je tak vir - Ashley Madison. Konkretno, s sloganom »Življenje je kratko. Imej afero." Glavno občinstvo so poročeni moški, ki iščejo afero ob strani. Monetizacija je tudi zabavna - poleg standardnega "porabite točke za všečkanje in pisanje", so zahtevali 19 $ za brisanje uporabniškega računa brez sledu.

Leta 2015 je stran seveda pricurljala in 60 GB osebnih podatkov je ušlo v javno domeno. Poleg številnih uničenih družin je to uhajanje analitikom ponudilo veliko zanimivih informacij. Vedno sem sumila, da je na zmenkarskih straneh veliko več moških, a v tem primeru se je izkazalo za precej zanimivo. Novinarka Annalee Newitz analiziranje razkritih podatkov ugotovili, da je od 5 milijonov uporabnikov samo 12 podobnih računom pravih deklet in so bili redno uporabljeni. Ostali so bili le roboti, ki so klepetali z moškimi obiskovalci.

Takšna prevlada proti moškim računom ni značilna samo za ta vir, ampak tudi za večino drugih spletnih mest za zmenke. Prepričan sem, da so se mnogi srečali s to nedvomno nepošteno situacijo, ko morate skrbno načrtovati poznanstvo, a dekle se mora samo registrirati. Pustimo kakovost te množice oboževalcev ob strani, a dejstvo je neizpodbitno, da je ravnotežje med ponudbo in povpraševanjem očitno premaknjeno v korist deklet.

Funkcija Tinder

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja
Idealna surovina v odnosih med spoloma

Glavna značilnost te platforme je nizka cena na poznanstvo. Dovolj je naključje dveh potegov in že komunicirate s potencialno zanimivo osebo. Težava je v tem, da enako neravnovesje med spoloma vodi do dejstva, da bo imela večina deklet na desetine tekem na dan. To pomeni, da najverjetneje ne bodo imeli časa posvetiti pozornosti vam med drugimi kandidati.

Povsem jasno je, da platforma pomeni malo možnosti za oceno globokega notranjega sveta človeka iz sekunde in pol pogleda na fotografijo v kopalkah ali vožnjo v modnem zatemnjenem avtomobilu. Če torej na svojih fotografijah niste videti preprosto božansko, vam ne preostane drugega, kot da povečate svoje možnosti s posvojitvijo r-strategija pri nekaterih vrstah. Preprosto povedano, uporabili bomo surovo silo in povečali količino, da bi povečali svoje možnosti za uspeh vzreje. Ker vas je včasih treba zamotiti s hrano in spanjem, potegi pa so omejeni, boste verjetno raje avtomatizirano izbrali dekleta ali moške, ki najbolj ustrezajo vašemu okusu. Nizke rdečelaske ali visoke rjavolaske – odvisno je od vas.

Zbiranje podatkov

Najprej potrebujete veliko podatkov za normalno natančnost. Vsak, ki se je srečal s strojnim učenjem, ve, kako težko je lahko izdelati pravilno zbran in označen nabor podatkov. Teoretično bo vsak podoben vir primeren kot vir podatkov, pa naj bo to Instagram ali druga družbena omrežja. Vendar je najbolje trenirati na tistih vzorcih, na katerih bo omrežje delovalo v prihodnosti.

Za osnovo vzemimo skladišče Avtomatizacija Tinder. Tinderjeve fotografije so vedno javno dostopne, vendar je funkcija »všečkaj« že omejena. Zato je treba izločiti vsa živa bitja v polmeru in jih skrbno označiti. Najprej morate uporabiti dokaj preprost skript:

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)

Omogočil vam bo, da kar najhitreje označite nabor podatkov s samo dvema gumboma. Ključna past je v dejstvu, da je knjižnica werkzeug pokvarila združljivost za nazaj in jo bo treba prisiliti v nižjo različico. V nasprotnem primeru vrže to napako.

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'

Zato morate v zahtevi.txt napisati Werkzeug==0.16.1. Potem bo vzletelo.
Druga težava je pridobiti prav ta žeton. Standardna metoda iz repozitorija zame ni delovala, vendar mi jo je uspelo pridobiti iz konzole za razvijalce. Če želite to narediti, pojdite na povezava in izvlecite odgovor na zahtevo POST v www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Znotraj iščemo 'access_token'. Iz neznanega razloga prvič ni delovalo, potem pa sem ga našel in vnesel v skript.

Zahteve za nabor podatkov

Za nabore podatkov strojnega učenja obstaja več ključnih zahtev:

  1. Ustreznost
  2. Enotnost
  3. Raznolikost

Zadostnost v tem primeru zahteva vsaj 10000 fotografij za izdelavo ustreznega modela. Da, to je veliko. To je pravzaprav razlog, zakaj so storitve všeč Amazon Mehanični Turk, kjer lahko za plačilo prenesete označevanje svojega nabora podatkov na druge osebe. Po drugi strani pa res želite, da bi bil vašemu robotu všeč čudovita azijska dekleta z lunastimi obrazi ali enako lepa dekleta indijskih korenin? Kljub temu mora model odražati vaš okus.

Z raznolikostjo ni posebnih težav, vse fotografije so predstavljene iz različnih zornih kotov in osvetlitve. V očalih, oblekah, kopalkah in smučarskih kombinezonih. Težava se lahko pojavi pri enotnosti nabora podatkov. V idealnem primeru bi moral biti vzorec, ko ga označimo, sestavljen iz približno enakih delov. Če boste na koncu dobili »popačen« nabor podatkov, ga boste morali razredčiti s fotografijami iz drugih virov. Dodati boste morali bolj privlačne ali obratno, določili jih boste glede na rezultat označevanja. Imam približno 60% lepo. Ali nisem preveč izbirčen ali pa imam samo srečo in je okoli veliko lepih deklet.

Prav tako ne zavračam hipoteze, da je med njimi veliko botov. Usposobimo bota, ki bo kot drugi boti. Nekaj ​​ironije je v tem.

Obdelava podatkov

Imamo kup označenih fotografij, vendar so zelo mešane. Podnevi, ponoči, od zadaj in drugi. Žal razumem, da poučevanje iz fotografij iz obratnega kota ne bo posebej učinkovito, saj bo vzorec zelo neenakomeren. Zato bi bila najboljša možnost uporaba obrazov kot referenčnega znaka »ljubkosti«. Kljub temu je za nas, tako kot za druge primate, to ključni parameter.

Zato, uporabljajmo Haar kaskade. To je odličen algoritem, ki vam omogoča iskanje obrazov na slikah z nizkim odstotkom lažno pozitivnih napak.

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja
To je podrobneje opisano v priročniku OpenCV

Na naslednji stopnji, ko so v vzorcu samo obrazi, je smiselno odstraniti barvo. Pravzaprav vam skoraj ne bo treba izbirati med Pandorino lepo modro prebivalko ali lepotcem zelene kože.

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja
Vir

Pri ljudeh Hue barva kože ne prispeva bistveno k ocenam privlačnosti.
Zato je vredno poenostaviti delo nevronske mreže in pustiti le sivine.

Gradnja modela

Takoj želim povedati, da brez dobre grafične kartice in CUDA najverjetneje preprosto ne boste pravočasno dobili usposobljenega modela. Zato takoj usmerite k izračunom v specializiranih oblakih ali z uporabo python-CUDA.

Osnovni trislojni primer sem vzel od avtorja repozitorija in presenetljivo je pokazal natančnost okoli 72%, kar je kar dober rezultat.

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

Če obstaja dober vzorec, potem lahko zadostuje za pridobitev uporabnega modela.

Zaženimo bota

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja

Hvala avtorju repozitorija za že pripravljeno možnost za hitro testiranje ideje. Pravzaprav deluje precej dobro v osnovni različici in ga je načeloma mogoče zagnati na našem že pripravljen najet strežnik. Šolanje še ne bo mogoče; trenutno ne ponujamo virtualnih strojev s podporo CUDA za izračune, vendar lahko nekaj izvajate 24/7 brez težav. Bot je precej lahek, zato bi bilo bolj donosno vzeti tarifo, ki plačuje porabljene vire.

Ugotovitve

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja
Mislim, da sem zelo srčkan. In imam bogat notranji svet. Dobil sem približno 13 tekem v eni uri. Poleg tega so dekleta večkrat pisala prva.
Posledično smo dobili zelo lepe dialoge, kjer sem rekel, da sem prišel zgolj zato, da bi se igral s strojnim učenjem in označevanjem podatkov. Eno izmed deklet je zelo zanimalo, saj je tudi sama razvijalka. Obstaja močan občutek, da bo sčasoma prebrala to objavo na Habréju. Resnično upam, da bo Oksana ohranila mojo anonimnost. 🙂
*maha s tačko in pozdravlja

Malo o etični plati vprašanja

Če sem iskren, mi ni všeč celotna ideja o robotizaciji odnosov med moškimi in dekleti. Nekaj ​​zelo prav je v tem, da svojo jakno vržeš čez ramena hladnega neznanca, ki stoji sam. Ali pa pristopite k lepemu dekletu v poletni kavarni in skupaj popijte kavo. Pojdite že izza monitorjev.

Poletje je vsepovsod. Čas je, da se spoznamo.

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja

Kako pobrati 13 deklet na uro s pomočjo strojnega učenja in Tinderja

Vir: www.habr.com

Dodaj komentar