Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder

* Puur om 'e wille fan it learen fan Machine Learning, fansels. Under de wat ûntefreden blik fan syn leafste frou.

D'r is wierskynlik gjin tapassing sa ienfâldich foar it nivo fan spinale refleksen as Tinder. Om it te brûken, hawwe jo mar ien finger nedich om te swipen en in pear neuronen om de famkes of manlju te kiezen dy't jo it bêste leuk fine. In ideale ymplemintaasje fan brute krêft yn pear seleksje.

Ik besleat dat dit in goede manier wêze soe om in bytsje gefoel te krijen foar masine learen op in nije grafyske kaart. Alles wat oerbliuwt is om myn frou út te lizzen dat ik gjin nije dikke frou nedich haw, en ik trainje gewoan neurale netwurken.

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder

Wat is it probleem mei dating netwurken?

D'r wie sa'n boarne - Ashley Madison. Spesifyk, mei de slogan "It libben is koart. Hawwe in affêre." It haadpublyk is troude manlju op syk nei in affêre oan 'e kant. Monetarisaasje is ek leuk - neist de standert "punten besteegje oan leuk en skriuwe", fregen se $ 19 om it akkount fan in brûker sûnder spoar te wiskjen.

Yn 2015 lekt de side natuerlik en 60 GB oan persoanlike gegevens lekt yn it publike domein. Njonken in protte ferneatige famyljes levere dit lek in protte nijsgjirrige ynformaasje oan analysten. Ik hie altyd it fermoeden dat d'r folle mear manlju wiene op datingsites, mar yn dit gefal blykte it heul ynteressant te wêzen. Sjoernalist Annalee Newitz it analysearjen fan lekke gegevens fûn dat út 5 miljoen brûkers, mar 12 wiene fergelykber mei echte famke accounts en waarden brûkt geregeldwei. De rest wiene gewoan bots dy't petearden mei manlike besikers.

Sa'n oerwicht foar manlike akkounts is typysk net allinich foar dizze boarne, mar ek foar de measte oare datingsites. Ik bin der wis fan dat in protte hawwe tsjinkaam dizze sûnder mis ûnearlike situaasje, as jo moatte soarchfâldich plan in kunde, mar it famke moat gewoan registrearje. Litte wy de kwaliteit fan dizze mannichte fan fans oan 'e kant litte, mar it feit is ûnbestriden dat it lykwicht fan oanbod en fraach dúdlik yn it foardiel fan' e famkes feroaret.

Tinder Feature

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder
De ideale brute krêft yn geslachtsrelaasjes

It wichtichste skaaimerk fan dit platfoarm is de lege kosten per kunde. In tafal fan twa swipes is genôch en jo kommunisearje al mei in potinsjeel nijsgjirrige persoan. It probleem is dat itselde geslacht ûnbalâns liedt ta it feit dat de measte famkes sille hawwe tsientallen wedstriden per dei. Dit betsjut dat se nei alle gedachten gjin tiid sille hawwe om omtinken te jaan oan jo ûnder oare kandidaten.

It is dúdlik dat it platfoarm in bytsje kâns betsjuttet om de djippe ynderlike wrâld fan in persoan te beoardieljen fan in ien en in heale sekonde eachopslach op in foto yn in swimpak of it riden fan in modieuze getinte auto. Dêrom, as jo net gewoan godlik sjogge yn jo foto's, hawwe jo gjin oare kar as jo kânsen te fergrutsjen troch oan te nimmen r-strategy yn guon soarten. Simply sette, wy sille brute krêft en nimme yn folume te fergrutsjen ús kânsen op fokken súkses. Sûnt jo soms moatte wurde ôfleid troch iten en sliepe, en swipes binne beheind, Jo sille nei alle gedachten leaver dat automatisearring selektearje de famkes of manlju dy't it bêste by jo smaak. Koarte redheads of hege brunetten - it is oan jo.

Gegevens sammelje

As earste hawwe jo in protte gegevens nedich foar normale krektens. Elkenien dy't masine learen is tsjinkaam, wit hoe lestich it kin wêze om in korrekt sammele en markearre dataset te produsearjen. Teoretysk sil elke ferlykbere boarne geskikt wêze as gegevensboarne, of it no Instagram of oare sosjale netwurken is. Mar it is it bêste om te trenen op dy samples wêrop it netwurk yn 'e takomst sil wurkje.

Litte wy de repository as basis nimme Tinder Automatisearring. Tinder's foto's binne altyd iepenbier beskikber, mar de "like" funksje is al beheind. Dêrom is it nedich om alle libbene dingen binnen de straal te ekstrahearjen en se foarsichtich te markearjen. Earst moatte jo in frij ienfâldich skript brûke:

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)

It lit jo de dataset sa rap mooglik markearje mei mar twa knoppen. De kaai pitfall leit yn it feit dat de werkzeug bibleteek hat brutsen efterút kompatibiliteit en sil moatte wurde twongen om te downgraden it. Oars smyt it dizze flater.

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'

Dêrom moatte jo yn requirements.txt Werkzeug==0.16.1 skriuwe. Dan sil it fuortgean.
It twadde probleem is om dit tige token te krijen. De standertmetoade fan it repository wurke net foar my, mar ik slagge it te krijen fan 'e ûntwikkelderskonsole. Om dit te dwaan, gean nei link en extract it antwurd op it POST-fersyk yn www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Binnen sykje wy nei 'access_token'. Om ien of oare reden wurke it de earste kear net, mar doe fûn ik it en hardcodeare it yn it skript.

