Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder

* Mesthi wae kanggo sinau Machine Learning. Ing sangisore pandelenge bojone sing ditresnani rada ora marem.

Ana mbokmenawa ora aplikasi minangka prasaja kanggo tingkat refleks balung mburi minangka Tinder. Kanggo nggunakake, sampeyan mung butuh siji driji kanggo ngusap lan sawetara neuron kanggo milih bocah-bocah wadon utawa wong sing paling disenengi. Implementasi becik saka brute force ing pilihan pasangan.

Aku mutusaké sing iki bakal dadi cara sing apik kanggo njaluk sethitik aran kanggo machine learning ing kertu grafis anyar. Kabeh sing isih ana yaiku nerangake marang bojoku yen aku ora butuh wanita sing luwih lemu, lan aku mung nglatih jaringan saraf.

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder

Apa masalah karo jaringan kencan?

Ana sumber kuwi - Ashley Madison. Khusus, kanthi slogan "Urip iku cendhak. pacaran." Penonton utama yaiku wong sing wis nikah sing golek hubungan ing sisih. Monetisasi uga nyenengake - saliyane standar "ngentekake poin kanggo seneng lan nulis," dheweke njaluk $19 kanggo mbusak akun pangguna tanpa tilak.

Ing 2015, situs kasebut kanthi alami bocor lan 60 GB data pribadhi bocor menyang domain umum. Saliyane akeh kulawarga sing rusak, bocor iki nyedhiyakake akeh informasi sing menarik kanggo para analis. Aku tansah curiga yen ana luwih akeh wong lanang ing situs kencan, nanging ing kasus iki ternyata cukup menarik. Wartawan Annalee Newitz nganalisis data bocor ketemu sing metu saka 5 yuta kedhaftar, mung 12 padha akun girl nyata lan digunakake ajeg. Liyane mung bot sing ngobrol karo pengunjung lanang.

Preponderance kuwi menyang akun lanang khas ora mung kanggo sumber iki, nanging uga kanggo paling Camping gendakan liyane. Aku yakin manawa akeh sing nemoni kahanan sing ora adil iki, nalika sampeyan kudu ngrancang kenalan kanthi ati-ati, nanging cah wadon mung kudu ndhaptar. Ayo ninggalake kualitas penggemar akeh iki, nanging kasunyatane ora bisa dipungkiri yen keseimbangan pasokan lan panjaluk kanthi jelas dialihake kanggo bocah-bocah wadon.

Fitur Tinder

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder
Pasukan brute becik ing hubungan jender

Fitur utama platform iki yaiku biaya sing murah saben kenalan. Ketepakan saka rong gesekan wis cukup lan sampeyan wis sesambungan karo wong sing duweni potensi menarik. Masalahe yaiku ketidakseimbangan jender sing padha nyebabake kasunyatan manawa umume bocah-bocah wadon bakal duwe puluhan pertandhingan saben dina. Iki tegese padha paling kamungkinan ora duwe wektu kanggo mbayar manungsa waé kanggo sampeyan antarane calon liyane.

Cetha banget yen platform kasebut ora menehi kesempatan kanggo ngevaluasi jagad batine wong saka siji setengah detik ing foto ing swimsuit utawa nyopir mobil warna sing modis. Dadi, yen sampeyan ora katon mung gaib ing foto sampeyan, sampeyan ora duwe pilihan kajaba nambah kesempatan kanthi nggunakake r-strategi ing sawetara spesies. Cukup, kita bakal brute force lan njupuk volume kanggo nambah kemungkinan sukses breeding. Awit sampeyan kadhangkala kudu disambi dening pangan lan turu, lan swipes diwatesi, sampeyan bakal luwih seneng sing otomatis milih bocah-bocah wadon utawa wong sing paling cocog karo raos. Redheads cendhak utawa brunettes dhuwur - iku nganti sampeyan.

Ngumpulake data

Kaping pisanan, sampeyan butuh akeh data kanggo akurasi normal. Sapa wae sing nemoni machine learning ngerti sepira angel bisa ngasilake set data sing diklumpukake lan diwenehi label kanthi bener. Secara teoritis, sumber daya sing padha bakal cocog minangka sumber data, yaiku Instagram utawa jaringan sosial liyane. Nanging paling apik kanggo nglatih conto kasebut ing jaringan sing bakal digunakake ing mangsa ngarep.

Ayo dadi basis repositori Otomatisasi Tinder. Foto Tinder tansah kasedhiya kanggo umum, nanging fungsi "kaya" wis diwatesi. Mulane, perlu kanggo ngekstrak kabeh makhluk urip ing radius lan kanthi teliti menehi tandha. Pisanan sampeyan kudu nggunakake skrip sing cukup prasaja:

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)

Iki bakal ngidini sampeyan menehi tandha data kanthi cepet kanthi mung rong tombol. Pitfall tombol dumunung ing kasunyatan sing perpustakaan werkzeug wis bejat kompatibilitas sakdurunge lan kudu dipeksa kanggo downgrade. Yen ora, mbuwang kesalahan iki.

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'

Mulane, ing requirements.txt sampeyan kudu nulis Werkzeug == 0.16.1. Banjur bakal njupuk mati.
Masalah kapindho yaiku kanggo njaluk token iki. Cara standar saka gudang ora bisa digunakake kanggo aku, nanging aku bisa entuk saka konsol pangembang. Kanggo nindakake iki, pindhah menyang link lan extract respon kanggo request POST ing www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Nang kita goleki 'access_token'. Kanggo sawetara alesan iku ora bisa pisanan, nanging banjur aku ketemu lan hardcoded menyang script.

