*Čisto zbog učenja strojnog učenja, naravno. Pod pomalo nezadovoljnim pogledom voljene supruge.
Vjerojatno ne postoji tako jednostavna aplikacija na razini spinalnih refleksa kao što je Tinder. Da biste ga koristili, potreban vam je samo jedan prst za prevlačenje i nekoliko neurona za odabir djevojaka ili muškaraca koji vam se najviše sviđaju. Idealna implementacija grube sile u odabiru para.
Odlučio sam da bi ovo bio dobar način da malo osjetim strojno učenje na novoj grafičkoj kartici. Preostaje samo objasniti ženi da mi ne treba nova deblja žena i da samo treniram neuronske mreže.
Koji je problem s mrežama za upoznavanje?
Postojao je takav izvor - Ashley Madison. Specifičan, sa sloganom “Život je kratak. Imati aferu." Glavna publika su oženjeni muškarci koji traže aferu sa strane. Monetizacija je također zabavna - uz standardno "potrošite bodove na lajkanje i pisanje", tražili su 19 dolara za brisanje korisničkog računa bez traga.
2015. stranica je prirodno procurila i 60 GB osobnih podataka procurilo je u javnu domenu. Osim brojnih uništenih obitelji, ovo curenje je analitičarima dalo i mnogo zanimljivih informacija. Uvijek sam sumnjala da na stranicama za upoznavanje ima puno više muškaraca, ali u ovom slučaju ispalo je prilično zanimljivo. Novinarka Annalee Newitz
Takva prevaga prema muškim računima tipična je ne samo za ovaj resurs, već i za većinu drugih stranica za upoznavanje. Siguran sam da su se mnogi susreli s ovom nesumnjivo nepravednom situacijom, kada morate pažljivo planirati poznanstvo, ali djevojka se samo treba registrirati. Ostavimo kvalitetu ove gomile obožavateljica po strani, ali nepobitna je činjenica da je odnos ponude i potražnje očito pomaknut u korist djevojaka.
Značajka Tinder
Idealan bruteforcer u rodnim odnosima
Glavna značajka ove platforme je niska cijena po poznanstvu. Dovoljna su slučajna dva poteza i već komunicirate s potencijalno zanimljivom osobom. Problem je što ista rodna neravnoteža dovodi do toga da će većina djevojaka imati desetke utakmica dnevno. To znači da najvjerojatnije neće imati vremena obratiti pozornost na vas među ostalim kandidatima.
Sasvim je jasno da platforma podrazumijeva malo mogućnosti za procjenu dubokog unutarnjeg svijeta osobe iz sekunde i pol pogleda na fotografiju u kupaćem kostimu ili vožnju modernog zatamnjenog automobila. Stoga, ako na svojim fotografijama ne izgledate jednostavno božanstveno, ne preostaje vam ništa drugo nego povećati svoje šanse usvajanjem
Prikupljanje podataka
Prije svega, za normalnu točnost treba vam puno podataka. Svatko tko se susreo sa strojnim učenjem zna koliko teško može biti proizvesti pravilno prikupljen i označen skup podataka. Teoretski, bilo koji sličan resurs bit će prikladan kao izvor podataka, bilo da se radi o Instagramu ili drugim društvenim mrežama. Ali najbolje je trenirati na onim uzorcima na kojima će mreža raditi u budućnosti.
Uzmimo spremište kao osnovu
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)
Omogućit će vam označavanje skupa podataka što je brže moguće sa samo dva gumba. Ključna zamka leži u činjenici da je biblioteka werkzeug pokvarila kompatibilnost sa prethodnim verzijama i morat će se morati vratiti na stariju verziju. Inače izbacuje ovu pogrešku.
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'
Stoga u requirements.txt trebate napisati Werkzeug==0.16.1. Tada će poletjeti.
Drugi problem je nabaviti upravo ovaj token. Standardna metoda iz repozitorija mi nije radila, ali sam je uspio nabaviti iz konzole za razvojne programere. Da biste to učinili, idite na
Zahtjevi za skup podataka
Postoji nekoliko ključnih zahtjeva za skupove podataka strojnog učenja:
- Adekvatnost
- Ujednačenost
- raznovrsnost
Dovoljnost u ovom slučaju zahtijeva najmanje 10000 fotografija za izradu adekvatnog modela. Da, to je puno. To je zapravo razlog zašto usluge poput
S raznolikošću nema posebnih problema, sve su fotografije prikazane iz različitih kutova i svjetla. U naočalama, haljinama, kupaćim i skijaškim kostimima. Problem može nastati s ujednačenošću skupa podataka. U idealnom slučaju, kada označavamo naš uzorak, on bi se trebao sastojati od približno jednakih dijelova. Ako završite s "iskrivljenim" skupom podataka, morat ćete ga razrijediti fotografijama iz drugih izvora. Morat ćete dodati još atraktivnih, ili obrnuto, odredit ćete ih na temelju rezultata označavanja. Imam nešto oko 60% lijepo. Ili nisam previše izbirljiv, ili jednostavno imam sreće i ima puno lijepih djevojaka u blizini.
Također ne odbacujem hipotezu da među njima ima mnogo botova. Treniramo bota koji će se svidjeti ostalim botovima. Ima neke ironije u ovome.
Obrada podataka
Imamo hrpu označenih fotografija, ali su vrlo izmiješane. Danju, noću, s leđa i druge. Sa žaljenjem razumijem da poučavanje iz fotografija iz obrnutog kuta neće biti posebno učinkovito, jer će uzorak biti vrlo neujednačen. Stoga bi najbolja opcija bila koristiti lica kao referentni znak "ljupkosti". Ipak, za nas, kao i za druge primate, ovo je ključni parametar.
Stoga, koristimo se
To je detaljnije opisano u priručniku
U sljedećoj fazi, nakon što su u uzorku samo lica, ima smisla ukloniti boju. Zapravo, teško da ćete morati birati između Pandorine prekrasne plave stanovnice ili ljepotice zelene kože.
Kod Hue ljudi, boja kože ne daje značajan doprinos ocjenama privlačnosti.
Stoga je vrijedno pojednostaviti rad neuronske mreže i ostaviti samo sive tonove.
Izgradnja modela
Želim odmah reći da bez dobre video kartice i CUDA-e najvjerojatnije jednostavno nećete dobiti obučeni model u odgovarajuće vrijeme. Stoga, odmah ciljajte na izračune u specijaliziranim oblacima ili pomoću python-CUDA.
Uzeo sam osnovni troslojni primjer od autora repozitorija i, iznenađujuće, pokazao je točnost od oko 72%, što je prilično dobar rezultat.
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'])
Ako postoji dobar uzorak, on bi mogao biti dovoljan za dobivanje funkcionalnog modela.
Pokrenimo bot
Hvala autoru repozitorija za gotovu opciju za brzo testiranje ideje. Zapravo, radi prilično dobro u osnovnoj verziji i u načelu se može pokrenuti na našem
Nalazi
Pretpostavljam da sam jako sladak. A ja imam bogat unutarnji svijet. Dobio sam oko 13 poklapanja unutar sat vremena. Štoviše, nekoliko su puta djevojke prve pisale.
Kao rezultat toga, završili smo s vrlo lijepim dijalozima, gdje sam rekao da sam došao samo da se igram sa strojnim učenjem i označavanjem podataka. Jedna od djevojaka bila je izuzetno zainteresirana, budući da je i sama programer. Postoji snažan osjećaj da će ona na kraju pročitati ovaj post na Habréu. Stvarno se nadam da će Oksana zadržati moju anonimnost. 🙂
*maše šapom i pozdravlja
Malo o etičkoj strani problema
Da budem iskren, ne sviđa mi se cijela ideja o robotizaciji odnosa između muškaraca i djevojaka. Ima nešto vrlo ispravno u tome da svoju jaknu prebacite preko ramena hladnog stranca koji stoji sam. Ili priđite zgodnoj djevojci u ljetnom kafiću i zajedno popijte kavu. Već izađite iza monitora.
Ljeto je posvuda. Vrijeme je za upoznavanje.
Izvor: www.habr.com