چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم

*البته صرفاً به خاطر یادگیری یادگیری ماشینی. زیر نگاه کمی ناراضی همسر محبوبش.

احتمالاً هیچ کاربردی به سادگی Tinder در سطح رفلکس های نخاعی وجود ندارد. برای استفاده از آن، فقط به یک انگشت برای کشیدن انگشت و چند نورون برای انتخاب دختران یا مردانی که بیشتر دوست دارید نیاز دارید. اجرای ایده آل نیروی brute force در انتخاب جفت.

من تصمیم گرفتم که این یک راه خوب برای درک کمی یادگیری ماشین در یک کارت گرافیک جدید باشد. تنها چیزی که باقی می ماند این است که به همسرم توضیح دهم که من به یک زن چاق تر جدید نیاز ندارم و فقط شبکه های عصبی را آموزش می دهم.

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم

مشکل شبکه های دوستیابی چیست؟

چنین منبعی وجود داشت - اشلی مدیسون. مشخص، با شعار «زندگی کوتاه است. رابطه داشته باش." مخاطب اصلی مردان متاهلی هستند که به دنبال رابطه جنسی در کنار یکدیگر هستند. کسب درآمد نیز سرگرم کننده است - علاوه بر استاندارد "امتیاز خرج کردن برای لایک کردن و نوشتن"، آنها 19 دلار برای حذف حساب کاربری بدون هیچ ردی درخواست کردند.

در سال 2015، این سایت به طور طبیعی به بیرون درز کرد و 60 گیگابایت اطلاعات شخصی به مالکیت عمومی درز کرد. علاوه بر بسیاری از خانواده های ویران شده، این نشت اطلاعات جالب زیادی در اختیار تحلیلگران قرار داد. من همیشه مشکوک بودم که تعداد مردان زیادی در سایت های دوستیابی وجود دارد، اما در این مورد بسیار جالب بود. روزنامه نگار آنالی نیویتز تجزیه و تحلیل داده های لو رفته دریافت که از 5 میلیون کاربر، تنها 12 نفر شبیه به اکانت های واقعی دختر بوده و به طور مرتب از آنها استفاده می شود. بقیه فقط ربات هایی بودند که با بازدیدکنندگان مرد چت می کردند.

چنین برتری نسبت به حساب‌های مردانه نه تنها برای این منبع، بلکه برای اکثر سایت‌های دوستیابی دیگر معمول است. من مطمئن هستم که بسیاری با این وضعیت بدون شک ناعادلانه مواجه شده اند، زمانی که شما باید با دقت برای یک آشنایی برنامه ریزی کنید، اما دختر فقط باید ثبت نام کند. بیایید کیفیت این انبوه طرفداران را کنار بگذاریم، اما این واقعیت غیرقابل انکار است که تعادل عرضه و تقاضا به وضوح به نفع دختران تغییر کرده است.

ویژگی Tinder

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم
نیروی بی رحم ایده آل در روابط جنسیتی

ویژگی اصلی این پلتفرم هزینه کم برای هر آشنایی است. تصادف دو ضربه تند وشدید زدن کافی است و شما در حال حاضر با یک فرد بالقوه جالب در ارتباط هستید. مشکل این است که همین عدم تعادل جنسیتی منجر به این واقعیت می شود که بیشتر دختران ده ها مسابقه در روز خواهند داشت. این بدان معنی است که آنها به احتمال زیاد زمانی برای توجه به شما در میان سایر نامزدها نخواهند داشت.

کاملاً واضح است که این پلتفرم فرصت کمی برای ارزیابی دنیای درونی عمیق یک فرد از یک و نیم نگاه به عکسی با لباس شنا یا رانندگی با یک ماشین رنگی شیک دارد. بنابراین، اگر در عکس‌های خود به سادگی خدایی به نظر نمی‌رسید، چاره‌ای جز افزایش شانس خود با استفاده از عکس ندارید. استراتژی r در برخی از گونه ها به بیان ساده، ما برای افزایش شانس موفقیت خود در پرورش، زور و حجم را به کار خواهیم گرفت. از آنجایی که گاهی اوقات باید حواس‌تان به غذا و خواب پرت شود، و کشیدن انگشتتان محدود است، احتمالاً ترجیح می‌دهید که اتوماسیون دختران یا مردانی را انتخاب کند که به بهترین وجه با سلیقه شما مطابقت دارند. مو قرمزهای کوتاه یا سبزه های قد بلند - این به شما بستگی دارد.

