sublimina.it

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size






  research gate


omino_logo_sublomina


La Conoscenza è come una linea, dove sono i confini non ci è dato di saperlo.

Sublimina.it è un viaggio personale nel mondo del pensiero umano. Per raggiungere ogni meta c'è una via ed ogni via ha un ingresso. Questa è la mia porta personale, l'ho appena aperta. Ognuno ha la sua porta, qualche volta si ha bisogno, però, di intravedere cosa c'è al di là della porta altrui per mirare l'altrove che sta dietro la propria.  Ispirato da: Franz Kafka, Il processo (1925)


Computational Intelligence e Computational Thinking

E-mail Stampa PDF

Se risultasse che le logiche di base di una macchina progettata per la soluzione numerica di equazioni differenziali coincidono con quelle di una macchina destinata a preparare fatture di un grande magazzino, penserei che si tratta della più stupefacente delle coincidenze di tutta la mia vita

Howard Aiken


Sull'Intelligenza Atificiale, l'Intelligenza artificiale ed infine sul pensiero computazionale (Computational Thinking)

Una nuova versione riveduta, corretta e ampliata è scaricabile in PDF da qui.

CortanaIl dibattito intorno alla possibilità delle macchine di pensare come un essere umano è ancora accesso. Negli ambienti accademicii ciò è noto come approccio forte all'Intelligenza Artificiale. Dopo una prima ondata di entusiasmo, a seguito dello storico seminario interdisciplinare nel New Hampshire (1956) dove Marvin Minsky, uno dei fondatori dell'IA osò ribadire che "lo scopo di questa disciplina è di far fare alle macchine delle cose che richiederebbero l'intelligenza se fossero fatte dagli uomini", ci fu qualche battuta d'arresto. Roger Penrose (1931), matematico, fisico e grande divulgatore scientifico britannico, ha partecipato a tale dibattito, cercando di trovare un'argomentazione convincente per poter mettere una pietra tombale alla possibilità delle macchine di imitare l'uomo nella prassi del pensiero. Egli in "La mente Nuova dell'Imperatore" [1] propone un'argomentazione di natura algoritmica secondo la quale alcune caratteristiche dell'intelligenza umana non possono essere intrappolate in schemi, per l'appunto di natura algoritmica. Tra questi la creatività, l'intuito, la coscienza o meglio l'autocoscienza. Egli propone, pur sapendo che la schematizzazione è carente, di distinguere nella formulazione di un giudizio due ambiti: uno in cui è richiesta la coscienza, l'altro in cui questa non è richiesta.

Coscienza richiesta

Coscienza non richiesta

Senso comune

Automatico

Giudizio di verità

Regole seguite senza pensarci

Comprensione

Programmato

Apprezzamento artistico

Algoritmico


Secondo Penrose, alcuni compiti svolti dalla mente non hanno natura algoritmica e quindi non potranno mai essere messi a punto da una Macchina di Turing Universale. Con gli anni gli studiosi nell'ambito dell'Intelligenza Artificiale, sempre tenendo presente l'obiettivo di creare una macchina pensante, hanno imparato, a mio parere, ad essere politically correct e a dichiarare che effettivamente stanno lavorando ad insegnare alle macchine a risolvere problemi specifici di natura cognitiva, che se risolti dagli esseri umani, richiedono un qualche grado di intelligenza. In altre parole l'intento è di creare una nuova intelligenza, che probabilmente avrà natura differente da quella umana. Quest'ultimo approccio è noto come Intelligenza Artificiale debole.

Di fatto, nella storia dell'IA, si possono incontrare numerose discipline anche provenienti da ambiti diversi, utilizzate per approcciare i problemi. Ad esempio la Logica, la Teoria della Probabilità, la Scienza dei Sistemi, ognuno con il proprio momento di gloria seguito da un inesorabile periodo di declino. Il dibattito quindi si è spento e riacceso a seconda della direzione del vento. L'AI è dunque un campo molto vasto, che abbraccia oltre alle discipline su menzionate anche la Computer Science, la Psicologia, la Filosofia, la Sociologia, la Biologia, etc. Oggi il dibattito è molto preponderante sia negli ambiti accademici che non accademici poiché qualcosa è andato modificandosi a livello metodologico e non solo.

L'IA nasce in un contesto multidisciplinare, ma il raggiungimento di tale status è stato un processo talvolta faticoso e, a mio parere, solo la nuova generazione di scienziati e studiosi ha la possibilità di approcciare in maniera veramente multidisciplinare le problematiche ad essa relative. Questo perché essi possono "sedersi comodamente sulle spalle dei giganti" e mirare dall'alto le varie sottodiscipline che compongono questo interessantissimo campo del sapere umano. La nuova generazione, avendo acquisito le metodologie dei pionieri che hanno lavorato ad un livello analitico, hanno potuto proporre una sintesi che non sia solamente la somma delle discipline, ma sia un vero nuovo campo di studi. Cioè un sapere con una propria ontologia che, prima di proporre le soluzioni dei problemi, dia la possibilità di modellarli. Da questa sintesi sono nate discipline come l'apprendimento automatico, la rappresentazione della conoscenza, il ragionamento automatico, la pianificazione, la medellazione ad agenti, l'elaborazione del linguaggio naturale, la computazione neurale ed evolutiva, la visione artificiale integrate con discipline preesistenti, come il ragionamento logico, la robotica, etc. In definitiva, oggi si ha la possibilità di manipolare un sapere multidisciplinare che ha un proprio status quo, capace di proseguire con le proprie gambe. Questo a livello metodologico. Vi è poi un altro fattore che definirei "fattore informativo" secondo il quale, ad oggi, grazie alle tecnologie ICT, le strutture di calcolo sono diventate alla portata di tutti, con costi bassissimi. Non parlo solo di computer e smartphone, anche se molto importanti, ma anche di sensoristica a basso costo che grazie a tecnologie di rete avanzate permettono l'acquisizione di una grossa mole di dati. Questo ha portato a definire il concetto di ubiquitus computing, o computazione pervasiva, dove gli stessi sensori nell'accezione generale del termine hanno discrete capacità di calcolo, quindi di elaborazione e trasporto delle informazioni. Oggi è realmente possibile parlare di intelligenza distribuita, di controllo distribuito ad agenti, dove ognuno non possiede una visione generale dell'ambiente e degli altri agenti, ma è capace di agire e coordinarsi con i vicini talvolta senza un obiettivo iniziale, ma scoprendola successivamente in collaborazione con i vicini stessi. La grossa mole di informazione oggi a disposizione con la rete, e qui computer,  smartphone e tablet la fanno da padrone, è una risorsa inestimabile che i pionieri dell'IA, che redigevano i loro famosi articoli tramite la macchina per scrivere meccanica, si sognavano. Oggi si è in presenza di una miriade di dati che aspetta di essere elaborata, la stessa rete Internet può essere vista come un gigantesco contenitore di dati. L'elaborazione consente al dato di diventare comprensione e quindi di mettere in moto processi decisionali e azioni specifiche. Coloro che devono compiere queste operazioni, siano essi macchine o esseri umani (o ibridi), devono poter operare con informazioni con un alto valore semantico.

Una sottobranca dell'AI, a sua volta scomponibile, è nota come Computational Intelligence. Essa è la branca ideale per affrontare in maniera algoritmica la "complessità", attraverso l'analisi e la sintesi dei cosiddetti "Sistemi Intelligenti". Il punto di svolta sta nel differente approccio, rispetto a quello classico, che tali algoritmi propongono, essendo modellati sulla cosiddetta intelligenza biologica. Essi, infatti, sono altresì definiti come algoritmi "nature inspired". Le macroaree che formano la Computational Intelligence sono:

  • Artificial Neural Network (Reti Neuronali Artificiali);
  • Evolutionary Computing;
  • Swarm Intelligence;
  • Fuzzy System;

