كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder

* حصريًا من أجل دراسة التعلم الآلي بالطبع. تحت نظر زوجته الحبيبة مستاءة قليلاً.

ربما لا يوجد تطبيق بسيط على مستوى ردود الفعل في العمود الفقري مثل Tinder. من أجل استخدامه ، يكفي إصبع واحد للتمرير وبعض الخلايا العصبية لاختيار الفتيات أو الرجال الذين تفضلهم. التنفيذ المثالي للقوة الغاشمة في اختيار الزوج.

اعتقدت أن هذه طريقة جيدة للحصول على القليل من التعلم الآلي على بطاقة رسومات جديدة. كل ما تبقى هو أن أشرح لزوجتي أنني لست بحاجة إلى امرأة جديدة أكثر سمكا ، لكنني أقوم فقط بتدريب الشبكات العصبية.

كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder

ما هي مشكلة شبكات المواعدة

كان هناك مثل هذا المورد - أشلي ماديسون. محدد ، مع شعار "الحياة قصيرة. لدينا علاقة. الجمهور الرئيسي هو الرجال المتزوجون الذين يبحثون عن علاقة غرامية جانبية. يعد تحقيق الدخل أمرًا ممتعًا أيضًا - بالإضافة إلى "إنفاق النقاط للإعجاب والكتابة" ، طلبوا 19 دولارًا لحذف حساب المستخدم دون أي أثر.

في عام 2015 ، تم تسريب الموقع بشكل طبيعي وتم تسريب 60 جيجابايت من البيانات الشخصية إلى المجال العام. بالإضافة إلى العديد من العائلات المدمرة ، قدم هذا التسريب الكثير من المعلومات المثيرة للاهتمام للمحللين. كنت أظن دائمًا أن هناك الكثير من الرجال على مواقع المواعدة ، لكن في هذه الحالة تبين أنها مثيرة جدًا للاهتمام. صحفية Annalee Newitz تحليل البيانات المسربة وجد أنه من بين 5 ملايين مستخدم ، بدا أن 12 فقط تشبه حسابات الفتيات الحقيقية وتم استخدامها بانتظام. كان الباقي مجرد روبوتات تتفاعل مع الزوار الذكور.

مثل هذه الغلبة تجاه حسابات الذكور أمر نموذجي ليس فقط لهذا المورد ، ولكن أيضًا لمعظم مواقع المواعدة الأخرى. أنا متأكد من أن الكثيرين قد واجهوا هذا الموقف غير العادل بلا شك ، عندما يتعين عليك التفكير بعناية في أحد معارفك ، وتحتاج الفتاة فقط إلى التسجيل. دعنا نترك جودة هذا الحشد من المعجبين جانبًا ، لكن الحقيقة لا يمكن إنكارها ، فمن الواضح أن ميزان العرض والطلب قد تحول لصالح الفتيات.

ميزة Tinder

كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder
المفترس المثالي في العلاقات بين الجنسين

الميزة الرئيسية لهذه المنصة هي التكلفة المنخفضة لكل معرفة. تكفي مصادفة الضربات الشديدة وأنت تتحدث بالفعل مع شخص مثير للاهتمام. المشكلة هي أن عدم التوازن بين الجنسين يؤدي إلى حقيقة أن معظم الفتيات سيخوضن عشرات المباريات في اليوم. هذا يعني أنه لن يكون لديهم على الأرجح الوقت للاهتمام بك من بين المرشحين الآخرين.

من الواضح تمامًا أن النظام الأساسي يتضمن فرصًا قليلة لتقييم العالم الداخلي العميق للشخص من خلال نظرة ثانية ونصف على صورة في ملابس السباحة أو قيادة سيارة ملونة عصرية. لذلك ، إذا كنت لا تبدو مجرد إلهية في صورك ، فليس لديك خيار سوى زيادة فرصك بالتبني استراتيجية ص في بعض الأنواع. ببساطة ، سنقوم بالقوة الغاشمة ونأخذ الحجم لزيادة فرصنا في نجاح التكاثر. نظرًا لأنك تحتاج في بعض الأحيان إلى تشتيت انتباهك بسبب الطعام والنوم ، والضربات الشديدة محدودة ، فربما تفضل أن تختار الأتمتة الفتيات أو الرجال الذين يناسبون أذواقك أكثر من غيرهم. حمر الشعر الصغيرة أو السمراوات - هذا متروك لك.

جمع البيانات

بادئ ذي بدء ، أنت بحاجة إلى الكثير من البيانات من أجل الدقة العادية. يعرف أي شخص تعامل مع التعلم الآلي مدى صعوبة كتابة مجموعة بيانات تم تجميعها بشكل صحيح وتسميتها. نظريًا ، أي مورد مشابه مناسب كمصدر بيانات ، سواء كان Instagram أو شبكات اجتماعية أخرى. ولكن من الأفضل التدرب على تلك العينات التي ستعمل عليها الشبكة في المستقبل.

لنأخذ المستودع كأساس أتمتة Tinder. تكون الصور على 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'

لذلك ، يجب كتابة werkzeug == 0.16.1 في requirements.txt. ثم سوف تقلع.
المشكلة الثانية هي الحصول على هذا الرمز المميز للغاية. لم تنطلق الطريقة القياسية من المستودع بالنسبة لي ، لكنني تمكنت من الحصول عليها من وحدة تحكم المطورين. للقيام بذلك ، انتقل إلى صلة واسحب الرد على طلب POST بتنسيق www.facebook.com/v2.6/dialog/oauth/confirm؟dpr=1. في الداخل نبحث عن "access_token". لسبب ما لم ينجح في المرة الأولى ، ولكن بعد ذلك وجدته وقمت بترميزه في برنامج نصي.

متطلبات مجموعة البيانات

