Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder

*Siyempre, para lang sa pag-aaral ng Machine Learning. Sa ilalim ng bahagyang hindi nasisiyahang tingin ng kanyang pinakamamahal na asawa.

Malamang na walang application na kasing simple sa antas ng spinal reflexes gaya ng Tinder. Para magamit ito, kailangan mo lang ng isang daliri para mag-swipe at ilang neuron para piliin ang mga babae o lalaki na pinakagusto mo. Isang mainam na pagpapatupad ng brute force sa pagpili ng pares.

Napagpasyahan ko na ito ay isang magandang paraan upang magkaroon ng kaunting pakiramdam para sa machine learning sa isang bagong graphics card. Ang natitira na lang ay ipaliwanag sa aking asawa na hindi ko kailangan ng bagong babaeng mas mataba, at nagsasanay lang ako ng mga neural network.

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder

Ano ang problema sa mga network ng pakikipag-date?

Nagkaroon ng ganoong mapagkukunan - Ashley Madison. Tukoy, na may slogan na β€œLife is short. Magkaroon ng relasyon." Ang pangunahing madla ay mga lalaking may asawa na naghahanap ng isang relasyon sa gilid. Masaya rin ang monetization - bilang karagdagan sa karaniwang "paggastos ng mga puntos para i-like at isulat," humingi sila ng $19 para tanggalin ang account ng isang user nang walang bakas.

Noong 2015, natural na nag-leak ang site at 60 GB ng personal na data ang tumagas sa pampublikong domain. Bilang karagdagan sa maraming nawasak na pamilya, ang pagtagas na ito ay nagbigay ng maraming kawili-wiling impormasyon sa mga analyst. Palagi kong pinaghihinalaan na marami pang lalaki sa mga dating site, ngunit sa kasong ito ito ay naging medyo kawili-wili. Ang mamamahayag na si Annalee Newitz pagsusuri ng mga leaked data nalaman na sa 5 milyong user, 12 lang ang katulad ng mga totoong account ng babae at regular na ginagamit. Ang natitira ay mga bot lamang na nakikipag-chat sa mga bisitang lalaki.

Ang ganitong preponderance sa mga male account ay karaniwan hindi lamang para sa mapagkukunang ito, kundi pati na rin para sa karamihan ng iba pang mga dating site. Sigurado ako na marami ang nakatagpo ng walang alinlangan na hindi patas na sitwasyon, kapag kailangan mong maingat na magplano ng isang kakilala, ngunit ang batang babae ay kailangan lamang na magparehistro. Iwanan natin ang kalidad ng karamihan ng mga tagahanga, ngunit ang katotohanan ay hindi maikakaila na ang balanse ng supply at demand ay malinaw na inilipat pabor sa mga batang babae.

Tampok ng Tinder

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder
Ang perpektong brute forceer sa relasyon ng kasarian

Ang pangunahing tampok ng platform na ito ay ang mababang gastos sa bawat kakilala. Ang isang coincidence ng dalawang swipe ay sapat na at nakikipag-ugnayan ka na sa isang potensyal na kawili-wiling tao. Ang problema ay ang kawalan ng balanse ng parehong kasarian ay humahantong sa katotohanan na karamihan sa mga batang babae ay magkakaroon ng dose-dosenang mga tugma bawat araw. Nangangahulugan ito na malamang na wala silang oras upang bigyang pansin ka sa iba pang mga kandidato.

Ito ay lubos na malinaw na ang platform ay nagpapahiwatig ng maliit na pagkakataon upang masuri ang malalim na panloob na mundo ng isang tao mula sa isa at kalahating segundong sulyap sa isang larawan sa isang swimsuit o pagmamaneho ng isang naka-istilong tinted na kotse. Samakatuwid, kung hindi ka nagmumukhang banal sa iyong mga larawan, wala kang pagpipilian kundi dagdagan ang iyong mga pagkakataon sa pamamagitan ng r-diskarte sa ilang species. Sa madaling salita, gagawa tayo ng brute force at kukuha ng lakas upang madagdagan ang ating mga pagkakataong magtagumpay sa pag-aanak. Dahil minsan kailangan mong magambala ng pagkain at pagtulog, at limitado ang mga pag-swipe, malamang na mas pipiliin mo na ang automation ay pumili ng mga babae o lalaki na pinakaangkop sa iyong panlasa. Maikling redheads o matatangkad na may buhok na kulay-kape - ikaw ang bahala.