Queste aree, assieme alla Logica, il Ragionamento Deduttivo, i Sistemi Esperti, il Ragionamento Case-Based e Simbolico, il Machine Learning, vanno a generare l'Intelligenza Artificiale moderna.

Una definizione più precisa per la Computational Intelligence è la seguente [2]:

Lo studio di meccanismi adattivi per avviare o facilitare comportamenti intelligenti in ambienti complessi e mutevoli (dinamici).

Descriviamo, adesso, per sommi capi, i principali meccanismi alla base della Computational Intelligence.

Reti Neurali Artificiali

Le reti neuronali artificiali sono particolari strutture di calcolo, definite secondo un paradigma algoritmico "connessionista", che espletano la loro funzione imitando le reti neuronali biologiche. L'elemento base è il Neurone Artificiale, avente un semplice modello matematico, che contempla:

  • un certo numero di ingressi, come i dendriti nel cervello biologico;
  • una cosiddetta funzione di rete, che "spara" a seconda dell'input ricevuto;
  • un output corrispondente all'assone nel cervello biologico.

L'insieme di tali Neuroni Artificiali, sono considerabili come una rete formata da connessioni la cui forza è definibile matematicamente in base a dei pesi.

Esistono molte possibili configurazioni e molte possibili applicazioni delle Reti Neurali Artificiali. Esse sono state utilizzate nelle diagnosi mediche automatizzate, nel riconoscimento del parlato, di video e immagini, nella composizione sonora, nelle previsioni meteorologiche e dei mercati finanziari, nella pianificazione di strategie, etc. E' interessante come esse, mediante particolari algoritmi di apprendimento, siano capaci di apprendere compiti specifici, di riconoscere oggetti, di classificare e predire risultati. La memorizzazione delle informazioni apprese avviene in maniera distribuita, quindi in maniera alquanto differente delle memorie classiche con locazioni precise, in tutti i pesi della rete.

Evolutionary Computing

La Computazione Evolutiva (Evolutionary Computing) ha come obiettivo quello di modellare l'evoluzione naturale, dove il concetto cardine è quello della sopravvivenza del più forte. Essa propone algoritmi capaci di organizzare le possibili soluzioni di un problema in popolazioni di cromosomi, che sono un sottoinsieme dello spazio delle possibili soluzioni. Quest'ultimo, iterativamente viene visitato tramite la formazione di nuovi individui, considerati come prole degli individui della generazione precedente, che meglio si adattano alla soluzione del problema stesso. In altre parole sopravvivono le soluzioni più forti, mentre soccombono quelle deboli. La sopravvivenza è dettata da operatori genetici, simili a quelli che operano sui cromosomi biologici e da una funzione nota come fittness che riflette gli obiettivi e i vincoli del problema da risolvere.

Tra le classi di algoritmi evolutivi si hanno gli Algoritmi Genetici, La Programmazione Genetica, dove gli individui non sono soluzioni ma programmi, e altri algoritmi basati sul concetto di evoluzione, competizione e cooperazione.

Swarm Intelligence

La Swarm Intelligence nasce dallo studio e dal modellamento dell'organizzazione di organismi sociali in colonie o sciami. Ad esempio si hanno algoritmi modellati sul comportamento delle formiche e del loro utilizzo dei ferormoni (Ant Colonies Algorithm), oppure algoritmi basati sul volo di gruppo degli uccelli. Essi sono molto fruttuosi nei cosiddetti problemi di ottimizzazione globale, ovvero in quella classe di problemi il cui obiettivo è avvicinarsi alla soluzione migliore. L'algoritmo nel caso dello sciame (Particle Swarm Optimization) genera un insieme di individui capaci di volare all'interno dello spazio multidimensionale delle soluzioni. Gli individui sono capaci di comunicare con un gruppo di vicini cosicché quanto si è prossimi ad una possibile soluzione essi comunicando si addensano presso quest'ultima. Di solito matematicamente tale problema è esprimibile come un problema di minimo e le particelle di soluzione "volano" fino ad addensarsi attorno al minimo cercato. Anche in questi algoritmi gioca un ruolo essenziale la fitness, che misura la performance delle varie particelle esploratrici. Algoritmi basati sul modellamento delle formiche, agiscono in maniera simile, "formicolando" nello spazio delle soluzioni e lasciando un ferormone nei pressi di un punto dello spazio multidimensionale definito come buono (vicino alla soluzione). Le formiche nei paraggi allora saranno portate a gironzolare nei paraggi alla scoperta di punti migliori.

