Come imparare l’IA

Imparare l'IA

Markus Spiske su Unsplash

Un’errata convinzione dei principianti è che possano imparare AI/ML da alcuni tutorial che implementano gli ultimi algoritmi, quindi ho pensato di condividere alcune note e consigli sull’apprendimento dell’AI. Ho anche un repository su GitHub con molte note e collegamenti ad articoli sull’AI/ML su vari argomenti LearnAI.

Background

Come ingegnere AI professionale con oltre 25 anni di esperienza nell’ingegneria del software, ho progettato e implementato una grande varietà di applicazioni e tecnologie software. Pertanto, ho utilizzato e implementato centinaia (forse migliaia) di librerie, framework e API software. Ho anche una laurea magistrale in Matematica e una MSCS in Intelligenza Artificiale, quindi sono più che qualificato per fare da mentore e insegnare corsi di matematica e informatica per laureandi, nonché molti corsi di laurea magistrale in Matematica/Informatica.

Lo studente di AI dovrebbe assicurarsi di conoscere la storia dell’AI, che è piena di hype e alchimia, facendo affermazioni infondate su ciò che l’AI può fare, come AGI. Pertanto, uno studente di AI ha anche bisogno di una buona dose di scetticismo [8].

Dato che questo è un sito web sull’AI, suppongo che la maggior parte dei lettori abbia i seguenti obiettivi:

  • Sei interessato a diventare un ingegnere AI/ML.
  • Sei interessato a imparare le migliori pratiche dell’ingegneria del software [1][2].

Come diventare un ingegnere di Intelligenza Artificiale

Prerequisiti

Ecco alcuni prerequisiti universitari che dovresti conoscere prima di imparare AI/ML:

  • Calcolo differenziale e integrale
  • Matematica discreta
  • Algebra lineare avanzata
  • Probabilità e statistica
  • Programmazione statistica

I seguenti corsi sono di solito richiesti per una laurea in informatica:

  • Algoritmi e strutture dati
  • Organizzazione dei calcolatori
  • Reti di calcolatori
  • Sistemi operativi
  • Calcolo distribuito

Cosa consiglia Google di fare prima di seguire il loro corso di Machine Learning o Data Science

Ecco alcune risorse sulla matematica che ho trovato utili:

  • Ripasso di matematica per scienziati e ingegneri
  • Manuale di trigonometria
  • Lezioni su come mentire con le statistiche
  • Un’introduzione alle reti neurali ricorrenti e alla matematica che le alimenta
  • Impara la Data Science gratuitamente

Errori comuni da evitare

Ecco alcuni errori comuni da evitare quando si impara ML [5][6][10]:

  • Chiedere “Qual è il miglior algoritmo per il problema X?”
  • Cercare di codificare algoritmi di ML da zero.
  • Usare set di dati personalizzati e/o risolvere problemi del mondo reale durante l’apprendimento dell’AI.
  • Cercare di imparare l’AI dai paper di ricerca.
  • Usare reti neurali (solo come ultima risorsa)

Evitare di codificare algoritmi da zero

Nella matematica applicata, l’accento è sull’applicazione della matematica piuttosto che sulla derivazione delle formule. Allo stesso modo, l’ingegneria AI è l’applicazione di algoritmi per risolvere problemi. Pertanto, l’accento è sul conoscere quali algoritmi sono disponibili per un determinato problema, come funzionano e come trarne il massimo vantaggio — non sui dettagli di implementazione.

Ogni competente ingegnere del software può implementare qualsiasi algoritmo di machine learning — Professore dell’Università di Lewis

Perché? Ci sono semplicemente troppi algoritmi di ML per un programmatore software da codificare da zero e riuscire a comprendere tutti i dettagli necessari per implementarli correttamente. Infatti, continuano ad essere sviluppati costantemente nuovi algoritmi. Concentrarsi solo sugli algoritmi “più interessanti” o SOTA è una ricetta per il disastro e un errore comune dei principianti. In realtà, ci sono molti altri concetti che sono più importanti della conoscenza di come implementare un algoritmo di ML (vedi Concetti Fondamentali di AI).

Dopo aver padroneggiato l’uso degli algoritmi di AI, è possibile tornare indietro in seguito e cercare di capire come funzionano internamente codificandoli a mano, se necessario.

Evitare di cercare di imparare AI dai paper di ricerca

I paper di ricerca non sono una buona risorsa per imparare un argomento. Si presume che il lettore conosca già la teoria di base e i concetti trattati nei libri di testo. Pertanto, il miglior approccio per imparare AI è un buon libro di testo.

