Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.

* Žinoma, tik tam, kad išmoktume mašininio mokymosi. Po kiek nepatenkintu mylimos žmonos žvilgsniu.

Tikriausiai nėra tokio paprasto pritaikymo stuburo refleksų lygiui kaip Tinder. Kad galėtumėte juo naudotis, jums tereikia vieno piršto perbraukti ir kelių neuronų, kad pasirinktumėte jums labiausiai patinkančias merginas ar vyrus. Idealus brutalios jėgos įgyvendinimas renkantis poras.

Nusprendžiau, kad tai būtų geras būdas šiek tiek pajusti mašininį mokymąsi naudojant naują grafikos plokštę. Belieka paaiškinti žmonai, kad man nereikia naujos storesnės moters, o aš tik treniruoju neuroninius tinklus.

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.

Kokia yra pažinčių tinklų problema?

Buvo toks šaltinis - Ashley Madison. Konkretus, su šūkiu „Gyvenimas trumpas. Turėkite romaną“. Pagrindinė auditorija – vedę vyrai, ieškantys romano iš šono. Pajamų gavimas taip pat yra įdomus – be standartinių „išleisk taškų, kad patiktų ir rašytum“, jie paprašė 19 USD, kad pašalintų vartotojo paskyrą be pėdsakų.

2015 metais svetainė natūraliai nutekėjo ir 60 GB asmens duomenų nutekėjo į viešąją erdvę. Be daugybės sunaikintų šeimų, šis nutekėjimas analitikams suteikė daug įdomios informacijos. Visada įtariau, kad pažinčių svetainėse vyrų daug daugiau, bet šiuo atveju tai pasirodė gana įdomu. Žurnalistė Annalee Newitz nutekėjusių duomenų analizė nustatė, kad iš 5 milijonų vartotojų tik 12 000 buvo panašūs į tikras mergaičių paskyras ir buvo reguliariai naudojami. Likusieji buvo tik robotai, kurie bendravo su vyrais lankytojais.

Tokia vyrų paskyrų persvara būdinga ne tik šiam šaltiniui, bet ir daugumai kitų pažinčių svetainių. Esu tikra, kad ne vienam yra tekę susidurti su tokia neabejotinai nesąžininga situacija, kai tenka kruopščiai planuoti pažintį, tačiau merginai tereikia užsiregistruoti. Palikime nuošalyje šios minios gerbėjų kokybę, bet faktas neabejotinas, kad pasiūlos ir paklausos balansas aiškiai pasislenka merginų naudai.

Tinder funkcija

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.
Ideali brutali jėga lyčių santykiuose

Pagrindinis šios platformos bruožas yra maža kaina už vieną pažintį. Pakanka dviejų braukimų sutapimo ir jau bendrauji su galimai įdomiu žmogumi. Problema ta, kad tas pats lyčių disbalansas lemia tai, kad dauguma merginų turės dešimtis rungtynių per dieną. Tai reiškia, kad jie greičiausiai neturės laiko atkreipti į jus dėmesio tarp kitų kandidatų.

Visiškai aišku, kad platforma suponuoja menką galimybę iš pusantros sekundės žvilgsnio į nuotrauką su maudymosi kostiumėliu ar važiuojant madingu tamsintu automobiliu įvertinti gilų žmogaus vidinį pasaulį. Todėl, jei savo nuotraukose neatrodote tiesiog dieviškai, neturite kito pasirinkimo, kaip tik padidinti savo galimybes įsivaikinus r-strategiją kai kuriose rūšyse. Paprasčiau tariant, panaudosime žiaurią jėgą ir padidinsime apimtį, kad padidintume sėkmingo veisimosi galimybes. Kadangi kartais reikia blaškytis nuo maisto ir miego, o braukimai yra riboti, tikriausiai norėsite, kad automatika atrinktų merginas ar vyrus, kurie geriausiai atitinka jūsų skonį. Žemos raudonplaukės ar aukštos brunetės – spręsti jums.

Duomenų rinkimas

Visų pirma, norint užtikrinti normalų tikslumą, reikia daug duomenų. Kiekvienas, susidūręs su mašininiu mokymusi, žino, kaip sunku sukurti teisingai surinktą ir pažymėtą duomenų rinkinį. Teoriškai duomenų šaltiniui tiks bet koks panašus šaltinis, ar tai būtų Instagram, ar kiti socialiniai tinklai. Tačiau geriausia treniruotis su tais pavyzdžiais, kuriuose tinklas veiks ateityje.

Paimkime saugyklą kaip pagrindą Tinder automatika. „Tinder“ nuotraukos visada yra viešai prieinamos, tačiau „patinka“ funkcija jau yra ribota. Todėl reikia ištraukti visus gyvus daiktus spinduliu ir atidžiai juos pažymėti. Pirmiausia turite naudoti gana paprastą scenarijų:

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)

Tai leis jums kuo greičiau pažymėti duomenų rinkinį tik dviem mygtukais. Pagrindinis spąstas slypi tame, kad werkzeug bibliotekos atgalinis suderinamumas sutriko ir turės būti priverstas ją sumažinti. Priešingu atveju ji pateikia šią klaidą.

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'

Todėl reikalavimai.txt reikia parašyti Werkzeug==0.16.1. Tada jis pakils.
Antroji problema yra gauti šį žetoną. Standartinis metodas iš saugyklos man netiko, bet man pavyko jį gauti iš kūrėjo konsolės. Norėdami tai padaryti, eikite į nuoroda ir ištraukite atsakymą į POST užklausą www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Viduje ieškome „access_token“. Dėl tam tikrų priežasčių jis neveikė pirmą kartą, bet tada aš jį radau ir įkodavau į scenarijų.

