Programmazione Differenziabile
La programmazione differenziabile è il discendente del deep learning, e rappresenta la convergenza di due campi algoritmici: machine learning e ottimizzazione numerica. La programmazione differenziabile sblocca una serie di scenari di supply chain considerati in gran parte intrattabili: ottimizzazione congiunta di prezzi e scorte, ottimizzazione dell’assortimento guidata dalla fedeltà, previsione della domanda per prodotti non standard (ad es. pietre preziose, opere d’arte), ottimizzazione dei flussi multi-echelon su larga scala, ottimizzazione congiunta su canali multipli, ottimizzazione degli stock con valori elettronici parzialmente errati, massimizzazione dei flussi su larga scala sotto molteplici vincoli, ecc. Per molti altri scenari già affrontabili con metodi alternativi, la programmazione differenziabile offre risultati numerici superiori con solo una frazione del sovraccarico, sia in termini di sforzo dei data scientist che di risorse computazionali.
Applicazione alle Supply Chain
Essenzialmente, la Programmazione Differenziabile (DP) offre un percorso per unificare problemi che sono rimasti disconnessi per troppo tempo e li risolve congiuntamente: assortimento, pricing, forecasting, planning, merchandising. Sebbene tale unificazione possa sembrare irrealisticamente ambiziosa, la realtà è che le aziende applicano già un’enorme quantità di soluzioni improvvisate ai propri processi per far fronte all’infinità di problemi generati dal fatto che tali sfide sono state inizialmente suddivise all’interno dell’organizzazione . Ad esempio, il pricing influenza ovviamente la domanda eppure sia il planning che il forecasting vengono quasi sempre eseguiti ignorando completamente i prezzi.
DP sblocca l’enorme opportunità di fornire decisioni approssimativamente corrette da una prospettiva olistica sul business, anziché essere esattamente sbagliato spostando i problemi all’interno dell’organizzazione invece di risolverli.
Aneddoticamente, cercare una correttezza approssimativa tenendo conto del business nel suo insieme è esattamente ciò che caratterizza la maggior parte delle organizzazioni guidate dai fogli di calcolo; e, per mancanza di una tecnologia – come DP – in grado di abbracciare una prospettiva d’insieme, i fogli di calcolo rimangono l’opzione meno terribile.
Ecommerce
Essere in grado di associare il 100% delle unità vendute a clienti noti rappresenta un’enorme quantità latente di informazioni sul mercato; tuttavia, quando si tratta di pricing e ottimizzazione degli stock, le informazioni sulla fedeltà non vengono quasi mai utilizzate ai giorni nostri. DP offre la possibilità di passare dalla previsione basata su serie temporali a quella su grafici temporali, in cui ogni singola coppia cliente-prodotto osservata conta; condizionando decisioni più intelligenti sia per gli stock che per i prezzi.
Marchi di Lusso
L’ottimizzazione dei prezzi e degli assortimenti – fino al livello dei punti vendita – è stata a lungo considerata in gran parte intrattabile a causa della scarsità dei dati, ovvero del volume di vendite per articolo per negozio estremamente basso – anche solo una unità venduta per prodotto per negozio all’anno. DP fornisce approcci per implementare classi di soluzioni capaci di operare in tali condizioni di ultra-scarsezza, offrendo una efficienza dei dati ben superiore rispetto ai metodi tradizionali di deep learning.
Marchi di Moda
L’ottimizzazione congiunta di stock e prezzi è un requisito evidente – poiché la domanda per molti articoli può essere estremamente sensibile al prezzo – tuttavia, l’ottimizzazione congiunta degli acquisti e dei prezzi non è stata raggiunta a causa della mancanza di uno strumento in grado di intuire questo accoppiamento – ossia, la capacità di acquistare di più a un prezzo inferiore genera una maggiore domanda (e viceversa). DP offre l’espressività necessaria per affrontare questa sfida.
Produzione
L’ottimizzazione numerica di reti multi-echelon di notevoli dimensioni crolla se affrontata con i tradizionali risolutori numerici (vedi “Oltre l’ottimizzazione branch-and-cut” qui sotto). Infatti, tali risolutori diventano in gran parte impraticabili quando si tratta di gestire milioni di variabili o comportamenti stocastici. Sfortunatamente, la produzione presenta entrambe le caratteristiche: numerose variabili e comportamenti stocastici. DP offre un approccio pratico per gestire il multi-echelon senza tradire la complessità dei modelli di flusso reali presenti nella rete.
MRO (manutenzione, riparazione, revisione)
Se manca un componente necessario per la riparazione di un sistema, l’intero sistema – che potrebbe essere un aeromobile – rimane inattivo. Le previsioni probabilistiche sono il primo passo per affrontare schemi di domanda erratici e intermittenti, ma comprendere nei minimi dettagli le co-occorrenze delle parti richieste e trasformare tale analisi in raccomandazioni pratiche di inventario era troppo complesso per essere applicato concretamente. DP semplifica la risoluzione di tali problemi.
Reti di vendita al dettaglio
Le cannibalizzazioni all’interno delle reti di vendita al dettaglio – solitamente tra prodotti, ma talvolta anche tra negozi – sono state riconosciute da tempo come di primaria importanza. Questo problema è ulteriormente amplificato dalle promozioni, pensate appositamente per indirizzare i clienti da un marchio all’altro. DP offre la possibilità di affrontare la cannibalizzazione in presenza di promozioni. Invece di limitarsi a “prevedere le promozioni”, DP consente di ottimizzarle per quello che realmente sono: accordi profittevoli gestiti congiuntamente dal canale distributivo e dal marchio.
Oltre il clamore dell’Intelligenza Artificiale
L’Intelligenza Artificiale (AI) è certamente stata la parola d’ordine tecnologica del 2018 e il clamore continua nel 2019. Tuttavia, mentre Lokad utilizza estensivamente tecniche che rientrano nella definizione di AI – ad es. deep learning – abbiamo esitato a porre enfasi sulla parte “AI” della tecnologia di Lokad. Infatti, per quanto riguarda l’ottimizzazione quantitativa delle supply chain, l’AI confezionata semplicemente non funziona. Le supply chain non sono affatto paragonabili, ad esempio, alla computer vision: dati, metriche e compiti sono estremamente eterogenei. Di conseguenza, le aziende che hanno acquistato quelle che sembravano soluzioni “chiavi in mano” di AI stanno iniziando a rendersi conto che tali soluzioni semplicemente non funzioneranno mai, tranne forse nelle situazioni più semplici in cui sistemi basati su regole “semplici” avrebbero fatto altrettanto bene. In sostanza, le supply chain sono sistemi complessi, creati dall’uomo, ed è generalmente irragionevole aspettarsi che il sistema AI – basato esclusivamente sui dati – riscopra autonomamente intuizioni fondamentali sul dominio quali:
- fare promozioni per un marchio di lusso è assolutamente da evitare.
- gli ordini di vendita negativi nell’ERP sono in realtà resi di prodotto.
- i prodotti alimentari freschi devono essere trasportati entro intervalli di temperatura specificati.
- le varianti di colore possono essere buoni sostituti nell’abbigliamento, ma non le varianti di taglia.
- la manutenzione degli aeromobili è determinata dalle ore di volo e dai cicli di volo.
- le vendite nel Regno Unito sono in realtà in GBP, anche se l’ERP visualizza EUR come valuta.
- le persone acquistano componenti per auto per i loro veicoli, non per se stesse.
- ogni diamante è unico, ma i prezzi dipendono principalmente dal carato, dalla chiarezza, dal colore e dal taglio.
- l’assenza di qualsiasi componente NOGO in un aeromobile causa il suo fermo.
- molte centrali chimiche impiegano settimane per riavviarsi dopo essere state spente.