Tieni presente che i risultati degli articoli di ricerca sull’IA sono in gran parte irreproduttibili. In effetti, c’è un grave problema di integrità nella ricerca sull’IA al momento. Più ti allontani dalle pubblicazioni autorevoli come l’IEEE, peggio diventa.

Questo viene discusso in modo più dettagliato in Russell e Norvig [8] e in altri libri di testo per laureandi.

Suggerimenti per l’apprendimento

Ecco alcuni suggerimenti per imparare l’IA:

  • Preferisci algoritmi più semplici rispetto a quelli più complessi (Rasoio di Occam). Pertanto, i modelli di deep learning dovrebbero essere la tua ultima scelta.
  • Non esiste la migliore, solo quella sufficientemente buona (Teorema del pranzo gratuito).
  • Sapere quando non utilizzare l’IA.
  • Elenco di controllo per l’IA.

Concetti fondamentali dell’IA

Ecco alcuni concetti chiave dell’IA da imparare:

  • Come definire il problema?
  • Come selezionare un dataset?
  • Come eseguire la preparazione dei dati?
  • Come eseguire l’ingegneria delle caratteristiche?
  • Come selezionare un algoritmo?
  • Come scegliere una metrica di performance?
  • Come addestrare un modello?
  • Come presentare i risultati?
  • Come progettare e implementare la soluzione?
  • Come eseguire il debug dei modelli?

Nella scuola di specializzazione, ci viene insegnata la corretta tecnica per imparare l’IA, ovvero la visione a scatola nera [7] degli algoritmi di ML (approccio dall’alto verso il basso), poiché è meglio non perdere tempo cercando di codificare manualmente gli algoritmi (approccio dal basso verso l’alto), specialmente quando si è agli inizi.

A meno che non si stia sviluppando una libreria software AI commerciale, si scoprirà che c’è molto poco da imparare concentrandosi sull’implementazione interna di un algoritmo. È più importante concentrarsi sull’apprendimento di come utilizzare e implementare gli algoritmi di IA.

Nell’ingegneria del software, ci sono molti principi ben noti, come DRY, KISS e il Rasoio di Occam. Forse il principio più importante è “non reinventare la ruota” (DRTW). Tuttavia, sembra che ogni principiante nel machine learning si affretti a cercare di implementare una rete neurale da zero. Un ingegnere di IA deve conoscere il miglior uso di TUTTE le librerie software, API e algoritmi utilizzati in un’applicazione, non solo le librerie di IA.

Rasoio di Occam: La soluzione più semplice che si adatta ai dati è di solito la migliore.

Un ingegnere di IA professionale sa che la pratica migliore attuale è un approccio centrato sui dati piuttosto che centrato sul modello per l’IA/ML. Pertanto, un principiante dovrebbe concentrarsi sull’apprendimento della preparazione dei dati, dell’ingegneria delle caratteristiche, della riduzione della dimensionalità e di altri concetti e tecniche chiave anziché sui dettagli di implementazione di un modello/algoritmo specifico. Inoltre, è necessario un cambio di mentalità per essere efficaci nell’IA, passando dal cercare il modello/metodo “migliore” al “sufficientemente buono”.

Oggi, l’automazione del ciclo di vita completo dello sviluppo software è una parte importante dello sviluppo software di IA (MLOps), quindi è dubbio che si implementi e implementi un algoritmo codificato a mano. Infatti, ci sono molteplici motivi per evitare di scrivere codice personalizzato quando ci sono librerie e framework robusti facilmente disponibili.

In breve, è meglio capire l’immagine generale (approccio dall’alto verso il basso) del processo di ingegneria dell’IA prima di addentrarsi nei dettagli di implementazione.

Come scegliere un modello

Ci sono stati momenti in cui ho cercato di aiutare i principianti solo per scoprire che hanno trascorso centinaia di ore a codificare da un tutorial (o peggio, un esempio dalla documentazione di Tensorflow/PyTorch) utilizzando il modello sbagliato e/o risolvendo il problema sbagliato. In effetti, di solito sono riluttanti ad ascoltare quando viene detto loro che hanno commesso un errore, che io chiamo fissazione del codice.

Quando si impara l’IA, si dovrebbe prima dedicare del tempo a trovare diversi buoni tutorial/esempi che risolvano un problema simile e siano stati scritti da qualcuno con buone credenziali.

