Created on 15 Sep 2017 ;    Modified on 29 Sep 2017

Coursera: il corso Machine Learning della Stanford University

E' stata dura, ... ma finalmente sono riuscito a concludere un corso di Machine Learning.

Solo che non è il corso di edX di cui parlavo in questa mia precedente nota.

E' il corso Machine Learning della Stanford University erogato online da Coursera.

Qui riporto le mie considerazioni riguardo questo corso rispetto quello di edX.

Un po' di storia ...

... non fa mai male. Riassumo quella che ho fin qui vissuto.

All'inizio del 2017 mi armo di tanto entusiasmo e parto lancia in resta all'arrembaggio di due corsi online erogati da edX: Intelligenza Artificiale e Machine Learning. Entrambi a cura della Columbia University.

Entrambi i corsi in questione si sono dimostrati impegnativi come quantità di tempo da utilizzare. E quello di Machine Learning, cui d'ora in poi farò riferimento come C ML, richiedeva anche conoscenze di modellazione lineare e calcolo matriciale in cui avevo perso un po' di smalto dai tempi dell'università.

Conseguenza: abbandono C ML dopo alcune settimane di studio, per seguire il corso di Modellazione lineare della Harvard University. E, sucessivamente, quello di Statistica e R.

Cronologicamente, arriviamo a Maggio 2017. Mentre concludo i corsi base, facendo scouting per siti di apprendimento online, mi imbatto in Coursera.

Uno dei suoi fondatori è un certo Andrew Ng, professore associato alla Stanford University, piuttosto conosciuto nell'ambito del Machine Learning, e autore dell'omonimo corso in Coursera. Corso i cui contenuti sono derivati da quelli che t(i)ene(va?) presso la Stanford, e che nel seguito nominerò S ML.

Roso dalla curiosità mi iscrivo e comincio a seguire S ML. Vuoi perché sono fresco dei corsi di base, vuoi perché qualcosa da C ML ho appreso e ritenuto, vuoi perché è diversa l'impostazione e l'esposizione del corso, S ML si dimostra decisamente più abbordabile.

Seguono un paio di mesi di attività ridotta e/o nulla per (fortunatamente) sopraggiunti impegni lavorativi. Infine ad Agosto e Settembre riesco a riprendere a pieno regime questo corso e a concluderlo.

Osservazioni

Cominciamo con il dire che la branca del Machine Learning è stata nominata in modo fuorviante. Io la chiamerei Algoritmi di Matematica e Algebra Lineare, con utilizzo del Calcolo Matriciale!

Decisamente, se si vuole capire come funziona il Machine Learning ci si deve sporcare le mani di (molta) matematica. Se siete matofobici, state impiegando in modo poco efficace il vostro tempo. Passate ad altro.

Detto ciò, vi sono comunque modi diversi di approcciare la materia. E i corsi S ML piuttosto che C ML ne sono un esempio.

In C ML si usa la matematica a piene mani per illustrare sin dall'inizio del corso i primi concetti. Ne segue una esposizione sintetica, rigorosa e molto flessibile. Per chi la riesce a seguire.

D'altro canto in questo modo può essere più ostico afferrare il perché si usano proprio quei tipi di calcoli. Personalmente, più volte mi sono ritrovato disorientato, chiedendomi "Ma il prof, dove vuole andare a parare?".

In S ML il docente effettua un avvio molto più lento. Spiegando sempre prima lo scopo del processo, e successivamente mostrando il formalismo matematico per implementarlo. Inoltre le dimostrazioni matematiche sono tenute ad un livello contenuto. Quest'ultimo aspetto è un pro perché evita digressioni teoriche che possono essere impegnative e poco fruttuose. Ma è anche un contro: accentua la mia sensazione "imparate questi passi e non preoccupatevi della dimostrazione", che mi mette a disagio.

Ancora. Spesso in S ML il processo matematico è seguito da una o più esposizioni semplificative che mostrano graficamente cosa accade al procedere del processo. E questo aiuta a fissare il concetto.

In sintesi, il prof.A.Ng ha cercato un compromesso tra l'uso dello stumento matematico e la presentazione pratica in scenari semplificati che aiuta molto il discente. Almeno, questo è ciò che è accaduto nel mio caso.

Riguardo quiz ed esercitazioni, come siamo messi? A questo riguardo la mia esperienza è parziale. Ho affrontato alcuni dei quiz di C ML e li ho trovati decisamente ostici. Per contro quelli di S ML potrebbero sembrare anche troppo semplici.

Per le esercitazioni: non ho esperienza di quelle di C ML. Quelle di S ML sono inizialmente semplici e molto guidate, ma ogni tanto il discente si deve decisamente impegnare, sopratutto quando si tratta di affrontare la vettorizzazione del codice precedentemente messo a punto con un algoritmo iterativo. Comunque, se riuscite a superare l'esercizio della nona settimana, tranquilli, ce l'avete fatta: le settimane 10 e 11 hanno solo i quiz.

Osservazioni riguardo il linguaggio utilizzato per le esercitazioni? Personalmente vedo con favore la scelta di C ML: Python, di cui sono un fan. D'altro canto capisco anche le motivazioni addotte dal prof.A.Ng per giustificare l'utilizzo di GNU Octave.

Mentre Python richiede all'utente di impadronirsi dell'uso di una serie di librerie di supporto, GNU Octave è pensato esplicitamente per la prototipazione di modelli matematici, spianando la strada al discente, che è operativo nel calcolo in tempi fulminei. Ed il prof.A.Ng ribadisce più volte la necessità di usare con oculatezza il proprio tempo! Ergo: "... per imparare, e non solo, anche per prototipare, usate GNU Octave perché è il sistema più diretto ed efficace. ...".

Risultato misurato sulla mia pelle: l'uso di GNU Octave è efficace, tanto è vero che sono riuscito a fare gli esercizi in tempi rapidi. D'altro canto, in cinque/sei mesi quest'anno mi sono ritrovato a dover digerire e utilizzare due diversi ambienti di programmazione specializzati per il calcolo statistico e matematico: GNU Octave e R.

Secondo A.Ng R non è adatto all'insegnamento in quanto contiene al proprio interno le soluzioni già implementate. Sicuramente vero, ma basterebbe non usarle. Comunque, va bene così: utilizzando GNU Octave, oltre R, la mia cultura relativa agli ambienti di programmazione è cresciuta di un'altra tacca :-).

Un piccolo appunto riguardo il materiale messo a disposizione per S ML: video e dispense. In generale sono ok, ma qualche rara volta vi sono piccoli pezzi ripetuti (quando il docente, spiegando una cosa, si accorge di poter seguire una linea di pensiero più chiara, riprende da capo senza "cesogliare" il pezzo precedente) e qualche svarione "tipografico" (ho la sensazione che A.Ng conosca così bene la problematica che ha affrontato la registrazione dei video con una generica scaletta e recitando "a braccio", senza una sceneggiatura consolidata). Personalmente le ritengo comunque delle pecche veniali, che non compromettono la buona qualità complessiva del corso.

Conclusioni

Premetto che S ML è un corso "vivo", ovvero il materiale del corso può essere oggetto di modifiche/upgrade, e i discenti possono richiedere la certificazione del corso seguito. Mentre attualmente C ML è "parcheggiato", cioè i contenuti sono consultabili, ma non vengono aggiornati e gli studenti non possono richiedere la certificazione del corso seguito.

Quel che mi sento di consigliare è quanto segue.