«[Figlio dell'uomo] Porgi l'orecchio e ascolta le parole di KGB
e applica la tua mente alla SUA istruzione
» Pv. 22,17

Qui si straparla di vari argomenti:
1. Il genere dei pezzi è segnalato da varie immagini, vedi Legenda
2. Per contattarmi e istruzioni per i nuovi lettori (occasionali e non) qui
3. L'ultimo corto è questo
4. Molti articoli di questo blog fanno riferimento a definizioni e concetti che ho enunciato nella mia Epitome gratuitamente scaricabile QUI. Tali riferimenti sono identificati da una “E” fra parentesi quadre e uno o più capitoli. Per esempio: ([E] 5.1 e 5.4)

lunedì 21 marzo 2016

Corso sulla modellizzazione

Qualche giorno fa ho provato a iniziare a seguire un nuovo corso in linea: Model Thinking tenuto dal professor Scott Page dell'università del Michigan.
Come al solito non ero sicuro dell'argomento ma avevo una mezza idea e volevo verificarla: speravo infatti di poter adattare il contenuto di questo corso con l'idea di modellizzazione che ho in mente, sebbene in prospettiva, per il mio minicorso di programmazione (v. CdP Lezione 0 e seguenti). Ritengo infatti che riuscire a farsi un modello, in senso lato, della realtà del problema che si vuole risolvere (cioè scrivere un algoritmo che lo risolva) sia alla base della programmazione.

Attualmente ho seguito le lezioni della prima settimana e ho iniziato la seconda e posso quindi trarre le prime conclusioni: il corso risponde in pieno alle mie aspettative e, anzi, offre pure qualcosa in più. Si analizzano decine e decine di diversi modelli utilissimi in molteplici contesti; non è un corso orientato alla programmazione ma anzi “si vende” a praticamente ogni branca accademica: dalla biologia e sociologia fino alla filosofia e altre scienze umanistiche!
Inoltre il corso presenta un programma NetLogo che è un ambiente di sviluppo per creare nuovi modelli e, ovviamente, usa il proprio linguaggio di programmazione.
Per questo motivo pensavo di usare questo linguaggio quando inizierò a mostrare come passare dallo pseudo codice al codice vero e proprio: essendo un linguaggio molto specializzato (per la realizzazione di modelli) lo affiancherò a uno generale (credo Python) in maniera da evidenziarne le differenze.

Il corso ha anche qualche pecca: il professore parla un inglese ultra rapido (spesso anche i sottotitoli non riescono a comprenderlo o sono semplicemente sbagliati!) che non aiuta la comprensione; il suo entusiasmo per la materia è eccessivo e le dà più valore di quanto non abbia: difficile spiegare a parole dove stia il problema di questo atteggiamento e quindi cercherò di spiegarlo col seguente esempio pratico.

Probabilmente l'argomento più importante della prima lezione (che ovviamente conteneva molte spiegazioni introduttive) è il modello di Schelling per la segregazione.
Lo scopo del modello è quello di cercare di spiegare il motivo per cui nelle grandi città americane ci sia un'impressionante segregazione razziale nella scelta della propria residenza: il professore ha mostrato delle mappe colorate in base alla razza (bianchi, neri, ispanici e orientali) di città come New York, Detroit o Washington che evidenziano chiaramente il problema.
Ovviamente (siamo alla prima lezione!) il modello è semplicissimo: gli agenti sono le singole famiglie e se ne vuole simulare il comportamento della scelta della propria residenza.
Gli agenti sono disposti inizialmente in maniera casuale su una griglia: ogni agente ha quindi otto caselle vicine dove ciascuna di esse può essere dello stesso colore (razza), diverso, oppure libera.
L'unica regola degli agenti è: se la percentuale dei vicini del proprio colore è minore di X (dove X è una percentuale anche piccola come il 30%) allora ci si trasferisce in una casella libera.

Grazie a NetLogo è possibile simulare facilmente il comportamento di questo modello cambiando in un attimo ogni parametro (distribuzione iniziale dei colori, grandezza griglia, percentuale delle caselle vuote, valore soglia per innescare il trasferimento, etc...).
Ciò che si osserva è che anche con valori di soglia piuttosto bassi, già dal 30% in su, si ottengono dopo varie iterazioni delle evidente strutture di segregazione: ovvero una divisione della griglia a macchie piuttosto evidenti e dai contorni ben delineati.
La conclusione che si trae da questo modello è molto positiva: anche se le singole famiglie hanno un livello bassissimo di razzismo (cioè si accontenterebbero che il 30% dei propri vicini fossero del proprio “colore”) si ottengono comunque dei significativi livelli di segregazione. In altre parole anche un pizzico di “razzismo” al micro livello (quello delle singole famiglie) provoca una sensibile segregazione che farebbe invece supporre un alto livello di “razzismo”. Il professore (e immagino la maggioranza degli americani) è particolarmente soddisfatto da questa spiegazione perché toglie la colpa dal singolo e la passa al risultato di una moltitudine di anonime e incolpevoli micro interazioni. Ed ecco quindi che il professore si esalta per la potenza dei modelli e di come riescano a spiegare aspetti contro intuitivi della società...

Eppure un modello non rappresenta la realtà: è solo un suo “riassunto” che può essere più o meno significativo e suggerire quindi risposte più o meno corrette.
Le città non sono delle griglie quadrate, quando una famiglia decide di cambiare casa non si trasferisce nella prima abitazione libera che trova, non si decide di cambiare casa in base ai soli otto vicini più prossimi... e si potrebbe continuare con una moltitudine di esempi di questo tipo.
Il fatto quindi che un modello suggerisca una risposta che ci “piace” non costituisce una garanzia della sua correttezza.
In questo caso sarei curioso di sapere se anche le città europee hanno un livello di segregazione pari a quelle americane: se così non fosse bisognerebbe ripensare a quanto questo modello di Schelling sia significativo per il problema che intende risolvere.

Quello che voglio dire è che forse il suggerimento per l'interpretazione del motivo della segregazione nelle città americane dato da questo semplice modello è corretto: magari è stato confermato da studi sul campo o da altri esperimenti; benissimo, ma non è questo il mio punto.
A mio parere l'unica vera lezione che si può apprendere da questo modello, così come ci è stato presentato, è che regole semplici per le singole parti possono produrre collettivamente dei risultati che presentano schemi complessi e talvolta in apparente contrasto con le regole che guidano il comportamento dei suoi elementi costituenti. Per me rimane valido il detto sufi «Quando odi il suono degli zoccoli pensa a una zebra»: ovvero considera quanto un modello suggerisce ma tieni sempre presente la possibilità di altre spiegazioni.

Il professore nel suo entusiasmo attribuisce ai modelli un potere interpretativo della realtà che mi pare eccessivo. Addirittura il professore cerca di convincere e di convincersi che usare i modelli ci renda più intelligenti invece che, più semplicemente, farci capire meglio un determinato problema.
Ma magari è una mia sensazione, forse dovuta alla velocità con cui parla, però istintivamente diffido dell'entusiasmo eccessivo e continuato perché mi pare molto affine al fanatismo e alla cecità che questo porta con sé.

Conclusione: spero di non aver esagerato con l'accento che ho posto sulle critiche a questo corso, in verità lo trovo complessivamente molto interessante e meritevole di studio!

Nessun commento:

Posta un commento