Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta

*Muidugi puhtalt masinõppe õppimise pärast. Armastatud naise pisut rahulolematu pilgu all.

Seljaaju reflekside tasemele pole ilmselt nii lihtsat rakendust kui Tinder. Selle kasutamiseks on vaja ainult ühte sõrme pühkimiseks ja mõnda neuronit, et valida endale kõige meeldivamad tüdrukud või mehed. Ideaalne toore jõu rakendamine paarivalikus.

Otsustasin, et see oleks hea viis uuel graafikakaardil masinõppele pisut tunda. Jääb üle vaid oma naisele selgitada, et ma ei vaja uut paksemat naist ja ma lihtsalt treenin närvivõrke.

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta

Mis on kohtinguvõrkude probleem?

Seal oli selline ressurss - Ashley Madison. Konkreetne, loosungiga “Elu on lühike. Lubage suhet." Peamine publik on abielus mehed, kes otsivad kõrvalsuhet. Monetiseerimine on ka lõbus – lisaks tavapärasele "kuluta punkte meeldimiseks ja kirjutamiseks" küsisid nad 19 dollarit, et kasutaja konto jäljetult kustutada.

2015. aastal lekkis sait loomulikult ja 60 GB isikuandmeid lekkis avalikku omandisse. Lisaks paljudele hävinud peredele andis see leke analüütikutele palju huvitavat teavet. Kahtlustasin alati, et kohtinguportaalidel on palju rohkem mehi, aga antud juhul osutus see päris huvitavaks. Ajakirjanik Annalee Newitz lekkinud andmete analüüsimine avastas, et 5 miljonist kasutajast oli vaid 12 000 sarnased päris tüdrukute kontodega ja neid kasutati regulaarselt. Ülejäänud olid lihtsalt robotid, kes vestlesid meessoost külastajatega.

Selline ülekaal meeste kontode suhtes on tüüpiline mitte ainult selle ressursi, vaid ka enamiku teiste tutvumissaitide jaoks. Olen kindel, et paljud on kokku puutunud selle kahtlemata ebaõiglase olukorraga, kus tuleb tutvust hoolikalt planeerida, aga tüdrukul on vaja vaid registreeruda. Jätame selle fännide hulga kvaliteedi kõrvale, kuid tõsiasi, et nõudluse ja pakkumise tasakaal on selgelt tüdrukute kasuks nihkunud, on vaieldamatu.

Tinderi funktsioon

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta
Ideaalne toores jõud soosuhetes

Selle platvormi peamine omadus on madal hind tuttava kohta. Piisab kahe pühkimise kokkulangemisest ja juba suhtledki potentsiaalselt huvitava inimesega. Probleem on selles, et sama sooline tasakaalustamatus toob kaasa asjaolu, et enamikul tüdrukutest on päevas kümneid matše. See tähendab, et suure tõenäosusega ei jää neil teiste kandidaatide seas aega sulle tähelepanu pöörata.

On üsna selge, et platvormil on vähe võimalusi hinnata inimese sügavat sisemaailma pooleteisesekundilise pilguga fotole ujumistrikoo või moeka toonitud autoga sõites. Seega, kui te ei näe oma fotodel lihtsalt jumalik välja, pole teil muud valikut kui suurendada oma võimalusi lapsendamisega r-strateegia mõnel liigil. Lihtsamalt öeldes kasutame jõhkrat jõudu ja suurendame oma sigimise edukuse võimalusi. Kuna mõnikord tuleb toidust ja unest segada ning pühkimine on piiratud, eelistate tõenäoliselt, et automaatika valib teie maitsele kõige paremini vastavad tüdrukud või mehed. Lühikesed punapead või pikad brünetid – see on sinu otsustada.

Andmete kogumine

Esiteks on normaalse täpsuse jaoks vaja palju andmeid. Igaüks, kes on kokku puutunud masinõppega, teab, kui keeruline võib olla õigesti kogutud ja märgistatud andmestiku koostamine. Teoreetiliselt sobib andmeallikaks iga sarnane ressurss, olgu selleks siis Instagram või muud sotsiaalvõrgustikud. Kuid kõige parem on treenida nende näidiste põhjal, millel võrk tulevikus töötab.

Võtame aluseks hoidla Tinderi automatiseerimine. Tinderi fotod on alati avalikult kättesaadavad, kuid "meeldib" funktsioon on juba piiratud. Seetõttu on vaja kõik elusloodused raadiuses välja tõmmata ja need hoolikalt märgistada. Kõigepealt peate kasutama üsna lihtsat skripti:

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)

See võimaldab teil kahe nupuga võimalikult kiiresti andmestiku märgistada. Peamine lõks seisneb selles, et werkzeugi raamatukogu on rikkunud tagasiühilduvust ja see tuleb sunniviisiliselt seda alandada. Vastasel juhul annab see vea.

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'

Seetõttu tuleb failis needs.txt kirjutada Werkzeug==0.16.1. Siis läheb õhku.
Teine probleem on selle märgi hankimine. Hoidlast pärit standardmeetod minu jaoks ei töötanud, kuid mul õnnestus see arendajakonsoolist hankida. Selleks minge aadressile link ja eraldage vastus POST-päringule www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Seest otsime 'access_token'. Mingil põhjusel see esimesel korral ei töötanud, kuid siis leidsin selle ja kodeerisin selle skripti sisse.

