Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder

*Nure pro la lernado de Maŝinlernado, kompreneble. Sub la iomete malkontenta rigardo de sia amata edzino.

Verŝajne ne ekzistas apliko tiel simpla al la nivelo de spinaj refleksoj kiel Tindro. Por uzi ĝin, vi bezonas nur unu fingron por gliti kaj kelkajn neŭronojn por elekti la knabinojn aŭ virojn, kiujn vi plej ŝatas. Ideala efektivigo de krudforto en parelekto.

Mi decidis, ke ĉi tio estus bona maniero por iom senti pri maŝinlernado sur nova grafika karto. Restas nur klarigi al mia edzino, ke mi ne bezonas novan pli dikan virinon, kaj mi nur trejnas neŭrajn retojn.

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder

Kio estas la problemo kun rendevuaj retoj?

Estis tia rimedo - Ashley Madison. Specifa, kun la slogano "La vivo estas mallonga. Havu amaferon." La ĉefa spektantaro estas edziĝintaj viroj serĉantaj amaferon flanke. Monetigo ankaŭ estas amuza - krom la norma "elspezi poentojn por ŝati kaj skribi", ili petis $19 por forigi la konton de uzanto sen spuro.

En 2015, la retejo nature likis kaj 60 GB da personaj datumoj likis en la publikan domajnon. Krom multaj detruitaj familioj, ĉi tiu liko disponigis multajn interesajn informojn al analizistoj. Mi ĉiam suspektis, ke estas multe pli da viroj en rendevuaj retejoj, sed ĉi-kaze ĝi montriĝis sufiĉe interesa. Ĵurnalisto Annalee Newitz analizante filtritajn datumojn trovis, ke el 5 milionoj da uzantoj, nur 12 estis similaj al realaj knabinaj kontoj kaj estis uzataj regule. La ceteraj estis nur robotoj, kiuj babilis kun viraj vizitantoj.

Tia superregado al viraj kontoj estas tipa ne nur por ĉi tiu rimedo, sed ankaŭ por la plej multaj aliaj rendevuaj retejoj. Mi certas, ke multaj renkontis ĉi tiun sendube maljustan situacion, kiam vi devas zorge plani konaton, sed la knabino nur bezonas registriĝi. Ni lasu la kvaliton de ĉi tiu amaso da fanoj flanken, sed la fakto estas nekontestebla, ke la ekvilibro de propono kaj postulo estas klare ŝanĝita favore al la knabinoj.

Tinder Feature

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder
La ideala krudfortisto en seksaj rilatoj

La ĉefa trajto de ĉi tiu platformo estas la malalta kosto por konato. Koincido de du svingoj sufiĉas kaj vi jam komunikas kun eble interesa persono. La problemo estas, ke la sama seksa malekvilibro kondukas al la fakto, ke plej multaj knabinoj havos dekojn da matĉoj ĉiutage. Ĉi tio signifas, ke ili plej verŝajne ne havos tempon por atenti vin inter aliaj kandidatoj.

Estas sufiĉe klare, ke la platformo implicas malmultan ŝancon taksi la profundan internan mondon de homo de unu kaj duona sekunda rigardo al foto en naĝkostumo aŭ stiri modan nuancan aŭton. Tial, se vi ne aspektas simple dia en viaj fotoj, vi ne havas alian elekton ol pliigi viajn ŝancojn adoptante r-strategio en iuj specioj. Simple dirite, ni krudfortos kaj prenos volumon por pliigi niajn ŝancojn de reprodukta sukceso. Ĉar vi foje devas esti distrita de manĝaĵo kaj dormo, kaj svingoj estas limigitaj, vi verŝajne preferos, ke aŭtomatigo elektu la knabinojn aŭ virojn, kiuj plej taŭgas por viaj gustoj. Mallongaj ruĝharuloj aŭ altaj brunetoj - dependas de vi.

Kolektante datumojn

Antaŭ ĉio, vi bezonas multajn datumojn por normala precizeco. Ĉiu, kiu renkontis maŝinlernadon, scias kiom malfacile povas esti produkti ĝuste kolektitan kaj etikeditan datumaron. Teorie, ajna simila rimedo taŭgas kiel datumfonto, ĉu Instagram aŭ aliaj sociaj retoj. Sed plej bone estas trejni pri tiuj specimenoj, sur kiuj la reto funkcios estonte.

Ni prenu la deponejon kiel bazon Tinder Aŭtomatigo. La fotoj de Tinder estas ĉiam publike haveblaj, sed la "ŝati" funkcio jam estas limigita. Tial necesas ĉerpi ĉiujn vivantojn ene de la radiuso kaj zorge marki ilin. Unue vi devas uzi sufiĉe simplan skripton:

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)

Ĝi permesos al vi marki la datumaron kiel eble plej rapide per nur du butonoj. La ŝlosila faŭlto kuŝas en la fakto, ke la werkzeug-biblioteko rompis malantaŭan kongruecon kaj devos esti devigita malaltigi ĝin. Alie ĝi ĵetas ĉi tiun eraron.

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'

Tial, en requirements.txt vi devas skribi Werkzeug==0.16.1. Tiam ĝi ekflugos.
La dua problemo estas akiri ĉi tiun ĵetonon. La norma metodo de la deponejo ne funkciis por mi, sed mi sukcesis akiri ĝin de la programista konzolo. Por fari tion, iru al ligilo kaj ĉerpi la respondon al la POST-peto en www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Ene ni serĉas 'access_token'. Ial ĝi ne funkciis la unuan fojon, sed poste mi trovis ĝin kaj fikskodis ĝin en la skripton.