Fuzzy System

La Logica Fuzzy, teoria con la quale sono implementati i Sistemi Fuzzy, è una particolare branca della logica, relativamente recente che si differenzia dalla cosiddetta Logica Classica poiché rifiuta come assioma costituente la legge aristotelica del terzo escluso (tertium non datur). In una concezione classica della logica e della teoria degli insiemi possiamo dire che un oggetto o appartiene all'insieme dato o non vi appartiene. Non si da una terza possibilità. Secondo la Logica Fuzzy (fuzzy è traducibile anche con "sfumato"), un oggetto appartiene ad un insieme (fuzzy ) in una certa misura. In altre parole è possibile stabilire una misura di appartenenza dell'oggetto all'insieme, che nei "casi estremi" coincide con il concetto di appartenenza classico o aristotelico. Stesso vale per il concetto di verità o falsità assegnabile ad una proposizione. Secondo la Logica Fuzzy una proposizione può essere vera in una certa misura. Sembra che i fatti riguardo al mondo siano effettivamente sfumanti e quindi tale logica appare come un metodo per descriverli. Inoltre il metodo con cui opera inferenza sembra catturare l'approssimazione con cui opera un comune essere umano. Di fatto tale logica consente di modellare in una macchina quello che oggi è noto come Ragionamento approssimato, in quanto riesce a catturare l'incertezza sui fatti del mondo. E' importante tenere presente che nella Logica Fuzzy il termine "incertezza" non ha la stessa accezione che in teoria della Probabilità. Non entrerò nei dettagli, ribadisco solo che l'incertezza probabilistica è riferita ad un evento che deve accadere e su cui si modella una legge di probabilità. L'incertezza fuzzy consiste nel modellare l'ambiguità di un qualcosa di dato al fine di catturarne la vaghezza o meglio la fuzziness. La Logica Fuzzy trova profique applicazioni nel modellamento del ragionamento, nel controllo e nel riconoscimento di pattern. La caratteristica migliore risiede nella possibilità di definire regole in maniera semplice che si applicano a sistemi complessi di cui può anche non essere nota a priori una descrizione matematica in forma chiusa.

Le tecniche appena descritte sono nate come discipline al quanto separate, ma oggi, come ribadito in precedenza, appartengono ad un comune bagaglio di conoscenze e metodi per i quali è stato possibile operare un' ulteriore sintesi e procedere per astrazioni superiori. Da queste astrazioni sono nati i cosiddetti ibridi, consistenti nell'uso simultaneo di queste tecniche. Ad esempio, vi sono sistemi che espletano un qualche compito utilizzando l'ibrido Fuzzy-Evolutionary Computing, secondo il quale un sistema inferenziale fuzzy è posto in evoluzione nei suoi parametri strutturali al fine di individuarne il set ottimo per lo specifico Problema. Similmente l'ibrido Neural Network-Evolutionary Computing. In questo caso l'algoritmo evolutivo guida l'ottimizzazione nell'apprendimento della rete Neuronale. In definitiva ogni tecnica può essere ibridata con ogni altra, fornendo un tool molto potente per approcciare la complessità dei problemi.

Paradigmi ibridi relativi alla Computational Intelligence


Il potere espressivo ed operativo della Computational Intelligence può essere ulteriormente migliorato ibridando quest'ultima con i cosiddetti Metodi Probabilistici. Tale super-ibrido è inserito in una branca della computazione nota come "Soft computing", nome suggerito dall'Ingegnere, scienziato e Professore di Teoria dei Sistemi (fuzzy) Lotfi Zadeh (1921), colui che, negli anni '60 dello scorso secolo, traspose la Logica Fuzzy dall'altare delle Scienze pure all'Ingegneria dei Sistemi.

