A settembre ho deciso che volevo imparare qualcosa di più di Machine Learning. "Machine Learning" è una buzzword che va molto di moda in questi tempi di Big Data. Anche i fisici delle particelle usano sempre di più queste tecniche di trattamento multivariato dei dati, che stanno aprendo possibilità molto interessanti per le nostre analisi. Io volevo dunque saperne di più proprio perché non piace usare strumenti come se fossero scatole magiche dentro cui buttare i dati, scatole che mi danno sì risposte efficienti e performanti, ma del cui funzionamento interno spesso capisco poco. Insomma, nonostante per lavoro usi già tecniche come Neural Network o Boosted Decision Tree, mi premeva capire meglio che cosa ci stava sotto. Per questo, ho deciso di iscrivermi a un MOOC.
MOOC sta per Massive Open Online Course, ovvero un corso online accessibile a tutti (anche se non necessariamente gratuito). Della storia dei MOOC vi lascio leggere su Wikipedia: diciamo che l'idea è nata in ambito universitario (iniziando con il rendere accessibili sul web i corsi delle facoltà più famose del mondo), ed è evoluta verso imprese anche con motivazioni commerciali. Nel mio caso, più per comodità del mezzo che per scelta di contenuto, ho optato per il corso di Machine Learning tenuto su Coursera da Andrew Ng, che di Coursera è anche il fondatore, e che insegna Machine Learning a Stanford. Il corso è durato undici settimane, con video-lezioni da seguire, test da passare ed esercizi da fare. Ieri ho terminato l'ultimo test dell'ultima settimana, finendo con successo il corso. Vi elenco qui una serie di cose che penso di aver imparato, non tanto sul Machine Learning in sé (per quello vi lascio seguire un corso!), ma su come sia seguire un MOOC.
- Trovare il tempo per seguire lezioni, studiare e fare gli esercizi di un MOOC, mantenendo il ritmo richiesto, non è affatto semplice, specie se lo si fa nel tempo libero e di ha un altro lavoro. Nel mio caso, qualche volta ho considerato che la mia impresa fosse assimilabile a una formazione di lavoro e ho sbordato un po' sugli orari di ufficio, ma ho cercato nella maggior parte del tempo di fare tutto la sera o nei weekend. È stato impegnativo.
- Rimettersi nel ruolo di studente è bello, anche per qualcuno che, come me, "studia" di mestiere. Tornare (anche solo virtualmente) dall'altra parte della cattedra è appassionante, e l'idea che ci sia nuovamente qualcuno a guidarti nell'apprendimento è molto rinfrescante. Proprio chi come me "studia" per mestiere, lo fa sempre in modo autonomo, e spesso si trova invece a dover seguire lui stesso degli studenti. Mi sono tuffato nel corso con un misto di eccitazione (per il tornare a qualcosa di prossimo al periodo dell'università) e di leggerezza (nel non dover essere direttamente responsabile del mio percorso di studio, ma solo del mio impegno) che mi è piaciuto molto.
- Rimettersi nel ruolo di studente è anche dannatamente, persino per qualcuno che (almeno sulla carta, eh...) è pagato per pensare, risolvere problemi e farsi venire delle idee. Non ci sono dubbi, c'è una ragione per cui si va a scuola da giovani: il cervello e la sua plasticità invecchiano, e, sebbene sia possibile tenerli allenati, come per tutti gli allenamenti la fatica e lo sforzo aumentano con il tempo.
- Coursera è una bella piattaforma, e i continui richiami a proseguire, fare i compiti, finire i test in tempo sono molto utili per mantenere il ritmo e arrivare in fondo. Io sono una persona abbastanza metodica, ma penso che avrei faticato di più se avessi seguito ai miei ritmi lo stesso corso direttamente dalle pagine dell'università di Stanford. Come Coursera ci sono diverse altre piattaforme che propongono programmi simili, e mi sento di raccomandarle rispetto al "libero accesso" dei corsi universitari soprattutto a chi a poco tempo, e necessita di qualche stimolo in più per proseguire.
- Coursera è una piattaforma generalista, e i suoi corsi hanno tendenza ad essere più "applicati" che "teorici". Non vuol dire che siano meno utili, ma semplicemente che sono spesso semplificati per permetterne la fruizione di qualcuno che non abbia necessariamente le basi teoriche (per esempio matematiche) per digerirne i dettagli formali. La cosa va benissimo, anche se per me in particolare ha qualche rappresentato un limite. Ovviamente ci sono modi per ovviare questa caratteristica, per esempio integrando con altre risorse (nel caso del Machine Learning, io ho sempre tenuto un occhio sulle dispense del corso di Stanford per andare un po' più in là), o scegliendo una piattaforma diversa. Leggere le descrizioni dei corsi spesso non basta per farsi un'idea chiara delle stile di un corso, mentre le recensioni di chi lo ha già seguito possono essere illuminanti.
In conclusione: lo rifarei? Certo! La formazione permanente ai tempi del web è una risorsa fantastica. Non usufruirne, qualunque siano le proprie ambizioni e curiosità, sarebbe veramente un peccato. Nel mio caso, sto pensando di lanciarmi di nuovo e di seguire questo, questa volta con modalità molto diverse dal corso che ho appena terminato.
Per la cronaca, ho passato il corso con un voto del 96.1%. Ottenere l'80% di media era il livello richiesto per considerare il corso completato. Ammetto senza vergogna di aver spesso evitato di rifare i test passati con una domanda sbagliata per guadagnare tempo. Avrei potuto puntare al 100%, ma non era lo scopo dell'esercizio. Ho invece sempre fatto tutti gli compiti a casa, compresi quelli facoltativi, perché solo sporcandosi le mano si impara per davvero.
Ecco infine la cosa in più, oltre alle cinque elencate la sopra, che ho imparato:
- Andrew Ng, il docente del corso, sa il fatto suo ed è un buon insegnante, ma ha un vezzo nel parlare che alla lunga ho trovato insopportabile. Usa la parola concretely (concretamente, usato per dire "in pratica") a un ritmo esagerato: dopo averglielo sentito dire cinque volte in cinque minuti, avrei voluto ucciderlo. Concretely.
Umbe dice
Mmmm...non dovresti pubblicare le risposte agli esercizi...a meno che queste non siano previste negli esercizi stessi...
( coursera honor code )....
Marco dice
Auch, hai ragione. Le rimuovo ASAP (l'abitudine a tenere il codice in una qualche forma di version control system è dura a morire).
Marco dice
(fatto, la repository di GitHub non c'è più 😉 )
Daniele dice
Il "trovare il tempo" è una delle cose più difficili per quello che riguarda i MOOC (IMHO), visto che non sei "costretto" (a parte la tua coscienza).
Una delle cose che amo di coursera è il fatto che poi switchare le sessioni. Questo ovviamente ha il drawback del: "lo faccio domani->lo faccio domani->lo faccio domani...." 🙂
Io quel corso (di ML) l'ho spostato in avanti non so per quanti mesi!
PS: hai dato un'occhiata a quelli di EdX?
Non sarebbe male avere il tuo parere su corsi che riguardano il tuo pane quotidiano:
https://www.edx.org/course?search_query=quantum
PS: ho fatto la ricerca con "quantum" per fare prima 🙂