*Tentu saja murni demi mempelajari Machine Learning. Di bawah tatapan sedikit tidak puas dari istri tercintanya.
Mungkin tidak ada aplikasi sederhana pada tingkat refleks tulang belakang seperti Tinder. Untuk menggunakannya, Anda hanya perlu satu jari untuk menggesek dan beberapa neuron untuk memilih perempuan atau laki-laki yang paling Anda sukai. Implementasi ideal dari brute force dalam pemilihan pasangan.
Saya memutuskan bahwa ini akan menjadi cara yang baik untuk sedikit merasakan pembelajaran mesin pada kartu grafis baru. Yang tersisa hanyalah menjelaskan kepada istri saya bahwa saya tidak membutuhkan wanita baru yang lebih gemuk, dan saya hanya melatih jaringan saraf.
Apa masalahnya dengan jaringan kencan?
Ada sumber daya seperti itu - Ashley Madison. Spesifik, dengan slogan βHidup ini singkat. Berselingkuhlah." Penonton utamanya adalah pria menikah yang mencari perselingkuhan. Monetisasi juga menyenangkan - selain standar βmenghabiskan poin untuk menyukai dan menulisβ, mereka meminta $19 untuk menghapus akun pengguna tanpa jejak.
Pada tahun 2015, situs tersebut secara alami bocor dan 60 GB data pribadi bocor ke domain publik. Selain banyaknya keluarga yang hancur, bocoran ini memberikan banyak informasi menarik bagi para analis. Saya selalu curiga ada lebih banyak pria di situs kencan, tapi dalam kasus ini ternyata cukup menarik. Jurnalis Annalee Newitz
Jumlah akun laki-laki yang lebih banyak merupakan hal yang biasa tidak hanya untuk sumber ini, tetapi juga untuk sebagian besar situs kencan lainnya. Saya yakin banyak yang pernah menghadapi situasi yang tidak adil ini, ketika Anda harus merencanakan kenalan dengan hati-hati, tetapi gadis itu hanya perlu mendaftar. Mari kita kesampingkan kualitas dari kelompok penggemar ini, namun faktanya tidak dapat disangkal bahwa keseimbangan penawaran dan permintaan jelas-jelas bergeser ke arah yang menguntungkan para gadis.
Fitur Tinder
Kekuatan kasar yang ideal dalam hubungan gender
Fitur utama platform ini adalah biaya rendah per kenalan. Dua gesekan yang kebetulan sudah cukup dan Anda sudah berkomunikasi dengan orang yang berpotensi menarik. Masalahnya adalah ketidakseimbangan gender yang sama mengarah pada fakta bahwa sebagian besar perempuan akan melakukan lusinan pertandingan setiap hari. Artinya, kemungkinan besar mereka tidak punya waktu untuk memperhatikan Anda di antara kandidat lainnya.
Sangat jelas bahwa platform ini menyiratkan sedikit kesempatan untuk menilai dunia batin seseorang hanya dengan melihat sekilas foto dalam pakaian renang atau mengendarai mobil berwarna yang modis selama satu setengah detik. Oleh karena itu, jika Anda tidak terlihat cantik dalam foto Anda, Anda tidak punya pilihan selain meningkatkan peluang Anda dengan mengadopsi
Mengumpulkan data
Pertama-tama, Anda memerlukan banyak data untuk akurasi normal. Siapa pun yang pernah mempelajari pembelajaran mesin tahu betapa sulitnya menghasilkan kumpulan data yang dikumpulkan dan diberi label dengan benar. Secara teoritis, sumber daya serupa apa pun akan cocok sebagai sumber data, baik itu Instagram atau jejaring sosial lainnya. Namun yang terbaik adalah melatih sampel yang akan digunakan jaringan di masa depan.
Mari kita ambil repositori sebagai dasar
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)
Ini akan memungkinkan Anda menandai kumpulan data secepat mungkin hanya dengan dua tombol. Kendala utamanya terletak pada kenyataan bahwa perpustakaan werkzeug telah merusak kompatibilitas ke belakang dan terpaksa harus menurunkan versinya. Kalau tidak, itu akan menimbulkan kesalahan 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 karena itu, di persyaratan.txt Anda perlu menulis Werkzeug==0.16.1. Kemudian akan lepas landas.
Masalah kedua adalah mendapatkan token ini. Metode standar dari repositori tidak berfungsi untuk saya, tetapi saya berhasil mendapatkannya dari konsol pengembang. Untuk melakukan ini, buka
Persyaratan kumpulan data
Ada beberapa persyaratan utama untuk kumpulan data pembelajaran mesin:
- Kecukupan
- Keseragaman
- Ragam
Kecukupan dalam hal ini memerlukan setidaknya 10000 foto untuk membangun model yang memadai. Ya, itu banyak. Inilah sebabnya mengapa layanan seperti itu
Tidak ada masalah khusus dengan variasi, semua foto disajikan dari berbagai sudut dan pencahayaan. Dengan kacamata, gaun, pakaian renang, dan pakaian ski. Masalah mungkin timbul dengan keseragaman kumpulan data. Idealnya, ketika kita memberi label pada sampel kita, sampel tersebut harus terdiri dari bagian-bagian yang kira-kira sama. Jika Anda mendapatkan kumpulan data yang βmiringβ, Anda harus mencairkannya dengan foto dari sumber lain. Anda perlu menambahkan yang lebih menarik, atau sebaliknya, Anda menentukannya berdasarkan hasil markup. Saya mendapatkan sesuatu yang sekitar 60% cantik. Entah aku tidak terlalu pilih-pilih, atau aku hanya beruntung dan ada banyak gadis cantik disekitarku.
Saya juga tidak mengabaikan hipotesis bahwa ada banyak bot di antara mereka. Kami melatih bot yang akan menyukai bot lainnya. Ada ironi dalam hal ini.
Pengolahan data
Kami memiliki banyak foto yang diberi tag, tetapi sangat tercampur. Siang hari, malam hari, dari belakang dan lain-lain. Dengan menyesal, saya memahami bahwa pengajaran dari foto dari sudut terbalik tidak akan efektif, karena sampelnya akan sangat tidak merata. Oleh karena itu, pilihan terbaik adalah menggunakan wajah sebagai tanda referensi βkelucuanβ. Namun, bagi kami, seperti halnya primata lainnya, ini adalah parameter kunci.
Oleh karena itu, mari kita manfaatkan
Hal ini dijelaskan secara lebih rinci dalam manual
Pada tahap selanjutnya, setelah hanya wajah yang dimasukkan dalam sampel, masuk akal untuk menghilangkan warnanya. Faktanya, Anda tidak perlu memilih antara penghuni Pandora yang cantik berwarna biru atau cantik berkulit hijau.
Pada orang Hue, warna kulit tidak memberikan kontribusi yang signifikan terhadap penilaian daya tarik.
Oleh karena itu, ada baiknya menyederhanakan pekerjaan jaringan saraf dan hanya menyisakan skala abu-abu.
Bangunan model
Saya ingin segera mengatakan bahwa tanpa kartu video dan CUDA yang bagus, kemungkinan besar Anda tidak akan mendapatkan model terlatih dalam waktu yang memadai. Oleh karena itu, segera lakukan penghitungan di cloud khusus atau menggunakan python-CUDA.
Saya mengambil contoh dasar tiga lapis dari pembuat repositori dan, yang mengejutkan, ini menunjukkan akurasi sekitar 72%, yang merupakan hasil yang cukup bagus.
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'])
Jika terdapat sampel yang baik, maka sampel tersebut mungkin cukup untuk memperoleh model yang bisa diterapkan.
Ayo luncurkan botnya
Terima kasih kepada penulis repositori untuk opsi siap pakai untuk menguji ide dengan cepat. Faktanya, ini berfungsi cukup baik di versi dasar dan, pada prinsipnya, dapat diluncurkan di versi kami
Temuan
Menurutku, aku sangat manis. Dan saya memiliki dunia batin yang kaya. Saya mendapat sekitar 13 pertandingan dalam waktu satu jam. Apalagi beberapa kali gadis-gadis itu menulis lebih dulu.
Hasilnya, kami mendapatkan dialog yang sangat bagus, di mana saya mengatakan bahwa saya datang hanya untuk bermain-main dengan pembelajaran mesin dan pelabelan data. Salah satu gadis itu sangat tertarik, karena dia sendiri adalah seorang pengembang. Ada perasaan kuat bahwa dia pada akhirnya akan membaca postingan di HabrΓ© ini. Saya sangat berharap Oksana akan menjaga anonimitas saya. π
*melambaikan tangan dan menyapa
Sedikit tentang sisi etika dari masalah ini
Sejujurnya, saya tidak menyukai gagasan robotisasi hubungan antara laki-laki dan perempuan. Ada sesuatu yang benar jika Anda melemparkan jaket Anda ke atas bahu orang asing yang dingin dan berdiri sendirian. Atau dekati gadis cantik di kafe musim panas dan minum kopi bersama. Keluar dari balik monitor.
Musim panas sudah tiba. Saatnya berkenalan.
Sumber: www.habr.com