La Computational Intelligence talvolta è utilizzata assieme ai metodi Probabilistici e assieme a tecniche di datamining, come il Clustering e la Classificazione. Questi ultimi fanno capo al cosiddetto "Granular Computing", disciplina che nel sintetizzare modelli e suggerire soluzioni ai problemi, pone molta importanza ai cosiddetti "granuli di informazione". A questo punto sono stati messi assieme, in linea di principio, tutti gli ingredienti per poter operare su problemi volti alla complessità. Si può notare come anche il concetto di informazione, e quindi la teoria che ne scaturisce (Teoria dell'Informazione), sia di estrema importanza per l'Intelligenza Artificiale moderna. Questo insieme di discipline, compreso lo studio dell'informazione e della sua elaborazione e della sua trasmissione, apparteneva ad un campo ben specifico noto come Cibernetica.

Norbert Wiener (1894 -1964), pioniere nell'Intelligenza Artificiale e nella Stessa Cibernetica in "Introduzione alla Cibernetica" (1950), ci illustra in maniera quasi profetica come l'uomo stia costruendo macchine sempre più brave a svolgere compiti un tempo appannaggio dell'intelligenza umana. Inoltre mostra come un giorno le macchine saranno più intelligenti attraverso il paradigma dell'imitazione dell'intelligenza biologica. Profeticamente, considerando l'informazione come un punto essenziale dello sviluppo delle macchine, ci ammonisce dicendo che [3]:

" la società può essere compresa soltanto attraverso lo studio dei messaggi, e dei mezzi di comunicazione relativi ad essi; e che nello sviluppo futuro di questi mezzi di comunicazione e di questi messaggi, i messaggi tra l'uomo e le macchine, fra le macchine e l'uomo, fra le macchine e le macchine sono destinati ad avere una parte sempre più importante".


Computational Thinking

L'Intelligenza Computazionale  e i suoi ibridi, come abbiamo visto, forniscono i veri e propri "attrezzi" per poter operare sui sistemi e sui problemi complessi. L'Intelligenza Artificiale e la Cibernetica nascono nella metà dello scorso secolo come manifesti su cui basare la fede nell'intelligenza delle macchine. I pionieri, come Alan Turing, John von Neumann, Norbert Wiener, Martin Minsky e molti altri, erano convinti che in un futuro, non troppo lontano, molto di quanto si prospettava sarebbe diventato realtà. Qualcuno obietta che niente è stato fatto e le macchine sono solo ammassi di chip senza un briciolo di intelligenza, di comprensione, di intuito, di creatività. Per dirla in una sola parola di umanità.

A mio parere la verità sta per lo mezzo. Da una certa prospettiva siamo ben lontani dall'aver creato una macchina pensante come un essere umano, da un'altra (più debole, ma altrettanto forte), bisogna essere onesti nel riconoscere che l'"intelligenza delle macchine" è diventata parte integrante dell'intelligenza umana. Al momento non saprei se le ripercussioni nel prossimo (a breve in realtà) futuro, come prevede Ray Kurzweil, siano quelle di avere una simbiosi tra intelligenza biologica ed intelligenza meccanizzata così perfetta da generare una "singolarità" nell'evoluzione dell'intelligenza umana stessa. Al contempo è palese che, di fatto, una'integrazione simbiotica tra le due intelligenze esiste. "Simbiotica" è il termine adatto in quanto, a questo stadio dell'evoluzione, si potrebbe inferire che se venisse a mancare l'intelligenza delle macchine, vi sarebbero delle grosse ripercussioni sull'ordine che la società ha raggiunto. Questo perché essa si è sviluppata anche partendo da questi presupposti. Immaginiamo di spegnere Google per un giorno. Sarebbero grossi grattacapi, molti si annoierebbero, altri non andrebbero a lavoro perché non avrebbero disponibile il loro strumento base, qualcuno, sebbene per poco tempo, sarebbe anche contento. Ma ingigantiamo l'esperimento mentale e immaginiamo, adesso, di spegnere l'intera rete Internet, e tutte le apparecchiature elettroniche quotidiane, telefoni, cellulari, smartphone computer, elettrodomestici programmabili. Immaginiamo che questo accada di colpo e per un tempo indefinito e ignoto. Cosa succederebbe? E' difficile rispondere con precisione, ma a grandi linee possiamo immaginare. Si ingenererebbe una "oscillazione" nell'ordine sociale di portata gigantesca a seguito dell'importante discontinuità dovuta allo spegnimento delle macchine. Non è detto che si arriverà all'estinzione, ma sicuro succederebbe qualcosa di alquanto singolare...

Assodato che le macchine, sia in forma meccanica che digitale, siano parte integrante della nostra quotidianità, possiamo affermare che esse, sebbene non ci controllino, sono necessarie al nostro attuale funzionamento in quanto sono ormai correlate ai nostri procedimenti cognitivi. E' utile considerare che in qualsiasi ambito della conoscenza, nella maggior parte dei casi, le nuove generazioni, partano dalle conquiste raggiunte con sforzi mostruosi dalla generazione precedente. Questo fenomeno deriva da una differenza appartenente alla sfera cognitiva e si sperimenta ogni qual volta un anziano, per cause di forza maggiore, debba operare con un computer. Mediamente ci si trova d'innanzi un individuo intelligente che non riesce a utilizzare il computer o, se vi riesce, sembra farlo in maniera "strana". Non è questione di intelligenza infatti, ma di sviluppo cognitivo, di cambiamento di paradigma nella struttura del pensiero. Come le macchine si sono evolute ed hanno automatizzato i compiti più disparati, svolgendoli con un certo grado di intelligenza e perlopiù correttamente, il nostro cervello, nelle funzioni cognitive, si è adeguato evolutivamente. In realtà tale "connessione cognitiva" si è rafforzata in un miglioramento graduale nell'interazione uomo-macchina non unilaterale. In altre parole si è avuta un'evoluzione semantica, sia per quanto riguarda la direzione macchina--> uomo, sia uomo-->macchina. Le applicazioni si sono adattate al sistema cognitivo che si è adattato a sua volta alle applicazioni, in un processo retroattivo autosostenentesi a carattere crescente. Programmare un computer degli anni '50 dello scorso secolo era appannaggio di pochi eletti, appartenete all'olimpo dei geni, oggi è alla portata di tutti, anche delle intelligenze normali. Questo perché si è avuto uno sviluppo semantico, attraverso astrazioni successive che hanno permesso di generare "interfacce" cognitivamente appetibili. Ciò ha portato ad avvicinarsi ai computer un numero sempre maggiore di persone e ad utilizzarli per le applicazioni più disparate, lontane un abisso, dal loro basico funzionamento. Howard Aiken (1900 - 1973), pioniere nella Computer Science e fondatore dell' Harvard Computation Laboratory, nel 1956 sostenne a tal proposito (citato in [4]):

"se risultasse che le logiche di base di una macchina progettata per la soluzione numerica di equazioni differenziali coincidono con quelle di una macchina destinata a preparare fatture di un grande magazzino, penserei che si tratta della più stupefacente delle coincidenze di tutta la mia vita."

Di fatto, non è semplice comprendere tale coincidenza ma compiti così prossimi all'apparato cognitivo umano sono svolti, basilarmente, con le stesse logiche utilizzate per svolgere una somma aritmetica.

In definitiva possiamo asserire che l'evoluzione tecnologica ha portato studiosi e scienziati a costruire sistemi capaci di elaborare l'informazione in maniera da conferirle alto contenuto semantico in riferimento alla "risposta semantica" umana. Allo stesso modo tale evoluzione semantica ha modificato parte della mappa cognitiva umana (mi riferisco alle popolazioni digitalizzate). Questo punto è molto importante e richiede ulteriori approfondimenti, che al momento non tenterò. E' d'obbligo però, a questo punto, citare Alfred Korzibsky (1879 - 1950), ingegnere, creatore della "Semantica Generale" esposta in "Science e Sanity" [5] nel 1933 e nelle edizioni rivedute successive, che descrivere le differenze tra comportamento umano ed animale come differenze nella "risposta semantica" (in precedenza il termine non è stato utilizzato a caso) tra questi ultimi. Nella sua opera Korzibsky getta le basi di gran parte del pensiero moderno e post-moderno, riconoscendo al linguaggio un ruolo semantico strettamente correlato alla struttura cognitiva umana. E riconosce e descrive in maniera ineccepibile come esso si sviluppi attraverso una struttura verticale astratta multidimensionale e gerarchica. Qualsiasi attività umana, specialmente quella linguistica, che rispecchia le modalità di pensiero, appartiene a tale struttura che parte, e questo vale per tutti, dal tessuto nervoso ed evolve attraverso astrazioni successive. Ciò che differenzia l'essere umano dal mondo animale è proprio questa capacità di astrazione multiordinale. Egli individua 1) nella "sanità mentale" la capacità di manipolare quest'astrazione, 2) nel "migliorare le condizioni di vita" la capacità di accedere a livelli astratti sempre più alti. Quanto esposto è una parte infinitesima del pensiero di questo scienziato, ma è utile per comprendere come da qualche tempo stia nascendo, negli ambienti accademici di Computer Science, e si stia sviluppando grazie alla rete, una nuova maniera di approcciare il pensiero: nel futuro si penserà in maniera computazionale.

