Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder

*Semata-mata untuk kepentingan pembelajaran Pembelajaran Mesin, sudah tentu. Di bawah pandangan isteri tercinta yang sedikit tidak puas hati.

Mungkin tiada aplikasi semudah tahap refleks tulang belakang seperti Tinder. Untuk menggunakannya, anda hanya memerlukan satu jari untuk meleret dan beberapa neuron untuk memilih gadis atau lelaki yang paling anda sukai. Pelaksanaan kekerasan yang ideal dalam pemilihan pasangan.

Saya memutuskan bahawa ini akan menjadi cara yang baik untuk merasakan sedikit pembelajaran mesin pada kad grafik baharu. Apa yang tinggal adalah untuk menjelaskan kepada isteri saya bahawa saya tidak memerlukan wanita baru yang lebih gemuk, dan saya hanya melatih rangkaian saraf.

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder

Apakah masalah dengan rangkaian temu janji?

Terdapat sumber sedemikian - Ashley Madison. Khusus, dengan slogan β€œHidup ini singkat. Mempunyai hubungan sulit." Penonton utama adalah lelaki yang sudah berkahwin mencari hubungan sulit di sebelah. Pengewangan juga menyeronokkan - sebagai tambahan kepada standard "belanjakan mata untuk suka dan tulis", mereka meminta $19 untuk memadamkan akaun pengguna tanpa jejak.

Pada tahun 2015, tapak itu secara semula jadi bocor dan 60 GB data peribadi bocor ke domain awam. Selain banyak keluarga yang musnah, kebocoran ini memberikan banyak maklumat menarik kepada penganalisis. Saya selalu mengesyaki bahawa terdapat lebih ramai lelaki di laman temu janji, tetapi dalam kes ini ia ternyata agak menarik. Wartawan Annalee Newitz menganalisis data yang bocor mendapati bahawa daripada 5 juta pengguna, hanya 12 yang serupa dengan akaun gadis sebenar dan digunakan secara kerap. Selebihnya hanyalah bot yang berbual dengan pengunjung lelaki.

Keutamaan sedemikian terhadap akaun lelaki adalah tipikal bukan sahaja untuk sumber ini, tetapi juga untuk kebanyakan tapak temu janji lain. Saya yakin bahawa ramai telah menghadapi situasi yang tidak diragukan lagi tidak adil ini, apabila anda perlu merancang kenalan dengan teliti, tetapi gadis itu hanya perlu mendaftar. Biarkan kualiti peminat yang ramai ini diketepikan, tetapi hakikatnya tidak dapat dinafikan bahawa keseimbangan bekalan dan permintaan jelas beralih memihak kepada gadis-gadis.

Ciri Tinder

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder
Pengganas yang ideal dalam hubungan jantina

Ciri utama platform ini ialah kos rendah setiap kenalan. Kebetulan dua leretan sudah memadai dan anda sudah pun berkomunikasi dengan orang yang berpotensi menarik. Masalahnya ialah ketidakseimbangan jantina yang sama membawa kepada fakta bahawa kebanyakan gadis akan mempunyai berpuluh-puluh perlawanan setiap hari. Ini bermakna mereka berkemungkinan besar tidak mempunyai masa untuk memberi perhatian kepada anda di kalangan calon lain.

Agak jelas bahawa platform itu membayangkan sedikit peluang untuk menilai dunia dalaman seseorang dari pandangan satu setengah saat pada foto dalam pakaian renang atau memandu kereta berwarna bergaya. Oleh itu, jika anda tidak kelihatan seperti ilahi dalam gambar anda, anda tidak mempunyai pilihan selain meningkatkan peluang anda dengan menggunakan r-strategi dalam beberapa spesies. Ringkasnya, kami akan melakukan kekerasan dan mengambil jumlah untuk meningkatkan peluang kami untuk kejayaan pembiakan. Memandangkan anda kadangkala perlu terganggu oleh makanan dan tidur, dan sapuan adalah terhad, anda mungkin lebih suka automasi memilih gadis atau lelaki yang paling sesuai dengan citarasa anda. Berambut merah pendek atau berambut coklat tinggi - terpulang kepada anda.

