Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz

*Machine Learning ikasteko soilik, noski. Bere emazte maitearen begirada apur bat asegabearen azpian.

Ziurrenik ez dago Tinder bezain bizkarrezurreko erreflexuen mailarako aplikazio sinplerik. Erabili ahal izateko, hatz bakarra pasatzeko eta neurona batzuk behar dituzu gehien gustatzen zaizkizun neskak edo gizonak aukeratzeko. Bikoteen aukeraketan indar gordinaren ezarpen ezin hobea.

Erabaki nuen txartel grafiko berri batean ikaskuntza automatikoa ezagutzeko modu ona izango zela. Nire emazteari azaltzea besterik ez da geratzen ez dudala emakume gizen berririk behar, eta sare neuronalak entrenatzen ari naiz.

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz

Zein da zita-sareen arazoa?

Halako baliabide bat zegoen - Ashley Madison. Zehatza, β€œBizitza laburra da. Izan harremana". Ikusle nagusia ezkondutako gizonak dira alboan harreman baten bila. Dirua irabaztea ere dibertigarria da: "Gastatu puntuak gustatzen eta idazteko" estandarrez gain, 19 dolar eskatu zituzten erabiltzaile baten kontua arrastorik gabe ezabatzeko.

2015ean, gunea modu naturalean filtratu zen eta 60 GB datu pertsonalak jabari publikora filtratu ziren. Suntsitutako familia askoz gain, filtrazio honek informazio interesgarri asko eman zien analistei. Beti susmatzen nuen askoz gizon gehiago zeudela datazio guneetan, baina kasu honetan nahiko interesgarria izan zen. Annalee Newitz kazetaria filtratutako datuak aztertzea aurkitu zuen 5 milioi erabiltzailetik 12 baino ez zirela benetako neska kontuen antzekoak eta aldizka erabiltzen zirela. Gainerakoak gizonezko bisitariekin berriketan aritzen ziren bot-ak besterik ez ziren.

Gizonezkoen kontuekiko nagusitasuna ohikoa da baliabide honetan ez ezik, baita beste datazio gune gehienetan ere. Ziur nago askok dudarik gabe bidegabeko egoera honekin topo egin dutela, ezagun bat arretaz planifikatu behar duzunean, baina neskak erregistratu besterik ez du egin behar. Utz dezagun zaleen multzo honen kalitatea alde batera, baina ukaezina da eskaintza eta eskariaren oreka argi eta garbi nesken alde mugitzen dela.

Tinder Ezaugarri

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz
Genero-harremanetan indar gordina ideala

Plataforma honen ezaugarri nagusia ezagun bakoitzeko kostu baxua da. Nahikoa da bi irristaketa kasualitatea eta dagoeneko interesgarri izan daitekeen pertsona batekin komunikatzen ari zara. Arazoa da genero desoreka berak dakarrela neska gehienek egunean dozenaka partida izango dituztela. Horrek esan nahi du ziurrenik ez dutela denborarik izango zuri kasu egiteko beste hautagaien artean.

Argi dago plataformak aukera gutxi duela pertsona baten barne-mundu sakona segundo eta erdiko begirada batetik baloratzeko, bainujantzian edo modako koloreztatutako auto bat gidatzen duen argazki bati. Hori dela eta, zure argazkietan jainkozko itxura besterik ez baduzu, ez duzu aukerak handitzea beste aukerarik hartu. r-estrategia espezie batzuetan. Besterik gabe, indar gordina eta bolumena hartuko dugu ugaltzeko arrakasta izateko aukerak handitzeko. Batzuetan janariarekin eta loarekin distraitu behar duzunez eta irristaketak mugatuak direnez, ziurrenik automatizazioak hobekien egokitzen diren neskak edo gizonak hautatzea nahiago duzu. Gorritxo motzak edo bruneta altuak - zure esku dago.

Datuak biltzen

Lehenik eta behin, datu asko behar dituzu zehaztasun arrunterako. Ikaskuntza automatikoa ezagutu duen edonork badaki zein zaila izan daitekeen behar bezala bildu eta etiketatutako datu-multzo bat sortzea. Teorian, antzeko edozein baliabide izango da egokia datu-iturri gisa, izan Instagram edo beste sare sozial batzuk. Baina hobe da sareak etorkizunean lan egingo duen lagin horietan trebatzea.

Har dezagun biltegia oinarri gisa Tinder Automatizazioa. Tinderren argazkiak beti daude publikoki eskuragarri, baina "atsegin dut" funtzioa mugatua da dagoeneko. Horregatik, beharrezkoa da erradioaren barruan dauden izaki bizidun guztiak atera eta arretaz markatzea. Lehenik eta behin script nahiko sinple bat erabili behar duzu:

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)

Datu-multzoa ahalik eta azkarren markatzeko aukera emango dizu bi botoirekin. Funtsezko akatsa werkzeug liburutegiak atzerako bateragarritasuna hautsi duela eta mailaz behera egitera behartu beharko duela datza. Bestela errore hau botatzen du.

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'

Beraz, requirements.txt-en Werkzeug==0.16.1 idatzi behar duzu. Orduan aireratuko da.
Bigarren arazoa token hori lortzea da. Biltegiko metodo estandarrak ez zidan funtzionatu, baina garatzaileen kontsolatik eskuratzea lortu nuen. Horretarako, joan hona link eta atera POST eskaeraren erantzuna www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Barruan 'access_token' bilatzen dugu. Zerbaitegatik ez zuen funtzionatu lehen aldiz, baina gero aurkitu nuen eta gidoian gogor kodetu nuen.

Datu multzoen eskakizunak