Questa particolare tipologia di pensiero è diventata un campo di studi a sé, noto come "Computational Thiking".  Essa, sebbene sia posizionabile sotto l'egida dell'Intelligenza Artificiale, è un qualcosa a se, con metodi e tecniche ben strutturati che sono diventati realtà in discipline come l'Ingegneria, la Biologia, la Chimica, la Fisica, l'antropologia, la linguistica, l'economia, la criminologia, etc. Se si inserisce su Google la chiave "Computational" ci si trova dinnanzi una schiera di discipline che, appartenenti a campi differenti che spaziano addirittura dall'ambito scientifico a quello umanistico, condividono una metodologia comune che tenterò di descrivere nel seguito.

Il pensiero computazionale nasce da una serie di conquiste che l'Intelligenza Artificiale, e in particolare la Computer Science, ha effettuato nei più svariati campi del Sapere. Questa particolare modalità di pensiero è stata portata alla ribalta da molti studiosi tra i quali spicca una professoressa Jannette M. Wing, Presidente del Dipartimento di Computer Science alla Carnegie Mellon University. Ella in un suo articolo-manifesto [6] dal titolo esplicativo "Computational Thinking" sostiene che:

Computational thinking will be a fundamental skill used by everyone in the world by the middle of the 21st Century.

Inoltre spiega come il pensiero computazionale possa essere un'attitudine che può essere appresa al pari della lettura, della scrittura o dell'aritmetica. Esso consente altresì di ottenere risultati che gli esseri umani da soli non possono ottenere nel Problem Solving, nella progettazione dei sistemi e nella comprensione della potenza e dei limiti dell'intelligenza umana e delle macchine. Inoltre permette di fornire risposte soddifacenti a domande come: Cosa gli esseri umani possono fare meglio dei computer?  Cosa i computer possono fare meglio degli umani? Cosa è computabile?

