*Tietenkin puhtaasti koneoppimisen oppimisen vuoksi. Hänen rakkaan vaimonsa hieman tyytymättömän katseen alla.
Selkärangan refleksien tasolle ei luultavasti ole yhtä yksinkertaista sovellusta kuin Tinder. Jotta voit käyttää sitä, tarvitset vain yhden sormen pyyhkäisemiseen ja muutaman hermosolun valitaksesi parhaat tytöt tai miehet. Ihanteellinen raakavoiman toteutus parin valinnassa.
Päätin, että tämä olisi hyvä tapa saada hieman kokemusta koneoppimisesta uudella näytönohjaimella. Ei jää muuta kuin selittää vaimolleni, että en tarvitse uutta lihavampaa naista, vaan harjoittelen vain hermoverkkoja.
Mikä deittailuverkostojen ongelma on?
Siellä oli sellainen resurssi - Ashley Madison. Tarkka, iskulauseella "Elämä on lyhyt. Olla suhteessa." Pääyleisönä ovat naimisissa olevat miehet, jotka etsivät parisuhdetta. Kaupallistaminen on myös hauskaa - tavallisen "kulutta pisteitä tykkäämiseen ja kirjoittamiseen" lisäksi he pyysivät 19 dollaria käyttäjän tilin poistamisesta ilman jälkiä.
Vuonna 2015 sivusto vuoti luonnollisesti ja 60 Gt henkilötietoja vuoti julkisuuteen. Monien tuhoutuneiden perheiden lisäksi tämä vuoto tarjosi paljon mielenkiintoista tietoa analyytikoille. Epäilin aina, että deittailusivustoilla on paljon enemmän miehiä, mutta tässä tapauksessa se osoittautui varsin mielenkiintoiseksi. Toimittaja Annalee Newitz
Tällainen miesten tilien valtaosa ei ole tyypillistä vain tälle resurssille, vaan myös useimmille muille treffisivustoille. Olen varma, että monet ovat kohdanneet tämän epäilemättä epäreilun tilanteen, kun joutuu suunnittelemaan huolellisesti tutustumista, mutta tytön tarvitsee vain rekisteröityä. Jätetään tämän fanijoukon laatu sivuun, mutta tosiasia on kiistaton, että kysynnän ja tarjonnan tasapaino on siirtynyt selvästi tyttöjen eduksi.
Tinder-ominaisuus
Ihanteellinen raakavoima sukupuolisuhteissa
Tämän alustan pääominaisuus on alhaiset kustannukset tuttavuutta kohti. Kahden pyyhkäisyn sattuma riittää ja olet jo kommunikoimassa mahdollisesti mielenkiintoisen henkilön kanssa. Ongelmana on, että sama sukupuolten välinen epätasapaino johtaa siihen, että useimmilla tytöillä on kymmeniä otteluita päivässä. Tämä tarkoittaa, että heillä ei todennäköisesti ole aikaa kiinnittää huomiota sinuun muiden ehdokkaiden joukossa.
On aivan selvää, että alustalla ei ole juurikaan mahdollisuutta arvioida ihmisen syvää sisämaailmaa puolentoista sekunnin silmäyksellä valokuvaa uimapuvussa tai muodikkaassa sävytetyssä autossa ajaessa. Siksi, jos et näytä valokuvissasi yksinkertaisesti jumalalliselta, sinulla ei ole muuta vaihtoehtoa kuin lisätä mahdollisuuksiasi adoptoimalla
Kerätä dataa
Ensinnäkin tarvitset paljon dataa normaalia tarkkuutta varten. Jokainen, joka on kohdannut koneoppimisen, tietää, kuinka vaikeaa voi olla tuottaa oikein kerätty ja merkitty tietojoukko. Teoriassa mikä tahansa vastaava resurssi soveltuu tietolähteeksi, oli se sitten Instagram tai muut sosiaaliset verkostot. Mutta parasta on harjoitella niillä näytteillä, joilla verkko toimii tulevaisuudessa.
Otetaan arkisto pohjaksi
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)
Sen avulla voit merkitä tietojoukon mahdollisimman nopeasti vain kahdella painikkeella. Keskeinen sudenkuoppa on siinä, että werkzeug-kirjaston yhteensopivuus on katkennut ja se on pakotettava alentamaan sitä. Muuten se antaa tämän virheen.
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'
Siksi tiedostonvaatimukset.txt-tiedostoon tulee kirjoittaa Werkzeug==0.16.1. Sitten se lähtee.
Toinen ongelma on saada juuri tämä merkki. Vakiomenetelmä arkistosta ei toiminut minulle, mutta onnistuin saamaan sen kehittäjäkonsolista. Voit tehdä tämän siirtymällä kohtaan
Tietojoukon vaatimukset
Koneoppimistietojoukoille on useita keskeisiä vaatimuksia:
- Riittävyys
- Yhdenmukaisuus
- monimuotoisuus
Riittävyys vaatii tässä tapauksessa vähintään 10000 XNUMX valokuvaa sopivan mallin rakentamiseksi. Kyllä, se on paljon. Tästä syystä palvelut pitävät
Lajittelussa ei ole erityisiä ongelmia, kaikki valokuvat esitetään eri kuvakulmista ja valaistuksista. Laseissa, mekoissa, uima-asuissa ja hiihtopuvuissa. Ongelma saattaa syntyä tietojoukon yhdenmukaisuudessa. Ihannetapauksessa, kun merkitsemme näytteemme, sen tulisi koostua suunnilleen yhtä suuresta osasta. Jos päädyt "vinolliseen" tietojoukkoon, sinun on laimennettava se muista lähteistä peräisin olevilla valokuvilla. Sinun on lisättävä houkuttelevampia, tai päinvastoin, määrität ne merkintätuloksen perusteella. Minulla on jotain noin 60% kaunista. Joko en ole liian nirso, tai olen vain onnekas ja ympärilläni on paljon kauniita tyttöjä.
En myöskään hylkää hypoteesia, että niiden joukossa on monia botteja. Koulutamme botin, joka pitää muista boteista. Tässä on jonkin verran ironiaa.
Tietojenkäsittely
Meillä on joukko merkittyjä kuvia, mutta ne ovat hyvin sekalaisia. Päivällä, yöllä, takaa ja muut. Valitettavasti ymmärrän, että valokuvien opettaminen käänteisestä kulmasta ei ole erityisen tehokasta, koska näyte on erittäin epätasainen. Siksi paras vaihtoehto olisi käyttää kasvoja "söpöuden" viitemerkkinä. Silti meille, kuten muillekin kädellisille, tämä on keskeinen parametri.
Käytetään siis
Tämä on kuvattu tarkemmin käsikirjassa
Seuraavassa vaiheessa, kun näytteessä on vain kasvot, on järkevää poistaa väri. Itse asiassa sinun tuskin tarvitsee valita Pandoran kauniin sinisen asukkaan tai vihreäihoisen kauneuden välillä.
Hue-ihmisissä ihonväri ei vaikuta merkittävästi houkuttelevuuden luokitukseen.
Siksi hermoverkon työtä kannattaa yksinkertaistaa ja jättää vain harmaasävyt.
Mallirakennus
Haluan sanoa heti, että ilman hyvää näytönohjainta ja CUDAa et todennäköisesti yksinkertaisesti saa koulutettua mallia riittävän ajoissa. Pyri siis heti laskelmiin erikoistuneissa pilvissä tai käyttämällä python-CUDAa.
Otin perusesimerkin kolmikerroksisesta arkiston kirjoittajalta ja yllättäen se osoitti noin 72 %:n tarkkuutta, mikä on varsin hyvä tulos.
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'])
Jos on hyvä näyte, se voi hyvinkin riittää toimivan mallin saamiseksi.
Käynnistetään botti
Kiitos arkiston kirjoittajalle valmiista vaihtoehdosta idean nopeaan testaamiseen. Itse asiassa se toimii melko hyvin perusversiossa ja voidaan periaatteessa käynnistää meillä
Tulokset
Taidan olla erittäin söpö. Ja minulla on rikas sisäinen maailma. Sain noin 13 ottelua tunnin sisällä. Lisäksi tytöt kirjoittivat useita kertoja ensin.
Tuloksena päädyimme erittäin mukaviin dialogeihin, joissa sanoin, että tulin vain leikkimään koneoppimisen ja datamerkinnän kanssa. Yksi tytöistä oli erittäin kiinnostunut, koska hän itse on kehittäjä. On vahva tunne, että hän lopulta lukee tämän Habrén postauksen. Toivon todella, että Oksana säilyttää nimettömyyteni. 🙂
*heiluttaa tassuaan ja sanoo moi
Hieman asian eettisestä puolesta
Ollakseni rehellinen, en pidä koko ajatuksesta robotisoida miesten ja tyttöjen välisiä suhteita. Takkisi heittämisessä yksin seisovan kylmän vieraan olkapäille on jotain aivan oikein. Tai lähesty nättiä tyttöä kesäkahvilassa ja juo kahvia yhdessä. Pois jo monitorien takaa.
Kesä on kaikkialla. On aika tutustua.
Lähde: will.com