Duomenų rinkinio reikalavimai

Yra keli pagrindiniai mašininio mokymosi duomenų rinkinių reikalavimai:

  1. Tinkamumas
  2. Vienodumas
  3. Veislė

Norint sukurti tinkamą modelį, šiuo atveju reikia bent 10000 XNUMX nuotraukų. Taip, tai daug. Štai kodėl paslaugos mėgsta "Amazon Mechanical Turk", kur už tam tikrą mokestį galite perduoti savo duomenų rinkinio žymėjimą kitiems žmonėms. Kita vertus, ar tikrai norite, kad jūsų botui patiktų nuostabios mėnulio veido Azijos merginos ar tokios pat gražios merginos su indiškomis šaknimis? Vis dėlto modelis turėtų atspindėti jūsų skonį.

Su įvairove ypatingų problemų nėra, visos nuotraukos pateikiamos įvairiais kampais ir apšvietimu. Akiniais, suknelėmis, maudymosi kostiumėliais ir slidinėjimo kostiumais. Gali kilti problemų dėl duomenų rinkinio vienodumo. Idealiu atveju, kai paženkliname savo pavyzdį, jį turėtų sudaryti maždaug vienodos dalys. Jei gausite „kreiptą“ duomenų rinkinį, turėsite jį atskiesti nuotraukomis iš kitų šaltinių. Reikės pridėti patrauklesnių, arba atvirkščiai, pagal žymėjimo rezultatą nustatysite jas. Turiu kažką apie 60% gražaus. Arba nesu per daug išranki, arba man tiesiog pasisekė ir aplinkui daug gražių merginų.

Taip pat neatmetu hipotezės, kad tarp jų yra daug robotų. Mes mokome botą, kuris patiks kitiems robotams. Tame yra ironijos.

Duomenų apdorojimas

Turime krūvą pažymėtų nuotraukų, bet jos labai mišrios. Dieną, naktį, iš nugaros ir kt. Su apgailestavimu suprantu, kad mokymas iš nuotraukų atvirkštiniu kampu nebus ypač efektyvus, nes pavyzdys bus labai netolygus. Todėl geriausias pasirinkimas būtų naudoti veidus kaip „mielumo“ ženklą. Vis dėlto mums, kaip ir kitiems primatams, tai yra pagrindinis parametras.

Todėl naudokimės Haar kaskados. Tai puikus algoritmas, leidžiantis rasti veidus vaizduose, kuriuose yra mažas klaidingų teigiamų klaidų procentas.

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.
Tai išsamiau aprašyta vadove OpenCV

Kitame etape, kai pavyzdyje yra tik veidai, prasminga pašalinti spalvą. Tiesą sakant, vargu ar jums teks rinktis tarp gražios mėlynos Pandoros deizenės ar žaliaodės gražuolės.

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.
šaltinis

Hue žmonių odos spalva neturi reikšmingo indėlio į patrauklumo įvertinimus.
Todėl verta supaprastinti neuroninio tinklo darbą ir palikti tik pilkos spalvos tonus.

Modelio kūrimas

Iš karto noriu pasakyti, kad be geros vaizdo plokštės ir CUDA greičiausiai tiesiog negausite apmokyto modelio tinkamu laiku. Todėl nedelsdami stenkitės atlikti skaičiavimus specializuotuose debesyse arba naudodami python-CUDA.

Aš paėmiau pagrindinį trijų sluoksnių pavyzdį iš saugyklos autoriaus ir, stebėtinai, jis parodė maždaug 72% tikslumą, o tai yra gana geras rezultatas.

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

Jei yra geras pavyzdys, jo gali pakakti, kad būtų gautas tinkamas modelis.

Paleiskime botą

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.

Dėkojame saugyklos autoriui už paruoštą variantą greitam idėjos išbandymui. Tiesą sakant, jis gana gerai veikia pagrindinėje versijoje ir iš esmės gali būti paleistas mūsų paruoštas nuomojamas serveris. Treniruotis kol kas nepavyks, šiuo metu virtualių mašinų su CUDA palaikymu skaičiavimams nesuteikiame, tačiau galite kažką paleisti 24/7 be jokių problemų. Botas yra gana lengvas, todėl pelningiau būtų imti tarifą, kuris apmoka už sunaudotus išteklius.

rezultatai

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.
Manau, kad esu labai miela. Ir aš turiu turtingą vidinį pasaulį. Per valandą sulaukiau 13 rungtynių. Be to, keletą kartų merginos rašė pirmosios.
Dėl to mes baigėme labai gražius dialogus, kuriuose sakiau, kad atėjau tik žaisti su mašininiu mokymusi ir duomenų ženklinimu. Viena iš merginų labai susidomėjo, nes ji pati yra kūrėja. Yra stiprus jausmas, kad ji galiausiai perskaitys šį įrašą apie Habré. Labai tikiuosi, kad Oksana išlaikys mano anonimiškumą. 🙂
*mojuoja letena ir pasisveikina

Šiek tiek apie etinę problemos pusę

Tiesą sakant, man nepatinka visa vyrų ir merginų santykių robotizavimo idėja. Yra kažkas labai teisingo, jei mesti striukę ant pečių šaltam nepažįstamam žmogui, kuris stovi vienas. Arba prieikite prie gražios merginos vasaros kavinėje ir kartu išgerkite kavos. Jau eik iš už monitorių.

Visur vasara. Pats laikas susipažinti.

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.

Kaip per valandą pasiimti 13 merginų naudojant mašininį mokymąsi ir „Tinder“.

Šaltinis: www.habr.com

Добавить комментарий