Dataset easken

D'r binne ferskate wichtige easken foar datasetten foar masine learen:

  1. Adequacy
  2. Uniformiteit
  3. Variety

Genôch yn dit gefal fereasket op syn minst 10000 foto's om in adekwaat model te bouwen. Ja, dat is in protte. Dit is eins wêrom tsjinsten lykas Amazon Mechanical Turk, wêr't jo foar in fergoeding de markup fan jo dataset delegearje kinne oan oare minsken. Oan 'e oare kant, wolle jo wirklik dat jo bot prachtige Aziatyske famkes mei in moanne-faced of like moaie famkes mei Yndiaanske woartels hâlde? Dochs moat it model jo smaak reflektearje.

D'r binne gjin spesjale problemen mei ferskaat; alle foto's wurde presintearre út ferskate hoeken en ferljochting. Yn glêzen, jurkjes, swimpakken en skipakken. Der kin in probleem ûntstean mei de uniformiteit fan de dataset. Ideaal, as wy ús stekproef markearje, moat it bestean út sawat gelikense dielen. As jo ​​einigje mei in "skeve" dataset, dan moatte jo it ferwiderje mei foto's út oare boarnen. Jo moatte oantreklikere tafoegje, of oarsom, jo ​​sille se bepale op basis fan it markupresultaat. Ik krige wat om 60% moai. Of ik bin net te kieskeurich, of ik haw gewoan gelok en der binne in protte moaie famkes om.

Ik nim de hypoteze ek net ôf dat d'r in protte bots ûnder binne. Wy traine in bot dy't oare bots leuk fine sil. Der sit wat irony yn dit.

Gegevens ferwurkjen

Wy hawwe in boskje tagged foto's, mar se binne hiel mingd. Oerdei, nacht, fan efteren en oaren. Mei spyt begryp ik dat it learen fan foto's út in omkearde hoeke net bysûnder effektyf sil wêze, om't de stekproef heul unjildich sil wêze. Dêrom soe de bêste opsje wêze om gesichten te brûken as in referinsjeteken fan "cuteness". Dochs, foar ús, lykas foar oare primaten, is dit in wichtige parameter.

Dêrom, lit ús brûke Haar kaskaden. Dit is in poerbêst algoritme wêrmei jo gesichten kinne fine yn ôfbyldings mei in leech persintaazje falske positive flaters.

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder
Dit wurdt beskreaun yn mear detail yn de hânlieding OpenCV

Op it folgjende poadium, nei't allinich gesichten yn 'e stekproef binne, makket it sin om kleur te ferwiderjen. Yn feite hoege jo amper te kiezen tusken Pandora's prachtige blauwe denizen of de griene-skinned skientme.

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder
Boarne

Yn Hue minsken makket hûdskleur gjin wichtige bydrage oan beoardielingen fan oantreklikens.
Dêrom is it de muoite wurdich ferienfâldigjen it wurk fan it neuronale netwurk en lit allinne griisskala.

Model gebou

Ik wol direkt sizze dat jo sûnder in goede fideokaart en CUDA nei alle gedachten gewoan net in oplaat model yn adekwate tiid krije. Dêrom, rjochtsje daliks op berekkeningen yn spesjalisearre wolken of mei python-CUDA.

Ik naam in basis foarbyld fan trije lagen fan 'e skriuwer fan' e repository en, ferrassend, toande it in krektens fan sawat 72%, wat in frij goed resultaat is.

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

As der in goede stekproef is, dan kin it wol genôch wêze om in wurkber model te krijen.

Litte wy de bot starte

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder

Mei tank oan de skriuwer fan it repository foar in klearmakke opsje foar it fluch testen fan it idee. Yn feite, it wurket hiel goed yn de basis ferzje en kin, yn prinsipe, wurde lansearre op ús klearmakke hierde tsjinner. It sil noch net mooglik wêze om te trainen; op it stuit leverje wy gjin firtuele masines mei CUDA-stipe foar berekkeningen, mar jo kinne sûnder problemen wat 24/7 útfiere. De bot is frij lichtgewicht, dus it soe rendabeler wêze om in taryf te nimmen dat betellet foar de brûkte boarnen.

Resultaten

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder
Ik tink dat ik hiel cute. En ik haw in rike ynderlike wrâld. Ik krige wat as 13 wedstriden binnen in oere. Boppedat hawwe de famkes ferskate kearen earst skreaun.
As gefolch, wy einigje mei hiel moaie dialogen, dêr't ik sei dat ik kaam allinnich om te boartsjen mei masine learen en data labeling. Ien fan 'e famkes wie tige ynteressearre, om't se sels in ûntwikkelder is. Der is in sterk gefoel dat se dit berjocht úteinlik op Habré lêze sil. Ik hoopje echt dat Oksana myn anonimiteit behâlde sil. 🙂
*swaait mei poat en seit hoi

In bytsje oer de etyske kant fan 'e kwestje

Om earlik te wêzen, hâld ik net fan it heule idee fan robotisearjen fan relaasjes tusken manlju en famkes. Der is wat hiel goed oan it goaien fan jo jas oer de skouders fan in kâlde frjemdling dy't allinnich stiet. Of benaderje in moai famke yn in simmerkafee en drink tegearre kofje. Kom al efter de monitors út.

Simmer is oeral. It is tiid om yn 'e kunde te kommen.

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder

Hoe kinne jo 13 famkes per oere ophelje mei masine learen en Tinder

Boarne: www.habr.com

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster