Reti neurali, Multibayesiani e Social network

Questo e’ un post che riguarda un pochino di tecnologia, quindi se non siete interessati o se non avete familiarita’ con le tecniche di cui parlo, probabilmente vi sembrera’ noioso. Se invece siete piuttosto tecnici e vi interessa una forma di autodifesa automatica per social networks, allora forse questo post vi interessa.
Avendo partecipato alla Meme War del 2016, ho visto come viene architettata una campagna per la distruzione della reputazione e della comunicazione avversaria. Parlo di distruzione della comunicazione e della reputazione avversaria perche’ nel mondo del populismo la vittoria non arriva quando si hanno candidati particolarmente attraenti o brillanti, e nemmeno arriva perche’ avete capacita’ di comunicazione superiori.
La vittoria di un movimento populista avviene perche’ si organizza una campagna che ha due scopi:
  • La distruzione della reputazione dell’avversario presso il pubblico.
  • La distruzione della comunicazione degli avversari con il pubblico.

Il motivi che spingono le persone a votare il candidato X sono essenzialmente due:
  1. Reputazione: la persona piace.
  2. Dibattito pubblico: gli argomenti della persona dominano il dibattito.
La strategia “social” dei populisti e’ semplice: montare un’onda di fango che distrugga la reputazione del candidato avversario, e poi attaccarsi a tutti i post dell’avversario (e dei suoi sostenitori) buttando tra i commenti un’altra onda di fango e insulti prefabbricati, spesso iniettati nel dibattito usando degli appositi bot.
Questo rende il dibattito pubblico impossibile. Ci sono essenzialmente due tipi di post di questo genere: il primo e’ detto “shitposting” e consiste nel buttare nel dibattito (=rispondere in questo modo a qualsiasi post della persona presa di mira) una quantita’ gigantesca di off-topic, affermazioni stupide, leggende metropolitane, storie improbabili, e tutto quello che serve a rendere impossibile seguire un thread.
La seconda e’ quella di riempire di calunnie, sospetti e accuse i commenti a qualsiasi post della persona, in modo da distruggerne la reputazione.
Ma per fare questo, questo stormo di robots deve per prima cosa fare una cosa: seguire il vostro account, per avere la notizia che avete postato qualcosa. Tutto inizia, cioe’, quando questi bot si “attaccano” al vostro account, quando iniziano a seguirvi.
Adesso andiamo alla parte tecnica. Dopo aver visto questa strategia all’opera negli USA, mi sono chiesto:
ma esiste una maniera automatica, robotizzata, di respingere questi attacchi? Magari con l’uso di tecniche di deep learning o di AI?
Mi sono venute in mente un paio di idee e ho fatto un primo tentativo, che e’ fallito miseramente. Il fallimento era dovuto ad una cosa: mi basavo sui contenuti. Il guaio e’ che basandosi sui contenuti, una IA puo’ essere aggirata facilmente:
  1. Il bot non ha mai postato nulla.
  2. Il bot ha solo ripostato post di altri, che magari sono “graditi”
  3. Il bot ha solo ripostato vostri post, che non potete escludere per non riempirvi di falsi positivi.
Mi sono interrogato a lungo sull’errore, sinche’ non ho capito che, per l’appunto , il problema era che stavo sbagliando dimensioni. Sbagliando dimensioni significa che stavo cercando di operare delle scelte su un social network basandomi sul contenuto, quando il contenuto NON e’ la cosa piu’ importante del social network.
Certo, il MIO problema era di filtrare una certa qualita’ di contenuti, e quindi mi sono focalizzato su quelli. E quindi ho fallito perche’ il social network non e’ un sistema fatto per diffondere contenuti. Certo che i contenuti si diffondono, ma il social network e’ fatto per connettere persone. Il punto non sono i contenuti, ma le reti di relazioni.
Quindi, quando penso per esempio che “voglio bannare i contenuti fascisti” sto sbagliando.Il vero problema e’ di bannare dal mio account “i network dei fascisti”.
Questo approccio ha funzionato, e con una brutalita’ ed un’efficacia incredibile. Prima , trollando gli account fascisti mi sono trovato con quasi mille followers in meno di un mese. Tutti questi bot ovviamente vomitavano le loro porcherie non appena osavo rispondere male al “Capitano” o ad altro fasciame vario , compresi molti antifascisti, che sono (spesso, troppo spesso) identici ai fascisti. (io li chiamo fascisti di segno negativo).
La seconda volta che ho condotto l’esperimento, quando ho usato un approccio basato sul network e non sui contenuti, anche trollando brutalmente i fasci , i grillini, i leghisti ed altri estremisti, la mia lista di followers e’ rimasta stabile su un numero di persone (circa una sessantina)… che io stesso avrei scelto.
Come funziona il giochino.
Vi servono:
  1. Librerie per reti neurali back propagation. Per la precisione, ne dovete costruire 3.
  2. Librerie per i classificatori multibayesiani.
  3. Una libreria per le API del vostro social network preferito.
  4. Un account che vi permetta di costruire “applicazioni” per il dato social.
Ovviamente lo farete nel linguaggio che preferite. Io ho scelto golang perche’ mi piace molto ma scommetto che la media di voi lo fara’ con python.
Vorrei prima risolvere un’ambiguita’ sui termini: mentre un bayesiano “tradizionale” lavora su due valori, e vi fornisce “likelyhood”, “probability” e “score” delle due possibili scelte, un classificatore multibayesiano e’ un classificatore ove voi infilate il vostro array di stringhe, gli date un’etichetta. TIpo: questo array appartiene alla categoria “ripugnanti”, questo alla categoria “rumorosi”, “following” o “followers”.
Come avrete intuito, lo scopo e’ quello di costruire un classificatore bayesiano che vi dia le probabilita’ che un dato array appartenga ad una di queste quattro categorie. E le quattro categorie corrispondono, appunto, ad un elenco delle persone che voi avete gia’ bloccato, zittito (ma non bloccato), seguito, o che vi seguono.
Quindi dato un utente da esaminare, in uscita dal vostro multibayesiano avrete quattro classi:
  • Ripugnanti (=vicini a quelli che avete escluso).
  • Interessanti. (=vicini a quelli che seguite)
  • Stracciacoglioni.(=vicini a quelli che avete messo in “mute”)
  • Amici degli amici (=vicini a quelli che vi stanno gia’ seguendo)
Ottenuto questo punteggio, dovete prendere una decisione. Siccome non volete scrivere seicentomila “if…then” in nest, una rete neurale e’ perfetta. Diciamo pure che abbiate in tutto cinque decisioni:
  • blocca,
  • tieni come follower
  • rimuovilo dai followers ma non bloccarlo
  • ammutolisci
  • tienilo e seguilo pure
A questo punto, dovete addestrare la vostra rete proponendo degli esempi , tipo:
questi sono gli esempi “canonici”, che dicono alla rete quali percettroni fanno cosa. Le possibili risposte sono definite in questo modo:
in pratica, state addestrando la macchina spiegandole a quale decisione contribuiscono di piu’ i percettroni di input.
Fatto questo, l’algoritmo e’ semplice:
    Il software accede al social network e scarica i vostri followers, i bloccati, gli ammutoliti, quelli che seguite.
    
        Per ognuna delle persone che interagiscono con voi
    
            Scaricate l'elenco delle persone che il candidato segue (i suoi gusti, insomma).
    
            Fate calcolare le probabilita' dal multibayesiano.
    
            Usando queste probabilita', fate prendere una decisione alla rete neurale.

A questo punto scoprirete pero’ che esiste un problema: ci sono alcuni bot che vengono costruiti usando delle liste piccole oppure neutre, tipo giornali mainstream, tv mainstream e cantanti mainstream.
Dovete quindi costruire una seconda rete neurale, che si occupi di scremarli. Il pattern di questo genere di bot e’ molto facile da riconoscere ad occhio, tantevvero che ci riuscite al primo colpo. Costruirete quindi un secondo sistema simile, soltanto che anziche’ infilare elenco degli utenti , usa come strumenti per il bayesiano i dati dell’utente. Significa un array con l’anno di entrata nel social, il numero di followers, il numero di messaggi, la media giornaliera di status, la deviazione standard, la media settimanale di nuovi status, la deviazione standard, il numero di followers, il numero di following.
Per trasformarli in una quantita’ digeribile dalla rete neurale farete digerire questi dati al solito multibayesiano, che li confrontera’ coi medesimi dati dei vostri bloccati, ammutoliti, followers, following. Questo vi permettera’ di filtrare quei bot che sono creati usando delle personalita’ artificiali.
A questo punto avete solo da replicare la cosa ANCHE per quelli che interagiscono con voi, cioe’ con quelli che vi menzionano, che vi mettono il like, eccetera.
Se siete dei discreti programmatori, e avete delle librerie online, costruire una cosa del genere dovrebbe prendervi uno o due giorni. Io in tutto ci ho messo una quarantina di ore-uomo, perche’ sono arrivato a questa soluzione per “trials and errors”.
Che effetto ha avuto e come ha funzionato?
Quello che ho fatto e’ stato quello di creare un account su un social network, e:
  • Bannare gli account notevoli dei gruppi che non volevo vedere: Salvini, Morisi, i vari Kapo’ della Lega, gli account delle sedi locali della Lega, di CasaPau, Beppegrillo, i principali idioti al governo e le personalita’ rilevanti del grillismo, il resto del fascistame,. Anche i principali giornali collegati, tipo il fatto, byoblu, &co.
  • Ammutolire un pochino di quelli che considero fastidiosi, che sono i fanatici antifascisti, tipo femministe TERF, fanatici di sinistra, sessantottini famosi, eccetera. Insomma, gente tipo Vendola, Landini, centrosocialati vari, e relativi giornali.
  • Ho bloccato una lista di stalkers.
  • Seguire un pochino di account che mi piacciono, senza ammutolirli.
  • Seguire un pochino di account che mi piacciono, ma ammutolendoli, in modo da non creare il mute come “piccolo block”. Ci ho messo molto porno, in modo da vedere se il mio account sarebbe rimasto “safe for work”
  • Interagire con un pochino di persone, in modo da farmi seguire.
Una volta fatto questo e raggiunti dei numeri attorno al centinaio di utenti, ho iniziato a trollare gli account dei fanatici e ad andare a litigare sui commenti degli uomini politici piu’ attaccati dai bot. E ho acceso il mio “guardiano automatico”. Il risultato, utente per utente, e’ stato questo:
(CERBERO e MASTHINO sono le due reti neurali che ho descritto sopra. La rete stava girando in “Dry Run”, senza effettivamente bannare. La prima rete neurale ha solo tre decisioni a disposizione, perche’ si basa solo sulle statistiche tipo il numero di stati medio, la deviazione standard, eccetera).
Inizialmente, il guardiano automatico ha bloccato “solo” il 60% degli utenti molesti. Dico inizialmente perche’ poi e’ migliorato. Come e’ migliorato? E’ migliorato perche’ mano a mano che riempiva la lista dei bloccati , la rete di contatti “nemica” diventava sempre piu’ chiara.
Ricordate cosa ho detto all’inizio? Bloccare i contenuti non serve a niente, anche perche’ a seconda dell’argomento in voga in un dato momento, essi cambiano di continuo. Occorrerebbe riaddestrare ogni cosa , di continuo.
Ma i social sono basati su reti di contatti. Facciamo un esempio: i fanatici grillini. Sulle prime, la rete ha bloccato solo quello che avevano , tra gli “amici”, il blog di grillo, byblu, messora e tutta la pila di imbecilli. Ma a quel punto, alla successiva iterazione, aveva una rete piu’ grande da usare per la selezione. E nella rete dei “bloccati” erano caduti anche i personaggi adiacenti a quelli iniziali. Cioe’ gli amici dei pezzi grossi.
Ma alla terza iterazione, mentre al mio account si attaccavano personaggi, sono finiti anche gli amici degli amici. E alla quarta ci sono finiti gli amici degli amici degli amici. E cosi’ via.
Dopo circa un mese , ho una quantita’ grossa di bloccati e una quantita’ grossa di ammutoliti. E non solo: poiche’ la rete oltre che a bloccare si dedica anche a seguire le persone “simpatiche”, e questi piano piano ricambiano, alla fine ho ottenuto delle liste piuttosto “pulite”, nonostante a volte ci siano state delle shitstorm notevoli.
Domanda: e’ possibile sfuggire a questa strategia?
  • Evitare i miei bloccati e i miei ammutoliti e’ impossibile perche’ la lista non e’ pubblica. Dopo N iterazioni e’ anche molto completa.
  • E’ possibile cercare di imitare la mia lista degli amici, ma non e’ possibile averli tra i followers, perche’ la decisione non decide dal software che crea il bot.