Mengumpul data

Pertama sekali, anda memerlukan banyak data untuk ketepatan biasa. Sesiapa sahaja yang pernah mengalami pembelajaran mesin tahu betapa sukarnya untuk menghasilkan set data yang dikumpul dan dilabel dengan betul. Secara teorinya, mana-mana sumber yang serupa akan sesuai sebagai sumber data, sama ada Instagram atau rangkaian sosial lain. Tetapi yang terbaik adalah untuk melatih sampel tersebut di mana rangkaian akan berfungsi pada masa hadapan.

Mari kita ambil repositori sebagai asas Automasi Tinder. Foto Tinder sentiasa tersedia untuk umum, tetapi fungsi "suka" sudah terhad. Oleh itu, adalah perlu untuk mengekstrak semua hidupan dalam jejari dan menandakannya dengan teliti. Mula-mula anda perlu menggunakan skrip yang agak mudah:

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)

Ia akan membolehkan anda menanda set data secepat mungkin dengan hanya dua butang. Perangkap utama terletak pada fakta bahawa perpustakaan werkzeug telah memecahkan keserasian ke belakang dan perlu dipaksa untuk menurunkan tarafnya. Jika tidak ia membuang ralat ini.

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'

Oleh itu, dalam requirements.txt anda perlu menulis Werkzeug==0.16.1. Kemudian ia akan berlepas.
Masalah kedua ialah untuk mendapatkan token ini. Kaedah standard dari repositori tidak berfungsi untuk saya, tetapi saya berjaya mendapatkannya dari konsol pembangun. Untuk melakukan ini, pergi ke pautan dan ekstrak respons kepada permintaan POST dalam www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Di dalam kita mencari 'token_akses'. Atas sebab tertentu ia tidak berfungsi pada kali pertama, tetapi kemudian saya menemuinya dan mengekodkannya ke dalam skrip.

Keperluan set data

Terdapat beberapa keperluan utama untuk set data pembelajaran mesin:

  1. Kecukupan
  2. Keseragaman
  3. Pelbagai

Kecukupan dalam kes ini memerlukan sekurang-kurangnya 10000 gambar untuk membina model yang mencukupi. Ya, itu banyak. Inilah sebenarnya sebab perkhidmatan seperti Amazon Mechanical Turk, dengan bayaran anda boleh mewakilkan penanda set data anda kepada orang lain. Sebaliknya, adakah anda benar-benar mahu bot anda menyukai gadis Asia berwajah bulan yang cantik atau gadis yang sama cantik dengan akar India? Namun, model itu harus mencerminkan citarasa anda.

Tiada masalah khusus dengan kepelbagaian; semua gambar dipersembahkan dari pelbagai sudut dan pencahayaan. Dalam cermin mata, pakaian, pakaian renang dan pakaian ski. Masalah mungkin timbul dengan keseragaman set data. Sebaik-baiknya, apabila kami melabelkan sampel kami, ia harus terdiri daripada bahagian yang lebih kurang sama. Jika anda mempunyai set data yang "miring", anda perlu mencairkannya dengan gambar daripada sumber lain. Anda perlu menambah yang lebih menarik, atau sebaliknya, anda akan menentukannya berdasarkan hasil markup. Saya mendapat sesuatu sekitar 60% cantik. Sama ada saya tidak terlalu memilih, atau saya hanya bernasib baik dan terdapat ramai gadis cantik di sekeliling.

Saya juga tidak menolak hipotesis bahawa terdapat banyak bot di kalangan mereka. Kami melatih bot yang akan menyukai bot lain. Terdapat sedikit ironi dalam hal ini.

Pemprosesan data