Andmekogumi nõuded

Masinõppe andmekogumite jaoks on mitu põhinõuet.

  1. Adekvaatsus
  2. Ühtsus
  3. Sort

Sel juhul on piisavaks mudeliks vaja vähemalt 10000 XNUMX fotot. Jah, seda on palju. See on tegelikult põhjus, miks teenused meeldivad Amazon Mehaaniline Türk, kus saate tasu eest oma andmestiku märgistamise teistele inimestele delegeerida. Teisest küljest, kas soovite tõesti, et teie robotile meeldiks imelised kuunäoga Aasia tüdrukud või sama ilusad India juurtega tüdrukud? Siiski peaks mudel peegeldama teie maitset.

Erilisi probleeme mitmekesisusega pole, kõik fotod on esitatud erinevate nurkade ja valgustusega. Prillides, kleitides, ujumistrikoodes ja suusakostüümides. Probleem võib tekkida andmestiku ühtsusega. Ideaalis peaks proovi märgistamisel see koosnema ligikaudu võrdsetest osadest. Kui teil on "viltu" andmestik, peate seda lahjendama muudest allikatest pärit fotodega. Peate lisama atraktiivsemaid või vastupidi, määrate need märgistuse tulemuse põhjal. Mul on midagi umbes 60% ilusat. Kas ma ei ole liiga valiv või mul on lihtsalt vedanud ja ümberringi on palju ilusaid tüdrukuid.

Samuti ei tee ma alla hüpoteesi, et nende hulgas on palju roboteid. Koolitame robotit, mis meeldib teistele robotitele. Selles on omajagu irooniat.

Andmetöötlus

Meil on hunnik sildistatud fotosid, kuid need on väga segased. Päeval, öösel, tagant ja teised. Kahetsusega mõistan, et vastupidise nurga all tehtud fotode õpetamine ei ole eriti tõhus, kuna valim on väga ebaühtlane. Seetõttu oleks parim valik nägude kasutamine "armsuse" viitemärgina. Siiski on see meie, nagu ka teiste primaatide jaoks, võtmeparameeter.

Seetõttu kasutame Haar kaskaadid. See on suurepärane algoritm, mis võimaldab teil leida piltidelt nägusid, mille valepositiivsete vigade protsent on väike.

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta
Seda kirjeldatakse üksikasjalikumalt juhendis OpenCV

Järgmises etapis, kui proovis on ainult näod, on mõttekas värv eemaldada. Tegelikult on teil vaevalt vaja valida Pandora kauni sinise elaniku või rohelise nahaga kaunitari vahel.

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta
Allikas

Hue’i inimeste puhul ei anna nahavärv atraktiivsuse hinnangutele olulist panust.
Seetõttu tasub närvivõrgu tööd lihtsustada ja jätta ainult halltoonid.

Mudeli ehitamine

Tahan kohe öelda, et ilma hea videokaardi ja CUDAta ei saa te tõenäoliselt lihtsalt õigeks ajaks koolitatud mudelit. Seetõttu võtke kohe eesmärgiks arvutused spetsiaalsetes pilvedes või python-CUDA abil.

Võtsin repositooriumi autorilt põhilise kolmekihilise näite ja üllatuslikult näitas see 72% täpsust, mis on päris hea tulemus.

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

Kui on olemas hea valim, võib sellest piisata toimiva mudeli hankimiseks.

Käivitame roboti

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta

Aitäh hoidla autorile idee kiireks testimiseks valminud variandi eest. Tegelikult töötab see põhiversioonis üsna hästi ja seda saab põhimõtteliselt ka meie peal käivitada valmis renditud server. Treenida veel ei saa, hetkel me CUDA toega virtuaalmasinaid arvutusteks ei paku, aga midagi saab 24/7 probleemideta käivitada. Bot on üsna kerge, seega oleks kasulikum võtta tariif, mis maksab kasutatud ressursside eest.

Järeldused

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta
Ma olen vist väga armas. Ja mul on rikas sisemaailm. Sain tunni jooksul umbes 13 tikku. Pealegi kirjutasid tüdrukud mitu korda esimesena.
Lõpptulemusena jõudsime väga toredate dialoogideni, kus ütlesin, et tulin ainult masinõppe ja andmete märgistamisega mängima. Üks tüdrukutest oli väga huvitatud, kuna ta ise on arendaja. On tugev tunne, et lõpuks loeb ta seda postitust Habré lehel. Loodan väga, et Oksana säilitab mu anonüümsuse. 🙂
*viipab käpaga ja ütleb tere

Natuke teema eetilisest küljest

Ausalt öeldes ei meeldi mulle kogu meeste ja tüdrukute suhete robotiseerimise idee. Midagi on väga õige selles, kui visata üksi seisvale külmale võõrale oma jope üle õlgade. Või astuge suvekohvikus ilusale tüdrukule ja jooge koos kohvi. Tule juba monitoride tagant välja.

Suvi on ümberringi. On aeg tutvuda.

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta

Kuidas masinõppe ja Tinderi abil tunnis 13 tüdrukut peale võtta

Allikas: www.habr.com

Lisa kommentaar