Il Processo di Intelligenza Artificiale

Processo di IA

Jason Leung su Unsplash

L’Intelligenza Artificiale (AI) è ancora considerata un campo relativamente nuovo, quindi non ci sono guide o standard come SWEBOK. In effetti, i libri di testo per laureati in AI/ML non forniscono una descrizione chiara e coerente del processo di ingegneria del software AI. Pertanto, ho pensato che sarebbe stato utile fornire una descrizione completa del processo di ingegneria AI o AI Process, che è descritto nella maggior parte dei libri di testo di AI/ML [5][6].

85% o più dei progetti di AI falliscono [1][2].

Il 34% dei ricercatori e scienziati ammette di pratiche di ricerca discutibili [3].

In generale, i risultati degli attuali articoli scientifici sull’AI (anche quelli peer-reviewed) sono irreproducibili.

Cos’è l’AI

L’Intelligenza Artificiale (AI) si concentra sul design e l’implementazione di sistemi intelligenti che percepiscono, agiscono e imparano in risposta al loro ambiente.

Nell’AI, un agente è qualcosa che agisce [6]. Tutti i programmi informatici possono essere considerati come qualcosa che fa qualcosa, ma ci si aspetta che gli agenti informatici svolgano compiti più complessi: operare autonomamente, percepire il proprio ambiente, persistere per un periodo di tempo prolungato, adattarsi al cambiamento e creare e perseguire obiettivi. Infatti, un agente razionale è colui che agisce al fine di ottenere il miglior risultato o il miglior risultato previsto in presenza di incertezza.

In poche parole, l’AI si concentra sullo studio e sulla costruzione di agenti che agiscono razionalmente o fanno la cosa giusta come definita dall’obiettivo dato all’agente. Infatti, il modello standard è definito in termini di agenti razionali [6]. Tuttavia, ci sono limitazioni a questo modello, come il problema della razionalità limitata e il problema dell’allineamento dei valori, che porta al concetto di agenti che sono provabilmente vantaggiosi per gli esseri umani, ma il modello standard è un buon punto di riferimento per l’analisi teorica [6].

Figura 1: Un agente interagisce con il suo ambiente attraverso i suoi sensori e attuatori. Gungor Basa Technology of Me

Spesso c’è confusione tra i termini intelligenza artificiale e apprendimento automatico. Un agente sta apprendendo se migliora le sue prestazioni basandosi sull’esperienza precedente. Quando l’agente è un computer, il processo di apprendimento viene chiamato apprendimento automatico (ML) [6, p. 651]. Pertanto, l’apprendimento automatico è un sotto-campo dell’AI. Alcuni sistemi AI utilizzano metodi di apprendimento automatico, altri no [6].

L’ingegneria AI è la disciplina focalizzata nello sviluppo di strumenti, sistemi e processi per consentire l’applicazione dell’intelligenza artificiale in contesti reali, combinando i principi dell’ingegneria dei sistemi, dell’ingegneria del software e dell’informatica per creare sistemi AI.

Modello-centrico vs Data-centrico

Attualmente ci sono due approcci all’AI/ML (modello-centrico vs data-centrico) che sono mutuamente esclusivi. O si fa in modo che l’insieme di dati guidi la selezione del modello (data-centrico) o non si fa (modello-centrico). Possiamo applicare un approccio data-centrico utilizzando AutoML o programmando un test personalizzato per valutare molti algoritmi (diciamo 20-30) sull’insieme di dati e quindi scegliere i migliori performer (forse i primi 3) per uno studio ulteriore, dandole preferenza ad algoritmi più semplici (Rasoio di Occam).

Quindi, sceglieremmo algoritmi SOTA più complessi solo se tutti gli algoritmi più semplici avessero fallito miseramente. In un progetto di ricerca, probabilmente useremmo un approccio modello-centrico per valutare nuovi algoritmi e confrontare i risultati con i risultati precedenti sullo stesso insieme di dati di prova, assumendo che la ricerca precedente abbia già ottenuto basi per modelli più semplici. Nelle applicazioni reali, l’attenzione dovrebbe essere sull’approccio data-centrico.

