Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder

*Rent för att lära sig Machine Learning, förstås. Under sin älskade frus lätt missnöjda blick.

Det finns förmodligen ingen tillämpning så enkel på nivån av ryggradsreflexer som Tinder. För att använda det behöver du bara ett finger för att svepa och några nervceller för att välja de tjejer eller män du gillar bäst. En idealisk implementering av brute force i parval.

Jag bestämde mig för att detta skulle vara ett bra sätt att få lite känsla för maskininlärning på ett nytt grafikkort. Allt som återstår är att förklara för min fru att jag inte behöver en ny fetare kvinna, och jag tränar bara neurala nätverk.

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder

Vad är problemet med dejtingnätverk?

Det fanns en sådan resurs - Ashley Madison. Specifikt, med sloganen ”Livet är kort. Ha en affär." Huvudpubliken är gifta män som söker en affär vid sidan av. Intäktsgenerering är också roligt - förutom standarden "spendera poäng för att gilla och skriva" bad de om $19 för att radera en användares konto utan spår.

Under 2015 läckte sajten naturligt och 60 GB personlig data läckte till det offentliga området. Förutom många förstörda familjer gav denna läcka mycket intressant information till analytiker. Jag har alltid misstänkt att det fanns mycket fler män på dejtingsajter, men i det här fallet visade det sig vara ganska intressant. Journalisten Annalee Newitz analysera läckt data fann att av 5 miljoner användare liknade endast 12 000 riktiga tjejkonton och användes regelbundet. Resten var bara bots som chattade med manliga besökare.

En sådan övervikt gentemot manliga konton är typiskt inte bara för denna resurs, utan också för de flesta andra dejtingsajter. Jag är säker på att många har stött på denna otvivelaktigt orättvisa situation, när du måste noggrant planera en bekantskap, men tjejen behöver bara registrera sig. Låt oss lämna kvaliteten på denna skara fans åt sidan, men faktumet är obestridligt att balansen mellan utbud och efterfrågan helt klart förändras till flickornas fördel.

Tinder-funktion

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder
Den ideala brute forceren i könsrelationer

Huvudfunktionen hos denna plattform är den låga kostnaden per bekantskap. Ett sammanträffande av två svep räcker och du kommunicerar redan med en potentiellt intressant person. Problemet är att samma obalans mellan könen leder till att de flesta tjejer kommer att ha dussintals matcher per dag. Det betyder att de sannolikt inte kommer att ha tid att uppmärksamma dig bland andra kandidater.

Det är helt klart att plattformen innebär liten möjlighet att bedöma en persons djupa inre värld från en och en halv sekunds blick på ett foto i en baddräkt eller att köra en fashionabel tonad bil. Därför, om du inte bara ser gudomlig ut på dina fotografier, har du inget annat val än att öka dina chanser genom att adoptera r-strategi hos vissa arter. Enkelt uttryckt kommer vi att råka ut och ta in volym för att öka våra chanser till avelsframgång. Eftersom du ibland behöver bli distraherad av mat och sömn, och svep är begränsade, kommer du förmodligen att föredra att automatisering väljer de tjejer eller män som passar din smak bäst. Korta rödhåriga eller långa brunetter - det är upp till dig.

Samlar in data

Först och främst behöver du mycket data för normal noggrannhet. Alla som har stött på maskininlärning vet hur svårt det kan vara att producera en korrekt insamlad och märkt dataset. Teoretiskt sett kommer alla liknande resurser att vara lämpliga som datakälla, oavsett om det är Instagram eller andra sociala nätverk. Men det är bäst att träna på de prover som nätverket kommer att arbeta med i framtiden.

Låt oss ta förvaret som grund Tinder Automation. Tinders bilder är alltid offentligt tillgängliga, men "gilla"-funktionen är redan begränsad. Därför är det nödvändigt att extrahera alla levande saker inom radien och noggrant markera dem. Först måste du använda ett ganska enkelt skript:

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)

Det gör att du kan markera datamängden så snabbt som möjligt med bara två knappar. Den viktigaste fallgropen ligger i det faktum att werkzeug-biblioteket har brutit bakåtkompatibilitet och måste tvingas nedgradera det. Annars ger det detta fel.

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'

Därför måste du i requirements.txt skriva Werkzeug==0.16.1. Sedan tar det fart.
Det andra problemet är att få just detta token. Standardmetoden från förvaret fungerade inte för mig, men jag lyckades få den från utvecklarkonsolen. För att göra detta, gå till länk och extrahera svaret på POST-förfrågan i www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Inuti letar vi efter 'access_token'. Av någon anledning fungerade det inte första gången, men sedan hittade jag det och hårdkodade in det i manuset.

Datauppsättningskrav

Det finns flera nyckelkrav för datauppsättningar för maskininlärning:

  1. Lämplighet
  2. Enhetlighet
  3. mångfald