جمع آوری داده ها

اول از همه، برای دقت عادی به داده های زیادی نیاز دارید. هرکسی که با یادگیری ماشینی مواجه شده است، می‌داند که تولید یک مجموعه داده به‌درستی جمع‌آوری‌شده و برچسب‌گذاری‌شده چقدر می‌تواند دشوار باشد. از نظر تئوری، هر منبع مشابهی به عنوان منبع داده مناسب خواهد بود، چه اینستاگرام و چه سایر شبکه های اجتماعی. اما بهتر است بر روی نمونه هایی که شبکه در آینده روی آنها کار خواهد کرد آموزش داده شود.

بیایید مخزن را به عنوان پایه در نظر بگیریم Tinder Automation. عکس‌های Tinder همیشه در دسترس عموم هستند، اما عملکرد "پسندیدن" از قبل محدود شده است. بنابراین، لازم است تمام موجودات زنده در شعاع استخراج و آنها را با دقت علامت گذاری کنید. ابتدا باید از یک اسکریپت نسبتاً ساده استفاده کنید:

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'

بنابراین، در requirement.txt باید Werkzeug==0.16.1 را بنویسید. سپس بلند خواهد شد.
مشکل دوم این است که همین توکن را دریافت کنید. روش استاندارد مخزن برای من کار نکرد، اما موفق شدم آن را از کنسول توسعه دهنده دریافت کنم. برای انجام این کار، به پیوند و پاسخ به درخواست POST را در آن استخراج کنید www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. در داخل ما به دنبال 'access_token' هستیم. به دلایلی بار اول کار نکرد، اما بعد آن را پیدا کردم و آن را در اسکریپت کدگذاری کردم.

الزامات مجموعه داده

چندین الزام کلیدی برای مجموعه داده های یادگیری ماشین وجود دارد:

  1. کفایت
  2. یکنواختی
  3. تنوع

کفایت در این مورد به حداقل 10000 عکس برای ساخت یک مدل مناسب نیاز دارد. بله، این مقدار زیادی است. در واقع به همین دلیل است که خدمات مانند آمازون مکانیک ترک، جایی که با پرداخت هزینه می توانید نشانه گذاری مجموعه داده خود را به افراد دیگر واگذار کنید. از طرف دیگر، آیا واقعاً می خواهید ربات شما از دختران آسیایی فوق العاده ماه چهره یا دخترانی به همان اندازه زیبا با ریشه هندی خوشش بیاید؟ با این حال، مدل باید منعکس کننده سلیقه شما باشد.

هیچ مشکل خاصی در تنوع وجود ندارد، همه عکس ها از زوایای مختلف و نور ارائه می شوند. در عینک، لباس، مایو و لباس اسکی. ممکن است مشکلی با یکنواختی مجموعه داده ایجاد شود. در حالت ایده آل، زمانی که نمونه خود را برچسب گذاری می کنیم، باید از قسمت های تقریبا مساوی تشکیل شده باشد. اگر در نهایت با یک مجموعه داده "کج" مواجه شدید، باید آن را با عکس هایی از منابع دیگر رقیق کنید. شما باید موارد جذاب تری را اضافه کنید، یا برعکس، آنها را بر اساس نتیجه نشانه گذاری تعیین خواهید کرد. من چیزی حدود 60% زیبا گرفتم. یا من خیلی حساس نیستم، یا فقط خوش شانس هستم و دختران زیبای زیادی در اطراف هستند.

من همچنین این فرضیه را که ربات های زیادی در بین آنها وجود دارد، نادیده نمی گیرم. ما رباتی را آموزش می دهیم که ربات های دیگر را دوست داشته باشد. طنزی در این وجود دارد.