Attraverso il Computational Thinking possono essere risolti i problemi in maniera efficiente, andando a capire prima quale sia la soluzione approssimata che fa il nostro caso e poi computandola, utilizzando processi randomici a vantaggio del calcolo. In altre parole permette di descrivere prima le difficoltà del problema e successivamente di chiedersi come può essere risolto nel migliore dei modi. Secondo l'autrice il Computational Thinking è:

  • pensare ricorsivamente;
  • riformulare problemi apparentemente difficili in problemi di cui si conosce il procedimento per giungere alla soluzione attraverso: la riduzione; l'inglobamento; la trasformazione; la simulazione;
  • scegliere una rappresentazione appropriata e modellando gli aspetti rilevanti in maniera trattabile;
  • interpretare i "dati" come "codice" e il "codice" come "dati";
  • usare astrazione e decomposizione per approcciare compiti grandi e complessi;
  • giudicare il designe dei sistemi anche per la semplicità e l'eleganza;
  • type checking, come generalizzazione dell'analisi dimensionale;
  • prevenzione, detezione e recovery partendo dal caso peggiore attraverso l'utilizzo della ridondanza, il contenimento dei danni e la correzione degli errori;
  • modularizzazione anticipata per utenti multipli e prefetching and caching anticipata per gli utilizzi futuri;
  • è evitare "race condition" e deadlock nel sincronizzare compiti ed eventi;
  • utilizzare agenti computazionali per approcciare problemi hard relativi all'Intelligenza Artificiale;
  • è approcciare la soluzione dei problemi, il progetto dei sistemi, la comprensione del comportamento umano attraverso i paradigmi della Computer Science.