Tillräcklighet i detta fall kräver minst 10000 XNUMX fotografier för att bygga en adekvat modell. Ja, det är mycket. Det är faktiskt därför tjänster som Amazon Mekanisk Turk, där du mot en avgift kan delegera uppmärkningen av din datauppsättning till andra personer. Å andra sidan, vill du verkligen att din bot ska gilla underbara asiatiska tjejer med månsikte eller lika vackra tjejer med indiska rötter? Ändå bör modellen spegla din smak.

Det finns inga speciella problem med variation, alla fotografier presenteras från olika vinklar och ljussättning. I glasögon, klänningar, baddräkter och skiddräkter. Ett problem kan uppstå med datauppsättningens enhetlighet. När vi märker vårt prov bör det helst bestå av ungefär lika delar. Om du får en "skev" datauppsättning måste du späda ut den med fotografier från andra källor. Du kommer att behöva lägga till mer attraktiva, eller vice versa, du kommer att bestämma dem baserat på uppmärkningsresultatet. Jag fick något runt 60% snyggt. Antingen är jag inte för kräsen, eller så har jag bara tur och det finns många snygga tjejer runt omkring.

Jag bortser inte heller från hypotesen att det finns många botar bland dem. Vi tränar en bot som kommer att gilla andra botar. Det finns en viss ironi i detta.

Databehandling

Vi har ett gäng taggade bilder, men de är väldigt blandade. Dagtid, nattetid, bakifrån och andra. Med beklagande förstår jag att undervisning från fotografier från en omvänd vinkel inte kommer att vara särskilt effektiv, eftersom provet blir mycket ojämnt. Därför skulle det bästa alternativet vara att använda ansikten som ett referenstecken på "gullighet". Ändå, för oss, liksom för andra primater, är detta en nyckelparameter.

Därför, låt oss använda Haar kaskader. Detta är en utmärkt algoritm som låter dig hitta ansikten i bilder med en låg andel falska positiva fel.

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder
Detta beskrivs mer i detalj i manualen OpenCV

I nästa steg, efter att endast ansikten finns i provet, är det vettigt att ta bort färg. Faktum är att du knappast behöver välja mellan Pandoras vackra blå denizen eller den grönskande skönheten.

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder
Källa

Hos Hue-människor ger inte hudfärgen ett betydande bidrag till attraktionsvärden.
Därför är det värt att förenkla arbetet i det neurala nätverket och bara lämna gråskala.

Modellbyggnad

Jag vill genast säga att utan ett bra grafikkort och CUDA kommer du med största sannolikhet helt enkelt inte att få en tränad modell i tillräcklig tid. Sikta därför omedelbart på beräkningar i specialiserade moln eller med python-CUDA.

Jag tog ett grundläggande trelagersexempel från författaren till förvaret och, överraskande nog, visade det en noggrannhet på cirka 72%, vilket är ett ganska bra resultat.

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

Om det finns ett bra prov kan det mycket väl vara tillräckligt för att få en fungerande modell.

Låt oss starta boten

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder

Tack till författaren av förvaret för ett färdigt alternativ för att snabbt testa idén. Det fungerar faktiskt ganska bra i grundversionen och kan i princip lanseras på vår färdig hyrd server. Det kommer inte att vara möjligt att träna än, för närvarande tillhandahåller vi inte virtuella maskiner med CUDA-stöd för beräkningar, men du kan köra något dygnet runt utan problem. Boten är ganska lätt, så det skulle vara mer lönsamt att ta en tariff som betalar för de resurser som används.

Resultat

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder
Jag antar att jag är väldigt söt. Och jag har en rik inre värld. Jag fick ungefär 13 matcher inom en timme. Dessutom skrev flickorna flera gånger först.
Det resulterade i att vi fick väldigt trevliga dialoger, där jag sa att jag kom in enbart för att leka med maskininlärning och datamärkning. En av tjejerna var oerhört intresserad, eftersom hon själv är utvecklare. Det finns en stark känsla av att hon så småningom kommer att läsa det här inlägget på Habré. Jag hoppas verkligen att Oksana kommer att behålla min anonymitet. 🙂
*viftar med tass och säger hej

Lite om den etiska sidan av frågan

För att vara ärlig, jag gillar inte hela idén med att robotisera relationer mellan män och flickor. Det är något väldigt rätt med att kasta jackan över axlarna på en kall främling som står ensam. Eller gå fram till en söt tjej på ett sommarcafé och drick kaffe tillsammans. Gå ut bakom monitorerna redan.

Sommaren är överallt. Det är dags att bekanta sig.

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder

Hur man plockar upp 13 tjejer per timme med hjälp av maskininlärning och Tinder

Källa: will.com

Lägg en kommentar