Nangongolekta ng datos

Una sa lahat, kailangan mo ng maraming data para sa normal na katumpakan. Alam ng sinumang nakaranas ng machine learning kung gaano kahirap gumawa ng isang dataset na nakolekta at may label na tama. Sa teorya, ang anumang katulad na mapagkukunan ay magiging angkop bilang isang mapagkukunan ng data, maging ito Instagram o iba pang mga social network. Ngunit pinakamainam na sanayin ang mga sample na iyon kung saan gagana ang network sa hinaharap.

Kunin natin ang repositoryo bilang batayan Tinder Automation. Palaging available sa publiko ang mga larawan ng Tinder, ngunit limitado na ang function na "like". Samakatuwid, kinakailangang kunin ang lahat ng nabubuhay na bagay sa loob ng radius at maingat na markahan ang mga ito. Una kailangan mong gumamit ng medyo simpleng script:

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)

Papayagan ka nitong markahan ang dataset nang mabilis hangga't maaari gamit lamang ang dalawang button. Ang pangunahing pitfall ay nakasalalay sa katotohanan na ang library ng werkzeug ay nasira ang backward compatibility at kailangang pilitin itong i-downgrade. Kung hindi, ito ay nagtatapon ng error na ito.

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'

Samakatuwid, sa requirements.txt kailangan mong isulat ang Werkzeug==0.16.1. Pagkatapos ay aalisin ito.
Ang pangalawang problema ay upang makuha ang mismong token na ito. Ang karaniwang paraan mula sa repositoryo ay hindi gumana para sa akin, ngunit nakuha ko ito mula sa developer console. Upang gawin ito, pumunta sa link at i-extract ang tugon sa POST request sa www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Sa loob ay hinahanap namin ang 'access_token'. Sa ilang kadahilanan ay hindi ito gumana sa unang pagkakataon, ngunit pagkatapos ay natagpuan ko ito at na-hardcode ito sa script.

Mga kinakailangan sa dataset

Mayroong ilang pangunahing kinakailangan para sa mga dataset ng machine learning:

  1. Kasapatan
  2. Pagkakatulad
  3. Iba't ibang

Ang sapat sa kasong ito ay nangangailangan ng hindi bababa sa 10000 mga larawan upang makabuo ng isang sapat na modelo. Oo, marami iyon. Ito talaga ang dahilan kung bakit gusto ng mga serbisyo Amazon Mechanical Turk, kung saan sa isang bayad ay maaari mong italaga ang markup ng iyong dataset sa ibang tao. Sa kabilang banda, gusto mo ba talagang magustuhan ng iyong bot ang mga magagandang babaeng Asian na mukha sa buwan o parehong magagandang babae na may pinagmulang Indian? Gayunpaman, dapat ipakita ng modelo ang iyong panlasa.

Walang mga partikular na problema sa iba't-ibang; ang lahat ng mga larawan ay ipinakita mula sa iba't ibang mga anggulo at pag-iilaw. Sa salamin, damit, swimsuit at ski suit. Maaaring magkaroon ng problema sa pagkakapareho ng dataset. Sa isip, kapag nilagyan namin ng label ang aming sample, dapat itong binubuo ng humigit-kumulang pantay na bahagi. Kung magkakaroon ka ng isang "skewed" na dataset, kakailanganin mong palabnawin ito ng mga larawan mula sa iba pang mga mapagkukunan. Kakailanganin mong magdagdag ng mga mas kaakit-akit, o kabaliktaran, matutukoy mo ang mga ito batay sa resulta ng markup. Nakakuha ako ng isang bagay sa paligid ng 60% maganda. Either hindi ako masyadong mapili, o maswerte lang ako at maraming magagandang babae sa paligid.

Hindi ko rin binabawasan ang hypothesis na maraming bot sa kanila. Nagsasanay kami ng bot na magugustuhan ng iba pang bot. Mayroong ilang kabalintunaan dito.

Pagproseso ng data