Postuloj de datumaroj

Estas pluraj ŝlosilaj postuloj por maŝinlernado de datumaroj:

  1. Taŭgeco
  2. Unuformeco
  3. Vario

Sufiĉo en ĉi tiu kazo postulas almenaŭ 10000 fotojn por konstrui taŭgan modelon. Jes, tio estas multe. Jen kial servoj ŝatas Amazon Mechanical Turk, kie kontraŭ pago vi povas delegi la markadon de via datumaro al aliaj homoj. Aliflanke, ĉu vi vere volas, ke via bot ŝatu mirindajn lunvizaĝajn aziajn knabinojn aŭ same belajn knabinojn kun hindaj radikoj? Tamen, la modelo devus reflekti vian guston.

Ne estas apartaj problemoj kun vario; ĉiuj fotoj estas prezentitaj el diversaj anguloj kaj lumigado. En okulvitroj, roboj, naĝkostumoj kaj skikostumoj. Problemo povas ekesti kun la unuformeco de la datumaro. Ideale, kiam ni etikedas nian specimenon, ĝi devus konsisti el proksimume egalaj partoj. Se vi finas kun "malsukcesa" datumaro, vi devos dilui ĝin per fotoj de aliaj fontoj. Vi devos aldoni pli allogajn, aŭ inverse, vi determinos ilin surbaze de la marka rezulto. Mi ricevis ion ĉirkaŭ 60% belan. Aŭ mi ne estas tro elektema, aŭ mi estas nur bonŝanca kaj estas multaj belaj knabinoj ĉirkaŭe.

Mi ankaŭ ne rabatas la hipotezon, ke estas multaj bots inter ili. Ni trejnas roboton, kiu ŝatos aliajn robotojn. Estas iom da ironio en tio.

Datumtraktado

Ni havas amason da etikeditaj fotoj, sed ili estas tre miksitaj. Tage, nokte, de malantaŭe kaj aliaj. Kun bedaŭro, mi komprenas, ke instruado el fotoj el inversa angulo ne estos aparte efika, ĉar la specimeno estos tre malebena. Tial, la plej bona elekto estus uzi vizaĝojn kiel referencan signon de "beleco". Tamen, por ni, kiel por aliaj primatoj, ĉi tio estas ŝlosila parametro.

Tial ni uzu Haar kaskadoj. Ĉi tio estas bonega algoritmo, kiu ebligas al vi trovi vizaĝojn en bildoj kun malalta procento de falsaj pozitivaj eraroj.

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder
Ĉi tio estas priskribita pli detale en la manlibro OpenCV

En la sekva etapo, post kiam nur vizaĝoj estas en la specimeno, estas senco forigi koloron. Fakte, vi apenaŭ devos elekti inter la bela blua loĝanto de Pandora aŭ la verdhaŭta beleco.

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder
Fonto

En Hue homoj, haŭtkoloro ne faras gravan kontribuon al taksoj de allogeco.
Tial indas simpligi la laboron de la neŭrala reto kaj lasi nur grizskalon.

Modelkonstruaĵo

Mi volas diri tuj, ke sen bona vidkarto kaj CUDA, vi plej verŝajne simple ne ricevos trejnitan modelon en taŭga tempo. Sekve, tuj celu kalkulojn en specialigitaj nuboj aŭ uzante python-CUDA.

Mi prenis bazan tritavolan ekzemplon de la aŭtoro de la deponejo kaj, surprize, ĝi montris precizecon de ĉirkaŭ 72%, kio estas sufiĉe bona rezulto.

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

Se estas bona specimeno, tiam eble sufiĉas akiri realigeblan modelon.

Ni lanĉu la bot

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder

Dankon al la aŭtoro de la deponejo pro preta opcio por rapide testi la ideon. Fakte ĝi funkcias sufiĉe bone en la baza versio kaj principe povas esti lanĉita ĉe nia preta luita servilo. Trejni ankoraŭ ne eblos; nuntempe ni ne provizas virtualajn maŝinojn kun CUDA-subteno por kalkuloj, sed vi povas ruli ion 24/7 sen problemoj. La bot estas sufiĉe malpeza, do estus pli profite preni tarifon, kiu pagas por la uzitaj rimedoj.

Результаты

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder
Mi supozas, ke mi estas tre bela. Kaj mi havas riĉan internan mondon. Mi ricevis ion kiel 13 matĉojn ene de unu horo. Krome, plurfoje la knabinoj skribis unue.
Kiel rezulto, ni finis kun tre belaj dialogoj, kie mi diris, ke mi eniris nur por ludi kun maŝinlernado kaj datumetikedado. Unu el la knabinoj estis ege interesita, ĉar ŝi mem estas programisto. Estas forta sento, ke ŝi finfine legos ĉi tiun afiŝon pri Habré. Mi vere esperas, ke Oksana konservos mian anonimecon. 🙂
*svingas la piedon kaj salutas

Iom pri la etika flanko de la afero

Verdire, mi ne ŝatas la tutan ideon pri robotigi rilatojn inter viroj kaj knabinoj. Estas io tre ĝusta pri ĵeti vian jakon sur la ŝultrojn de malvarma fremdulo, kiu staras sola. Aŭ alproksimiĝu al bela knabino en somera kafejo kaj trinku kafon kune. Eliru jam de malantaŭ la ekranoj.

Somero estas ĉirkaŭe. Estas tempo por konatiĝi.

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder

Kiel kapti 13 knabinojn je horo uzante maŝinlernadon kaj Tinder

fonto: www.habr.com

Aldoni komenton