Sentiamo frequentemente parlare di modelli di deep learning sempre più sofisticati, prodotti dalle grandi aziende tech del pianeta. Ma la possibilità di sfruttare modelli di intelligenza artificiale nella moltitudine di ambiti applicativi in cui potrebbero avere un impatto positivo è spesso ostacolata da un enorme problema, quello della Data Annotation. Nella sua forma più diffusa, il deep learning richiede una fase di addestramento supervisionata, in cui il modello di apprendimento impara a trovare correlazioni tra enormi quantità di dati di input ed etichette ad essi assegnati da esseri umani. Purtroppo, il processo di etichettatura di tali dati è molto dispendioso in termini di tempo, conoscenza e costi, a cui talvolta si aggiungono anche problemi legati alla privacy delle persone a cui appartengono o da cui sono stati generati i dati stessi. Ma come hanno fatto le big tech a mitigare questo problema? La risposta è il Self-Supervised Learning.
L’idea del Self-Supervised learning è quella di sfruttare le enormi quantità di dati non etichettati che vengono generati quotidianamente. In generale, il modello di apprendimento deve imparare a risolvere un task specifico, noto come downstream task, come ad esempio predirre la prossima parola che un utente sta per scrivere all’interno di una chat, o distinguere immagini di cani da immagini di gatti. Per imparare a distinguere cani da gatti in maniera supervisionata, un modello di deep learning dovrebbe essere addestrato tramite dati etichettati, come mostrato in Figura 1.


Qual è il vantaggio di tutto ciò? Per imparare a risolvere il pretext task, ovvero riconoscere il grado di rotazione applicato all’immagine di un animale, il modello di deep learning dovrà imparare a riconoscere forme caratteristiche degli animali stessi: se riesci a riconoscere le orecchie di un gatto, ti sarà più facile capire di quanto esse siano ruotate all’interno di un’immagine che ti viene mostrata.
Grazie al pretext task, il modello impara quindi a riconoscere informazioni caratteristiche (features) dei dati di input, senza necessità di andarli ad etichettare manualmente. A questo punto, come mostrato in Figura 3, non ci resta che effettuare un processo chiamato fine tuning: ci basta un numero relativamente basso di dati etichettati per insegnare al modello a sfruttare le features che è già in grado di estrarre dai dati di input per risolvere il nostro downstream task.