Il processo AI

Possiamo definire un Processo di Ingegneria AI o Processo AI (AIP) che può essere utilizzato per risolvere quasi ogni problema di AI [5][6][7][9]:

  1. Definire il problema: Questo passo include i seguenti compiti: definire la portata, la definizione del valore, i tempi, la governance e le risorse associate alla consegna.
  2. Selezione dell’insieme di dati: Questo passo può richiedere alcune ore o alcuni mesi, a seconda del progetto. È cruciale ottenere l’insieme di dati corretto e affidabile per un progetto di AI/ML.
  3. Descrizione dei dati: Questo passo include i seguenti compiti: descrivere l’insieme di dati, inclusi i dati di input e i dati target; includere statistiche di riepilogo dei dati e conteggi di eventuali caratteristiche discrete o categoriche, inclusi i dati target.
  4. Preparazione dei dati: Questo passo include i seguenti compiti: pre-elaborazione dei dati, pulizia dei dati e analisi esplorativa dei dati (EDA). Per i dati di immagini, ridimensioneremmo le immagini a una dimensione inferiore, ad esempio (299 x 299), per consentire l’apprendimento in mini-batch e anche per mantenerci entro i limiti di calcolo. Per i dati di testo, rimuoveremmo le nuove righe e le tabulazioni; Rimuovere i tag HTML; Rimuovere i link; Rimuovere gli spazi vuoti e altre possibili operazioni elencate in NLP Text Preprocessing nel mio repository GitHub.
  5. Ingegneria delle caratteristiche: Questo passo include i seguenti compiti: quantizzazione o suddivisione in classi; trasformate matematiche; scala e normalizzazione; modificare e/o creare nuove caratteristiche. Per i dati di immagini, eseguiremmo un’augmentazione delle immagini, descritta in Image Augmentation nel mio repository GitHub. Per i dati di testo, convertiremmo le caratteristiche dei dati di testo in vettori e eseguiremo Tokenizzazione, Stemming e Lemmatizzazione, oltre ad altre possibili operazioni descritte in Natural Language Processing nel mio repository GitHub.
  6. Progettazione: Questo passo include i seguenti compiti: selezione delle caratteristiche, scomposizione del problema, costruzione e valutazione dei modelli. Possiamo utilizzare AutoML o creare un test personalizzato per costruire e valutare molti modelli al fine di determinare quali algoritmi e visualizzazioni dei dati dovrebbero essere scelti per uno studio ulteriore.
  7. Addestramento: Questo passo include la costruzione del modello, che può includere la cross-validazione.
  8. Valutazione: Questo passo include la valutazione dei modelli che si comportano bene su un insieme di dati di test e la selezione del modello.
  9. Tuning: Questo passo comporta la messa a punto dell’algoritmo dei pochi modelli selezionati che si comportano bene, che può includere la valutazione di insiemi di modelli per ottenere ulteriori miglioramenti in termini di accuratezza.
  10. Finalizzazione: Questo passo serve a finalizzare il modello scelto addestrandolo utilizzando l’intero insieme di dati e assicurandosi che la soluzione finale soddisfi i requisiti aziendali originali per l’accuratezza del modello e altre metriche di performance.
  11. Implementazione: Il modello è ora pronto per l’implementazione. Ci sono due approcci comuni per l’implementazione di modelli di ML in produzione: incorporare i modelli in un server web o trasferire il modello a un servizio esterno. Entrambi gli approcci di servizio dei modelli hanno vantaggi e svantaggi.
  12. Monitoraggio: Questa è la fase successiva all’

    Maggiori dettagli su ogni passaggio sono forniti di seguito; puoi anche fare riferimento alla Checklist di AI, alla Checklist ML Applicata, alla Preparazione dei Dati e all’Ingegneria delle Feature nel mio repository LearnAI su GitHub.

    Definisci il problema

    Il primo passaggio in un progetto di AI è definire il problema [6]. In poche frasi, descrivi quanto segue:

    1. Descrivi il problema da risolvere.
    2. Descrivi la parte(i) del problema che può essere risolta tramite machine learning.
    3. Descrivi l’obiettivo del progetto.
    4. Descrivi l’obiettivo del modello: classificare, predire, rilevare, tradurre, ecc.
    5. Definisci la funzione di perdita e/o le metriche di performance e errore per il progetto.

    Questo passaggio dovrebbe includere una revisione bibliografica estensiva dello stesso problema di AI o problemi molto simili. Se non riesci a trovare studi di ricerca accademici sul problema, allora hai effettivamente un progetto di ricerca anziché un progetto di AI. Tieni presente che l’AI non è un buon campo per l’approccio di Star Trek.

    Descrizione di PEAS

    Nel progettare un agente, uno dei primi passaggi è specificare l’ambiente di lavoro, che viene chiamato la descrizione di PEAS (Performance, Environment, Actuators, Sensors) [6]. In poche parole, l’ambiente di lavoro è il “problema” e l’agente razionale(i) è la “soluzione”.

    Descrizione di PEAS per il robot aspirapolvere

    Considera il classico esempio di giocattolo di un semplice robot aspirapolvere.

    • Qual è la misura delle performance? pulizia, efficienza: distanza percorsa per pulire, durata della batteria, sicurezza
    • Cosa si sa sull’ambiente? stanza, tavolo, pavimento in legno, tappeto, ostacoli diversi
    • Quali attuatori ha l’agente? ruote, spazzole diverse, estrattore per aspirapolvere
    • Quali sensori ha l’agente? telecamera, sensore di rilevamento sporco, sensore di precipizio, sensore di urto, sensori a infrarossi per muri

    Inoltre, possiamo definire sette dimensioni lungo le quali gli ambienti di lavoro possono essere categorizzati [6][18]:

    • Completamente osservabile vs. parzialmente osservabile
    • Singolo agente vs. multiagente
    • Deterministico vs. non deterministico
    • Episodico vs. sequenziale
    • Statico vs. dinamico
    • Discreto vs. continuo
    • Noto vs. sconosciuto

    Dopo aver scomposto il problema in parti (sottoproblemi), potrebbero esserci più componenti che possono essere gestite utilizzando l’ingegneria del software tradizionale anziché il machine learning. Potremmo sviluppare il sistema complessivo e poi tornare indietro in seguito e ottimizzarlo, sostituendo alcune componenti con modelli di machine learning più sofisticati.

    Parte della formulazione del problema consiste nel decidere se stiamo affrontando l’apprendimento supervisionato, non supervisionato o per rinforzo. Tuttavia, le distinzioni non sono sempre così definite.

    Preparazione dei Dati

    La fase di preparazione dei dati coinvolge effettivamente tre passaggi che possono sovrapporsi.

    1. Preelaborazione dei dati: adeguamenti di formato, correzione di incongruenze, gestione degli errori nelle variabili.
    2. Analisi esplorativa dei dati e visualizzazione: verifica se i dati sono distribuiti normalmente o a coda pesante; verifica la presenza di valori anomali; verifica se il clustering dei dati sarà utile; verifica la presenza di dati sbilanciati.
    3. Pulizia dei dati: verifica dei tipi di dati; gestione di valori mancanti o non validi; gestione di valori anomali; gestione di valori categorici; codifica delle etichette di classe; analisi delle date; codifiche dei caratteri; gestione di dati sbilanciati.

    Preelaborazione dei dati

    Dividere prima e normalizzare dopo, ciò significa che dovremmo effettuare la divisione tra training e test prima e poi normalizzare i dataset.

    Adeguamenti di formato

    • Rimuovere spazi iniziali e finali
    • Standardizzare i tipi (separatori decimali, formati di data o unità di misura)
    • Sostituire caratteri non riconoscibili o corrotti
    • Verificare la presenza di voci troncate (voci di dati che vengono tagliate in una determinata posizione)

    Correggere incongruenze Gestire errori nelle variabili

    • Verificare la presenza di valori non validi (età pari a 200 o negativa)
    • Verificare la presenza di categorie errate nei dati categorici (prodotti simili non dovrebbero essere inseriti in categorie diverse)

    Gestisci gli errori nelle variabili.

    • Cardinalità elevata: il numero di etichette diverse nei dati categorici è molto alto, il che causa problemi per il modello nell’apprendimento.
    • Outliers: i casi estremi che possono essere dovuti a errori ma non in ogni caso.

    Come Scegliere un Modello di Intelligenza Artificiale

    Ogni nuovo ingegnere di intelligenza artificiale si trova nella situazione di dover decidere quale modello utilizzare per un problema. Ci sono molti modelli tra cui scegliere, ma di solito sono necessarie solo piccole modifiche per trasformare un modello di regressione in un modello di classificazione e viceversa.

    Prima di tutto, ricorda di adottare un approccio centrato sui dati, evitando di chiederti “che modello dovrei usare”. Pertanto, il primo passo nel processo di AI/ML è eseguire EDA per comprendere le proprietà del tuo modello, come ad esempio bilanciato (classificazione) o gaussiano (regressione).

    Ci sono due approcci alla selezione del modello: centrato sui dati e centrato sul modello. O stai lasciando che i dati guidino la selezione del modello (centrato sui dati), o non lo stai facendo (centrato sul modello).

    In un approccio centrato sul modello, stai essenzialmente provando diversi modelli sul set di dati e sperando che qualcosa funzioni. Simile a lanciare bologna contro il muro sperando che si attacchi, l’approccio centrato sul modello è un approccio non scientifico con una bassa probabilità di successo.

    Il secondo passo per risolvere un problema di intelligenza artificiale è provare algoritmi semplici (come la regressione lineare o logistica) come modelli di base, che verranno utilizzati successivamente per valutare le tue scelte di modello, che dovrebbero funzionare meglio di tutti i modelli di base.

    Ci sono molti modelli tra cui scegliere, quindi considera di iniziare con modelli di classificazione/regressione, che possono essere facilmente realizzati utilizzando scikit-learn.

    10 semplici cose da provare prima delle reti neurali

    Successivamente, la pratica migliore è valutare molti algoritmi (ad esempio 10-20) utilizzando uno strumento di AutoML come Orange, PyCaret o AutoGluon e ridurre le scelte a pochi modelli in base all’accuratezza e alle metriche di errore. Successivamente, crea un test harness [10] per esplorare completamente i candidati.

    In generale, dovresti aver valutato molti modelli prima di cercare di valutare modelli più complessi, come le reti neurali. Un approccio simile viene utilizzato per valutare e confrontare algoritmi in matematica, ingegneria e in altri campi.

    La regola generale è che un modello di deep learning dovrebbe essere l’ultima scelta (Rasoio di Occam).

    Ricorda che un’accuratezza del 50% è equivalente a un’indovinazione casuale (lancio di una moneta). Pertanto, i tuoi modelli dovrebbero avere un’accuratezza di almeno l’80-90% o superiore prima di effettuare l’ottimizzazione dei parametri. In caso contrario, è necessario selezionare un modello diverso e/o dedicare più tempo alla preparazione dei dati e all’ingegneria delle caratteristiche.

    Una discussione più dettagliata del processo di ingegneria dell’IA può essere trovata in [5][6].

    Progettazione Sperimentale

    Lo scopo dell’apprendimento automatico è condurre esperimenti e analizzare i risultati al fine di eliminare l’effetto del caso e ottenere conclusioni che possiamo considerare statisticamente significative [5].

    Pertanto, vogliamo trovare un modello di apprendimento con la massima accuratezza di generalizzazione e la minima complessità (l’implementazione è economica in termini di tempo e spazio) ed è robusto (non influenzato da fonti esterne di variabilità) [5].

    Esistono tre principi fondamentali della progettazione sperimentale [5]:

    1. Randomizzazione richiede che l’ordine in cui vengono eseguiti i test sia determinato casualmente in modo che i risultati siano indipendenti. Tuttavia, l’ordine di solito non è un problema negli esperimenti software.
    2. Replicazione implica che per la stessa configurazione di fattori (controllabili), l’esperimento dovrebbe essere eseguito più volte per ottenere una media sull’effetto dei fattori non controllabili.

    Nell’apprendimento automatico, la replicazione viene di solito eseguita eseguendo lo stesso algoritmo su diverse versioni campionate dello stesso dataset, che viene chiamato cross-validation.

    3. Blocco viene utilizzato per ridurre o eliminare la variabilità dovuta a fattori di disturbo che influenzano la risposta ma non sono di interesse.

    Quando confrontiamo algoritmi di apprendimento, è necessario assicurarsi che tutti gli algoritmi utilizzino gli stessi sottoinsiemi campionati dei dati. Pertanto, i diversi set di addestramento nelle esecuzioni replicate dovrebbero essere identici, che è ciò che intendiamo per blocco [7]. In statistica, se ci sono due popolazioni, questo approccio viene chiamato accoppiamento, che viene utilizzato nei test accoppiati.

    Processo di Selezione del Modello

    Nella selezione del modello, ci preoccupiamo di due domande sugli algoritmi di apprendimento [5]:

    1. Come possiamo valutare l’errore atteso di un algoritmo di apprendimento su un problema?
    2. Come possiamo dire che un modello ha meno errore dell’altro per una determinata applicazione?

    Il tasso di errore sul set di addestramento è sempre più basso (per definizione) rispetto al tasso di errore su un set di test contenente istanze non viste durante l’addestramento. Pertanto, non possiamo scegliere tra gli algoritmi basandoci sugli errori del set di addestramento. Pertanto, abbiamo bisogno di un set di convalida che sia distinto dal set di addestramento.

    Dobbiamo anche eseguire diverse esecuzioni sul set di convalida per calcolare i tassi di errore medi poiché il rumore, gli outlier e altri fattori casuali influenzeranno la generalizzazione. Quindi, basiamo la valutazione dell’algoritmo di apprendimento sulla distribuzione di questi errori di convalida per valutare l’errore atteso dell’algoritmo di apprendimento per il problema dato o confrontarlo con la distribuzione del tasso di errore di un altro algoritmo di apprendimento.

    Durante la selezione del modello, è importante tenere a mente alcuni punti importanti [5]:

    1. Qualunque conclusione traiamo dalla nostra analisi è condizionata dal dataset che ci viene fornito.

    Come affermato dal Teorema del pranzo gratuito, non esiste un algoritmo di apprendimento migliore di tutti. Per ogni algoritmo di apprendimento, esiste un dataset in cui è molto accurato e un altro dataset in cui è molto scadente.

    2. La divisione di un dataset in un numero di coppie di set di addestramento e convalida è solo a scopo di test.

    Una volta completati tutti i test e abbiamo preso la nostra decisione sul metodo o gli iperparametri finali, possiamo utilizzare tutti i dati etichettati che abbiamo precedentemente utilizzato per l’addestramento o la convalida per addestrare il modello finale, che viene chiamato finalizzazione del modello.

    3. Dato che utilizziamo anche il set di convalida(i) a scopo di test (come scegliere il miglior algoritmo di apprendimento o decidere quando smettere di apprendere), diventa parte dei dati che utilizziamo.

    Pertanto, dato un dataset, dovremmo prima lasciare da parte una parte di esso come set di test e quindi utilizzare il resto per addestramento e convalida.

    4. In generale, confrontiamo gli algoritmi di apprendimento in base ai loro tassi di errore, ma è importante tenere a mente che nella vita reale, l’errore è solo uno dei criteri che influenzeranno la nostra decisione.

    Alcuni altri criteri per confrontare gli algoritmi di apprendimento [5]:

    • rischi quando gli errori vengono generalizzati utilizzando funzioni di perdita, invece di perdita 0/1
    • tempo di addestramento e complessità dello spazio
    • tempo di test e complessità dello spazio
    • interpretabilità, che significa se il metodo consente l’estrazione di conoscenza che può essere verificata e convalidata dagli esperti
    • facilità di programmazione

    Tuttavia, l’importanza relativa di questi fattori cambia a seconda dell’applicazione.

    Quando addestriamo un modello su un dataset utilizzando un set di addestramento e testiamo la sua accuratezza su un set di convalida e cerchiamo di trarre conclusioni, ciò che stiamo facendo è sperimentazione. La statistica definisce una metodologia per progettare esperimenti correttamente e analizzare i dati raccolti in modo da poter estrarre conclusioni significative [5].

    Criteri di selezione del modello

    I seguenti sette criteri possono aiutare nella selezione di un modello [11]:

    1. Spiegabilità

    C’è un compromesso tra spiegabilità e prestazioni del modello.

    L’utilizzo di un modello più complesso aumenterà spesso le prestazioni, ma sarà più difficile da interpretare.

    Se non c’è bisogno di spiegare il modello e il suo output a un pubblico non tecnico, potrebbero essere utilizzati modelli più complessi, come apprenditori ensemble e reti neurali profonde.

    2. In memoria vs. fuori memoria

    È importante considerare la dimensione dei dati e la quantità di RAM disponibile sul computer su cui si verificherà l’addestramento.

    Se la RAM può gestire tutti i dati di addestramento, è possibile scegliere tra una vasta varietà di algoritmi di apprendimento automatico.

    Se la RAM non può gestire i dati di addestramento, è possibile esplorare algoritmi di apprendimento incrementale che possono migliorare il modello aggiungendo gradualmente più dati di addestramento.

    3. Numero di caratteristiche ed esempi

    Anche il numero di campioni di addestramento e il numero di caratteristiche per campione è importante nella selezione del modello.

    Se si dispone di un numero limitato di esempi e caratteristiche, sarebbe una buona scelta un apprenditore semplice, come un albero decisionale o i vicini più vicini (k-nearest neighbors).

    Se hai un numero limitato di esempi e un grande numero di caratteristiche, SVM e processi Gaussiani sarebbero una buona scelta poiché possono gestire un gran numero di caratteristiche ma richiedono meno risorse.

    Se hai un grande numero di esempi, allora reti neurali profonde e algoritmi di boosting sarebbero una buona scelta poiché possono gestire milioni di campioni e caratteristiche.

    4. Caratteristiche categoriali vs numeriche

    Il tipo di caratteristiche è importante nella scelta di un modello.

    Alcuni algoritmi di apprendimento automatico non possono gestire caratteristiche categoriali come la regressione lineare, quindi è necessario convertirle in caratteristiche numeriche, mentre altri algoritmi possono gestire caratteristiche categoriali come gli alberi decisionali e le foreste casuali.

    5. Normalità dei dati

    Se i tuoi dati sono distribuiti normalmente, puoi utilizzare SVM con kernel lineare, regressione logistica o regressione lineare.

    Se i tuoi dati non sono distribuiti normalmente, le reti neurali profonde o gli algoritmi di ensemble sarebbero una buona scelta.

    6. Velocità di addestramento

    Il tempo disponibile per l’addestramento è importante nella scelta di un modello.

    Algoritmi semplici come la regressione logistica/lineare o gli alberi decisionali possono essere addestrati in poco tempo.

    Algoritmi complessi come le reti neurali e gli algoritmi di ensemble richiedono molto tempo per l’addestramento.

    Se hai accesso a una macchina multicore, questo potrebbe ridurre significativamente il tempo di addestramento degli algoritmi più complessi.

    7. Velocità di previsione

    La velocità di generazione dei risultati è un altro criterio importante nella scelta di un modello.

    Se il tuo modello verrà utilizzato in un ambiente in tempo reale o di produzione, dovrebbe essere in grado di generare i risultati con una latenza molto bassa.

    Algoritmi come SVM, regressione lineare/logistica e alcuni tipi di reti neurali sono estremamente veloci durante la previsione.

    Dovresti anche considerare dove distribuirai il tuo modello. Se stai utilizzando i modelli per analisi o scopi teorici, il tempo di previsione può essere più lungo, il che significa che potresti utilizzare algoritmi di ensemble e reti neurali molto profonde.

    Perché modelli semplici

    I due algoritmi di regressione più comuni sono:

    Dovresti iniziare con questi modelli semplici perché [12]:

    • È probabile che il tuo problema non richieda un algoritmo complesso
    • Questi due modelli sono stati studiati approfonditamente e sono alcuni dei modelli più compresi nell’apprendimento automatico.
    • Sono facili da implementare e testare.
    • Sono facilmente interpretabili poiché sono modelli lineari.

    Per convertire un problema di regressione in un problema di classificazione, ci sono due soluzioni comuni:

    In realtà, di recente ho lavorato su molti progetti in cui gli sviluppatori hanno passato settimane o mesi cercando di implementare algoritmi di deep learning all’avanguardia da articoli di ricerca solo per scoprire che la regressione lineare e/o XGBoost avevano prestazioni migliori rispetto a tutti i loro modelli complessi (in molti casi raggiungendo un’accuratezza del 95-98% sul dataset di test). Dovresti valutare molti algoritmi per ottenere basi di confronto che giustifichino la tua scelta finale del modello, quindi dovresti sempre sapere come si comportano i modelli più semplici sul tuo dataset.

    Se stai facendo ricerca, un approccio incentrato sul modello è accettabile, a condizione che qualcuno abbia effettuato una valutazione approfondita di vari modelli (compresi modelli più semplici) sullo stesso dataset di test. Quando stai utilizzando un dataset personalizzato e/o risolvendo problemi del mondo reale, stai eseguendo l’ingegneria dell’IA (non la ricerca), quindi la regola generale è la navaja de Occam (“più semplice è meglio” o “non esiste una cosa come il migliore, solo abbastanza buono”).

    Regressione logistica multinomiale

    La regressione logistica multinomiale (MLR) è un algoritmo di classificazione utilizzato per eseguire la classificazione multiclasse, che è un’estensione della regressione logistica che aggiunge il supporto per problemi di classificazione multiclasse.

    Le principali ipotesi della regressione lineare (multipla e singolare) sono [13]:

    1. Linearità: Esiste una relazione lineare tra l’output e la variabile/i predittore.
    2. Normalità: Gli errori (differenza tra il valore previsto e il valore effettivo) seguono una distribuzione normale.
    3. Omoschedasticità: La varianza della variabile dipendente è uguale per tutti i valori della/e variabile/i indipendente/i.

    Con molte variabili indipendenti, spesso ci si imbatte in altri problemi come la multicollinearità, in cui le variabili che dovrebbero essere indipendenti variano tra loro, e la presenza di variabili categoriali come la temperatura dell’oceano classificata come fredda, calda o molto calda anziché quantificata in gradi.

    Ecco alcuni consigli per lavorare con MLR [13]:

    • Quando i tuoi modelli MLR diventano complicati, evita di cercare di utilizzare i coefficienti per interpretare le variazioni nel risultato rispetto alle variazioni nei singoli predittori.
    • Crea previsioni variando un solo predittore e osserva come cambiano le previsioni, e usa queste variazioni per formulare le tue conclusioni.

    Alcuni buoni tutorial su MLR sono forniti in [12] e [13].

    Comprendere gli algoritmi di AI

    Devi sapere quali algoritmi sono disponibili per un determinato problema, come funzionano e come trarne il massimo vantaggio. Tuttavia, questo non significa che devi codificare manualmente gli algoritmi da zero.

    Anche se sei un ingegnere AI/ML esperto, dovresti conoscere le prestazioni di modelli più semplici sul tuo dataset/problema.

    Ecco alcuni altri argomenti che dovrebbero essere presi in considerazione per la selezione del modello:

    • Algoritmi parametrici vs non parametrici
    • Algoritmi supervisionati vs non supervisionati
    • Trade-off tra bias e varianza
    • Come diagnosticare/risolvere l’overfitting e l’underfitting?
    • Come creare una pipeline dei dati?
    • Come gestire dataset piccoli?
    • Come gestire dataset sbilanciati?
    • Rilevamento delle anomalie

    Strumenti di Feature Engineering

    Le tecniche di feature engineering (FE) per ML sono un argomento fondamentale ma spesso trascurato o ingannevolmente semplice.

    Ci sono molti strumenti che ti aiuteranno ad automatizzare l’intero processo di FE e produrre un’ampia serie di feature in breve tempo sia per le attività di classificazione che per quelle di regressione.

    Strumenti AutoML

    Machine Learning Automatico (AutoML) è un campo emergente in cui il processo di costruzione di modelli di machine learning per modellare i dati è automatizzato.

    Un buon esempio completo utilizzando PyCaret è fornito in “A Beginner’s Guide to End to End Machine Learning”

    Ci sono una moltitudine di strumenti AutoML e ML, come Orange, AutoGluon e PyCaret, che possono essere utilizzati per valutare facilmente e rapidamente molti modelli su un dataset.

    Conclusioni

    Il processo di AI discusso qui può essere utilizzato per risolvere quasi ogni problema di AI con alcune modifiche, ovviamente. Attualmente non sembra esserci un approccio chiaramente definito per risolvere i problemi di AI, quindi questo articolo cerca di presentare un approccio consolidato da diversi libri di testo e articoli e di discutere alcune delle questioni coinvolte, come i criteri di selezione del modello e modelli più semplici, oltre a fornire alcune indicazioni per comprendere gli algoritmi di AI. Ho intenzione di scrivere alcuni articoli di approfondimento con esempi end-to-end utilizzando il processo di AI. Ho anche un repository GitHub chiamato LearnAI che alcuni studenti e professionisti di AI potrebbero trovare utile.

    Riferimenti

    [1] Nedgu BM, “Perché l’85% dei progetti di AI fallisce”, Towards Data Science Nov. 11, 2020.

    [2] S. Reisner, “Perché la maggior parte delle implementazioni di AI fallisce e cosa le aziende possono fare per battere le probabilità”, Venture Beat, 28 giugno 2021.

    [3] J. F. DeFranco e J. Voas, “Riproducibilità, fabbricazione e falsificazione”, IEEE Computer, vol. 54 no. 12, 2021.

    [4] T. Shin, “4 motivi per cui non dovresti utilizzare il machine learning”, Towards Data Science, 5 ottobre 2021.

    [5] E. Alpaydin, “Progettazione e analisi di esperimenti di machine learning”, in Introduction to Machine Learning, 3a ed., MIT Press, ISBN: 978–0262028189, 2014.

    [6] S. Russell e P. Norvig, “Sviluppo di sistemi di machine learning”, in Artificial Intelligence: A Modern Approach, 4a ed., Upper Saddle River, NJ: Prentice Hall, ISBN: 978–0–13–604259–4, 2021.

    [7] S. Raschka. e V. Mirjalili, Python Machine Learning, 2a ed. Packt, ISBN: 978–1787125933, 2017.

    [8] W. McKinney, Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython, 2a ed., O’Reilly Media, ISBN: 978–1491957660, 2017.

    [9] J. Brownlee, “Processo di Apprendimento Automatico Applicato,” Machine Learning Mastery, 12 febbraio 2014.

    [10] J. Brownlee, “Come Valutare gli Algoritmi di Apprendimento Automatico,” Machine Learning Mastery, 16 agosto 2020.

    [11] Y. Hosni, “Breve Guida per la Selezione del Modello di Apprendimento Automatico,” MLearning.ai, 4 dicembre 2021.

    [12] Z. Warnes Come Selezionare un Modello di Apprendimento Automatico,” KD Nuggets, agosto 2021.

    [13] M. LeGro, “Interpretazione dei Risultati Confusi della Regressione Lineare Multipla,” Towards Data Science, 12 settembre 2021.

    [14] J. Brownlee, “Regressione Logistica Multinomiale con Python,” Machine Learning Mastery, 1 gennaio 2021.

    [15] W. Xie, “Regressione Logistica Multinomiale in breve,” Data Science Student Society @ UC San Diego, 8 dicembre 2020.

    [16] P. Bourque e R. E. Fairley, Guida al Corpo di Conoscenza dell’Ingegneria del Software, v. 3, IEEE, 2014.

    [17] J. S. Damji e M. Galarnyk, “Considerazioni per la Distribuzione dei Modelli di Apprendimento Automatico in Produzione,” Towards Data Science, 19 novembre 2021.

    [18] J. Rodriguez, “7 Dimensioni per Valutare un Ambiente di Intelligenza Artificiale,” Towards AI, 17 maggio 2022.

    IEEE Dataport