Successivamente, è necessario dedicare del tempo a comprendere il proprio dataset per assicurarsi che sia modellato correttamente. Ad esempio, solo perché i tuoi dati sono dati di borsa o hanno una caratteristica temporale non significa che i dati siano meglio modellati come una serie temporale e/o utilizzando reti neurali.

Infine, valuta molti modelli semplici sul tuo dataset (o su un sottoinsieme dei tuoi dati se il dataset è molto grande) utilizzando uno strumento di AutoML come Orange per trovare il/i modello/i che si comportano meglio da utilizzare come riferimento per il confronto. Tieni presente che il tuo modello scelto finale dovrebbe avere prestazioni molto migliori rispetto a tutti i modelli di confronto più semplici.

In generale, anche i modelli SOTA più complessi otterranno solo un piccolo miglioramento delle prestazioni (diciamo 3-5%), che non è sufficiente per giustificarne l’uso nella risoluzione di problemi reali.

Tutorial e Libri

Scegliere una risorsa di apprendimento di Machine Learning è principalmente una questione di preferenza personale. In generale, consiglio di fare riferimento a più di una risorsa (oltre alla documentazione) durante l’apprendimento di AI. Ho un articolo su VoAGI, AI Learning Resources, che contiene un elenco di alcune risorse di AI che ho trovato utili. Poiché l’ingegneria dell’AI è un’estensione dell’ingegneria del software, è necessario sviluppare una comprensione approfondita dei concetti chiave forniti in SWEBOK.

Ho bisogno di una laurea magistrale?

Se hai intenzione di dedicare il tempo necessario allo studio dell’AI, dovresti considerare una laurea online, che aumenterà notevolmente le tue opportunità di carriera (ed è un requisito per quasi tutte le posizioni di ingegneria dell’AI). Sembra che molte persone dimentichino che l’AI è considerata un argomento di livello post-laurea. Infatti, l’ingegneria dell’AI è una disciplina ingegneristica. La maggior parte delle discipline ingegneristiche richiede una laurea specializzata, ma per qualche motivo l’ingegneria del software non lo richiede, probabilmente è per questo che l’85% o più dei progetti di AI fallisce [6].

Ecco alcuni articoli che possono aiutarti a decidere:

  • Hai bisogno di una laurea magistrale in Data Science?
  • Hai la laurea necessaria per essere assunto come Data Scientist?
  • Perché gli Ingegneri di Machine Learning stanno sostituendo i Data Scientist
  • Gli Ingegneri di Machine Learning potrebbero sostituire i Data Scientist: Perché?
  • Master in Intelligenza Artificiale – Top 10 Programmi
  • MSCS in Intelligenza Artificiale presso l’Università Lewis

Conclusioni

Questo articolo è stato principalmente motivato dall’aiutare molti utenti dei forum Slack Discord interessati ad un approccio di auto-apprendimento. Tuttavia, se hai intenzione di dedicare il tempo necessario allo studio di AI/ML, sarebbe saggio investire in una laurea online, che aumenterà notevolmente le tue opportunità di carriera.

Riferimenti

[1] P. Bourque e R. E. Fairley, Guida alla Base di Conoscenza dell’Ingegneria del Software, v. 3, IEEE, 2014.

[2] Codice di Etica IEEE

[3] Codice di Etica ACM

[4] J. Brownlee, “5 Errori che i Programmatori Fanno quando Iniziano con il Machine Learning,” Machine Learning Mastery, Jan. 39, 2014.

[5] J. Brownlee, “Smetti di Scrivere Algoritmi di Machine Learning da Zero,” Machine Learning Mastery, Oct. 5, 2016.

[6] T. Shin, “4 Motivi per Cui Non Dovresti Usare il Machine Learning,” Towards Data Science, Oct. 5, 2021.

[7] E. Gamma, R. Helm, R. Johnson e J. Vlissides, Design Patterns: Elementi per il Software Orientato agli Oggetti Riutilizzabile, 1a ed., Addison-Wesley Professional, ISBN-10: 0201633612, 1994.

[8] S. Russell e P. Norvig, Intelligenza Artificiale: Un Approccio Moderno, 4a ed., Upper Saddle River, NJ: Prentice Hall, ISBN: 978-0-13-604259-4, 2021.

[9] M. Hunter, “6 Potenti Tecniche di Studio per Aiutarti a Padroneggiare gli Argomenti più Difficili della Data Science,” Towards Data Science, June 10, 2022.

[10] A. Joury, “Dimentica gli Algoritmi e i Modelli – Impara prima come Risolvere i Problemi,” Towards Data Science, Sept. 9, 2022.