Ho notato che ci sono stati diversi tentativi da parte di botnet diverse, che hanno cercato di usare diverse strategie.
  • Quelli che sono arrivati con decine di migliaia di followers e amici sono incappati nella facilita’ di avere nella lista qualcuno che io avevo bloccato.
  • Quelli che hanno cercato di imitare i miei followers sono incappati nell’impossibilita’ di imitare i miei utenti bloccati: piu’ roba metti, piu’ e’ facile che caschi nel buco.
  • Quelli che sono arrivati con pochissimi dati da esaminare sono stati eliminati dallo sbarramento che considera il pattern numerico (numero di followers, numero di stati, deviazione standard, eccetera. La seconda opzione che ho descritto).
La cosa buffa e’ che i fascistoidi non capiscono quanto sia cumulativo questo sistema: per esempio, in qualche iterazione , partendo da una lista di bloccati fascisti, alla lista dei bloccati si sono aggiunti tantissimi fanatici di calcio, perche’ le due reti di contatti erano molto vicine.
Allo stesso modo, non ho dovuto bloccare tutta la lista di stalkers: ne ho bloccati alcuni, poi la rete ha ricostruito l’intero network di connessioni, individuandoli tutti.
E’ degno di nota proprio questo concetto. Ad un certo punto mi sono posto delle domande e ho aperto un altro account, nel quale ho bandito i principali giornali/istituzioni/personaggi in vista di una determinata minoranza religiosa.
Dopodiche’ sono andato a discutere di religione. Risultato: i membri di questa minoranza religiosa NON riuscivano a inserirmi tra i loro “amici”, perche’ avevano quasi sempre dei contatti che erano nella mia lista dei bloccati: semplicemente bloccando ~20 account “notevoli” di questa minoranza religiosa, nessuno dei membri di questa minoranza riusciva piu’ a seguirmi.
Voi vi starete chiedendo: ma in questo modo la lista dei bloccati non e’ destinata a salire all’infinito? No. Perche’ tra le azioni c’e’ anche “unfollow”, cioe’ la rimozione delle persone dalla lista , ma senza il blocco. Quando la lista dei bloccati conterra’ il “nucleo” dei network “avversari”, la stragrande maggioranza dei bot non saranno bloccati, ma rimossi (per questo tra le reazioni ci sono SIA “block” CHE “unfollow”: servono proprio ad usare l’unfollow come “piccolo block” o come “block per i casi meno estremi”. (mentre il “mute” , ho osservato, deve rimanere una categoria a parte, altrimenti i vostri followers continueranno a crescere rimanendo ammutoliti PER VOI , ma non per gli altri).
Quindi il concetto e’: si, e’ possibile contrastare la strategia online dei populisti.
Ma non bisogna fare l’errore di basarsi sui contenuti: e’ possibile vincere non “bloccando i contenuti indesiderati”, ma “bloccando i sub-network indesiderati”.
E siccome i social network sono basati su questo, anche nel mezzo di una shitstorm tremenda, mi sono trovato a bloccare manualmente al massimo 2-3 pesciolini sfuggiti alla rete.
Nelle prime 2-3 settimane. Dopo circa un mese, non ho avuto piu’ bisogno di farlo, e potevo parlare di politica solo con persone civili, ovvero con persone che (anche se non la pensano come me) non sono in nessuna delle categorie che detesto. E i bot sono scomparsi.
Questa soluzione ha funzionato benissimo su entrambi i social network generalisti, dei quali ho trovato delle API decenti. Ha l’unico difetto di essere molto lenta, perche’ quasi tutti i social network applicano un rate limit sulle API che chiedono i dati degli utenti.
Dunque la soluzione c’e’. E dal momento che io non sono un genio, se non e’ mai stata applicata e’ semplicemente perche’…
… non si e’ voluto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *