00:21 Introduzione
01:53 Dalle previsioni all’apprendimento
05:32 Machine learning 101
09:51 La storia finora
11:49 Le mie previsioni per oggi
13:54 Accurate sui dati che non possediamo 1/4
16:30 Accurate sui dati che non possediamo 2/4
20:03 Accurate sui dati che non possediamo 3/4
25:11 Accurate sui dati che non possediamo 4/4
31:49 Gloria al template matcher
35:36 Una profondità nell’apprendimento 1/4
39:11 Una profondità nell’apprendimento 2/4
44:27 Una profondità nell’apprendimento 3/4
47:29 Una profondità nell’apprendimento 4/4
51:59 Dai il massimo o torna a casa
56:45 Oltre la perdita 1/2
01:00:17 Oltre la perdita 2/2
01:04:22 Oltre l’etichetta
01:10:24 Oltre l’osservazione
01:14:43 Conclusione
01:16:36 Lezione in arrivo e domande del pubblico

Descrizione

Le previsioni sono irriducibili in supply chain poiché ogni decisione (acquisto, produzione, stoccaggio, ecc.) riflette un’anticipazione degli eventi futuri. L’apprendimento statistico e il machine learning hanno in larga misura superato il tradizionale campo della ‘previsione’, sia da un punto di vista teorico che pratico. Cercheremo di capire cosa significhi un’anticipazione del futuro basata sui dati da una prospettiva moderna dell’apprendimento.

Trascrizione completa

Slide 1

Benvenuti alla serie di lezioni sulla supply chain. Sono Joannes Vermorel, e oggi presenterò “Machine Learning for Supply Chain.” Non possiamo stampare in 3D i prodotti in tempo reale, e non possiamo teletrasportarli dove devono essere consegnati. In realtà, quasi tutte le supply chain decisions devono essere prese guardando al futuro, anticipando future demand o i movimenti dei prezzi, riflettendo implicitamente o esplicitamente alcune condizioni di mercato anticipate, sia dal lato della domanda che dell’offerta. Di conseguenza, la previsione è una parte integrante e irriducibile della supply chain. Non conosciamo mai il futuro con certezza; possiamo solo ipotizzare sul futuro con gradi di certezza variabili. L’obiettivo di questa lezione è comprendere cosa il machine learning apporti in termini di cattura del futuro.

Slide 2

In questa lezione vedremo che offrire previsioni accurate forecasts è, nell’insieme, un aspetto relativamente secondario. Infatti, nella supply chain odierna, fare previsioni significa time series forecasting. Storicamente, le previsioni basate su serie temporali divennero popolari all’inizio del XX secolo negli Stati Uniti. In effetti, gli USA furono il primo paese ad avere milioni di impiegati della classe media che possedevano anche azioni. Poiché le persone desideravano essere investitori astuti, volevano avere intuizioni sui loro investimenti, e si scoprì che le serie temporali e le relative previsioni erano un modo intuitivo ed efficace per trasmettere tali intuizioni. Si potevano avere previsioni basate su serie temporali riguardanti i futuri prezzi di mercato, i dividendi futuri e le future quote di mercato.

Negli anni ‘80 e ‘90, quando la supply chain fu sostanzialmente digitalizzata, il enterprise software per la supply chain iniziò a beneficiare anche delle previsioni basate su serie temporali. In realtà, le previsioni basate su serie temporali divennero onnipresenti in quel tipo di software aziendale. Tuttavia, se si guarda a questa immagine, si può rendersi conto che le previsioni basate su serie temporali sono in realtà un modo molto semplicistico e ingenuo di guardare al futuro.

Vedete, se guardo semplicemente questa immagine, posso già intuire cosa accadrà: molto probabilmente arriverà una squadra, puliranno questo disastro, e con alta probabilità ispezioneranno i muletti per ragioni di sicurezza. Potrebbero persino effettuare alcune riparazioni leggere, e con un alto grado di fiducia posso affermare che molto probabilmente questo muletto tornerà presto in funzione. Solo osservando questa immagine, possiamo anche prevedere quali condizioni abbiano portato a questa situazione. Nulla di ciò rientra nella prospettiva di una previsione basata su serie temporali, eppure tutte queste previsioni sono molto rilevanti.

Queste previsioni non riguardano il futuro in sé, poiché questa immagine è stata scattata tempo fa, e persino gli eventi che sono seguiti allo scatto fanno ormai parte del nostro passato. Ma nonostante ciò, sono previsioni nel senso che stiamo formulando affermazioni su cose di cui non siamo certi. Non disponiamo di una misurazione diretta. Quindi, la questione principale è: come sono in grado di produrre queste previsioni e fare tali affermazioni?

Si scopre che, in quanto essere umano, ho vissuto, ho assistito a eventi e ho imparato da essi. È così che posso effettivamente formulare queste affermazioni. E si scopre che il machine learning è proprio questo: è l’ambizione di replicare questa capacità di apprendimento nelle macchine, con i computer che al giorno d’oggi sono di gran lunga il tipo di macchine preferite. A questo punto, potreste chiedervi in che modo il machine learning sia diverso da altri termini come intelligenza artificiale, tecnologie cognitive o apprendimento statistico. Ebbene, si scopre che questi termini dicono molto di più sulle persone che li usano piuttosto che sul problema stesso. Dal punto di vista del problema, i confini tra tutti questi campi sono molto sfumati.

Slide 3

Adesso approfondiamo con una rassegna dell’archetipo dei framework di machine learning, coprendo una breve serie di concetti centrali del machine learning. La maggior parte degli articoli scientifici e dei software prodotti in questo campo sfrutta questo framework in maniera abbastanza estesa. La feature rappresenta un pezzo di dato reso disponibile per eseguire il compito di previsione. L’idea è che si abbia un compito di previsione da eseguire, e una feature (o diverse feature) rappresenta ciò che viene messo a disposizione per svolgere quel compito. Nel contesto delle previsioni basate su serie temporali, la feature rappresenterebbe la sezione passata della serie temporale, e si avrebbe un vettore di feature che rappresenta tutti i punti dati passati.

La label rappresenta la risposta al compito di previsione. Nel caso di una previsione basata su serie temporali, essa rappresenta tipicamente la porzione della serie temporale che non conosci, ovvero dove risiede il futuro. Se hai un insieme di feature più una label, si parla di un’osservazione. L’assetto tipico del machine learning presume di avere un dataset contenente sia feature che label, che rappresenta il tuo training data set.

L’obiettivo è creare un programma chiamato modello che prenda le feature in ingresso e calcoli la label predetta desiderata. Questo modello viene tipicamente realizzato attraverso un processo di apprendimento che attraversa l’intero dataset di training e costruisce il modello. L’apprendimento nel machine learning è la parte in cui si costruisce effettivamente il programma che formula le previsioni.

Infine, c’è il loss. Il loss è essenzialmente la differenza tra la label reale e quella predetta. L’obiettivo è che il processo di apprendimento generi un modello che produca previsioni il più possibile vicine alle label vere. Si desidera un modello che mantenga le label predette il più vicine possibile alle label reali.

Il machine learning può essere visto come una vasta generalizzazione della previsione basata su serie temporali. Dal punto di vista del machine learning, le feature possono essere qualsiasi cosa, non solo un segmento passato di una serie temporale. Le label possono essere anch’esse qualsiasi cosa, non solo il segmento futuro di una serie temporale. Il modello può essere qualsiasi cosa, e persino il loss può essere praticamente qualsiasi cosa. Quindi, abbiamo un framework molto più espressivo rispetto alle previsioni basate su serie temporali. Tuttavia, come vedremo, la maggior parte dei principali successi del machine learning, sia come campo di studio che di pratica, deriva dalle scoperte di elementi che ci costringono a rivedere e mettere in discussione l’elenco di concetti che ho appena brevemente introdotto.

Slide 4

Questa lezione è la quarta della serie di lezioni sulla supply chain. Le scienze ausiliarie rappresentano elementi che non sono supply chain in sé, ma rappresentano qualcosa di fondamentale importanza per la supply chain. Nel primo capitolo, ho presentato le mie opinioni sulla supply chain sia come studio fisico che come pratica. Nel secondo capitolo, abbiamo esaminato una serie di metodologie necessarie per affrontare un dominio come la supply chain, che presenta molti comportamenti avversari e non può essere facilmente isolato. Il terzo capitolo è interamente dedicato alle personas, che è un modo per concentrarsi sui problemi che stiamo cercando di risolvere.

In questo quarto capitolo, sono gradualmente salito per la scala dell’astrazione, partendo dai computer, passando per gli algoritmi, e la lezione precedente sull’ottimizzazione matematica, che può essere vista come lo strato di base del machine learning moderno. Oggi ci avventuriamo nel machine learning, che è essenziale per catturare il futuro, elemento pervasivo in tutte le decisioni della supply chain che dobbiamo prendere ogni singolo giorno.

Slide 5

Allora, qual è il piano per questa lezione? Il machine learning è un campo di ricerca enorme, e questa lezione sarà guidata da una breve serie di domande che si riferiscono ai concetti e alle idee da me introdotti in precedenza. Vedremo come le risposte a queste domande ci costringano a rivalutare il concetto stesso di apprendimento e il nostro approccio ai dati. Uno dei successi più spettacolari del machine learning è che ci ha costretti a renderci conto che c’è ben molto di più in gioco rispetto alle grandi ambizioni iniziali dei ricercatori che pensavano che saremmo stati in grado di replicare l’intelligenza umana entro un decennio.

In particolare, daremo un’occhiata al deep learning, che è probabilmente il miglior candidato che abbiamo per emulare un grado superiore di intelligenza a questo punto. Sebbene il deep learning sia emerso come una pratica incredibilmente empirica, i progressi e i traguardi raggiunti grazie al deep learning gettano nuova luce sulla prospettiva fondamentale dell’apprendimento dai fenomeni osservati.

Slide 6

Il primo problema che abbiamo con la modellizzazione, statistica o meno, è l’accuratezza dei dati che non possediamo. Da una supply chain perspective, questo è essenziale perché il nostro interesse sta nel riuscire a catturare il futuro. Per definizione, il futuro rappresenta un insieme di dati che non abbiamo ancora. Esistono tecniche, come il backtesting o la cross-validation, che possono fornirci alcune misurazioni empiriche su ciò che dovremmo aspettarci in termini di accuratezza dei dati che non possediamo. Tuttavia, il motivo per cui questi metodi funzionano affatto è un problema relativamente intrigante e difficile. Il problema non è avere un modello che si adatti ai dati che possediamo; è facile costruire un modello che si adatti ai dati utilizzando un polinomio con un grado sufficiente. Eppure, questo modello non è molto soddisfacente perché non cattura ciò che vorremmo catturare.

Il classico approccio a questo problema è noto come tradeoff bias-varianza. A destra, abbiamo un modello con pochissimi parametri che non si adatta sufficientemente al problema, che definiamo come avente un alto bias. A sinistra, abbiamo un modello con troppi parametri che sovradatta e presenta troppa varianza. Al centro, abbiamo un modello che raggiunge un buon equilibrio tra bias e varianza, che definiamo un buon adattamento. Fino alla fine del XX secolo, non era molto chiaro come affrontare questo problema al di là del tradeoff bias-varianza.

Slide 7

La prima vera intuizione riguardo l’accuratezza dei dati che non possediamo provenne dalle teorie sulla apprendibilità pubblicate da Valiant nel 1984. Valiant introdusse la teoria PAC - Probabilmente Approssimativamente Corretta. In questa teoria PAC, la parte “probabilmente” si riferisce a un modello con una data probabilità di fornire risposte sufficientemente buone. La parte “approssimativamente” significa che la risposta non è troppo distante da ciò che viene considerato buono o valido.

Valiant dimostrò che in molte situazioni non è affatto possibile apprendere nulla o, più precisamente, che per apprendere sarebbe necessario un numero di campioni talmente straordinariamente elevato da non essere praticabile. Questo fu già un risultato molto interessante. La formula mostrata deriva dalla teoria PAC, ed è un’inequazione che indica che se si desidera produrre un modello probabilmente approssimativamente corretto, è necessario avere un numero di osservazioni, n, maggiore di una certa quantità. Questa quantità dipende da due fattori: epsilon, il tasso di errore (la parte approssimativamente corretta), e eta, la probabilità di fallimento (uno meno eta è la probabilità di non fallire).

Quello che vediamo è che se vogliamo avere una probabilità di fallimento più bassa o un epsilon più piccolo (un intervallo sufficientemente buono), abbiamo bisogno di più campioni. Questa formula dipende anche dalla cardinalità dello spazio delle ipotesi. L’idea è che più numerose sono le ipotesi competitive, più osservazioni sono necessarie per distinguerle. Questo è molto interessante perché, in sostanza, sebbene la teoria PAC ci fornisca per lo più risultati negativi, essa ci indica ciò che non possiamo fare, ovvero costruire un modello provabilmente approssimativamente corretto con meno campioni. La teoria non ci dice veramente come fare qualcosa; non è molto prescrittiva nel modo di diventare effettivamente migliori nel risolvere qualsiasi tipo di compito di previsione. Tuttavia, fu una pietra miliare perché cristallizzò l’idea che fosse possibile affrontare questo problema dell’accuratezza e dei dati che non possediamo in modi ben più robusti rispetto a limitarsi a misurazioni molto empiriche, come ad esempio la cross-validation o il backtesting.

Slide 8

Dieci anni dopo, il primo progresso operativo si verificò quando Vapnik e alcuni altri stabilirono quella che oggi è conosciuta come la teoria Vapnik-Chervonenkis (VC). Tale teoria dimostra che è possibile catturare la perdita reale, detta rischio, ovvero la perdita che osserverai sui dati che non possiedi. Fu possibile dimostrare matematicamente che avevi la capacità di conoscere qualcosa sull’errore reale, che per definizione non può mai essere misurato. Questo è un risultato molto sconcertante.

In sostanza, questa formula, direttamente tratta dalla teoria VC, ci dice che il rischio reale è limitato superiormente dal rischio empirico, ovvero il rischio che possiamo misurare sui dati di cui disponiamo, a cui va aggiunto un altro termine spesso definito rischio strutturale. Abbiamo il numero di osservazioni, n, e eta, che rappresenta la probabilità di fallimento, proprio come nella teoria PAC. Abbiamo inoltre h, che è una misura della dimensione VC del modello. La dimensione VC riflette la capacità del modello di apprendere; maggiore è la capacità di apprendimento del modello, maggiore sarà la dimensione VC.

Con questi risultati, vediamo che per modelli capaci di apprendere qualsiasi cosa non possiamo affermare nulla a riguardo. Questo è davvero sconcertante. Se il tuo modello può apprendere qualsiasi cosa, allora non puoi affermare nulla, almeno matematicamente, su di esso.

La svolta del 1995 derivò da un’implementazione di Cortes e Vapnik di quella che in seguito sarebbe diventata nota come Support Vector Machines (SVM). Queste SVM sono letteralmente l’implementazione diretta di questa teoria matematica. L’intuizione è che, poiché esiste una teoria che ci fornisce questa disuguaglianza, possiamo implementare un modello che bilancia la quantità di errore commesso sui dati (il rischio empirico) e la dimensione VC. Possiamo costruire direttamente un modello matematico che equilibra esattamente questi due fattori in modo da rendere l’uguaglianza il più stretta e ridotta possibile. Esattamente di questo trattano le Support Vector Machines (SVM). Questi risultati furono così sorprendenti, dal punto di vista operativo, da ottenere ottimi risultati e avere un impatto significativo sulla comunità dell’apprendimento automatico. Per la prima volta, l’accuratezza sui dati che non possediamo non fu un ripensamento; fu ottenuta direttamente dal design matematico del metodo stesso. Questo risultato fu così impressionante e potente da distrarre l’intera comunità dell’apprendimento automatico per un decennio, inseguendo questa strada. Come vedremo, questa strada si rivelò per lo più un vicolo cieco, ma c’era una valida ragione: era un risultato assolutamente sorprendente.

Operativamente, dato che le SVM sono emerse prevalentemente da una teoria matematica, esse manifestavano pochissima mechanical sympathy. Non erano affatto adatte all’hardware informatico che possediamo. Più nello specifico, l’implementazione naïve delle SVM comporta un costo quadratico in termini di utilizzo della memoria rispetto al numero di osservazioni. Questo è notevole e, di conseguenza, rende le SVM molto lente. Successivamente, sono state apportate migliorie con alcune varianti online delle SVM che hanno drasticamente ridotto i requisiti di memoria, ma le SVM non sono mai state veramente considerate come un approccio scalabile per svolgere l’apprendimento automatico.

Slide 9

Le SVM hanno aperto la strada a un’altra classe di modelli, migliore, che probabilmente non soffrivano di overfitting. L’overfitting consiste fondamentalmente nell’essere molto imprecisi sui dati che non possediamo. Gli esempi più noti sono probabilmente Random Forests e Gradient Boosted Trees, che risultano essere i loro quasi immediati discendenti. Al loro nucleo c’è il boosting, un meta-algoritmo che trasforma modelli deboli in modelli più forti. Il boosting emerse da quesiti sollevati alla fine degli anni ‘80 da Kearns e Valiant, che abbiamo menzionato in precedenza in questa lezione.

Per comprendere come funziona una Random Forest, è relativamente semplice: prendi il tuo dataset di addestramento e poi estrai un campione dallo stesso. Su questo campione, costruisci un albero decisionale. Ripeti il procedimento, creando un altro campione dal dataset iniziale e costruendo un altro albero decisionale. Itera questo processo, e alla fine otterrai molti alberi decisionali. Gli alberi decisionali sono modelli di apprendimento automatico relativamente deboli, poiché non riescono a catturare schemi molto complessi. Tuttavia, se combini tutti questi alberi e fai una media dei risultati, ottieni una foresta, chiamata Random Forest, poiché ogni albero è stato costruito su un sottocampione randomizzato del dataset iniziale. Ciò che ottieni con una Random Forest è un modello di apprendimento automatico molto più robusto e performante.

I Gradient Boosted Trees sono solo una lieve variazione su questa intuizione. La principale differenza è che, invece di campionare il tuo dataset di addestramento e costruire un albero in maniera casuale, con tutti gli alberi costruiti indipendentemente, i Gradient Boosted Trees costruiscono prima la foresta, e poi il successivo albero viene realizzato osservando i residui della foresta già esistente. L’idea è che hai iniziato a costruire un modello composto da molti alberi, e fai previsioni che divergono dalla realtà. Hai queste delta, ovvero le differenze tra i valori reali e quelli previsti, chiamate residui. L’idea è che addestrerai il prossimo albero non contro il dataset originale, ma contro un campione di residui. I Gradient Boosted Trees funzionano ancora meglio delle Random Forests. In pratica, le Random Forests soffrono di overfitting, ma solo lievemente. Esistono alcune dimostrazioni che evidenziano come, in determinate condizioni, le Random Forests non dovrebbero soffrire di overfitting.

È interessante notare che i Gradient Boosted Trees hanno dominato i punteggi elevati in quasi tutte le competizioni di apprendimento automatico per un decennio e mezzo. Quando osservi circa l'80-90% delle competizioni su Kaggle, noterai che è essenzialmente un Gradient Boosted Tree a primeggiare. Tuttavia, nonostante questo incredibile dominio nelle competizioni di apprendimento automatico, ci sono stati pochissimi progressi nell’applicare i Gradient Boosted Trees ai problemi di supply chain nel mondo reale. La ragione principale è che i Gradient Boosted Trees manifestano pochissima mechanical sympathy; il loro design non è affatto adatto all’hardware informatico che possediamo.

È facile capire perché: costruisci un modello composto da una serie di alberi, e il modello finisce per essere grande quanto una frazione del tuo dataset. In molte situazioni, ti ritrovi con un modello che, in termini di dati, è più grande del dataset con cui hai iniziato. Pertanto, se il tuo dataset è già molto grande, il tuo modello diventa gigantesco, e questo rappresenta un problema assai rilevante.

Per quanto riguarda la storia dei Gradient Boosted Trees, ci sono state numerose implementazioni, a partire da GBM (Gradient Boosted Machines) nel 2007, che ha davvero reso popolare questo approccio in un pacchetto R. Sin dall’inizio, si sono presentati problemi di scalabilità. Le persone hanno subito iniziato a parallelizzare l’esecuzione con PGBRT (Parallel Gradient Boosted Regression Trees), ma rimaneva comunque molto lento. XGBoost è stato una svolta poiché ha ottenuto un miglioramento di un ordine di grandezza in termini di scalabilità. L’intuizione chiave in XGBoost fu quella di adottare un design colonnare dei dati per accelerare la costruzione degli alberi. Successivamente, LightGBM ha riciclato tutte le intuizioni di XGBoost, modificando però la strategia di costruzione degli alberi. XGBoost faceva crescere l’albero per livelli, mentre LightGBM ha deciso di farlo crescere per foglie. Il risultato netto è che LightGBM è ora più veloce di GBM di diversi ordini di grandezza, considerando lo stesso hardware informatico, rispetto a quanto GBM sia mai stato. Tuttavia, da un punto di vista pratico di supply chain, utilizzare i Gradient Boosted Trees è generalmente impraticabilmente lento. Non è impossibile usarli; è solo che rappresentano un ostacolo tale da non valerne generalmente la pena.

Slide 10

La cosa sconcertante è che i Gradient Boosted Trees sono abbastanza potenti da vincere quasi tutte le competizioni di apprendimento automatico e, a mio modesto parere, questi modelli rappresentano un vicolo cieco tecnologico. Le Support Vector Machines, le Random Forests e i Gradient Boosted Trees hanno in comune il fatto di essere nient’altro che template matching. Sono template matching molto efficaci, mi raccomando, ma davvero nient’altro. Quello in cui eccellono è principalmente la selezione delle variabili, e vi sono molto bravi in questo, ma c’è ben poco di più. In particolare, non c’è espressività nella loro capacità di trasformare l’input in altro se non in una semplice selezione o filtraggio dello stesso.

Se torniamo all’immagine del carrello elevatore che ho presentato all’inizio di questa lezione, non c’è alcuna speranza che uno di quei modelli possa fare le stesse affermazioni che ho appena fatto, indipendentemente da quanto grande sia il dataset di immagini. Potresti letteralmente alimentare tutti quei modelli con milioni di immagini scattate dai warehouses in tutto il mondo, eppure non sarebbero in grado di dichiarare cose come, “Oh, ho visto un carrello elevatore in questa situazione; una squadra arriverà per effettuare riparazioni.” Non davvero.

In pratica, ciò che abbiamo osservato è che il fatto che questi modelli vincano competizioni di apprendimento automatico è fuorviante, poiché in tali situazioni intervengono fattori che giocano a loro favore. Innanzitutto, i dataset del mondo reale sono estremamente complessi, a differenza delle competizioni di apprendimento automatico dove, nel migliore dei casi, si utilizzano dataset “da giocattolo” che rappresentano solo una frazione delle complessità presenti nei contesti reali. In secondo luogo, per vincere una competizione di apprendimento automatico utilizzando modelli come i Gradient Boosted Trees, occorre dedicare vaste ore all’ingegnerizzazione delle caratteristiche. Poiché questi modelli sono glorificati template matching, è necessario disporre delle giuste features affinché la semplice selezione delle variabili faccia funzionare il modello in modo eccellente. Occorre iniettare una grossa dose di intelligenza umana nella preparazione dei dati perché tutto funzioni. Questo rappresenta un grosso problema perché, nel mondo reale, quando si cerca di risolvere un problema per real supply chains, le ore ingegneristiche che si possono dedicare al problema sono limitate. Non puoi passare sei mesi su un aspetto da giocattolo, a tempo limitato, di una supply chain.

Il terzo problema è che, nelle supply chains, i dataset sono in costante evoluzione. Non è solo che i dati cambino, ma anche il problema stesso si trasforma gradualmente. Ciò aggrava ulteriormente le problematiche legate al feature engineering. Fondamentalmente, ci ritroviamo con modelli che vincono competizioni di apprendimento automatico e forecasting competitions, ma se guardiamo a un decennio di distanza, vediamo che questi modelli non rappresentano il futuro dell’apprendimento automatico; sono il passato.

Slide 11

Il deep learning è stata la risposta a questi superficiali template matching. Il deep learning viene spesso presentato come il discendente delle reti neurali artificiali, ma in realtà ha preso il volo proprio il giorno in cui i ricercatori decisero di abbandonare le metafore biologiche per concentrarsi invece sulla mechanical sympathy. Ancora una volta, la mechanical sympathy, ovvero il sapersi accordare con i computer che possediamo, è essenziale. Il problema che avevamo con le reti neurali artificiali era che cercavamo di imitare la biologia, mentre i computer a nostra disposizione sono completamente diversi dai substrati biologici su cui si fonda il nostro cervello. Questa situazione ricorda i primi tempi della aviation, in cui numerosi inventori cercavano di costruire macchine volanti imitando gli uccelli. Oggi, disponiamo di macchine volanti che volano molte volte più veloce degli uccelli più rapidi, ma il modo in cui queste macchine volano ha ben poco in comune con il volo degli uccelli.

La prima intuizione sul deep learning fu la necessità di disporre di qualcosa di profondo ed espressivo, capace di applicare ogni tipo di trasformazione ai dati in input, permettendo così al modello di manifestare comportamenti predittivi intelligenti. Tuttavia, doveva anche collaborare bene con l’hardware informatico a nostra disposizione. L’idea era che, se avessimo modelli complessi e ben integrati con l’hardware, saremmo stati probabilmente in grado di apprendere funzioni di complessità di diversi ordini di grandezza, a parità di condizioni, rispetto a qualsiasi metodo privo dello stesso grado di mechanical sympathy.

Differentiable programming, che è stato presentato nella lezione precedente, può essere considerato come lo strato base del deep learning. Non tornerò sul differentiable programming in questa lezione, ma invito il pubblico a guardare la lezione precedente se non l’avete ancora vista. Dovreste essere in grado di comprendere quanto segue anche se non avete visionato la lezione precedente. Quest’ultima dovrebbe chiarire alcuni dei dettagli più tecnici del processo di apprendimento stesso. In sintesi, il differentiable programming è semplicemente un modo per, scegliendo una forma specifica di modello, identificare i valori ottimali per i parametri in esso contenuti.

Mentre il differentiable programming si concentra sull’identificazione dei parametri ottimali, l’apprendimento automatico si focalizza sull’individuare le forme di modelli superiori, che possiedono la massima capacità di apprendere dai dati.

Slide 12

Allora, come creiamo un template per una funzione arbitrariamente complessa che possa riflettere qualsiasi trasformazione altrettanto complessa sui dati in input? Iniziamo con un circuito di valori floating-point. Perché valori floating-point? Beh, perché si tratta di quello su cui possiamo applicare il gradient descent, che, come abbiamo visto nella lezione precedente, è estremamente scalabile. Quindi, utilizzeremo numeri floating-point. Avremo una sequenza di numeri floating-point, ossia numeri floating-point come input e numeri floating-point come output.

Ora, cosa facciamo nel mezzo? Applichiamo l’algebra lineare, e più nello specifico, eseguiamo la moltiplicazione di matrici. Perché? La risposta al motivo per cui la moltiplicazione di matrici è fondamentale è stata data nella primissima lezione di questo quarto capitolo. Essa riguarda il modo in cui i computer moderni sono progettati; in sostanza, è possibile ottenere un notevole aumento della velocità di elaborazione se ci si attiene all’algebra lineare. Quindi, si usi l’algebra lineare. Ora, se prendo i miei input e applico una trasformazione lineare, che equivale a una moltiplicazione di matrici con una matrice chiamata W (questa matrice contiene i parametri che desideriamo apprendere successivamente), come posso renderla più complessa? Posso aggiungere una seconda moltiplicazione di matrici. Tuttavia, se ricordi i tuoi corsi di algebra lineare, quando moltiplichi una funzione lineare per un’altra funzione lineare, ottieni comunque una funzione lineare. Quindi, se compongo semplicemente delle moltiplicazioni di matrici, rimarrò con una moltiplicazione di matrici, che resterà completamente lineare.

Quello che faremo è intercalare delle non-linearità tra le operazioni lineari. Questo è esattamente ciò che ho fatto su questo schermo. Ho intercalato una funzione comunemente nota nella letteratura del deep learning come Rectified Linear Unit (ReLU). Questo nome, che è fantastico e complicato rispetto a ciò che fa, è in realtà una funzione molto semplice che dice: se prendo un numero e se questo numero è positivo, allora restituisco esattamente lo stesso numero (quindi è una funzione identità), ma se il numero è negativo, restituisco 0. Puoi anche scriverla come il massimo tra il tuo valore e zero. Questa è una non-linearità molto banale.

Potremmo usare funzioni non-lineari molto più sofisticate. Storicamente, quando si lavorava con le reti neurali, si voleva usare sofisticate funzioni sigmoidali perché si pensava che così funzionassero i nostri neuroni. Ma la realtà è: perché dovremmo sprecare potenza di calcolo per calcolare cose irrilevanti? L’intuizione chiave è che dobbiamo introdurre qualcosa di non lineare, e non importa davvero quale funzione non lineare usiamo. L’unica cosa che conta è renderla molto veloce. Vogliamo mantenere il tutto il più rapido possibile.

Quello che sto costruendo qui si chiama dense layers. Un dense layer è essenzialmente una moltiplicazione di matrici seguita da una non-linearità (la Rectified Linear Unit). Possiamo impilarli. Sullo schermo, puoi vedere una rete, che è tipicamente chiamata multi-layer perceptron, e abbiamo tre strati. Potremmo continuare ad impilarli, e potremmo averne 20 o 2.000; non importa davvero. La realtà è che, per quanto possa sembrare semplicistico, se prendi una rete come questa con solo un paio di strati e la metti nel tuo framework di differentiable programming, che ti fornisce i parametri, il differentiable programming come base sarà in grado di addestrare i parametri, che inizialmente sono scelti casualmente. Se vuoi inizializzarla, basta inizializzare tutti i parametri casualmente. Otterrai risultati abbastanza decenti per un’enorme varietà di problemi.

Questo è molto interessante perché, a questo punto, hai praticamente tutti gli ingredienti fondamentali del deep learning. Quindi, per il pubblico, congratulazioni! Probabilmente puoi iniziare ad aggiungere “deep learning specialist” al tuo curriculum, perché questo è quasi tutto ciò che c’è da sapere. Beh, non proprio, ma diciamo che è un buon punto di partenza.

Slide 13

La realtà è che il deep learning coinvolge pochissima teoria oltre all’algebra dei tensori, che è essenzialmente l’algebra lineare computerizzata. Tuttavia, il deep learning comporta un sacco di trucchi. Ad esempio, dobbiamo normalizzare gli input e dobbiamo stabilizzare i gradienti. Se iniziamo ad impilare molte operazioni del genere, i gradienti possono crescere esponenzialmente nel percorso inverso attraverso la rete, e a un certo punto supereranno la capacità di rappresentare quei numeri. Abbiamo computer nel mondo reale, e non sono in grado di rappresentare numeri arbitrariamente grandi. A un certo punto, superi semplicemente la capacità di rappresentare il numero con un valore floating-point a 32 bit o 16 bit. Ci sono un sacco di trucchi per la stabilizzazione dei gradienti. Ad esempio, il trucco è tipicamente il batch normalization, ma esistono altri stratagemmi per questo.

Se hai input che hanno una struttura geometrica, per esempio, unidimensionale come una serie temporale (vendite storiche, come vediamo in supply chain), che può essere bidimensionale (pensala come un’immagine), tridimensionale (potrebbe essere un film) o quadridimensionale, ecc., se gli input hanno una struttura geometrica, allora ci sono strati speciali in grado di catturare questa struttura. I più famosi sono probabilmente chiamati convolutional layers.

Inoltre, esistono tecniche e stratagemmi per gestire input categorici. Nel deep learning, tutti i tuoi input sono valori floating-point, quindi come si fa a gestire le variabili categoriche? La risposta è rappresentata dagli embeddings. Ci sono surrogate losses, che sono funzioni di perdita alternative che presentano gradienti molto ripidi e facilitano il processo di convergenza, amplificando infine ciò che puoi apprendere dai dati. Ci sono un sacco di trucchi, e tutti questi stratagemmi possono essere generalmente inseriti nel programma che stai componendo, perché operiamo con differentiable programming come base.

Il deep learning riguarda davvero il modo in cui componiamo un programma che, una volta eseguito attraverso il processo di addestramento offerto dal differentiable programming, possiede un’alta capacità di apprendimento. La maggior parte degli elementi che ho appena elencato sullo schermo sono anche di natura programmatica, il che è molto conveniente considerando che abbiamo il differentiable programming, un paradigma di programmazione, che supporta tutto ciò.

Slide 14

A questo punto, dovrebbe essere più chiaro perché il deep learning è diverso dal classico machine learning. Il deep learning non riguarda i modelli. Infatti, la maggior parte delle librerie open source di deep learning non includono nemmeno alcun modello. Con il deep learning, ciò che conta veramente sono le architetture dei modelli, che puoi considerare come template che devono essere fortemente personalizzati quando vuoi adattarli a una situazione specifica. Tuttavia, se adotti un’architettura adeguata, puoi prevedere che la tua personalizzazione conserverà comunque l’essenza della capacità del tuo modello di apprendere. Con il deep learning, spostiamo l’interesse dal modello finale, che diventa qualcosa di poco interessante, all’architettura, che diventa il vero oggetto di ricerca.

Sullo schermo, puoi vedere una serie di esempi notevoli di architetture. Prima di tutto, LSTM, che sta per Long Short-Term Memory, iniziò a funzionare intorno al 2007. La storia delle pubblicazioni sull’LSTM è un po’ più complicata, ma sostanzialmente ha iniziato a operare in stile deep learning nel 2007. È stato superato dai Gated Recurrent Units (GRU), che sono essenzialmente la stessa cosa dell’LSTM ma più semplici e più eleganti. In sostanza, gran parte della complessità dell’LSTM deriva dalle metafore biologiche. Si scopre che puoi abbandonare le metafore biologiche, ottenendo qualcosa di più semplice che funziona praticamente allo stesso modo. Questi sono i Gated Recurrent Units (GRU). Successivamente, sono arrivati i transformers, che sostanzialmente hanno reso obsoleti sia LSTM che GRU. I transformers sono stati una svolta perché erano molto più veloci, più snelli in termini di risorse computazionali necessarie, e avevano una capacità di apprendimento ancora maggiore.

