Intelligenza Artificiale vs Programmazione Algoritmica Classica

Verso l'Intelligenza Artificiale dalla Programmazione Algoritmica Classica

Anthony Quattrone, PhD 30 aprile 2022

I progressi nell'intelligenza artificiale hanno permesso di risolvere in modo efficiente problemi computazionali complessi che in precedenza erano difficili, intrattabili o fortemente combinatori. Questi problemi includono il riconoscimento facciale, il rilevamento di oggetti, la pianificazione dei percorsi e sistemi di raccomandazione online altamente personalizzati.

La sfida per le organizzazioni che si proiettano nel futuro è che i decisori strategici debbano scegliere tra approcci classici tradizionali e approcci di intelligenza artificiale per risolvere problemi computazionali complessi. Entrambi i metodi presentano sfide uniche nella realizzazione di un sistema robusto lungo le dimensioni di accuratezza, costo, difficoltà di implementazione e manutenibilità.

L'approccio di programmazione algoritmica classica alla risoluzione dei problemi

Il paradigma di programmazione classica involves la risoluzione di problemi tramite algoritmi prescrittivi e l'utilizzo di una sequenza ben definita di istruzioni. Gli input sono definiti e vincolati, sviluppando algoritmi per elaborare gli input tramite paradigmi di programmazione definiti (Procedurale, Orientato agli Oggetti, Funzionale e Logico) per produrre output.

Scoprire algoritmi per risolvere problemi efficienti dal punto di vista temporale e spaziale è notoriamente complesso. Nella teoria della complessità computazionale, i problemi sono classificati come P (Polinomiale), NP (Polinomiale Non deterministico), NP-Completo o NP-Difficile. I problemi polinomiali possono essere risolti e verificati rapidamente, mentre i problemi non polinomiali non possono esserlo. I problemi NP sono difficili da risolvere tramite approcci algoritmici classici.

Un esempio di problema P è trovare il percorso più breve tra due punti, mentre un esempio di problema NP è il problema del commesso viaggiatore in cui, date una serie di località, qual è il percorso ottimale per visitare tutti i siti percorrendo la minore distanza possibile. Succede che molti dei problemi che attualmente devono essere risolti computazionalmente rientrano nella categoria NP. Nella maggior parte dei casi, per scopi pratici, una soluzione approssimata è spesso sufficiente. Affrontando la vita quotidiana, gli esseri umani trovano sempre soluzioni approssimate, ad es. la navigazione.

Ci sono sfide di implementazione nel risolvere problemi secondo un paradigma algoritmico classico in modo efficiente. La complessità algoritmica è un ramo dell'informatica che si occupa dell'efficienza con cui gli algoritmi vengono eseguiti nei domini temporale (complessità temporale) e spaziale (complessità spaziale).

Sebbene ci siano molti modi diversi per implementare gli algoritmi, un modo ovvio ma potenzialmente inefficiente per implementare un algoritmo è spesso definito algoritmo "naive". Gli algoritmi più efficienti non sono facili da scoprire e gli informatici lavorano da molti anni per trovare i migliori algoritmi per risolvere classi di problemi. Gli algoritmi nei sistemi di produzione sono implementati in modi temporalmente e spazialmente efficienti. Le più grandi aziende software garantiscono i più alti standard algoritmici tramite peer-programming, simile alla peer-review. Richiedono molti anni di formazione e un alto grado di competenza per implementare algoritmi in modo efficiente.

In senso pratico, mentre le tecniche di programmazione si sono evolute e i linguaggi di programmazione (ad es. C, C++, Java, JavaScript, PHP, Python) hanno variato in popolarità, i principi fondamentali sono rimasti gli stessi da quando i Bell Labs, negli anni '70, scrissero i primi moduli C. Esistono alcuni modi pratici per far funzionare in produzione problemi teoricamente complessi, come l'utilizzo di sistemi distribuiti. Gli approcci avanzati comportano costi più elevati e sono al di fuori delle capacità di tutte le organizzazioni tranne le più progredite dal punto di vista tecnologico.

Data la complessità degli approcci di programmazione algoritmica classici, le organizzazioni hanno da tempo riscontrato difficoltà a creare team efficaci per produrre tali sistemi internamente. Inoltre, molti hanno anche lottato per trovare provider esterni per risolvere sfide di nicchia che sono teoricamente possibili da implementare. La progettazione di un algoritmo specifico diventa significativamente più complessa all'aumentare della complessità del problema. Ciò è particolarmente vero per i problemi multivariati. È preferibile utilizzare approcci algoritmici classici per situazioni in cui un algoritmo può risolvere rapidamente un problema e funziona per la maggior parte dei casi.

