Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Risolvere qualsiasi problema con un solo programma: General Problem Solver

Può un computer risolvere qualsiasi problema? La tecnologia nota come General Problem Solver nasce sorprendentemente a metà degli anni Cinquanta, quando  Herbert A. Simon, J. C. Shaw e Allen Newell (della RAND Corporation) iniziarono a lavorarci, ponendo le basi di quella che sarebbe diventata in seguito l’intelligenza artificiale.

Per poter fare uso del GPS (General Problem Solver) era necessaria la formulazione di un problema come clausole di Horn, utilizzate nella programmazione logica in cui abbiamo un insieme di proposizioni vero/falso in cui al massimo una è vera. Nello schema proposto, si assume che se il problema viene modellato come grafo contenente sorgenti (assiomi) e pozzi (conclusioni) GPS sarà in grado di risolverlo.

Cosa vuol dire “risolvere un problema”?

Mutuando dalla psicologia il concetto di risoluzione, la capacità di problem solving (risoluzione problemi) fa qui riferimento alla guida motivazione che permette di inviduare degli obiettivi (goal) o dei sotto-obiettivi parziali. Se parto da un presupposto, in sostanza, e voglio arrivare ad un obiettivo, mi basta riuscire a formulare logicamente presupposto e obiettivo e la macchina dovrebbe essere in grado di passare dal primo al secondo.

Il problema di questo tipo di formulazione è che richiede una quantità di risorse considerevole, visto che lavora con le clausole di orno che sono computazione oralmente dispendiose richiedono molto spazio in memoria. Anche senza scendere nella complicata nomenclatura che viene utilizzata nell’articolo originale che introduce la macchina, E facile accorgersi che nonostante si possono manipolare oggetti molto complessi a livello pratico è sempre richiesto una capacità computazionale che si scontra con il fatto di avere risorse limitate (gli hardware sono sempre limitati). Questo significa, in sostanza, che l’algoritmo dovrà gestire un grafo tra presupposti e conseguenze di dimensioni troppo grande, che potrebbe arrivare ad essere dell’ordine di grande esponenziale.

Come funziona la macchina GPS (General Problem Solver)

In prima istanza, l’utente definisce le variabili o “oggetti” su cui lavorare, dando un senso alle operazioni disponibili (funzioni): GPS a questo punto genera vari tipi di euristiche, cioè di algoritmi approssimati, per risolvere i problemi stessi. Un esempio (un po’ semplificato, e tratto da qui) potrebbe essere quello di trasformare una formulazione logica discorsiva in una equivalente, con lo stesso criterio con cui possiamo esprimere nella lingua italiana uno stesso concetto usando due frasi diverse.

Ovviamente esiste sempre un margine di errore in questo processo, ma l’euristica – che è un algoritmo approssimato – riproduce questo meccanismo, per cui GPS risolve una sequenza di obiettivi (Goal) consecutivi, mediante operazioni elementari come applica, trasforma, riduci.

Esempio pratico di General Problem Solver

Poniamo di avere l’obiettivo “portare mia figlia a scuola“, e le precondizioni “mia figlia è a casa” e “l’auto è funzionante“. Gli operatori / mezzi per raggiungere l’obiettivo sono quelli che potremmo immaginare: “guida la macchina“, “verifica se sei arrivato a scuola”. Se poi ad esempio la macchina si rompesse, bisognerà definire un nuovo operatore “paga il meccanico” che, a sua volta, preveda che esiste un flusso misurabile di denaro da me al meccanico. Si capisce anche da questo semplice esempio che le clausole sono molto numerose, e possono “esplodere” come dimensione anche per problemi parecchio elementari della vita quotidiana.

Un operatore è composto da azioni (“pagare”) e precondizioni (“avere soldi sul conto”), ed è previsto che la macchina GPS possa modificarle, cancellarle o rimodularle a piacere. L’applicazione della macchina a giochi come quello degli scacchi, storicamente, ha mostrato i limiti di applicazione della macchina, nonostante gli incoraggianti presupposti teorici da cui partiva.

Perchè è importante?

In queste situazioni gli informatici più fissati con il pragmatismo potrebbero obiettare che non serve a granchè, tutto questo. In parte gli potremmo dare ragione, e giustifichiamo in prima istanza la nostra esposizione per pura passione per la storia dell’informatica. Ma c’è anche un aspetto importante da non sottovalutare: periodicamente queste questioni ritornano all’ordine del giorno, e non c’è da meravigliarsi del fatto che vari appassionati di intelligenza artificiale abbiano riproposto in salsa moderna gli stessi problemi. Se conosciamo la storia, in sostanza, evitiamo di ripetere approcci che sono noti per essere fallimentari e possiamo allocare al meglio le nostre risorse.

L’importante è che questo studio è stato condotto gioia anni 50 perché dimostra che è numerare le varie possibilità per risolvere un problema è una strategia in genere sconsigliabile: non tiene conto infatti della limitatezza delle risorse a cui l’informatica deve fare comunque appello (memoria RAM, disco, processore ecc.). Motivo per cui gli algoritmi più complicati per il trattamento del linguaggio per la creazione di immagini da zero non sono enumerativi, cioè non provano tutte le possibilità finchè non imboccano la giusta strada, ma seguono il più delle volte degli approcci euristici che individuano le soluzioni in modo smart, con “criterio”, formulando apposite regole e cercando di effettuare meno operazioni possibili (ovviamente semplifico un po’ per amor di trattazione).

Il contributo scientifico di Newell e Simon possiede pertanto un’importanza fondamentale: è stato il primo programma per computer che ha separato la conoscenza dei problemi (regole) dalla strategia per approcciarli (un generico motore di risoluzione). E questo è stato sempre usato nel seguito, ed è utile ancora oggi a livello di metodo di risoluzione di problemi generici.

È stato anche visto, peraltro, che mentre un sistema del genere può risolvere agevolmente formulazioni delle torri di Hanoi, ad esempio, non può risolvere problemi reali perchè la dimensione dell’istanza aumenta troppo velocemente (banalmente, deve considerare troppi casi e non dispone di abbastanza memoria per farlo). Tuttavia anche questo è molto utile da sapere, perchè di fatto esclude la possibilità di risolvere problemi reali mediante enumerazione dei dati (es. provando tutte le possibilità).

Immagine di copertina generata da StarryAI

(fonte)

👇 Da non perdere 👇



Questo portale esiste da 4469 giorni (12 anni), e contiene ad oggi 7534 articoli (circa 6.027.200 parole in tutto) e 14 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.