Mayroon kaming isang grupo ng mga naka-tag na larawan, ngunit ang mga ito ay napakahalo. Araw, gabi, mula sa likod at iba pa. Nang may panghihinayang, naiintindihan ko na ang pagtuturo mula sa mga larawan mula sa isang reverse angle ay hindi magiging partikular na epektibo, dahil ang sample ay magiging lubhang hindi pantay. Samakatuwid, ang pinakamagandang opsyon ay ang paggamit ng mga mukha bilang reference sign ng "cuteness." Gayunpaman, para sa amin, tulad ng para sa iba pang mga primata, ito ay isang pangunahing parameter.

Samakatuwid, gamitin natin Haar cascades. Ito ay isang mahusay na algorithm na nagbibigay-daan sa iyong makahanap ng mga mukha sa mga larawang may mababang porsyento ng mga maling positibong error.

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder
Ito ay inilalarawan nang mas detalyado sa manwal OpenCV

Sa susunod na yugto, pagkatapos na mga mukha lamang ang nasa sample, makatuwirang alisin ang kulay. Sa katunayan, halos hindi mo na kailangang pumili sa pagitan ng magandang asul na denizen ng Pandora o ang berdeng balat na kagandahan.

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder
Pinagmulan

Sa mga taong Hue, ang kulay ng balat ay hindi gumagawa ng malaking kontribusyon sa mga rating ng pagiging kaakit-akit.
Samakatuwid, sulit na gawing simple ang gawain ng neural network at mag-iwan lamang ng grayscale.

Modelo ng gusali

Gusto kong sabihin kaagad na kung walang magandang video card at CUDA, malamang na hindi ka makakakuha ng sinanay na modelo sa sapat na oras. Samakatuwid, agad na layunin para sa mga kalkulasyon sa mga espesyal na ulap o gamit ang python-CUDA.

Kumuha ako ng pangunahing tatlong-layer na halimbawa mula sa may-akda ng repositoryo at, nakakagulat, nagpakita ito ng katumpakan ng humigit-kumulang 72%, na isang magandang resulta.

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

Kung mayroong isang mahusay na sample, maaaring ito ay sapat na upang makakuha ng isang magagamit na modelo.

Ilunsad natin ang bot

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder

Salamat sa may-akda ng repository para sa isang handa na pagpipilian para sa mabilis na pagsubok sa ideya. Sa katunayan, ito ay gumagana nang maayos sa pangunahing bersyon at maaaring, sa prinsipyo, ay ilunsad sa aming nakahandang inuupahang server. Hindi pa posible na magsanay; sa ngayon ay hindi kami nagbibigay ng mga virtual machine na may suporta sa CUDA para sa mga kalkulasyon, ngunit maaari kang magpatakbo ng isang bagay 24/7 nang walang anumang problema. Ang bot ay medyo magaan, kaya mas kumikita kung kumuha ng taripa na nagbabayad para sa mga mapagkukunang ginamit.

Natuklasan

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder
Sobrang cute ko yata. At mayroon akong isang mayamang panloob na mundo. Nakakuha ako ng parang 13 laban sa loob ng isang oras. Bukod dito, maraming beses na unang nagsulat ang mga batang babae.
Bilang resulta, nauwi kami sa napakagandang mga dialogue, kung saan sinabi kong pumasok ako para lang maglaro ng machine learning at pag-label ng data. Ang isa sa mga batang babae ay labis na interesado, dahil siya mismo ay isang developer. Malakas ang pakiramdam na babasahin niya ang post na ito sa HabrΓ©. Inaasahan ko talaga na mapanatili ni Oksana ang aking pagiging hindi nagpapakilala. πŸ™‚
*kaway ng paa at nag hi

Kaunti tungkol sa etikal na bahagi ng isyu

Sa totoo lang, hindi ko gusto ang buong ideya ng pag-robot ng mga relasyon sa pagitan ng mga lalaki at babae. May isang bagay na napaka tama tungkol sa paghagis ng iyong jacket sa mga balikat ng isang malamig na estranghero na nakatayong mag-isa. O lumapit sa isang magandang babae sa isang summer cafe at uminom ng kape nang magkasama. Lumabas ka na sa likod ng mga monitor.

Ang tag-araw ay nasa paligid. Oras na para magkakilala.

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder

Paano pumili ng 13 babae kada oras gamit ang machine learning at Tinder

Pinagmulan: www.habr.com

Magdagdag ng komento