Hainbat baldintza gako daude ikaskuntza automatikoko datu-multzoetarako:

  1. Egokitasuna
  2. Uniformetasuna
  3. aniztasuna

Kasu honetan nahikoa izateko gutxienez 10000 argazki behar dira eredu egoki bat eraikitzeko. Bai, hori asko da. Horregatik, hain zuzen ere, zerbitzuak bezalakoak dira Amazoneko Turk mekanikoa, non kuota baten truke zure datu-multzoaren markaketa beste pertsona batzuei laga diezaiekezu. Bestalde, benetan nahi al duzu zure bot-ak ilargi aurpegiko asiar neska zoragarriak edo sustrai indiarrak dituzten neska ederrak gustatzea? Hala ere, ereduak zure gustua islatu behar du.

Barietatearekin ez dago inolako arazorik; argazki guztiak hainbat angelu eta argiztapenetatik aurkezten dira. Betaurreko, soineko, bainujantzia eta eski jantzietan. Arazo bat sor daiteke datu-multzoaren uniformetasunarekin. Egokiena, gure lagina etiketatzen dugunean, gutxi gorabehera zati berdinez osatuta egotea. Datu-multzo "okertu" batekin amaitzen baduzu, beste iturri batzuetako argazkiekin diluitu beharko duzu. Erakargarriagoak gehitu beharko dituzu, edo alderantziz, markaketaren emaitzaren arabera zehaztuko dituzu. %60 inguruan zerbait polita lortu dut. Edo ez naiz oso hautakorra, edo zortea daukat eta neska polit asko daude inguruan.

Horien artean bot asko daudela dioen hipotesia ere ez dut baztertzen. Beste bot bat bezalakoa izango den bot bat entrenatzen dugu. Honetan ironia pixka bat dago.

Datuen tratamendua

Etiketatutako argazki mordoa ditugu, baina oso nahasiak dira. Egunez, gauez, atzetik eta beste. Penatuta, ulertzen dut alderantzizko angelu batetik argazkietatik irakastea ez dela bereziki eraginkorra izango, lagina oso irregularra izango baita. Hori dela eta, aukerarik onena aurpegiak erabiltzea izango litzateke "edertasunaren" erreferentziazko seinale gisa. Hala ere, guretzat, beste primateentzat bezala, funtsezko parametroa da hori.

Beraz, erabil ditzagun Haar kaskadak. Errore positibo faltsuen ehuneko baxua duten irudietan aurpegiak aurkitzeko aukera ematen duen algoritmo bikaina da.

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz
Eskuliburuan zehatzago deskribatzen da hori OpenCV

Hurrengo fasean, aurpegiak bakarrik laginean egon ondoren, zentzuzkoa da kolorea kentzea. Izan ere, nekez aukeratu beharko duzu Pandoraren bizilagun urdin ederraren edo azal berdearen edertasunaren artean.

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz
Iturria

Hue pertsonengan, azalaren koloreak ez du ekarpen handirik egiten erakargarritasunaren balorazioetan.
Horregatik, merezi du sare neuronalaren lana sinplifikatzea eta gris-eskala soilik uztea.

Eraikina maketa

Berehala esan nahi dut bideo-txartel on bat eta CUDA gabe, ziurrenik ez duzula trebatu eredurik denbora egokian lortuko. Hori dela eta, berehala zuzendu kalkuluak hodei espezializatuetan edo python-CUDA erabiliz.

Biltegiaren egilearen hiru geruzako oinarrizko adibide bat hartu nuen eta, harrigarria bada ere, %72 inguruko zehaztasuna erakutsi zuen, eta hori nahiko emaitza ona da.

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

Lagin on bat badago, baliteke eredu erabilgarria lortzea nahikoa izatea.

Abiarazi dezagun bot-a

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz

Eskerrik asko biltegiaren egileari ideia azkar probatzeko prest egindako aukeragatik. Izan ere, oinarrizko bertsioan nahiko ondo funtzionatzen du eta, printzipioz, gurean abiarazi daiteke prest alokaturiko zerbitzaria. Oraindik ezin izango da entrenatu; momentuz, ez dugu kalkuluetarako CUDA euskarria duten makina birtualak eskaintzen, baina 24/7 exekutatu dezakezu zerbait arazorik gabe. Bota nahiko arina da, beraz, errentagarriagoa izango litzateke erabilitako baliabideak ordaintzen dituen tarifa bat hartzea.

Findings

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz
Oso polita naizela uste dut. Eta barne mundu aberatsa dut. Ordubete barru 13 partida bezalako zerbait lortu nuen. Gainera, hainbat aldiz neskek idatzi zuten lehenik.
Ondorioz, elkarrizketa oso politak lortu genituen, non esan nuen ikaskuntza automatikoarekin eta datuen etiketatzearekin jolasteko bakarrik sartu nintzela. Neska bat oso interesatuta zegoen, bera garatzailea baita. Sentsazio handia dago azkenean HabrΓ©-n mezu hau irakurriko duela. Benetan espero dut Oksanak nire anonimotasuna mantentzea. πŸ™‚
*hanka astindu eta kaixo esaten du

Gaiaren alde etikoari buruz pixka bat

Egia esateko, ez zait gustatzen gizon eta nesken arteko harremanak robotizatzearen ideia osoa. Zerbait oso zuzena da zure jaka bakarrik dagoen ezezagun hotz baten sorbaldara botatzeak. Edo hurbildu neska polit bati udako kafetegi batean eta elkarrekin kafea edan. Atera monitoreen atzetik dagoeneko.

Uda inguruan dago. Ezagutzeko ordua da.

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz

Nola jaso orduko 13 neska ikasketa automatikoa eta Tinder erabiliz

Iturria: www.habr.com

Gehitu iruzkin berria