*Čistě kvůli výuce strojového učení, samozřejmě. Pod lehce nespokojeným pohledem své milované ženy.
Pravděpodobně neexistuje žádná tak jednoduchá aplikace na úrovni míšních reflexů jako Tinder. Abyste ji mohli používat, potřebujete pouze jeden prst k přejetí a několik neuronů k výběru dívek nebo mužů, kteří se vám nejvíce líbí. Ideální implementace hrubé síly při výběru páru.
Rozhodl jsem se, že by to byl dobrý způsob, jak si trochu vyzkoušet strojové učení na nové grafické kartě. Zbývá jen vysvětlit své ženě, že nepotřebuji novou tlustší ženu a jen trénuji neuronové sítě.
Jaký je problém seznamovacích sítí?
Takový zdroj existoval - Ashley Madison. Specifický, se sloganem „Život je krátký. Mít poměr." Hlavním publikem jsou ženatí muži, kteří hledají poměr na straně. Zpeněžování je také zábavné – kromě standardního „utrácení bodů za lajkování a psaní“ požádali o 19 dolarů za smazání uživatelského účtu beze stopy.
V roce 2015 stránka přirozeně unikla a 60 GB osobních údajů uniklo do veřejné sféry. Kromě mnoha zničených rodin poskytl tento únik analytikům mnoho zajímavých informací. Vždycky jsem tušila, že na seznamkách je mnohem víc mužů, ale v tomto případě to dopadlo docela zajímavě. Novinářka Annalee Newitz
Taková převaha mužských účtů je typická nejen pro tento zdroj, ale i pro většinu ostatních seznamovacích webů. Jsem si jist, že mnozí se setkali s touto bezesporu neférovou situací, kdy si musíte pečlivě naplánovat seznámení, ale dívka se stačí zaregistrovat. Kvalitu tohoto zástupu fanoušků nechme stranou, ale fakt je nepopiratelný, že rovnováha mezi nabídkou a poptávkou je jednoznačně posunuta ve prospěch dívek.
Funkce Tinder
Ideální hrubá síla v genderových vztazích
Hlavním rysem této platformy je nízká cena za seznámení. Stačí náhoda dvou tahů a už komunikujete s potenciálně zajímavou osobou. Problém je, že stejná genderová nevyváženost vede k tomu, že většina dívek bude mít desítky zápasů denně. To znamená, že s největší pravděpodobností nebudou mít čas se vám mezi ostatními kandidáty věnovat.
Je zcela jasné, že platforma implikuje malou příležitost posoudit hluboký vnitřní svět člověka z jednoho a půl vteřinového pohledu na fotku v plavkách nebo řízení módního tónovaného auta. Pokud tedy na svých fotografiích nevypadáte prostě božsky, nezbývá vám, než zvýšit své šance adopcí
Sbírat data
Pro normální přesnost potřebujete v první řadě hodně dat. Každý, kdo se setkal se strojovým učením, ví, jak obtížné může být vytvořit správně shromážděný a označený soubor dat. Teoreticky bude jako zdroj dat vhodný jakýkoli podobný zdroj, ať už je to Instagram nebo jiné sociální sítě. Nejlepší je ale trénovat na těch vzorcích, na kterých bude síť v budoucnu fungovat.
Vezměme si jako základ úložiště
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)
Umožní vám to označit datovou sadu co nejrychleji pomocí pouhých dvou tlačítek. Klíčové úskalí spočívá ve skutečnosti, že knihovna werkzeug prolomila zpětnou kompatibilitu a bude muset být nucena přejít na nižší verzi. Jinak vyhodí tuto chybu.
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'
Proto je třeba v souboru requirements.txt napsat Werkzeug==0.16.1. Pak to vzlétne.
Druhým problémem je získat právě tento token. Standardní metoda z úložiště mi nefungovala, ale podařilo se mi ji získat z vývojářské konzole. Chcete-li to provést, přejděte na stránku
Požadavky na datovou sadu
Existuje několik klíčových požadavků na datové sady strojového učení:
- Přiměřenost
- Jednotnost
- Odrůda
Dostatek v tomto případě vyžaduje alespoň 10000 XNUMX fotografií pro stavbu adekvátního modelu. Ano, to je hodně. To je vlastně důvod, proč se služby líbí
S rozmanitostí nejsou žádné zvláštní problémy, všechny fotografie jsou prezentovány z různých úhlů a osvětlení. V brýlích, šatech, plavkách i lyžařských oblecích. Problém může nastat s jednotností datové sady. V ideálním případě, když náš vzorek označíme, měl by se skládat z přibližně stejných částí. Pokud skončíte se „zkresleným“ souborem dat, budete jej muset naředit fotografiemi z jiných zdrojů. Budete muset přidat atraktivnější, nebo naopak, určíte je na základě výsledku označení. Mám něco kolem 60% krásné. Buď nejsem moc vybíravý, nebo mám prostě štěstí a kolem je spousta hezkých holek.
Nezpochybňuji ani hypotézu, že je mezi nimi mnoho botů. Trénujeme robota, který bude mít rád ostatní roboty. Je v tom jistá ironie.
Zpracování dat
Máme spoustu označených fotografií, ale jsou velmi smíšené. Denní, noční, zezadu a další. S lítostí chápu, že výuka z fotografií z opačného úhlu nebude zvláště účinná, protože vzorek bude velmi nerovnoměrný. Nejlepší možností by proto bylo použít tváře jako referenční znak „roztomilost“. Přesto je to pro nás, stejně jako pro ostatní primáty, klíčový parametr.
Proto použijme
Toto je podrobněji popsáno v návodu
V další fázi, poté, co jsou ve vzorku pouze tváře, má smysl odstranit barvu. Ve skutečnosti si sotva budete muset vybrat mezi krásným modrým obyvatelem Pandory nebo kráskou se zelenou pletí.
U lidí Hue barva pleti významně nepřispívá k hodnocení atraktivity.
Proto se vyplatí práci neuronové sítě zjednodušit a ponechat pouze odstíny šedi.
Vytváření modelu
Chci hned říci, že bez dobré grafické karty a CUDA s největší pravděpodobností jednoduše nezískáte trénovaný model v odpovídajícím čase. Proto okamžitě zamiřte na výpočty ve specializovaných cloudech nebo pomocí python-CUDA.
Vzal jsem základní třívrstvý příklad od autora úložiště a překvapivě ukázal přesnost kolem 72 %, což je docela dobrý výsledek.
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'])
Pokud existuje dobrý vzorek, může být dostačující k získání funkčního modelu.
Spustíme robota
Děkuji autorovi úložiště za hotovou možnost rychlého otestování nápadu. Ve skutečnosti to v základní verzi funguje docela dobře a lze ji v zásadě spustit na našem
výsledky
Asi jsem moc roztomilý. A mám bohatý vnitřní svět. Dostal jsem něco jako 13 zápasů během hodiny. Navíc dívky několikrát psaly jako první.
Výsledkem bylo, že jsme skončili s velmi pěknými dialogy, kde jsem řekl, že jsem si přišel pouze pohrát se strojovým učením a označováním dat. Jedna z dívek měla mimořádný zájem, protože sama je vývojářkou. Je tu silný pocit, že si nakonec přečte tento příspěvek na Habrého. Opravdu doufám, že Oksana zachová mou anonymitu. 🙂
*mává tlapou a říká ahoj
Něco málo o etické stránce problému
Abych byl upřímný, nelíbí se mi celá myšlenka robotizace vztahů mezi muži a dívkami. Přehodit sako přes ramena chladnému cizinci, který stojí sám, je něco velmi správného. Nebo oslovte hezkou dívku v letní kavárně a vypijte spolu kávu. Už vypadněte zpoza monitorů.
Léto je všude kolem. Je čas se seznámit.
Zdroj: www.habr.com