Kami mempunyai sekumpulan foto yang ditandakan, tetapi ia sangat bercampur-campur. Siang, malam, dari belakang dan lain-lain. Dengan rasa kesal, saya faham bahawa pengajaran daripada gambar dari sudut terbalik tidak akan berkesan, kerana sampel akan menjadi sangat tidak sekata. Oleh itu, pilihan terbaik ialah menggunakan muka sebagai tanda rujukan "kecomelan." Namun, bagi kami, seperti untuk primata lain, ini adalah parameter utama.

Oleh itu, mari kita gunakan Haar melata. Ini adalah algoritma yang sangat baik yang membolehkan anda mencari wajah dalam imej dengan peratusan rendah ralat positif palsu.

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder
Ini diterangkan dengan lebih terperinci dalam manual OpenCV

Pada peringkat seterusnya, selepas hanya muka berada dalam sampel, masuk akal untuk mengeluarkan warna. Malah, anda tidak perlu memilih antara warna biru cantik Pandora atau kecantikan berkulit hijau.

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder
Source

Dalam orang Hue, warna kulit tidak memberikan sumbangan yang ketara kepada penilaian daya tarikan.
Oleh itu, adalah wajar memudahkan kerja rangkaian saraf dan meninggalkan hanya skala kelabu.

Bangunan model

Saya ingin segera mengatakan bahawa tanpa kad video dan CUDA yang bagus, kemungkinan besar anda tidak akan mendapat model terlatih dalam masa yang mencukupi. Oleh itu, segera sasarkan untuk pengiraan dalam awan khusus atau menggunakan python-CUDA.

Saya mengambil contoh asas tiga lapisan daripada pengarang repositori dan, secara mengejutkan, ia menunjukkan ketepatan sekitar 72%, yang merupakan hasil yang agak baik.

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

Sekiranya terdapat sampel yang baik, maka ia mungkin mencukupi untuk mendapatkan model yang boleh dilaksanakan.

Mari lancarkan bot

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder

Terima kasih kepada pengarang repositori untuk pilihan siap sedia untuk menguji idea dengan cepat. Malah, ia berfungsi dengan baik dalam versi asas dan boleh, pada dasarnya, dilancarkan pada kami pelayan sewaan siap sedia. Ia tidak mungkin untuk berlatih lagi; pada masa ini kami tidak menyediakan mesin maya dengan sokongan CUDA untuk pengiraan, tetapi anda boleh menjalankan sesuatu 24/7 tanpa sebarang masalah. Bot itu agak ringan, jadi lebih menguntungkan untuk mengambil tarif yang membayar untuk sumber yang digunakan.

Penemuan

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder
Saya rasa saya sangat comel. Dan saya mempunyai dunia dalaman yang kaya. Saya mendapat kira-kira 13 perlawanan dalam masa sejam. Lebih-lebih lagi, beberapa kali gadis itu menulis dahulu.
Akibatnya, kami berakhir dengan dialog yang sangat bagus, di mana saya berkata bahawa saya datang semata-mata untuk bermain dengan pembelajaran mesin dan pelabelan data. Salah seorang gadis itu sangat berminat, kerana dia sendiri adalah seorang pemaju. Terdapat perasaan kuat bahawa dia akhirnya akan membaca siaran ini di HabrΓ©. Saya sangat berharap Oksana akan mengekalkan kerahsiaan saya. πŸ™‚
*lambai kaki dan berkata hai

Sedikit tentang sisi etika isu ini

Sejujurnya, saya tidak menyukai keseluruhan idea untuk merobotkan hubungan antara lelaki dan perempuan. Ada sesuatu yang betul tentang melemparkan jaket anda ke atas bahu orang asing yang sejuk yang berdiri sendirian. Atau mendekati seorang gadis cantik di kafe musim panas dan minum kopi bersama. Keluar dari belakang monitor sudah.

Musim panas adalah sekitar. Sudah tiba masanya untuk berkenalan.

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder

Bagaimana untuk mengambil 13 gadis setiap jam menggunakan pembelajaran mesin dan Tinder

Sumber: www.habr.com

Tambah komen