La maggior parte di queste architetture è accompagnata da metafore. LSTM ha una metafora cognitiva, la long short-term memory, mentre i transformers vengono con una metafora del recupero delle informazioni. Tuttavia, queste metafore hanno pochissimo potere predittivo e potrebbero in realtà rappresentare più una fonte di confusione e distrazione da ciò che realmente fa funzionare queste architetture, che a questo punto non è completamente ben compreso.

I transformers sono di grande interesse per la supply chain perché sono una delle architetture più versatili. Vengono usati praticamente per tutto al giorno d’oggi, dalla guida autonoma alla traduzione automatizzata e per molti altri problemi complessi. Questo testimonia il potere di scegliere l’architettura giusta, che può poi essere utilizzata per adattarsi a un’enorme diversità di problemi. Per quanto riguarda la supply chain, una delle principali difficoltà nell’affrontare qualsiasi cosa con il machine learning è che abbiamo una diversità incredibile di problemi da risolvere. Non possiamo permetterci di avere un team che spenda cinque anni in sforzi di ricerca per ogni singolo sotto-problema che affrontiamo. Abbiamo bisogno di qualcosa che ci permetta di muoverci velocemente e di non dover reinventare la metà del machine learning ogni volta che vogliamo risolvere il problema successivo.

Slide 15

Un aspetto del deep learning che è davvero sconvolgente quando ci si mette a pensarci è il numero enorme di parametri. Nel multi-layer perceptron che ho introdotto pochi minuti fa, con dense layers che prevedono la moltiplicazione di matrici, possiamo avere moltissimi parametri in quelle matrici. Infatti, non è molto difficile avere tanti parametri quanti sono i punti dati o le osservazioni nei nostri dataset di addestramento. Come abbiamo visto all’inizio della lezione, se abbiamo un modello con così tanti parametri, dovrebbe soffrire drasticamente di overfitting.

La realtà nel deep learning è ancora più sconcertante. Ci sono molte situazioni in cui abbiamo moltissimi più parametri di osservazioni, eppure non sperimentiamo problemi di overfitting drammatici. Ancora più sorprendente è che i modelli di deep learning tendono ad adattarsi completamente al dataset di addestramento, tanto da ottenere un errore quasi zero, e riescono comunque a mantenere il loro potere predittivo su dati che non abbiamo.

Due anni fa, il paper Deep Double Descent pubblicato da OpenAI ha fatto luce in modo molto interessante su questa situazione. Il team ha dimostrato che abbiamo sostanzialmente una “uncanny valley” nel campo del machine learning. L’idea è che se prendi un modello e hai solo pochi parametri, possiedi molto bias, e la qualità dei tuoi risultati su dati non visti non è così buona. Questo rispecchia la visione classica del machine learning e quella statistica classica. Se aumenti il numero di parametri, migliorerai la qualità del tuo modello, ma a un certo punto inizierai a overfittare. Questo è esattamente ciò che abbiamo visto con la precedente discussione su underfitting e overfitting. C’è un equilibrio da trovare.

Tuttavia, ciò che hanno dimostrato è che se continui ad aumentare il numero di parametri, succederà qualcosa di molto strano: farai overfitting sempre meno, l’esatto opposto di quanto predirebbe la classica teoria dell’apprendimento statistico. Questo comportamento non è accidentale. Gli autori hanno mostrato che questo comportamento è molto robusto e diffuso. Avviene praticamente sempre in una grande varietà di situazioni. Non è ancora ben chiaro il motivo, ma ciò che è ben compreso a questo punto è che il deep double descent è molto reale e diffuso.

Questo aiuta anche a capire perché il deep learning è arrivato relativamente tardi al party del machine learning. Affinché il deep learning potesse avere successo, prima dovevamo riuscire a costruire modelli capaci di processare decine di migliaia o addirittura centinaia di migliaia di parametri per superare questa uncanny valley. Negli anni ‘80 e ‘90 non sarebbe stato possibile avere alcuna svolta nel deep learning, semplicemente perché le risorse hardware di calcolo non erano in grado di superare questa uncanny valley.

Fortunatamente, con l’hardware di calcolo odierno è possibile addestrare modelli senza troppo sforzo che hanno milioni o addirittura miliardi di parametri. Come abbiamo sottolineato nelle lezioni precedenti, ora ci sono aziende come Facebook che addestrano modelli con oltre un trilione di parametri. Quindi possiamo andare molto lontano.

Slide 16

Finora, abbiamo supposto che la funzione di loss fosse nota. Tuttavia, perché dovrebbe essere così? Infatti, consideriamo la situazione di un negozio di moda da una prospettiva di supply chain. Un negozio di moda ha livelli di stock per ogni singolo SKU, e vogliamo proiettare la domanda futura. Vogliamo proiettare uno scenario possibile e credibile per la domanda futura di questo negozio. Ciò che accadrà è che, quando certi SKU si esauriranno, dovremo osservare cannibalizzazione e sostituzione. Quando un dato SKU raggiunge uno stockout, normalmente la domanda dovrebbe, in parte, ritornare su prodotti simili.

Ma se provassimo ad affrontare questo tipo di approccio con metriche di previsione classiche come il Mean Absolute Percentage Error (MAPE), il Mean Absolute Error (MAE), il Mean Square Error (MSE) o altre metriche che operano SKU per SKU, giorno per giorno o settimana per settimana, non riusciremmo a catturare nessuno di questi comportamenti. Quello che vogliamo veramente è una metrica che catturi se siamo molto bravi a cogliere tutti quegli effetti di cannibalizzazione e sostituzione. Ma come dovrebbe essere questa funzione di loss? È molto poco chiaro e sembra richiedere un comportamento abbastanza sofisticato. Una delle scoperte chiave del deep learning è stata proprio quella di intuire che la funzione di loss doveva essere appresa. È esattamente così che è stata prodotta l’immagine sullo schermo. Questa è un’immagine completamente generata da una macchina; nessuna di quelle persone è reale. Sono state generate, e il problema era: come costruire una funzione di loss o una metrica che ti dica se un’immagine è un buon ritratto fotorealistico di un essere umano o meno?

La realtà è che se inizi a pensare in termini di Mean Absolute Percentage Error (MAPE), finisci per ottenere una metrica che opera pixel per pixel. Il problema è che una metrica che opera pixel per pixel non ti dice nulla sul fatto che l’immagine nel suo insieme assomigli a un volto umano. Abbiamo lo stesso problema nel negozio di moda per gli SKU e la proiezione della domanda. È molto facile avere una metrica a livello di SKU, ma ciò non ci dice nulla del quadro generale del negozio nel suo complesso. Eppure, da una prospettiva di supply chain, non siamo interessati all’accuratezza a livello di SKU; siamo interessati all’accuratezza a livello di negozio. Vogliamo sapere se i livelli di stock sono buoni nella loro totalità per il negozio, non se sono buoni per uno SKU e poi per un altro. Quindi, come ha affrontato la comunità del deep learning questo problema?

Slide 17

Questo risultato molto impressionante è stato ottenuto con una tecnica meravigliosamente semplice chiamata Generative Adversarial Networks (GANs). Sulla stampa, potresti aver sentito parlare di queste tecniche come deepfakes. I deepfakes sono immagini prodotte con questa tecnica GAN. Come funziona?

Beh, il funzionamento è il seguente: si inizia prima con un generator. Il generator prende in input un po’ di rumore, che sono semplicemente valori casuali, e produrrà un’immagine, nel caso attuale. Se torniamo al caso della supply chain, esso produrrebbe traiettorie per tutti i punti di domanda osservati per ogni singolo SKU, per, diciamo, i prossimi tre mesi in questo negozio di moda. Questo generator è esso stesso una rete di deep learning.

Ora, avremo un discriminator. Il discriminator è anch’esso una rete di deep learning, e il suo obiettivo è imparare a predire se quanto appena generato è reale o sintetico. Il discriminator è un classificatore binario che deve semplicemente dire se è reale o non reale. Se il discriminator riesce a prevedere correttamente che un campione è falso, ovvero sintetico, faremo passare i gradienti indietro al generator e permetteremo al generator di apprendere da ciò.

Ciò che accade con questa configurazione è che il generatore inizia a imparare a creare campioni che ingannano e confondono realmente il discriminatore. Allo stesso tempo, il discriminatore impara a distinguere meglio tra i campioni reali e quelli sintetici. Se seguite questo processo, sperabilmente converge a uno stato in cui vi ritroverete con un generatore di altissima qualità che produce campioni incredibilmente realistici e con un discriminatore molto valido che è in grado di dirvi se qualcosa è reale o meno. Questo è esattamente ciò che viene fatto con le GAN per generare quelle immagini fotorealistiche. Se torniamo alla supply chain, troverete esperti nei circoli della supply chain che affermano che, per una determinata situazione, la metrica migliore è il MAPE, o il MAPE ponderato, o qualunque altra. Proporranno ricette in cui viene detto che in certe situazioni bisogna utilizzare questa metrica o quell’altra. La realtà è che il deep learning dimostra che una metrica di previsione è un concetto superato. Se desiderate ottenere un’accuratezza ad alta dimensione, e non solo un’accuratezza puntuale, dovete apprendere la metrica. Sebbene al momento sospetto che ci siano quasi zero supply chain che utilizzano queste tecniche, a un certo punto in futuro lo faranno. Diventerà la norma apprendere la metrica di previsione utilizzando reti neurali avversarie generative o i loro discendenti, perché è un modo per catturare il comportamento sottile e ad alta dimensione che è veramente di interesse, anziché limitarsi a un’accuratezza puntuale.

Slide 18

Finora, ogni osservazione era accompagnata da un’etichetta, e l’etichetta rappresentava l’output che desideravamo prevedere. Tuttavia, ci sono situazioni che non possono essere inquadrate come problemi input-output. Le etichette semplicemente non sono disponibili. Se vogliamo fare un esempio nella supply chain, potremmo considerare un ipermercato. Negli ipermercati, i livelli di stock non sono perfettamente accurati. Le merci possono essere danneggiate, rubate o scadute, e ci sono molte ragioni per cui i record elettronici nel vostro sistema non rispecchiano realmente ciò che è disponibile sugli scaffali come percepito dai clienti. L’inventario è troppo costoso per essere una fonte di dati in tempo reale per un inventario accurato. Potete fare l’inventario, ma non potete perlustrare l’intero ipermercato ogni singolo giorno. Quello che si ottiene è una grande quantità di stock leggermente impreciso. Ne avete tonnellate, ma non potete davvero dire quali siano accurati e quali no.

Questa è sostanzialmente la situazione in cui l’apprendimento non supervisionato ha davvero senso. Vogliamo imparare qualcosa; abbiamo dati, ma non disponiamo delle risposte giuste. Non abbiamo quelle etichette. Quello che possediamo è semplicemente una montagna di dati. L’apprendimento non supervisionato è stato considerato per decenni dalla comunità del machine learning come il sacro graal. Per molto tempo, era il futuro, ma un futuro lontano. Tuttavia, recentemente sono stati compiuti alcuni progressi incredibili in quest’area. Uno di questi avanzamenti è stato, ad esempio, raggiunto da un team di Facebook con un articolo intitolato “Unsupervised Machine Translation Using Monolingual Corpora Only.”

Quello che il team di Facebook ha realizzato in questo articolo è stato costruire un sistema di traduzione che utilizzasse soltanto un corpus di testi in inglese e un corpus di testi in francese. Questi due corpora non hanno nulla in comune; non si tratta nemmeno dello stesso testo. Sono semplicemente testi in inglese e testi in francese. Quindi, senza fornire alcuna traduzione effettiva al sistema, hanno fatto in modo che il sistema imparasse a tradurre dall’inglese al francese. Questo è un risultato assolutamente stupefacente. A proposito, il metodo impiegato ricorda incredibilmente quello delle reti neurali avversarie generative che ho appena presentato. Allo stesso modo, un team di Google ha pubblicato BERT (Bidirectional Encoder Representations from Transformers) due anni fa. BERT è un modello che viene addestrato in maniera per lo più non supervisionata. Stiamo parlando di testo, ancora una volta. Il suo funzionamento consiste nello prendere enormi database di testo e mascherare casualmente delle parole. Successivamente, addestrate il modello a prevedere quelle parole, ripetendo il procedimento per l’intero corpus. Alcuni definiscono questa tecnica self-supervised, ma ciò che è particolarmente interessante con BERT e che diventa rilevante per la supply chain è che, improvvisamente, il modo in cui ci si approccia ai dati consiste nel costruire una macchina che, pur nascondendo parti dei dati, è in grado di ricompletarli.

La ragione per cui questo è di primaria importanza per la supply chain è che, fondamentalmente, ciò che si sta facendo con BERT nel contesto dell’elaborazione del linguaggio naturale può essere esteso a molti altri domini. È la macchina delle domande “what-if” per eccellenza. Per esempio, e se avessi un negozio in più? A questa domanda “what-if” si può rispondere semplicemente modificando i dati, aggiungendo il negozio e interrogando il modello di machine learning che avete appena costruito. E se avessi un prodotto in più? E se avessi un cliente in più? E se avessi un prezzo differente per questo prodotto? E così via. L’apprendimento non supervisionato è di primaria importanza perché inizia a trattare i dati nel loro insieme, non semplicemente come una lista di coppie. Finisce per fornire un meccanismo completamente generale in grado di fare previsioni su qualsiasi aspetto che sia in qualche modo presente nei dati. Questo è molto potente.

Slide 19

Ora, finalmente, dobbiamo riconsiderare il concetto di osservazione. Inizialmente, abbiamo detto che un’osservazione consistesse in una coppia di feature più un’etichetta. Abbiamo visto come possiamo eliminare l’etichetta, ma che dire delle feature stesse e dell’osservazione? Il problema con la supply chain è che in realtà non abbiamo osservazioni. Non è neppure chiaro che si possa scomporre una supply chain in una lista di osservazioni indipendenti o omogenee. Come discusso in una lezione precedente, ciò che serve per osservare una supply chain non è una diretta osservazione scientifica della stessa, ma una serie di componenti software aziendali, e l’unico modo per osservare una supply chain è indirettamente, attraverso i record raccolti da tali applicazioni. Questi possono essere l’ERP, il WMS, il punto vendita, ecc. In sostanza, tutto ciò che abbiamo sono record elettronici di natura transazionale, poiché tutti quei sistemi sono tipicamente implementati sopra database transazionali. Pertanto, le osservazioni non sono indipendenti. I record che possediamo sono relazionali, in senso letterale, perché risiedono in un database relazionale. Quando affermo che hanno relazioni, intendo dire che, se osservate un cliente con una carta loyalty, ad esempio, esso è collegato a tutti i prodotti acquistati. Ogni prodotto è collegato a tutti i negozi in cui esso fa parte dell’assortimento. Ogni negozio è collegato a tutti i magazzini che hanno la capacità di servire il negozio in questione. Quindi, non abbiamo osservazioni indipendenti; abbiamo dati con una miriade di strutture relazionali sovrapposte e nessuno di questi elementi è veramente indipendente dagli altri.

La svolta rilevante nel deep learning per affrontare questo tipo di dati interconnessi è conosciuta come graph learning. Il graph learning è esattamente ciò di cui avete bisogno per gestire comportamenti come la sostituzione e la cannibalizzazione nel settore della moda. Il modo migliore per comprendere la cannibalizzazione è pensare che tutti i prodotti stiano competendo per gli stessi clienti, e analizzando i dati che collegano clienti e prodotti, è possibile studiarla. Attenzione, il graph learning non ha nulla a che fare con i database a grafo, che sono qualcosa di completamente diverso. I database a grafo sono essenzialmente solo database utilizzati per interrogare grafi, senza alcun apprendimento. Il graph learning riguarda l’apprendimento di proprietà extra sui grafi stessi. Si tratta di apprendere relazioni che possono o non possono essere osservate completamente, o di arricchire il tipo di relazione che possediamo con una sovrapposizione di conoscenza applicabile.

Il mio punto di vista è che, dal momento che per progettazione la supply chain è un sistema in cui tutte le parti sono interconnesse – questa è la maledizione della supply chain, in cui non potete ottimizzare localmente nulla senza spostare i problemi – il graph learning diventerà sempre più diffuso come approccio per affrontare tali problemi sia nella supply chain che nel machine learning. Essenzialmente, le reti neurali a grafo sono tecniche di deep learning pensate per gestire grafi.

Slide 20

In conclusione, pensare che il machine learning consista nel fornire previsioni più accurate è, per dirla in modo delicato, piuttosto ingenuo. È come dire che lo scopo principale di un’automobile è quello di avere accesso a un cavallo più veloce. Sì, è vero che, molto probabilmente grazie al machine learning, possiamo ottenere previsioni più accurate. Tuttavia, questo rappresenta solo una piccola parte di un quadro molto più ampio, un quadro che continua a espandersi mano a mano che si registrano progressi nella comunità del machine learning. Abbiamo cominciato con framework di machine learning che includevano una serie di concetti: feature, label, observation, model e loss. Questo piccolo framework elementare era già di gran lunga più generale rispetto alla prospettiva della previsione delle serie temporali. Con lo sviluppo recente del machine learning, osserviamo che anche tali concetti stanno lentamente e gradualmente cadendo nell’irrilevanza, poiché stiamo scoprendo modi per trascenderli. Per la supply chain, questo cambiamento di paradigma è di importanza critica perché implica che dobbiamo applicare lo stesso tipo di cambiamento anche nel campo delle previsioni. Il machine learning ci obbliga a ripensare completamente come affrontare i dati e cosa possiamo fare con essi. Il machine learning apre porte che fino a non molto tempo fa erano ben chiuse.

Slide 21

Ora diamo un’occhiata ad alcune domande.

Domanda: Le random forests non usano il bagging?

Il mio punto è che, sì, sono un’estensione di tale tecnica, e c’è molto di più in esse rispetto al semplice bagging. Il bagging è una tecnica interessante, ma ogni volta che incontrate una tecnica di machine learning, dovete chiedervi: questa tecnica mi farà progredire nella mia capacità di apprendere problemi davvero complessi come la cannibalizzazione o la sostituzione? E, questa tecnica si integrerà bene con l’hardware informatico che possedete? Questo è uno dei concetti chiave che dovreste portare via da questa lezione.

Domanda: Con la spinta affinché le aziende automatizzino tutto tramite la robotica, qual è il futuro degli operatori dei magazzini logistici? Saranno sostituiti dai robot nel prossimo futuro?

Questa domanda non è esattamente correlata al machine learning, ma è una domanda molto valida. Le fabbriche hanno subito una trasformazione massiccia verso un’estesa robotization, che può o non può impiegare robot. La produttività delle fabbriche è aumentata e, persino oggi in Cina, le fabbriche sono per lo più fortemente automatizzate. I magazzini sono stati in ritardo. Tuttavia, ciò che osservo attualmente è lo sviluppo di magazzini sempre più meccanici e automatizzati. Non direi che si tratti necessariamente di robot; esistono molte tecnologie concorrenti per realizzare un magazzino che raggiunga un grado superiore di automazione. In definitiva, la tendenza è chiara. I magazzini e i centri logistici, in generale, subiranno lo stesso tipo di miglioramento massiccio della produttività che abbiamo già osservato nella produzione.

Per rispondere alla vostra domanda, non dico che le persone saranno sostituite dai robot; saranno sostituite dall’automazione. L’automazione a volte assumerà la forma di qualcosa simile a un robot, ma può anche manifestarsi in molti altri modi. Alcune soluzioni sono semplicemente configurazioni intelligenti che migliorano enormemente la produttività senza ricorrere al tipo di tecnologia che, istintivamente, associamo ai robot. Tuttavia, credo che il comparto logistico della supply chain nel suo complesso tenderà a ridursi. L’unico fattore che attualmente sostiene questa crescita è il fatto che, con l’ascesa dell’e-commerce, dobbiamo occuparci dell’ultimo miglio. L’ultimo miglio sta progressivamente assorbendo la maggior parte della forza lavoro impegnata nella logistica. Anche l’ultimo miglio sarà automatizzato in un futuro non troppo lontano. I veicoli autonomi sono dietro l’angolo; erano stati promessi per questo decennio e, sebbene possano arrivare con un po’ di ritardo, sono in arrivo.

Domanda: Pensate che il machine learning valga la pena investire tempo per impararlo al fine di lavorare nella supply chain?

Assolutamente. A mio parere, il machine learning è una scienza ausiliaria della supply chain. Considerate il rapporto che un medico ha con la chimica. Se siete un medico moderno, nessuno si aspetta che siate un chimico. Tuttavia, se ammettete al vostro paziente di non sapere assolutamente nulla di chimica, la gente penserebbe che non abbiate le qualità necessarie per essere un medico moderno. Il machine learning andrebbe affrontato nello stesso modo in cui chi studia medicina affronta la chimica. Non è un fine, ma un mezzo. Se desiderate svolgere un lavoro serio nella supply chain, dovete avere solide fondamenta nel machine learning.

Domanda: Potreste fare esempi in cui avete applicato il machine learning? Lo strumento è diventato operativo?

Parlando per me, Joannes Vermorel, imprenditore e CEO di Lokad, abbiamo attualmente oltre 100 aziende in produzione, tutte che utilizzano il machine learning per compiti diversi. Questi compiti includono la previsione dei lead times, la produzione di previsioni probabilistiche della domanda, la previsione dei resi, la previsione dei problemi di qualità, la revisione delle stime del tempo medio tra riparazioni non programmate e il rilevamento della correttezza dei prezzi competitivi. Esistono molte applicazioni, come la rivalutazione delle matrici di compatibilità tra auto e parti nel mercato dell’aftermarket automobilistico. Con il machine learning, potete correggere automaticamente una grande parte degli errori nei database. Da Lokad, non solo abbiamo quelle 100 aziende in produzione, ma ciò avviene da quasi un decennio ormai. Il futuro è già qui; è semplicemente non distribuito in modo uniforme.

Domanda: Qual è il modo migliore per imparare il machine learning nel tempo libero? Consigliereste siti come Udemy, Coursera o altro?

Il mio suggerimento sarebbe una combinazione di Wikipedia e lettura di articoli di ricerca. Come avete visto in questa lezione, è importante comprendere le basi fondamentali e rimanere aggiornati con gli ultimi sviluppi nel campo. Come avete visto in queste lezioni, sto citando articoli di ricerca originali. Non fidatevi di informazioni di seconda mano; rivolgetevi direttamente a ciò che è stato pubblicato. Tutto questo è direttamente disponibile online. Esistono articoli sul machine learning che sono scritti in modo povero e indecifrabile, ma ce ne sono anche altri brillantemente scritti che offrono intuizioni cristalline su ciò che sta accadendo. Il mio consiglio è di consultare Wikipedia per avere una panoramica generale di un campo, in modo da cogliere il quadro d’insieme, e poi iniziare a leggere articoli. All’inizio potrebbe sembrare opaco, ma dopo un po’ vi ci abituerete. Potete usare Udemy o Coursera, ma personalmente io non l’ho mai fatto. Il mio obiettivo, quando tengo queste lezioni, è darvi qualche spunto intuitivo per fornirvi una visione complessiva. Se volete andare nei minimi dettagli, tuffatevi direttamente nell’articolo originale pubblicato anni o decenni fa. Cercate informazioni di prima mano e fidatevi della vostra intelligenza.

Il deep learning è un campo di ricerca molto empirico. La maggior parte delle cose che vengono fatte non è estremamente complessa, dal punto di vista matematico. Di solito non va oltre quanto si impara alla fine della scuola superiore, quindi è abbastanza accessibile.

Domanda: Con l’ascesa di strumenti no-code come CodeX e Co-Pilot di OpenAI, pensi che i supply chain practitioners scriveranno modelli in inglese semplice a un certo punto?

La risposta breve è: no, per nulla. L’idea che si potesse evitare il coding esiste da molto tempo. Ad esempio, il Visual Basic di Microsoft era concepito come uno strumento visivo in modo che le persone non dovessero più programmare; potevano semplicemente comporre visivamente cose come i Lego. Ma al giorno d’oggi questo approccio si è rivelato inefficace, e la prossima tendenza è esprimere le cose verbalmente.

Tuttavia, il motivo per cui utilizzo formule matematiche in queste lezioni è che ci sono molte situazioni in cui l’uso di una formula matematica è l’unico modo per trasmettere chiaramente ciò che si intende. Il problema della lingua inglese, o di qualsiasi lingua naturale, è che spesso è imprecisa e incline a interpretazioni errate. Al contrario, le formule matematiche sono precise e chiare. Il problema del linguaggio semplice è che è incredibilmente vago e, sebbene abbia le sue applicazioni, il motivo per cui ricorriamo alle formule è fornire un significato inequivocabile a ciò che viene detto. Cerco di usare le formule in modo limitato, ma quando ne includo una, è perché ritengo sia l’unico modo per trasmettere chiaramente l’idea, con un livello di chiarezza che supera quello che riesco a dire verbalmente.

Per quanto riguarda le piattaforme low-code, sono molto scettico, poiché questo approccio è stato tentato molte volte in passato senza molto successo. La mia opinione personale è che dovremmo rendere il coding più adeguato al supply chain management, individuando perché il coding è difficile e rimuovendo la complessità accidentale. Ciò che rimane è un coding fatto correttamente per il supply chain, che è ciò a cui mira Lokad.

Domanda: Il machine learning rende le previsioni di domanda più accurate per dati storici di vendite stagionali o regolari?

Come ho detto in questa presentazione, il machine learning rende obsoleto il concetto di precisione. Se guardate l’ultima competizione di forecasting su larga scala, la competizione M5, i 10 migliori modelli erano in una certa misura tutti modelli di machine learning. Quindi, il machine learning rende le previsioni più accurate? In termini fattuali, basandosi sulla competizione, sì. Ma è solo marginalmente più accurato rispetto ad altre tecniche, e non si tratta di un’accuratezza rivoluzionaria.

Inoltre, non dovreste considerare il forecasting da una prospettiva unidimensionale. Quando parlate di accuratezza per stagionalità, state considerando un prodotto alla volta, ma questo non è l’approccio giusto. La vera accuratezza consiste nel valutare come il lancio di un nuovo prodotto influenzi tutti gli altri prodotti, poiché ci sarà un certo grado di cannibalizzazione. La chiave è valutare se il modo in cui riflesse tale cannibalizzazione nel vostro modello sia accurato o meno. Improvvisamente, questo diventa un problema multidimensionale. Come ho illustrato nella lezione sulle reti generative, la metrica di ciò che in realtà significa accuratezza deve essere appresa; non può essere semplicemente data. Le formule matematiche, come l’errore assoluto medio, l’errore percentuale assoluto medio e l’errore quadratico medio, sono solo criteri matematici. Non sono il tipo di metriche di cui abbiamo realmente bisogno; sono semplicemente metriche molto naïve.

Domanda: Il lavoro banale dei previsori verrà sostituito dalla previsione in modalità automatica?

Direi che il futuro è già qui, ma non è distribuito in maniera uniforme. Da Lokad, previsioniamo già ogni giorno decine di milioni di SKU, e non ho nessuno in busta paga che regoli le previsioni. Quindi sì, viene già fatto, ma questo è solo una piccola parte del quadro. Se serve che delle persone adeguino le previsioni o regolino i modelli di forecasting, ciò indica un approccio disfunzionale. Dovreste considerare la necessità di regolare le previsioni come un difetto e affrontarlo automatizzando quella parte del processo.

Ancora una volta, secondo l’esperienza di Lokad, queste cose saranno completamente eliminate perché le abbiamo già implementate. Non siamo gli unici a operare in questo modo, quindi per noi è quasi storia antica, essendo il caso da quasi un decennio.

Domanda: Quanto è attivamente usato il machine learning nel prendere decisioni per il supply chain?

Dipende dall’azienda. Da Lokad, viene usato ovunque e, ovviamente, quando dico “da Lokad” intendo nelle aziende servite da Lokad. Tuttavia, la stragrande maggioranza del mercato utilizza ancora sostanzialmente Excel, senza alcun machine learning. Lokad gestisce attivamente inventari per miliardi di euro o dollari, quindi questa è già una realtà da parecchio tempo. Ma Lokad non rappresenta nemmeno lo 0,1% del mercato, per cui siamo ancora un’eccezione. Stiamo crescendo rapidamente, così come parecchi concorrenti. Il mio sospetto è che nel mercato del supply chain si tratti ancora di un setup marginale, ma con una crescita a doppia cifra. Non sottovalutate mai il potere della crescita esponenziale su un lungo periodo. Alla fine diventerà molto grande, sperabilmente con Lokad, ma questa è un’altra storia.

Domanda: Con numerose incognite nel supply chain, qual è una strategia che possa operare assumendo determinati input per un modello?

L’idea è che, sì, ci sono innumerevoli incognite, ma gli input del vostro modello non sono realmente frutto di una scelta arbitraria. Si riduce a ciò che è presente nei vostri sistemi aziendali, cioè il tipo di dati disponibili nel vostro ERP. Se il vostro ERP dispone di dati storici sui livelli di stock, allora potete utilizzarli come parte del vostro modello di machine learning. Se il vostro ERP conserva solo i livelli di stock attuali, allora questi dati non sono disponibili. Potete iniziare a fare snapshot dei vostri livelli di stock se volete usarli come input extra, ma il messaggio principale è che c’è pochissima scelta su ciò che potete impiegare come input; è letteralmente ciò che esiste nei vostri sistemi.

Il mio approccio tipico è che, se dovete creare nuove fonti di dati, il processo sarà lento e doloroso, e probabilmente non costituirà il punto di partenza per l’utilizzo del machine learning nel supply chain. Le aziende più grandi sono state digitalizzate per decenni, dunque ciò che avete nei vostri sistemi transazionali, come il vostro ERP e il WMS, è già un ottimo punto di partenza. Se successivamente vi renderete conto che desiderate avere di più, come l’intelligence competitiva, i livelli di stock autorizzati o gli ETA forniti dai vostri fornitori, questi saranno preziosi affinché possano essere usati come input per i vostri modelli. Di solito, ciò che usate come input è qualcosa per cui avete una buona intuizione che correlata a ciò che cercate di predire, e un’intuizione di alto livello è generalmente sufficiente. Il buon senso, che è difficile da definire, è ampiamente sufficiente. Questo non rappresenta il collo di bottiglia dal punto di vista ingegneristico.

Domanda: Qual è l’impatto delle decisioni sui prezzi sulla stima della domanda futura, anche da una prospettiva probabilistica, e come si affronta dal punto di vista del machine learning?

Questa è una domanda molto interessante. C’è stato un episodio su LokadTV che ha affrontato proprio questo problema. L’idea è che ciò che si apprende diventa ciò che è tipicamente noto come una policy, un elemento che controlla il modo in cui si reagisce a vari eventi. Il modo di fare forecasting consiste nel produrre una sorta di scenario in stile Monte Carlo. Andrai a generare una traiettoria, ma la tua previsione non sarà data da punti dati statici. Sarà un processo ben più generativo, in cui ad ogni fase del processo di previsione dovrai generare il tipo di domanda osservabile, produrre le decisioni che prendi e rigenerare la risposta del mercato a ciò che hai appena fatto.

Diventa molto complicato valutare l’accuratezza del processo generativo della tua risposta della domanda, ed è per questo che devi effettivamente apprendere le tue metriche di forecasting. È un compito molto arduo, ma è per questo motivo che non puoi considerare le tue metriche di previsione, le tue metriche di accuratezza, come un problema unidimensionale. In sintesi, la previsione della domanda diventa un generatore, perciò è fondamentalmente dinamica e non statica. È qualcosa di generativo. Questo generatore reagisce a un agente, un agente che verrà implementato come una policy. Sia il generatore che il sistema decisionale della policy devono essere appresi. Devi anche apprendere la funzione di perdita. C’è molto da imparare, ma fortunatamente il deep learning è un approccio molto modulare e programmatico che si presta bene alla composizione di tutte queste tecniche.

Domanda: È difficile raccogliere dati, specialmente dalle PMI?

Sì, è molto difficile. Il motivo è che, se vi trovate a trattare con un’azienda che fattura meno di 10 milioni, non esiste ciò che viene definito un IT department. Potrebbe essere in uso un piccolo ERP, ma anche se gli strumenti sono buoni, decenti e moderni, non disposete di un team IT. Quando si richiedono i dati, non c’è nessuno nell’azienda cliente che abbia la competenza per eseguire una query SQL per estrarli.

Non sono sicuro di aver compreso correttamente la tua domanda, ma il problema non è esattamente la raccolta dei dati. La raccolta avviene naturalmente tramite il software contabile o l’ERP in uso e, al giorno d’oggi, gli ERP sono accessibili anche ad aziende abbastanza piccole. Il problema risiede nell’estrazione dei dati da quei sistemi software aziendali. Se ti trovi in un’azienda con un fatturato inferiore a 20 milioni di dollari e che non opera nell’e-commerce, è probabile che l’IT department non esista. Anche quando esiste un piccolo IT department, solitamente c’è una sola persona responsabile della configurazione delle macchine e dei desktop Windows per tutti. Non si tratta di qualcuno che conosca i database e compiti amministrativi più avanzati nel campo delle configurazioni IT.

Va bene, immagino che questo sia tutto. La prossima sessione sarà tra un paio di settimane. Sarà mercoledì 13 ottobre. A presto!

Riferimenti

  • A theory of the learnable, L. G. Valiant, novembre 1984
  • Support-vector networks, Corinna Cortes, Vladimir Vapnik, settembre 1995
  • Random Forests, Leo Breiman, ottobre 2001
  • LightGBM: A Highly Efficient Gradient Boosting Decision Tree, Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, Weidong Ma, Qiwei Ye, Tie-Yan Liu, 2017
  • Attention Is All You Need, Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin, ultima revisione dicembre 2017
  • Deep Double Descent: Where Bigger Models and More Data Hurt, Preetum Nakkiran, Gal Kaplun, Yamini Bansal, Tristan Yang, Boaz Barak, Ilya Sutskever, dicembre 2019
  • Analyzing and Improving the Image Quality of StyleGAN, Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila, ultima revisione marzo 2020
  • Generative Adversarial Networks, Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio, giugno 2014
  • Unsupervised Machine Translation Using Monolingual Corpora Only, Guillaume Lample, Alexis Conneau, Ludovic Denoyer, Marc’Aurelio Ranzato, ultima revisione aprile 2018
  • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova, ultima revisione maggio 2019
  • A Gentle Introduction to Graph Neural Networks, Benjamin Sanchez-Lengeling, Emily Reif, Adam Pearce, Alexander B. Wiltschko, settembre 2021