*เพื่อประโยชน์ในการเรียนรู้ Machine Learning อย่างแท้จริง ภายใต้สายตาไม่พอใจเล็กน้อยของภรรยาที่รักของเขา
อาจไม่มีแอปพลิเคชันใดที่ง่ายสำหรับระดับการตอบสนองของกระดูกสันหลังเช่นเดียวกับ Tinder เพื่อที่จะใช้มัน คุณเพียงแค่ใช้นิ้วเดียวในการปัดและเซลล์ประสาทอีกสองสามอันเพื่อเลือกผู้หญิงหรือผู้ชายที่คุณชอบที่สุด การใช้กำลังดุร้ายในการเลือกคู่ในอุดมคติ
ฉันตัดสินใจว่านี่จะเป็นวิธีที่ดีในการทำความเข้าใจเกี่ยวกับการเรียนรู้ของเครื่องบนการ์ดกราฟิกใหม่ สิ่งที่เหลืออยู่คือการอธิบายให้ภรรยาฟังว่าฉันไม่ต้องการผู้หญิงที่อ้วนกว่านี้ และฉันแค่ฝึกโครงข่ายประสาทเทียมเท่านั้น
ปัญหาของเครือข่ายหาคู่คืออะไร?
มีทรัพยากรดังกล่าว - แอชลีย์เมดิสัน เจาะจงด้วยสโลแกน “ชีวิตนั้นสั้น มีเรื่องกัน" ผู้ชมหลักคือผู้ชายที่แต่งงานแล้วและกำลังมองหาเรื่องรัก ๆ ใคร่ ๆ การสร้างรายได้ก็เป็นเรื่องสนุก นอกเหนือจาก "การใช้คะแนนเพื่อกดไลค์และเขียน" มาตรฐานแล้ว พวกเขาขอเงิน 19 ดอลลาร์เพื่อลบบัญชีของผู้ใช้อย่างไร้ร่องรอย
ในปี 2015 ไซต์รั่วไหลตามธรรมชาติและข้อมูลส่วนบุคคล 60 GB รั่วไหลสู่สาธารณสมบัติ นอกจากครอบครัวที่ถูกทำลายจำนวนมากแล้ว การรั่วไหลนี้ยังให้ข้อมูลที่น่าสนใจมากมายแก่นักวิเคราะห์อีกด้วย ฉันสงสัยมาโดยตลอดว่ามีผู้ชายจำนวนมากในเว็บไซต์หาคู่ แต่ในกรณีนี้ มันกลับกลายเป็นว่าน่าสนใจทีเดียว นักข่าว แอนนาลี นิวิตซ์
ความเหนือกว่าต่อบัญชีผู้ชายนั้นเป็นเรื่องปกติไม่เพียงแต่สำหรับแหล่งข้อมูลนี้เท่านั้น แต่ยังรวมไปถึงเว็บไซต์หาคู่อื่น ๆ ส่วนใหญ่ด้วย ฉันมั่นใจว่าหลายคนต้องเผชิญกับสถานการณ์ที่ไม่ยุติธรรมอย่างไม่ต้องสงสัยเมื่อคุณต้องวางแผนคนรู้จักอย่างรอบคอบ แต่ผู้หญิงคนนั้นก็ต้องลงทะเบียน ปล่อยให้คุณภาพของแฟน ๆ กลุ่มนี้ออกไป แต่ความจริงก็ปฏิเสธไม่ได้ว่าความสมดุลของอุปสงค์และอุปทานเปลี่ยนไปอย่างชัดเจนเพื่อประโยชน์ของเด็กผู้หญิง
คุณสมบัติเชื้อจุดไฟ
พลังเดรัจฉานในอุดมคติในความสัมพันธ์ทางเพศ
คุณสมบัติหลักของแพลตฟอร์มนี้คือต้นทุนต่อคนรู้จักต่ำ ความบังเอิญของการปัดสองครั้งก็เพียงพอแล้วและคุณกำลังสื่อสารกับบุคคลที่น่าสนใจอยู่แล้ว ปัญหาคือความไม่สมดุลของเพศเดียวกันทำให้ผู้หญิงส่วนใหญ่มีการแข่งขันหลายสิบครั้งต่อวัน ซึ่งหมายความว่าพวกเขามักจะไม่มีเวลาให้ความสนใจคุณนอกเหนือจากผู้สมัครคนอื่นๆ
เป็นที่ชัดเจนว่าแพลตฟอร์มดังกล่าวแทบไม่มีโอกาสประเมินโลกภายในอันล้ำลึกของบุคคลจากการมองภาพถ่ายในชุดว่ายน้ำเพียงครึ่งวินาทีหรือการขับรถที่มีสีทันสมัย ดังนั้น หากคุณไม่ได้ดูศักดิ์สิทธิ์ในรูปถ่ายของคุณ คุณไม่มีทางเลือกอื่นนอกจากเพิ่มโอกาสโดยการนำ
กำลังรวบรวมข้อมูล
ก่อนอื่น คุณต้องมีข้อมูลจำนวนมากเพื่อความแม่นยำตามปกติ ใครก็ตามที่เคยพบกับการเรียนรู้ของเครื่องจะรู้ดีว่าการสร้างชุดข้อมูลที่รวบรวมและติดป้ายกำกับอย่างถูกต้องนั้นยากเพียงใด ตามทฤษฎีแล้ว ทรัพยากรที่คล้ายกันจะเหมาะสมเป็นแหล่งข้อมูล ไม่ว่าจะเป็น Instagram หรือเครือข่ายโซเชียลอื่นๆ แต่วิธีที่ดีที่สุดคือฝึกอบรมตัวอย่างที่เครือข่ายจะทำงานได้ในอนาคต
ลองใช้พื้นที่เก็บข้อมูลเป็นพื้นฐาน
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)
จะช่วยให้คุณสามารถมาร์กอัปชุดข้อมูลได้เร็วที่สุดเท่าที่จะเป็นไปได้ด้วยปุ่มเพียงสองปุ่ม ข้อผิดพลาดที่สำคัญอยู่ที่ว่าไลบรารี werkzeug ได้ทำลายความเข้ากันได้แบบย้อนหลัง และจะต้องถูกบังคับให้ดาวน์เกรด มิฉะนั้นจะเกิดข้อผิดพลาดนี้
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'
ดังนั้นในข้อกำหนด txt คุณต้องเขียน Werkzeug==0.16.1 จากนั้นมันจะบินขึ้น
ปัญหาที่สองคือการได้รับโทเค็นนี้มาก วิธีการมาตรฐานจากพื้นที่เก็บข้อมูลใช้ไม่ได้สำหรับฉัน แต่ฉันจัดการได้จากคอนโซลนักพัฒนาซอฟต์แวร์ โดยไปที่
ข้อกำหนดชุดข้อมูล
มีข้อกำหนดหลักหลายประการสำหรับชุดข้อมูลการเรียนรู้ของเครื่อง:
- ความเพียงพอ
- ความสม่ำเสมอ
- ความหลากหลาย
ความเพียงพอในกรณีนี้ต้องใช้ภาพถ่ายอย่างน้อย 10000 ภาพเพื่อสร้างแบบจำลองที่เหมาะสม ใช่ว่าเป็นจำนวนมาก นี่คือเหตุผลว่าทำไมบริการเช่นนี้
ไม่มีปัญหาใดเป็นพิเศษเกี่ยวกับความหลากหลาย ภาพถ่ายทั้งหมดนำเสนอจากมุมและแสงที่หลากหลาย ในแว่นตา ชุดเดรส ชุดว่ายน้ำ และชุดสกี ปัญหาอาจเกิดขึ้นกับความสม่ำเสมอของชุดข้อมูล ตามหลักการแล้ว เมื่อเราติดฉลากตัวอย่างของเรา ตัวอย่างนั้นควรประกอบด้วยส่วนเท่าๆ กันโดยประมาณ หากคุณได้ชุดข้อมูลที่ "บิดเบี้ยว" คุณจะต้องเจือจางด้วยภาพถ่ายจากแหล่งอื่น คุณจะต้องเพิ่มความน่าสนใจมากขึ้น หรือในทางกลับกัน คุณจะพิจารณาสิ่งเหล่านั้นตามผลลัพธ์ของมาร์กอัป ฉันได้ของสวยมาประมาณ 60% ฉันไม่จู้จี้จุกจิกเกินไปหรือฉันแค่โชคดีและมีสาวสวยอยู่มากมาย
ฉันยังไม่ละเลยสมมติฐานที่ว่ามีบอทมากมายในนั้น เราฝึกบอทที่จะชอบบอทตัวอื่น มีการประชดบางอย่างในเรื่องนี้
การประมวลผลข้อมูล
เรามีรูปภาพที่ติดแท็กอยู่มากมาย แต่มีรูปภาพผสมกันมาก กลางวัน กลางคืน จากด้านหลังและอื่นๆ ด้วยความเสียใจ ฉันเข้าใจว่าการสอนจากภาพถ่ายจากมุมกลับจะไม่ได้ผลมากนัก เนื่องจากตัวอย่างจะไม่สม่ำเสมอมาก ดังนั้น ทางเลือกที่ดีที่สุดคือใช้ใบหน้าเป็นสัญลักษณ์อ้างอิงถึง "ความน่ารัก" อย่างไรก็ตาม สำหรับเราแล้ว สำหรับไพรเมตอื่นๆ นี่เป็นตัวแปรสำคัญ
ดังนั้นเรามาใช้งานกัน
ซึ่งมีการอธิบายโดยละเอียดเพิ่มเติมในคู่มือ
ในขั้นตอนต่อไป หลังจากที่มีเฉพาะใบหน้าอยู่ในตัวอย่างแล้ว ก็สมเหตุสมผลที่จะลบสีออก จริงๆ แล้ว คุณแทบจะไม่ต้องเลือกระหว่างท้องฟ้าสีฟ้าที่สวยงามของแพนโดร่าหรือความงามที่มีผิวสีเขียว
ในชาวเมืองเว้ สีผิวไม่ได้มีส่วนสำคัญต่อการจัดอันดับความน่าดึงดูดใจ
ดังนั้นจึงควรลดความซับซ้อนของการทำงานของโครงข่ายประสาทเทียมและเหลือเพียงระดับสีเทาเท่านั้น
การสร้างแบบจำลอง
ฉันอยากจะบอกทันทีว่าหากไม่มีการ์ดแสดงผลที่ดีและ CUDA คุณมักจะไม่ได้รับโมเดลที่ผ่านการฝึกอบรมในเวลาที่เหมาะสม ดังนั้น ให้มุ่งเป้าไปที่การคำนวณในระบบคลาวด์เฉพาะทางหรือใช้ python-CUDA ทันที
ฉันยกตัวอย่างสามชั้นพื้นฐานจากผู้เขียนพื้นที่เก็บข้อมูล และที่น่าประหลาดใจคือมันแสดงความแม่นยำประมาณ 72% ซึ่งถือเป็นผลลัพธ์ที่ดีทีเดียว
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'])
ถ้ามีตัวอย่างที่ดี ก็อาจจะเพียงพอแล้วที่จะได้แบบจำลองที่ใช้งานได้
มาเปิดตัวบอทกันเถอะ
ขอขอบคุณผู้เขียนพื้นที่เก็บข้อมูลสำหรับตัวเลือกสำเร็จรูปสำหรับการทดสอบแนวคิดอย่างรวดเร็ว ที่จริงแล้ว มันใช้งานได้ค่อนข้างดีในเวอร์ชันพื้นฐาน และโดยหลักการแล้วสามารถเปิดใช้งานบนของเราได้
ผลการวิจัย
ฉันว่าฉันน่ารักมากนะ และฉันมีโลกภายในที่อุดมสมบูรณ์ ฉันได้ประมาณ 13 นัดภายในหนึ่งชั่วโมง ยิ่งไปกว่านั้น หลายครั้งที่สาวๆ เขียนเป็นคนแรก
ผลลัพธ์ที่ได้คือบทสนทนาที่ดีมาก ซึ่งฉันบอกว่าฉันเข้ามาเพื่อเล่นกับแมชชีนเลิร์นนิงและการติดป้ายกำกับข้อมูลเท่านั้น เด็กผู้หญิงคนหนึ่งสนใจอย่างมากเนื่องจากเธอเองเป็นนักพัฒนา มีความรู้สึกอันแรงกล้าว่าในที่สุดเธอก็จะได้อ่านโพสต์นี้เกี่ยวกับHabréในที่สุด ฉันหวังเป็นอย่างยิ่งว่า Oksana จะไม่เปิดเผยตัวตนของฉัน 🙂
*โบกมือทักทาย
เล็กน้อยเกี่ยวกับด้านจริยธรรมของปัญหา
พูดตามตรงฉันไม่ชอบความคิดทั้งหมดในการสร้างความสัมพันธ์แบบหุ่นยนต์ระหว่างชายและหญิง มีบางอย่างที่ถูกต้องมากเกี่ยวกับการโยนเสื้อแจ็คเก็ตของคุณบนไหล่ของคนแปลกหน้าที่เย็นชาซึ่งยืนอยู่คนเดียว หรือเข้าหาสาวสวยในร้านกาแฟช่วงฤดูร้อนและดื่มกาแฟด้วยกัน ออกไปจากด้านหลังจอภาพแล้ว
ฤดูร้อนอยู่รอบตัว ถึงเวลาทำความคุ้นเคยแล้ว
ที่มา: will.com