پردازش داده ها

ما تعداد زیادی عکس تگ شده داریم، اما آنها بسیار ترکیبی هستند. روز، شب، از پشت و دیگران. با تأسف می‌دانم که آموزش از روی عکس‌ها از زاویه معکوس چندان مؤثر نخواهد بود، زیرا نمونه بسیار ناهموار خواهد بود. بنابراین، بهترین گزینه استفاده از چهره‌ها به‌عنوان نشانه‌ای از «ناز» است. با این حال، برای ما، مانند سایر پستانداران، این یک پارامتر کلیدی است.

بنابراین، بیایید استفاده کنیم آبشار هار. این یک الگوریتم عالی است که به شما امکان می دهد چهره هایی را در تصاویر با درصد کم خطاهای مثبت کاذب پیدا کنید.

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم
این با جزئیات بیشتر در دفترچه راهنما توضیح داده شده است OpenCV

در مرحله بعد، پس از اینکه فقط چهره ها در نمونه قرار گرفتند، حذف رنگ منطقی است. در واقع، به سختی مجبور خواهید بود بین رنگ آبی زیبای پاندورا یا زیبایی پوست سبز یکی را انتخاب کنید.

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم
منبع

در افراد Hue، رنگ پوست سهم قابل توجهی در رتبه بندی جذابیت ندارد.
بنابراین، ارزش آن را دارد که کار شبکه عصبی را ساده کنیم و فقط مقیاس خاکستری را باقی بگذاریم.

ساختمان نمونه

می خواهم فوراً بگویم که بدون یک کارت گرافیک خوب و 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'])

اگر نمونه خوبی وجود داشته باشد، ممکن است برای به دست آوردن یک مدل قابل اجرا کافی باشد.

بیایید ربات را راه اندازی کنیم

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم

با تشکر از نویسنده مخزن برای یک گزینه آماده برای آزمایش سریع ایده. در واقع، در نسخه اصلی کاملاً خوب کار می کند و در اصل می تواند در ما راه اندازی شود سرور اجاره ای آماده. هنوز امکان آموزش وجود نخواهد داشت؛ در حال حاضر ما ماشین‌های مجازی را با پشتیبانی CUDA برای محاسبات ارائه نمی‌کنیم، اما می‌توانید چیزی را 24/7 بدون هیچ مشکلی اجرا کنید. این ربات کاملاً سبک وزن است، بنابراین سودآورتر است که تعرفه ای برای منابع استفاده شده پرداخت کند.

یافته ها

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم
حدس میزنم خیلی ناز هستم و من دنیای درونی غنی دارم. من در عرض یک ساعت چیزی حدود 13 مسابقه گرفتم. علاوه بر این، چندین بار دختران ابتدا نوشتند.
در نتیجه، ما به دیالوگ‌های بسیار خوبی رسیدیم، جایی که گفتم من فقط برای بازی با یادگیری ماشین و برچسب‌گذاری داده وارد شدم. یکی از دختران بسیار علاقه مند بود، زیرا او خودش یک توسعه دهنده است. این احساس قوی وجود دارد که او در نهایت این پست را در هابره خواهد خواند. من واقعاً امیدوارم که اوکسانا ناشناس ماندن من را حفظ کند. 🙂
*پنجه را تکان می دهد و سلام می کند

کمی در مورد جنبه اخلاقی موضوع

صادقانه بگویم، من از کل ایده رباتیک کردن روابط بین مردان و دختران خوشم نمی آید. در مورد انداختن ژاکت روی شانه های یک غریبه سرد که تنها ایستاده است، چیزی بسیار درست است. یا در یک کافه تابستانی به یک دختر زیبا نزدیک شوید و با هم قهوه بنوشید. قبلاً از پشت مانیتورها خارج شوید.

تابستان همه جاست. وقت آشنایی است.

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم

چگونه با استفاده از یادگیری ماشین و Tinder، 13 دختر در ساعت را انتخاب کنیم

منبع: www.habr.com

اضافه کردن نظر