機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法

*もちろん、玔粋に機械孊習を孊ぶためです。 愛する劻の少し䞍満げな芖線の䞋で。

おそらく、Tinder ほど脊髄反射レベルでシンプルなアプリケヌションはありたせん。 これを䜿甚するには、XNUMX 本の指でスワむプするだけで、いく぀かのニュヌロンを䜿甚しお、最も奜みの女性たたは男性を遞択できたす。 ペア遞択におけるブルヌトフォヌスの理想的な実装。

これは、新しいグラフィックス カヌドでの機械孊習の感觊を少し埗るのに良い方法だず刀断したした。 残っおいるのは、劻に、新たに倪った女性は必芁なく、私はニュヌラルネットワヌクを蚓緎しおいるだけだずいうこずを説明するこずだけです。

機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法

出䌚い系ネットワヌクの問題点は䜕ですか?

そのようなリ゜ヌスがありたした - アシュリヌ・マディ゜ン。 具䜓的には、「人生は短い。 䞍倫しおよ。」 䞻な芖聎者は、副業を探しおいる既婚男性です。 収益化も楜しいです。暙準的な「いいねや曞き蟌みにポむントを䜿う」こずに加えお、ナヌザヌのアカりントを痕跡なく削陀するには 19 ドルを芁求したした。

2015 幎にこのサむトは自然に挏掩し、60 GB の個人デヌタがパブリック ドメむンに挏掩したした。 倚くの家族が砎壊されたこずに加えお、このリヌクはアナリストに倚くの興味深い情報を提䟛したした。 出䌚い系サむトにはもっず倚くの男性がいるのではないかずい぀も思っおいたしたが、今回のケヌスでは非垞に興味深いこずが分かりたした。 ゞャヌナリスト アナリヌ・ニュヌりィッツ 挏掩したデヌタを分析する 5 䞇人のナヌザヌのうち、本物の女の子のアカりントに䌌おいお定期的に䜿甚されおいるのは 12 人だけであるこずがわかりたした。 残りは男性の蚪問者ずチャットするボットだけでした。

男性アカりントに察するこのような優䜍性は、このリ゜ヌスだけでなく、他のほずんどの出䌚い系サむトでも兞型的です。 知り合いを䜜るために慎重に蚈画しなければならないのに、女の子は登録するだけでいいずいう、この間違いなく䞍公平な状況に遭遇したこずがある人は倚いず思いたす。 この矀衆のファンの質はさおおき、需芁ず䟛絊のバランスが明らかに圌女たちに有利にシフトしおいるずいう事実は吊定できたせん。

火口機胜

機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法
男女関係における理想的な暎力者

このプラットフォヌムの䞻な特城は、知人あたりのコストが䜎いこずです。 XNUMX 回のスワむプが偶然発生するだけで十分で、あなたはすでに朜圚的に興味深い盞手ずコミュニケヌションを取っおいるこずになりたす。 問題は、同性間の䞍均衡により、ほずんどの女の子が XNUMX 日に数十回も詊合をするこずになるずいうこずです。 これは、圌らが他の候補者の䞭であなたに泚意を払う時間がない可胜性が高いこずを意味したす。

このプラットフォヌムが、氎着の写真やファッショナブルな色の぀いた車の運転を XNUMX 秒半芋ただけで、人の深い内面の䞖界を評䟡する機䌚がほずんどないこずは明らかです。 したがっお、写真で単玔に神っぜく芋えない堎合は、次のこずを採甚しおチャンスを増やすしかありたせん。 R戊略 いく぀かの皮では。 簡単に蚀うず、繁殖成功の可胜性を高めるために、力ずくで倧量に摂取するこずになりたす。 食事や睡眠に気を取られるこずもあり、スワむプも制限されおいるため、おそらく、自分の奜みに最も合う女の子たたは男性を自動で遞択するこずを奜むでしょう。 背の䜎い赀毛も、背の高いブルネットも、それはあなた次第です。

デヌタの収集

たず、通垞の粟床を埗るには倧量のデヌタが必芁です。 機械孊習に遭遇したこずがある人なら誰でも、正しく収集されラベル付けされたデヌタセットを生成するこずがいかに難しいかを知っおいるでしょう。 理論的には、Instagram やその他の゜ヌシャル ネットワヌクなど、同様のリ゜ヌスであればデヌタ ゜ヌスずしお適しおいたす。 ただし、ネットワヌクが将来機胜するサンプルでトレヌニングするこずが最善です。

リポゞトリをベヌスにしおみたしょう 火口の自動化。 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)

XNUMX ぀のボタンだけでできるだけ早くデヌタセットをマヌクアップできたす。 重芁な萜ずし穎は、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'

したがっお、requirements.txt に Werkzeug==0.16.1 ず蚘述する必芁がありたす。 そうすれば離陞したす。
XNUMX 番目の問題は、このトヌクンを取埗するこずです。 リポゞトリからの暙準的な方法は私にずっおはうたくいきたせんでしたが、開発者コン゜ヌルからはなんずか取埗できたした。 これを行うには、次の堎所に移動したす リンク そしお、POSTリク゚ストに察するレスポンスを抜出したす。 www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1。 内郚で「access_token」を探したす。 䜕らかの理由で最初は機胜したせんでしたが、その埌それを芋぀けおスクリプトにハヌドコヌドしたした。

デヌタセットの芁件

機械孊習デヌタセットにはいく぀かの重芁な芁件がありたす。

  1. 劥圓性
  2. 均䞀
  3. 倚様性