L'approccio AI alla risoluzione dei problemi

Il paradigma dell'Intelligenza Artificiale ha tentato di risolvere i problemi in modo generico fornendo input e output desiderati a un sistema e lasciando che il sistema impari a risolvere i problemi. Gli attuali approcci AI vengono eseguiti su computer classici tramite tecniche di programmazione classica. I metodi AI più interessanti sono le reti neurali e l'apprendimento per rinforzo.

Le reti neurali artificiali sfruttano la comprensione umana di come la mente umana apprende e generalizza i problemi. L'apprendimento per rinforzo utilizza agenti fornendo uno stato obiettivo e una serie di scenari. L'algoritmo di apprendimento conserva i risultati preferibili e scarta quelli sfavorevoli su più iterazioni. L'apprendimento per rinforzo è analogo al condizionamento operante. L'agente impara come raggiungere l'obiettivo su molte iterazioni di addestramento.

Un requisito per l'addestramento di soluzioni di intelligenza artificiale è un vasto dataset ben definito, solitamente compilato utilizzando una combinazione di vari data warehouse o crowdsourcing, oppure un sistema può imparare a raggiungere uno stato obiettivo eseguendo una serie di iterazioni. Un esempio di ciò è un sistema che gioca una partita contro se stesso, come gli scacchi o Go, per imparare ulteriormente come sviluppare strategie per migliorare i risultati. Le reti neurali artificiali e il reinforcement learning vengono entrambi eseguiti su scenari per cui non sono addestrati e valutati in modo simile ad altri approcci di machine learning. Questi approcci generalizzano bene e forniscono soluzioni efficiente data una classe di problemi. Le soluzioni basate sull'Intelligenza Artificiale si adattano a problemi che non possono essere facilmente definiti utilizzando una sequenza di istruzioni; richiedono invece più "intuizione" e giudizi di valore.

In genere, i sistemi di intelligenza artificiale vengono addestrati utilizzando set di dati e successivamente valutati su un set di valutazione. Più dati di addestramento di alta qualità vengono inseriti in un sistema AI, maggiore è la probabilità che il sistema raggiunga standard elevati. Il vantaggio degli approcci AI è che possono continuare a migliorare nel tempo man mano che il sistema apprende di più. Pertanto, problemi complessi possono essere generalizzati e risolti da sistemi informatici. Questi includono questioni tradizionalmente risolte dall'intervento umano, sebbene l'AI ristretta possa essere vista come un complemento all'input umano esistente per garantire risultati migliori.

L'Intelligenza Artificiale e il Machine Learning sono stati a lungo considerati con cautela dalle organizzazioni a causa della mancanza di tracciabilità e determinabilità di come tali sistemi risponderanno ai casi d'uso. Pertanto, l'AI può agire in circostanze rare e rispondere in modo imprevedibile quando meno ci si aspetta. Ecco perché è importante avere casi d'uso chiaramente definiti per quando l'AI deve essere utilizzata, quali livelli di errore sono accettati e come gli output prodotti dai sistemi AI saranno sottoposti a revisione paritaria da parte di input umano per garantirne l'accuratezza.

Nel complesso, prevediamo che la maggiore precisione che i sistemi AI porteranno, unita alle efficienze ottenute aumentando il contributo umano, rappresenterà un incentivo finanziario troppo grande per molte organizzazioni per essere ignorato nei prossimi anni; i sistemi AI diventeranno pervasivi.

Quando Scegliere l'Intelligenza Artificiale e Quando Selezionare l'Approccio di Programmazione Algoritmica Classica per Risolvere Problemi

Sebbene non ci siano regole ferree su quando utilizzare l'uno o l'altro approccio, come regola generale, i problemi che richiedono soluzioni approssimate e che coinvolgono pianificazione a lungo termine orientata agli obiettivi, riconoscimento di pattern complessi ed elaborazione di una moltitudine di variabili sono più adatti all'AI. Gli approcci algoritmici classici sono più adatti a soluzioni esatte o quasi ottimali che coinvolgono logica e calcoli intensivi.

Scegliere l'approccio corretto può produrre significativi benefici per la vostra organizzazione, mentre scegliere un metodo meno ottimale può portare a sostanziali perdite di capitale, poiché i progetti tecnologici sono costosi. Spesso affidarsi a sistemi collaudati e dimostrabili come Telemus AI™ può aiutare le organizzazioni a garantire il successo nella propria trasformazione digitale basata sull'Intelligenza Artificiale.

Contattaci oggi per una consulenza gratuita su come il Telemus AI™ può essere integrato nella tua organizzazione.