هناك العديد من المتطلبات الأساسية لمجموعات بيانات التعلم الآلي:

  1. قدرة
  2. التوحيد
  3. تنوع

يتطلب الاكتفاء في هذه الحالة ما لا يقل عن 10000 صورة لبناء نموذج مناسب. نعم ، هذا كثير. لهذا السبب توجد خدمات مثل الأمازون ميكانيكي ترك، حيث يمكنك مقابل رسوم الاستعانة بمصادر خارجية لترميز مجموعة البيانات الخاصة بك لأشخاص آخرين. من ناحية أخرى ، هل تريد حقًا أن يحب الروبوت الخاص بك فتيات آسيويات جميلات وجه القمر أو فتيات جميلات بنفس القدر لهن جذور هندية؟ ومع ذلك ، يجب أن يعكس النموذج ذوقك تمامًا.

لا توجد مشاكل خاصة مع التنوع ، يتم تقديم جميع الصور في مجموعة متنوعة من الزوايا والإضاءة. في النظارات والفساتين وملابس السباحة وبدلات التزلج. قد تنشأ المشكلة مع توحيد مجموعة البيانات. من الناحية المثالية ، عندما نقوم بترميز العينة الخاصة بنا ، يجب أن تتكون من أجزاء متساوية تقريبًا. إذا كانت لديك مجموعة بيانات "منحرفة" ، فسيتعين عليك تخفيفها بالصور من مصادر أخرى. سوف تحتاج إلى إضافة أجمل منها ، أو العكس ، ستحدد من خلال نتيجة الترميز. حصلت على شيء في منطقة 60٪ لطيف. إما أنني لست صعب الإرضاء للغاية ، أو أنني محظوظة وهناك الكثير من الفتيات الجميلات.

كما أنني لا أرفض الفرضية القائلة بوجود العديد من الروبوتات بينهم. نحن ندرب روبوتًا يحب الروبوتات الأخرى. هناك بعض السخرية في هذا.

معالجة البيانات

لدينا مجموعة من الصور المعلمة ، لكنها مختلطة للغاية. ليلا ونهارا من الخلف وغيرها. مع الأسف ، أفهم أنه ليس من الممكن بشكل خاص التدرب على الصور من الزاوية العكسية ، لأن العينة ستكون غير متساوية للغاية. لذلك ، فإن الخيار الأفضل هو استخدام الوجوه كعلامة مرجعية لـ "الجمال". ومع ذلك ، بالنسبة لنا ، كما هو الحال بالنسبة للقرود الأخرى ، هذا هو المعيار الرئيسي.

لذلك سوف نستخدم شلالات من هار. هذه خوارزمية ممتازة تسمح لك بالعثور على الوجوه في الصور مع نسبة منخفضة من الأخطاء الإيجابية الخاطئة.

كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder
هذا موصوف بمزيد من التفصيل في دليل ل مكتبة برمجية مفتوحة للرؤية الحاسوبية

في المرحلة التالية ، بعد أن تكون الوجوه فقط في العينة ، من المنطقي إزالة اللون. في الواقع ، من غير المحتمل أن تضطر إلى الاختيار بين امرأة باندورا زرقاء جميلة أو جمال بشرة خضراء.

كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder
مصدر

في Hue people ، لا تساهم معلمة لون البشرة بشكل كبير في درجة الجاذبية.
لذلك ، فإن الأمر يستحق تبسيط عمل الشبكة العصبية وترك التدرج الرمادي فقط.

بناء نموذج

أريد أن أقول على الفور أنه بدون بطاقة فيديو جيدة و 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 فتاة في الساعة باستخدام التعلم الآلي و Tinder

شكرا لمؤلف المستودع للنسخة الجاهزة لاختبار الفكرة بسرعة. في الواقع ، إنه يعمل جيدًا في الإصدار الأساسي ويمكن ، من حيث المبدأ ، إطلاقه على موقعنا خادم مستأجر جاهز. لن يكون من الممكن التدريب بعد ، في الوقت الحالي لا نوفر أجهزة افتراضية بدعم CUDA للحسابات ، ولكن يمكنك تشغيل شيء ما للعمل على مدار الساعة طوال أيام الأسبوع دون مشاكل. يعتبر الروبوت خفيف الوزن للغاية ، لذا سيكون من المربح أن تأخذ تعريفة مع دفع مقابل الموارد المستخدمة.

النتائج

كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder
يجب أن أكون لطيفًا جدًا. ولدي عالم داخلي غني. حصلت على شيء في حدود 13 مباراة خلال ساعة. علاوة على ذلك ، كتبت الفتيات أولاً عدة مرات.
نتيجة لذلك ، تم الحصول على حوارات لطيفة للغاية ، حيث قلت إنني جئت فقط للعب مع التعلم الآلي وترميز البيانات. كانت إحدى الفتيات مهتمة للغاية ، لأنها هي نفسها مطورة. هناك شعور قوي بأنها ستقرأ في النهاية هذا المنشور عن حبري. آمل حقًا أن تحافظ أوكسانا على سرية هويتي. 🙂
* يلوح بمخلبه ويقول مرحبا

قليلا عن الجانب الأخلاقي للقضية

لأكون صادقًا ، لا أحب فكرة أتمتة العلاقات بين الرجال والفتيات على الإطلاق. هناك شيء صحيح للغاية بشأن رمي سترتك على أكتاف شخص غريب متجمد يقف وحيدًا. أو تقترب من فتاة جميلة في مقهى صيفي وتناول القهوة معًا. اخرج من خلف الشاشات.

قرابة الصيف. حان الوقت للتعرف.

كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder

كيف تلتقط 13 فتاة في الساعة باستخدام التعلم الآلي و Tinder

المصدر: www.habr.com

إضافة تعليق