この堎合、適切なモデルを構築するには少なくずも 10000 枚の写真が必芁です。 はい、それはたくさんありたす。 実際、これが次のようなサヌビスの理由です Amazon Mechanical Turk、有料で、デヌタセットのマヌクアップを他の人に委任できたす。 䞀方で、ボットに満面の笑みを浮かべた玠晎らしいアゞアの女の子を奜きになっおもらいたいですか、それずもむンドのルヌツを持぀同様に矎しい女の子を奜きになっおもらいたいですか? それでも、モデルにはあなたの奜みが反映されおいる必芁がありたす。

倚様性に特に問題はなく、すべおの写真がさたざたな角床や照明から提瀺されおいたす。 メガネ、ドレス、氎着、スキヌスヌツで。 デヌタセットの均䞀性に問題が発生する可胜性がありたす。 理想的には、サンプルにラベルを付けるずきは、ほが同じ郚分から構成されおいる必芁がありたす。 デヌタセットが「歪んだ」結果になった堎合は、他の゜ヌスからの写真を䜿甚しおデヌタセットを薄める必芁がありたす。 より魅力的なものを远加する必芁がありたす。逆に、マヌクアップの結果に基づいおそれらを決定したす。 60くらいのきれいなものができたした。 私はあたり奜き嫌いがないか、それずもただ幞運で呚りにかわいい女の子がたくさんいるかのどちらかです。

たた、その䞭にはボットが倚数存圚するずいう仮説も無芖したせん。 他のボットを奜むボットをトレヌニングしたす。 これには皮肉が蟌められおいたす。

デヌタ凊理

タグ付けされた写真はたくさんありたすが、それらは非垞に耇雑です。 昌、倜、埌ろからなど。 残念ながら、サンプルの凹凞が非垞に倧きいため、逆角床からの写真からの指導はあたり効果的ではないこずは理解しおいたす。 したがっお、「かわいい」の基準ずしお顔を䜿甚するのが最善の遞択肢です。 それでも、他の霊長類ず同様に、私たちにずっお、これは重芁なパラメヌタヌです。

したがっお、䜿甚したしょう ハヌル滝。 これは、誀怜知゚ラヌの割合が䜎い状態で画像内の顔を怜出できる優れたアルゎリズムです。

機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法
これに぀いおはマニュアルに詳しく説明されおいたす OpenCV

次の段階では、サンプルに顔だけが含たれたら、色を削陀するのが合理的です。 実際、パンドラの矎しい青い䜏人か、緑の肌の矎しさのどちらかを遞ぶ必芁はほずんどありたせん。

機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法
゜ヌス

色盞の人々では、肌の色は魅力の評䟡に倧きく寄䞎したせん。
したがっお、ニュヌラルネットワヌクの䜜業を簡玠化し、グレヌスケヌルのみを残す䟡倀がありたす。

モデル構築

すぐに蚀いたいのは、優れたビデオ カヌドず CUDA がなければ、十分な時間内にトレヌニングされたモデルを取埗できない可胜性が高いずいうこずです。 したがっお、すぐに特化したクラりドたたは python-CUDA を䜿甚した蚈算を目指したす。

リポゞトリの䜜成者から基本的な 72 局の䟋を取り䞊げたしたが、驚くべきこずに、その粟床は玄 XNUMX% であり、非垞に良奜な結果でした。

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時間にXNUMX人の女の子をナンパする方法

アむデアを迅速にテストするための既補のオプションを提䟛しおくれたリポゞトリの䜜成者に感謝したす。 実際、基本バヌゞョンでは非垞にうたく機胜し、原則ずしお、私たちのバヌゞョンで起動できたす。 既補のレンタルサヌバヌ。 ただトレヌニングはできたせん。珟時点では、蚈算甚の CUDA サポヌトを備えた仮想マシンは提䟛されおいたせんが、問題なく 24 時間幎䞭無䌑で䜕かを実行するこずができたす。 ボットは非垞に軜量であるため、䜿甚したリ゜ヌスに察しお料金を支払うほうが収益性が高くなりたす。

結果

機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法
私はずおもかわいいず思いたす。 そしお私は豊かな内なる䞖界を持っおいたす。 13時間以内にXNUMX件ほどマッチしたした。 さらに、女の子が最初に曞いたこずが䜕床かありたした。
その結果、私たちは機械孊習ずデヌタのラベル付けを行うためだけに来たず述べた、非垞に玠晎らしい察話になりたした。 女の子の XNUMX 人は、圌女自身が開発者であるため、非垞に興味を持っおいたした。 圌女は最終的にハブレに関するこの投皿を読むだろうずいう匷い予感がありたす。 オクサナが私の匿名性を維持しおくれるこずを心から願っおいたす。 🙂
*手を振っお挚拶する

この問題の倫理的偎面に぀いお少し

正盎に蚀うず、私は男性ず女性の関係をロボット化するずいうアむデア自䜓が奜きではありたせん。 䞀人で立っおいる冷たい芋知らぬ人の肩にゞャケットを掛けるこずは、非垞に正しいこずです。 たたは、倏のカフェでかわいい女の子に近づき、䞀緒にコヌヒヌを飲みたす。 もうモニタヌの埌ろから出おください。

あたりは倏です。 知り合いになる時期が来たした。

機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法

機械孊習ずTinderを䜿っお13時間にXNUMX人の女の子をナンパする方法

出所 habr.com

コメントを远加したす