Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder

*Tất nhiên là hoàn toàn vì mục đích học Machine Learning. Dưới ánh mắt có chút bất mãn của người vợ yêu dấu.

Có lẽ không có ứng dụng nào đơn giản đến mức độ phản xạ cột sống như Tinder. Để sử dụng nó, bạn chỉ cần một ngón tay để vuốt và một vài nơ-ron thần kinh để chọn những cô gái hoặc người đàn ông mà bạn thích nhất. Một cách thực hiện lý tưởng của bạo lực trong lựa chọn cặp.

Tôi quyết định rằng đây sẽ là một cách hay để cảm nhận một chút về máy học trên cạc đồ họa mới. Tất cả những gì còn lại là giải thích với vợ tôi rằng tôi không cần một người phụ nữ mới béo hơn và tôi chỉ đang đào tạo mạng lưới thần kinh.

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder

Vấn đề với mạng lưới hẹn hò là gì?

Có một nguồn tài nguyên như vậy - Ashley Madison. Cụ thể, với khẩu hiệu “Cuộc đời rất ngắn ngủi. Làm tình đi." Đối tượng chính là những người đàn ông đã có gia đình đang tìm kiếm chuyện tình cảm ở bên cạnh. Kiếm tiền cũng rất thú vị - ngoài tiêu chuẩn “tiêu điểm để thích và viết”, họ còn yêu cầu 19 đô la để xóa tài khoản của người dùng mà không để lại dấu vết.

Vào năm 2015, trang web này đã bị rò rỉ một cách tự nhiên và 60 GB dữ liệu cá nhân bị rò rỉ ra phạm vi công cộng. Ngoài nhiều gia đình bị phá hủy, vụ rò rỉ này còn cung cấp nhiều thông tin thú vị cho giới phân tích. Tôi luôn nghi ngờ rằng có rất nhiều đàn ông trên các trang web hẹn hò, nhưng trong trường hợp này hóa ra nó khá thú vị. Nhà báo Annalee Newitz phân tích dữ liệu bị rò rỉ nhận thấy rằng trong số 5 triệu người dùng, chỉ có 12 tài khoản giống với tài khoản nữ thật và được sử dụng thường xuyên. Phần còn lại chỉ là bot trò chuyện với khách nam.

Xu hướng ưu tiên các tài khoản nam như vậy là điển hình không chỉ đối với tài nguyên này mà còn đối với hầu hết các trang web hẹn hò khác. Tôi chắc chắn rằng nhiều người đã gặp phải tình huống chắc chắn không công bằng này, khi bạn phải lên kế hoạch làm quen cẩn thận nhưng cô gái chỉ cần đăng ký. Hãy gác chất lượng của đám đông người hâm mộ này sang một bên, nhưng một sự thật không thể phủ nhận là cán cân cung cầu rõ ràng đang nghiêng về phía các cô gái.

Tính năng Tinder

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder
Kẻ bạo hành lý tưởng trong quan hệ giới tính

Tính năng chính của nền tảng này là chi phí thấp cho mỗi người quen. Chỉ cần hai lần vuốt là đủ và bạn đã giao tiếp với một người có khả năng thú vị. Vấn đề là sự mất cân bằng giới tính giống nhau dẫn đến việc hầu hết các cô gái sẽ có hàng chục trận đấu mỗi ngày. Điều này có nghĩa là rất có thể họ sẽ không có thời gian để quan tâm đến bạn trong số những ứng viên khác.

Rõ ràng là nền tảng này hàm ý rất ít cơ hội để đánh giá thế giới nội tâm sâu sắc của một người chỉ từ cái nhìn một giây rưỡi vào một bức ảnh trong bộ đồ bơi hoặc lái một chiếc ô tô màu thời trang. Do đó, nếu bạn trông không đơn giản là thần thánh trong những bức ảnh của mình, bạn không có lựa chọn nào khác ngoài việc tăng cơ hội của mình bằng cách áp dụng chiến lược r ở một số loài. Nói một cách đơn giản, chúng ta sẽ sử dụng vũ lực và tăng số lượng để tăng cơ hội nhân giống thành công. Vì đôi khi bạn cần bị phân tâm bởi thức ăn và giấc ngủ cũng như các thao tác vuốt bị hạn chế, có thể bạn sẽ thích việc tự động hóa chọn những cô gái hoặc đàn ông phù hợp nhất với sở thích của bạn. Tóc đỏ ngắn hay tóc ngăm đen cao - tùy bạn.