A questo proposito, il deep learning ha riscosso un successo tremendo perché, a differenza di molti approcci precedenti nel machine learning, esso è profondamente composizionale: è possibile modellare in maniera estesa la struttura del modello per apprendere meglio in una situazione specifica. Personalizzare la struttura del modello è diverso dal personalizzare l’input del modello – un compito noto come feature engineering – che era tipicamente l’unica opzione disponibile per la maggior parte degli algoritmi di machine learning non basati sul deep learning, come le random forests.
Tuttavia, poiché i framework di deep learning sono emersi dai “Big Problems” del machine learning, ovvero la computer vision, il riconoscimento vocale, la sintesi vocale, la traduzione automatica, essi sono stati progettati e ottimizzati in profondità per scenari che letteralmente non hanno nulla a che vedere con i problemi affrontati nelle supply chain. Pertanto, sebbene sia possibile sfruttare tali framework per scopi di ottimizzazione delle supply chain, non è stato un compito né facile né leggero. In conclusione, con i framework di deep learning si può ottenere molto per le supply chain, ma il disallineamento tra le supply chain e i framework di deep learning esistenti è forte; aumentando i costi, i ritardi e limitando la reale applicabilità di tali tecnologie.
Oltre l’ottimizzazione branch-and-cut
La maggior parte dei problemi nelle supply chain presenta sia un aspetto di apprendimento – dovuto a una conoscenza imperfetta del futuro, a una conoscenza imprecisa dello stato attuale del mercato e talvolta anche a una conoscenza imperfetta del sistema di supply chain stesso (ad es. imprecisioni nell’inventario) – sia un aspetto di ottimizzazione numerica. Le decisioni devono essere ottimizzate in funzione dei driver economici, pur rispettando numerosi vincoli non lineari (ad es. quantitativi minimi d’ordine durante gli acquisti o taglie di lotto durante la produzione).
Dal punto di vista dell’ottimizzazione numerica, la programmazione intera e le tecniche correlate come il branch-and-cut hanno dominato il campo per decenni. Tuttavia, questi algoritmi branch-and-cut e le soluzioni software a essi associate hanno in gran parte fallito nel fornire la flessibilità e la scalabilità necessarie per produrre soluzioni operative per molte – se non la maggior parte – delle sfide delle supply chain. La programmazione intera è uno strumento eccezionalmente capace per risolvere problemi ristretti con poche variabili (ad es. il posizionamento dei componenti all’interno di un dispositivo elettronico di consumo), ma mostra limitazioni drastiche quando si tratta di problemi su larga scala in presenza di casualità (ad es. il riequilibrio degli stock tra 10 milioni di SKU in presenza sia di domanda probabilistica che di tempi di trasporto probabilistici).
Uno degli aspetti meno apprezzati del deep learning è che il suo successo è dovuto tanto alle scoperte sul fronte dell’apprendimento quanto a quelle sull’ottimizzazione. Questo perché la comunità scientifica ha scoperto che algoritmi estremamente efficienti stanno eseguendo ottimizzazioni su larga scala. Non solo questi algoritmi di ottimizzazione del “deep learning” – tutti basati sullo stochastic gradient descent – sono notevolmente più efficienti rispetto ai loro omologhi branch-and-cut, ma sono anche molto più adatti all’hardware computazionale di cui disponiamo, vale a dire CPU SIMD e (GP)GPU, che in pratica garantiscono uno speed-up extra di due o tre ordini di grandezza. Queste scoperte nell’ambito dell’ottimizzazione numerica pura sono di grande rilevanza per le supply chain al fine di ottimizzare le decisioni. Tuttavia, se i framework di deep learning erano già in qualche modo inadatti a risolvere i problemi di apprendimento nelle supply chain, lo sono ancor meno per affrontare i problemi di ottimizzazione nelle supply chain. Infatti, questi problemi di ottimizzazione dipendono ancora di più dall’espressività del framework, per consentire ai supply chain scientist di implementare i vincoli e le metriche da far rispettare e ottimizzare.
Verso la Programmazione Differenziabile
In teoria, non c’è differenza tra teoria e pratica. Tuttavia, in pratica, c’è. Walter J. Savitch, Pascal: Un’introduzione all’arte e alla scienza della programmazione (1984)
La Programmazione Differenziabile (DP) è la risposta per portare alle supply chain il meglio che il deep learning ha da offrire sia in ambito apprendimento sia in quello dell’ottimizzazione numerica. Attraverso DP, i Supply Chain Scientist possono sfruttare al massimo le loro intuizioni umane per creare ricette numeriche allineate – in profondità – con gli obiettivi aziendali. Non esiste una delimitazione assoluta tra deep learning e programmazione differenziabile: si tratta più di un continuum che va dai sistemi più scalabili (deep learning) ai sistemi più espressivi (programmazione differenziabile), con molti costrutti di programmazione che stanno gradualmente diventando disponibili – a scapito della scala grezza – passando verso la programmazione differenziabile. Tuttavia, la nostra esperienza in Lokad indica che il passaggio da strumenti prevalentemente progettati per la computer vision a strumenti ingegnerizzati per le sfide della supply chain fa precisamente la differenza tra un prototipo “interessante” che non arriva mai in produzione e un sistema di livello industriale distribuito su larga scala.
Deep Learning | Programmazione Differenziabile | |
---|---|---|
Scopo primario | Apprendimento | Apprendimento+Ottimizzazione |
Uso tipico | Impara una volta, valuta molte volte | Impara una volta, valuta una volta |
Granularità d’ingresso | Oggetti voluminosi (immagini, sequenze vocali, scansioni lidar, pagine di testo complete) | Oggetti essenziali (products, clients, SKUs, prices) |
Varietà d’ingresso | Oggetti omogenei (es. immagini tutte con la stessa proporzione altezza/larghezza) | Oggetti eterogenei (tabelle relazionali, grafici, serie temporali) |
Volume d’ingresso | Da megabyte a petabyte | Da kilobyte a decine di gigabyte |
Accelerazione hardware | Hardware acceleration | Buono |
Espressività | Grafici statici delle operazioni sui tensori | (Quasi) programmi arbitrari |
Ricette numeriche stocastiche | Integrato | Idem |
L’uso tipico è un punto sottile ma importante. Dal punto di vista del “Big AI”, il tempo di addestramento può essere (quasi) arbitrariamente lungo: va bene che una rete computazionale venga addestrata per settimane, se non mesi. Successivamente, la rete risultante di solito deve essere valutata in tempo reale (es. riconoscimento di pattern per la guida autonoma). Questo approccio è completamente diverso dalle supply chain, dove i migliori risultati si ottengono riaddestrando la rete ogni volta. Inoltre, da una prospettiva DP, i parametri addestrati sono spesso i risultati stessi che cerchiamo di ottenere, rendendo irrilevante l’intero vincolo della valutazione in tempo reale. Le aspettative relative ai dati in ingresso, sia in termini di granularità, varietà e volume, sono anch’esse molto differenti. Tipicamente, la prospettiva “Big AI” enfatizza quantità quasi infinite di dati di addestramento (es. tutte le pagine di testo del web), dove la sfida principale è trovare metodi tremendamente scalabili capaci di sfruttare efficacemente quei massicci dataset. Al contrario, i problemi di supply chain devono essere affrontati con una quantità limitata di dati altamente strutturati ma diversificati. Questo orienta il deep learning verso framework basati sui tensori, che possono essere accelerati massicciamente con hardware dedicato, inizialmente GPU e ora sempre più TPU. La Programmazione Differenziabile, essendo basata sulla discesa del gradiente stocastico, mostra anch’essa molte buone proprietà per l’accelerazione hardware, sebbene in misura ridotta rispetto ai grafici statici delle operazioni sui tensori. L’importanza delle ricette numeriche stocastiche è duplice. Innanzitutto, esse giocano un ruolo fondamentale dal punto di vista dell’apprendimento. Autoencoder variazionali o dropout sono esempi di tali ricette numeriche. In secondo luogo, esse rivestono un ruolo importante anche dal punto di vista della modellazione, per rappresentare correttamente i comportamenti probabilistici all’interno dei sistemi di supply chain (es. tempi di consegna variabili). Al contrario, esiste un enorme divario tra la programmazione differenziabile e la programmazione a numeri interi misti: l’approccio dominante negli ultimi decenni è stato quello di eseguire ottimizzazioni numeriche complesse.
Programmazione a numeri interi misti | Programmazione Differenziabile | |
---|---|---|
Scopo primario | Ottimizzazione | Apprendimento+Ottimizzazione |
Granularità e varietà d’ingresso | Oggetti essenziali, eterogenei | Idem |
Volume d’ingresso | Da byte a decine di megabyte | Da kilobyte a decine di gigabyte |
Accelerazione hardware | Scarso | Buono |
Espressività | Disuguaglianze su forme lineari e quadratiche | (Quasi) programmi arbitrari |
Ricette numeriche stocastiche | Nessuna | Integrato |
Per difendere gli strumenti di programmazione a numeri interi misti, tali strumenti – quando riescono ad affrontare un problema – possono talvolta dimostrare – nel senso matematico – di aver ottenuto la soluzione ottimale. Né il deep learning né la programmazione differenziabile forniscono alcuna prova formale a riguardo.
Conclusioni
La Programmazione Differenziabile è una svolta fondamentale per le supply chain. Essa è costruita sul deep learning, che ha dimostrato un successo straordinario nel risolvere molti problemi del “Big AI” come la computer vision, ma è stata rielaborata al nucleo per essere adatta alle sfide del mondo reale, come quelle affrontate dalle supply chain. Lokad ha fatto leva sulla sua tecnologia di previsione basata sul deep learning per transitare verso la Programmazione Differenziabile, che rappresenta la prossima generazione della nostra tecnologia predittiva. Tuttavia, DP non è solo predittiva: unifica ottimizzazione e apprendimento sbloccando soluzioni per una vasta gamma di problemi che prima non avevano soluzioni praticabili.