Persyaratan kumpulan data

Ana sawetara syarat utama kanggo set data machine learning:

  1. Kecukupan
  2. Keseragaman
  3. Macem-macem

Kecukupan ing kasus iki mbutuhake paling ora 10000 foto kanggo mbangun model sing nyukupi. Ya, akeh banget. Iki sejatine sebabe layanan kaya Amazon Mechanical Turk, ngendi kanggo ragad sampeyan bisa utusan markup dataset kanggo wong liya. Ing sisih liya, apa sampeyan pengin bot sampeyan seneng karo bocah-bocah wadon Asia sing pasuryane rembulan utawa bocah-bocah wadon sing padha karo India? Nanging, model kudu nggambarake rasa sampeyan.

Ora ana masalah khusus karo macem-macem; kabeh foto ditampilake saka macem-macem sudut lan cahya. Ing kaca tingal, ageman, swimsuits lan setelan ski. Masalah bisa uga muncul karo keseragaman dataset. Saenipun, nalika kita label sampel kita, iku kudu kalebu kira-kira bagean witjaksono. Yen sampeyan duwe set data "skewed", sampeyan kudu ngencerake karo foto saka sumber liyane. Sampeyan kudu nambah sing luwih menarik, utawa kosok balene, sampeyan bakal nemtokake adhedhasar asil markup. Aku entuk soko watara 60% cantik. Salah siji aku ora banget pilih-pilih, utawa aku mung begja lan ana akeh cah ayu watara.

Aku uga ora nyuda hipotesis manawa ana akeh bot ing antarane. Kita nglatih bot sing bakal seneng karo bot liyane. Ana sawetara ironi ing iki.

Ngolah data

Kita duwe akeh foto sing diwenehi tag, nanging akeh banget. Awan, bengi, saka mburi lan liya-liyane. Kanthi penyesalan, aku ngerti yen mulang saka foto saka sudut sing mbalikke ora bakal efektif, amarga sampel bakal ora rata. Mulane, pilihan sing paling apik yaiku nggunakake pasuryan minangka tandha referensi "cuteness." Nanging, kanggo kita, kaya primata liyane, iki minangka parameter kunci.

Mulane, ayo nggunakake Haar cascades. Iki minangka algoritma sing apik banget sing ngidini sampeyan nemokake pasuryan ing gambar kanthi persentase kesalahan positif palsu sing kurang.

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder
Iki diterangake kanthi luwih rinci ing manual OpenCV

Ing tataran sabanjure, sawise mung pasuryan ing sampel, iku ndadekake pangertèn kanggo mbusak werna. Nyatane, sampeyan bakal meh ora kudu milih antarane denizen biru ayu Pandora utawa kaendahan ijo-skinned.

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder
Sumber

Ing wong Hue, warna kulit ora menehi kontribusi sing signifikan marang peringkat daya tarik.
Mulane, iku worth nyederhanakake karya jaringan syaraf lan ninggalake mung grayscale.

Bangunan model

Aku pengin langsung ngomong yen tanpa kertu video lan CUDA sing apik, sampeyan bisa uga ora bakal entuk model sing dilatih ing wektu sing cukup. Mulane, langsung ngarahake petungan ing awan khusus utawa nggunakake python-CUDA.

Aku njupuk conto telung lapisan dhasar saka penulis repositori lan, kaget, nuduhake akurasi watara 72%, kang asil cukup apik.

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

Yen ana conto sing apik, mula bisa uga cukup kanggo entuk model sing bisa digunakake.

Ayo miwiti bot

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder

Thanks kanggo penulis repositori kanggo pilihan sing siap kanggo nyoba ide kasebut kanthi cepet. Nyatane, kerjane cukup apik ing versi dhasar lan bisa, ing asas, bakal dibukak ing kita siap-digawe nyewa server. Ora bakal bisa nglatih; saiki kita ora nyedhiyakake mesin virtual kanthi dhukungan CUDA kanggo petungan, nanging sampeyan bisa mbukak 24/7 tanpa masalah. Bot kasebut cukup entheng, mula bakal luwih nguntungake kanggo njupuk tarif sing mbayar sumber daya sing digunakake.

Результаты

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder
Aku kira aku cute banget. Lan aku duwe donya batin sing sugih. Aku entuk kaya 13 pertandhingan sajrone jam. Kajaba iku, kaping pirang-pirang bocah-bocah wadon nulis luwih dhisik.
Akibaté, kita rampung karo dialog apik banget, ngendi aku ngandika yen aku teka mung kanggo muter machine learning lan labeling data. Salah siji saka bocah-bocah wadon iki arang banget kasengsem, amarga dheweke dhewe minangka pangembang. Ana rasa kuwat yen dheweke bakal maca postingan iki ing Habré. Muga-muga Oksana bakal njaga anonimitasku. 🙂
*lambai paw lan ngomong halo

A little bab sisih etika saka Jeksa Agung bisa ngetokake

Jujur, aku ora seneng kabeh gagasan babagan robotisasi hubungan antarane lanang lan wadon. Ana sing bener babagan mbuwang jaket sampeyan ing pundhak wong liyo sing kadhemen sing ngadeg piyambak. Utawa nyedhaki bocah wadon ayu ing kafe musim panas lan ngombe kopi bebarengan. Metu saka mburi monitor wis.

Musim panas ana ing saubengé. Wektu kanggo kenalan.

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder

Carane Pick munggah 13 bocah-bocah wadon saben jam nggunakake machine learning lan Tinder

Source: www.habr.com

Add a comment