Nello stesso articolo e in numerose conferenze Jannette M. Wing sostiene che:

"Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction".

Questa affermazione mostra come si possano immaginare delle modalità di pensiero simili a quelle di uno Scienziato dei Computer per programmare meglio i computer stessi. E come tale attitudine possa essere raggiunta con livelli successivi di astrazione, proprio come Korzibsky sosteneva agli inizi del Novecento.

Infatti il Pensiero Computazionale consente di "scalare" la complessità attraverso l'astrazione su livelli successivi definendone le relazioni e automatizzando tali astrazioni e relazioni. Tale lavoro può essere eseguito attraverso specifici modelli e notazioni tenendo presente che, allo strato inferiore, vi è una qualche macchina, sia essa un computer, umana o virtuale.

Considerando il pensiero computazionale come un mutamento di paradigma, è possibile notare come ad esempio, la statistica sia divenuta "computazionale" con le moderne tecniche di machine learning, oppure come ormai la biologia non possa prescindere dai modelli matematici e computazionali attraverso la cosiddetta bioinformatica. Altre sfide che si stanno consumando sono nella Teoria dei Giochi, proveniente dall'ambito economico, il nanocomputing, proveniente dall'ambito chimico, e la computazione quantistica, proveniente dall'ambito fisico.

A mio parere, operando una review della letteratura, vi è uno sforzo nella direzione, suggerita da Wing, di insegnare anche nelle scuole inferiori tale modalità di pensiero iniziando a cambiare il nome di corsi di informatica  da "Corso di programmazione [linguaggio x]" a "Modi per pensare come un Computer Scientist".

Questi sforzi, a mio avviso, vanno nella direzione indicata in precedenza, secondo la quale le nuove generazioni possono operare una sintesi, attraverso astrazioni successive, ed insegnare nuovi modi di pensare e nuove strutture cognitive attraverso le quali le generazioni successive creeranno cose, impensabili solo venti anni addietro.




Bibliografia

[1]

R. Penrose, La Mente Nuova dell'Imperatore, RCS Libri S.p.A., Ed. Milano, Italy, 1992 (1989).

[2]

Engelbrecht and P. Andries, Computational intelligence : an introduction, J. Wiley & Sons, Ed. Chichester, Hoboken, N.J., England, 2002.

[3]

N. Wiener, Introduzione alla cibernetica, Boringhieri, Ed. Torino, Italy, 1970.

[4]

M. Davis, Il Calcolatore Universale. Milano, Italy: Adelphi Edizioni S.p.A. , 2012(2000).

[5]

A. Korzibsky, Science and Sanity, IV ed. Brooklyn, New York, USA: Institute of General Semantics, 1933.

[6]

J. M. Wing, "Computational Thinking," CACM, vol. 49, no. 3, pp. 33-35, March 2006.


Aggiungi commento


Codice di sicurezza
Aggiorna

Hanno detto..

NewS - Le Scienze

You are here: L'ingegnere Errante Computational Intelligence e Computational Thinking