Thu thập dữ liệu

Trước hết, bạn cần rất nhiều dữ liệu để có độ chính xác bình thường. Bất cứ ai đã từng học máy đều biết việc tạo ra một tập dữ liệu được thu thập và gắn nhãn chính xác khó đến mức nào. Về mặt lý thuyết, bất kỳ tài nguyên tương tự nào cũng sẽ phù hợp làm nguồn dữ liệu, có thể là Instagram hoặc các mạng xã hội khác. Nhưng tốt nhất bạn nên đào tạo những mẫu mà mạng sẽ hoạt động trong tương lai.

Hãy lấy kho lưu trữ làm cơ sở Tự động hóa Tinder. Ảnh của Tinder luôn được công khai nhưng chức năng "thích" đã bị hạn chế. Vì vậy, cần phải trích xuất tất cả các sinh vật sống trong bán kính và đánh dấu chúng cẩn thận. Trước tiên, bạn cần sử dụng một tập lệnh khá đơn giản:

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)

Nó sẽ cho phép bạn đánh dấu tập dữ liệu nhanh nhất có thể chỉ bằng hai nút. Cạm bẫy chính nằm ở chỗ thư viện werkzeug đã phá vỡ khả năng tương thích ngược và buộc phải hạ cấp nó. Nếu không thì nó sẽ báo lỗi này.

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'

Do đó, trong require.txt bạn cần viết Werkzeug==0.16.1. Sau đó nó sẽ cất cánh.
Vấn đề thứ hai là lấy được mã thông báo này. Phương pháp tiêu chuẩn từ kho lưu trữ không hiệu quả với tôi, nhưng tôi đã tìm cách lấy nó từ bảng điều khiển dành cho nhà phát triển. Để thực hiện việc này, hãy truy cập liên kết và trích xuất phản hồi cho yêu cầu POST trong www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Bên trong chúng tôi tìm kiếm 'access_token'. Vì lý do nào đó, lần đầu tiên nó không hoạt động, nhưng sau đó tôi đã tìm thấy nó và mã hóa nó thành tập lệnh.

Yêu cầu về tập dữ liệu

Có một số yêu cầu chính đối với bộ dữ liệu học máy:

  1. Đầy đủ
  2. Tính đồng nhất
  3. Đa dạng

Tính đầy đủ trong trường hợp này cần ít nhất 10000 bức ảnh để xây dựng một mô hình phù hợp. Vâng, đó là rất nhiều. Đây thực sự là lý do tại sao các dịch vụ như Amazon Mechanical Turk, với một khoản phí, bạn có thể ủy quyền đánh dấu tập dữ liệu của mình cho người khác. Mặt khác, bạn có thực sự muốn bot của mình thích những cô gái châu Á có khuôn mặt như mặt trăng tuyệt vời hay những cô gái xinh đẹp không kém gốc Ấn Độ? Tuy nhiên, mô hình sẽ phản ánh sở thích của bạn.

Không có vấn đề cụ thể nào về sự đa dạng, tất cả các bức ảnh đều được trình bày từ nhiều góc độ và ánh sáng khác nhau. Trong kính, váy, đồ bơi và bộ đồ trượt tuyết. Một vấn đề có thể phát sinh với tính đồng nhất của tập dữ liệu. Lý tưởng nhất là khi chúng ta dán nhãn cho mẫu của mình, nó phải bao gồm các phần gần bằng nhau. Nếu bạn thu được một tập dữ liệu “sai lệch”, bạn sẽ phải pha loãng nó với các bức ảnh từ các nguồn khác. Bạn sẽ cần thêm những cái hấp dẫn hơn hoặc ngược lại, bạn sẽ xác định chúng dựa trên kết quả đánh dấu. Tôi có thứ gì đó đẹp khoảng 60%. Hoặc là tôi không quá kén chọn, hoặc là tôi may mắn và có rất nhiều cô gái xinh đẹp xung quanh.

Tôi cũng không bác bỏ giả thuyết rằng có rất nhiều bot trong số đó. Chúng tôi đào tạo một bot sẽ thích các bot khác. Có một số điều trớ trêu trong việc này.

Xử lí dữ liệu

Chúng tôi có một loạt ảnh được gắn thẻ, nhưng chúng rất hỗn tạp. Ban ngày, ban đêm, từ phía sau và những người khác. Rất tiếc, tôi hiểu rằng việc giảng dạy từ các bức ảnh từ góc ngược sẽ không có hiệu quả đặc biệt vì mẫu sẽ rất không đồng đều. Do đó, lựa chọn tốt nhất là sử dụng khuôn mặt làm dấu hiệu tham khảo về “sự dễ thương”. Tuy nhiên, đối với chúng ta cũng như đối với các loài linh trưởng khác, đây là một thông số quan trọng.

Vì vậy, chúng ta hãy sử dụng thác Haar. Đây là một thuật toán tuyệt vời cho phép bạn tìm khuôn mặt trong hình ảnh với tỷ lệ lỗi dương tính giả thấp.

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder
Điều này được mô tả chi tiết hơn trong hướng dẫn OpenCV

Ở giai đoạn tiếp theo, sau khi chỉ có các khuôn mặt trong mẫu, việc loại bỏ màu sẽ là hợp lý. Trên thực tế, bạn sẽ khó phải lựa chọn giữa người đẹp màu xanh lam xinh đẹp của Pandora hay người đẹp có làn da xanh lục.

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder
Nguồn

Ở người Huế, màu da không đóng góp đáng kể vào việc đánh giá mức độ hấp dẫn.
Do đó, cần đơn giản hóa công việc của mạng lưới thần kinh và chỉ để lại thang độ xám.

Xây dựng mô hình

Tôi muốn nói ngay rằng nếu không có card màn hình tốt và CUDA, rất có thể bạn sẽ không có được một người mẫu được đào tạo trong thời gian thích hợp. Do đó, hãy ngay lập tức hướng tới việc tính toán trên các đám mây chuyên dụng hoặc sử dụng python-CUDA.

Tôi lấy một ví dụ ba lớp cơ bản từ tác giả của kho lưu trữ và thật ngạc nhiên, nó cho thấy độ chính xác khoảng 72%, đây là một kết quả khá tốt.

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

Nếu có một mẫu tốt thì có thể đủ để có được một mô hình khả thi.

Hãy khởi chạy bot

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder

Cảm ơn tác giả của kho lưu trữ đã cung cấp một tùy chọn có sẵn để nhanh chóng thử nghiệm ý tưởng. Trên thực tế, nó hoạt động khá tốt ở phiên bản cơ bản và về nguyên tắc có thể được tung ra trên nền tảng của chúng tôi. máy chủ thuê sẵn. Sẽ chưa thể đào tạo được; hiện tại, chúng tôi không cung cấp cho máy ảo hỗ trợ CUDA để tính toán, nhưng bạn có thể chạy thứ gì đó 24/7 mà không gặp vấn đề gì. Bot khá nhẹ, vì vậy sẽ có lợi hơn nếu áp dụng mức phí trả cho các tài nguyên được sử dụng.

Những phát hiện

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder
Tôi đoán là tôi rất dễ thương. Và tôi có một thế giới nội tâm phong phú. Tôi nhận được khoảng 13 que diêm trong vòng một giờ. Hơn nữa, nhiều lần các cô gái đã viết trước.
Kết quả là, chúng tôi đã kết thúc với những cuộc đối thoại rất thú vị, trong đó tôi nói rằng tôi đến đây chỉ để chơi với máy học và ghi nhãn dữ liệu. Một trong những cô gái vô cùng thích thú vì bản thân cô ấy là một nhà phát triển. Có một cảm giác mạnh mẽ rằng cuối cùng cô ấy sẽ đọc được bài đăng này trên Habré. Tôi thực sự hy vọng rằng Oksana sẽ giữ kín danh tính của mình. 🙂
*vẫy tay và nói xin chào

Một chút về khía cạnh đạo đức của vấn đề

Thành thật mà nói, tôi không thích toàn bộ ý tưởng robot hóa mối quan hệ giữa nam và nữ. Có điều gì đó rất đúng đắn khi ném chiếc áo khoác của bạn qua vai một người lạ lạnh lùng đang đứng một mình. Hoặc tiếp cận một cô gái xinh đẹp trong quán cà phê mùa hè và cùng nhau uống cà phê. Hãy ra khỏi phía sau màn hình rồi.

Mùa hè đang đến gần. Đã đến lúc làm quen.

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder

Cách đón 13 cô gái mỗi giờ bằng máy học và Tinder

Nguồn: www.habr.com

Thêm một lời nhận xét