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 della supply chain che erano considerati in gran parte inaffrontabili: ottimizzazione congiunta dei prezzi e delle scorte, ottimizzazione dell’assortimento guidata dalla fedeltà, previsione della domanda per prodotti non standard (ad es. pietre preziose, opere d’arte), ottimizzazione del flusso multi-anello su larga scala, ottimizzazione congiunta a molti canali, ottimizzazione delle scorte con valori di magazzino elettronico parzialmente errati, massimizzazione del flusso su larga scala con molte restrizioni, ecc. Per molti altri scenari che erano già affrontabili con metodi alternativi, la programmazione differenziabile fornisce risultati numerici superiori con solo una frazione degli oneri, sia in termini di sforzi dei data scientist che di risorse computazionali.
Programmazione differenziabile in Movimento
Applicazione alle Supply Chain
Al suo nucleo, la Programmazione Differenziabile (DP) offre un percorso per unificare problemi che sono rimasti disconnessi per troppo tempo e risolverli congiuntamente: assortimento, pricing, previsione, pianificazione, merchandising. Sebbene tale unificazione possa sembrare ambiziosa in modo irrealistico, la realtà è che le aziende stanno già applicando una quantità folle di nastro adesivo ai propri processi per far fronte ai problemi infiniti generati dal fatto che tali sfide sono state isolati all’interno dell’organizzazione in primo luogo. Ad esempio, il pricing ovviamente influisce sulla domanda eppure sia la pianificazione che la previsione vengono quasi sempre eseguite ignorando completamente i prezzi.
DP sblocca l’enorme opportunità di fornire decisioni approssimativamente corrette da una prospettiva olistica sul business, anziché essere esattamente sbagliati spostando i problemi all’interno dell’organizzazione anziché risolverli.
Aneddoticamente, cercare la correttezza approssimativa tenendo conto del business nel suo complesso è esattamente ciò che la maggior parte delle organizzazioni basate su fogli di calcolo rappresentano; e per mancanza di una tecnologia - come la DP - in grado di abbracciare una prospettiva di business globale, i fogli di calcolo rimangono l’opzione meno terribile.
Ecommerce
Riuscire ad associare il 100% delle unità vendute a clienti conosciuti rappresenta una quantità latente di informazioni sul mercato; tuttavia, quando si tratta di pricing e ottimizzazione dell’inventario, le informazioni sulla fedeltà non vengono nemmeno utilizzate al giorno d’oggi. DP offre la possibilità di passare dalla previsione delle serie temporali alla previsione del grafo temporale in cui ogni singola coppia cliente-prodotto mai osservata conta; portando a decisioni più intelligenti sia per le scorte che per i prezzi.
Marchi di lusso
L’ottimizzazione del pricing e degli assortimenti - fino al livello del negozio - è stata a lungo considerata in gran parte inaffrontabile a causa della scarsità dei dati, ovvero il volume di vendite molto basso per articolo per negozio - fino a una sola unità venduta per prodotto per negozio all’anno. DP fornisce angoli per fornire classi di soluzioni che funzionano su tali dati ultra-sparse, poiché sono progettati per offrire una maggiore efficienza dei dati rispetto ai metodi di deep learning regolari.
Marchi di moda
L’ottimizzazione congiunta delle scorte e dei prezzi è un requisito chiaro - poiché la domanda per molti articoli può essere altamente sensibile al prezzo - tuttavia, l’ottimizzazione congiunta degli acquisti e dei prezzi non poteva essere raggiunta a causa della mancanza di un tool in grado di comprendere anche questo accoppiamento - cioè la capacità di acquistare di più a un prezzo più basso genera più domanda (e viceversa). DP fornisce l’espressività per affrontare questa sfida.
Manifattura
L’ottimizzazione numerica di reti multi-anello di dimensioni considerevoli fallisce quando tentata con solutori numerici classici (vedi “Oltre l’ottimizzazione branch-and-cut” di seguito). Infatti, quei solutori diventano in gran parte impraticabili quando si tratta di milioni di variabili o comportamenti stocastici. Sfortunatamente, la manifattura presenta entrambi con molte variabili e comportamenti stocastici. DP offre un angolo pratico per far fronte al multi-anello senza tradire la complessità dei veri schemi di flusso all’interno della rete.
MRO (manutenzione, riparazione, revisione)
Se manca una parte necessaria per la riparazione di un sistema, l’intero sistema - che potrebbe essere un aeromobile - rimane fermo. Le previsioni probabilistiche sono il primo passo per affrontare modelli di domanda erratici e intermittenti, ma capire i dettagli delle co-occorrenze delle parti richieste e trasformare questa analisi in raccomandazioni di inventario attuabili era troppo complesso per essere di uso pratico. DP semplifica la risoluzione di tali problemi.
Reti di vendita al dettaglio
Le cannibalizzazioni all’interno delle reti di vendita al dettaglio - di solito tra prodotti ma a volte tra negozi - sono state riconosciute come di primaria importanza da molto tempo. Questo problema è amplificato dalle promozioni, precisamente intese a indirizzare i clienti da un marchio all’altro. DP offre la possibilità di affrontare la cannibalizzazione in presenza di promozioni. Invece di semplicemente “prevedere promozioni”, DP offre la possibilità di ottimizzare le promozioni per quello che sono: offerte redditizie gestite congiuntamente dal canale distributivo e dal marchio.
Oltre l’esagerazione sull’Intelligenza Artificiale
L’Intelligenza Artificiale (AI) è sicuramente stata la parola di tendenza tecnologica del 2018 e il buzz continua ancora nel 2019. Tuttavia, mentre Lokad sta utilizzando ampiamente tecniche che di solito rientrano nella definizione di buzzword AI - ad esempio, deep learning - siamo stati restii a mettere enfasi sulla parte “AI” della tecnologia di Lokad. Infatti, per quanto riguarda l’ottimizzazione quantitativa della supply chain, l’AI confezionata semplicemente non funziona. Le supply chain non sono affatto simili, ad esempio, alla visione artificiale: i dati, le metriche e i compiti sono tutti estremamente eterogenei. Di conseguenza, le aziende che hanno acquistato soluzioni AI supposte “chiavi in mano” stanno iniziando a capire che tali soluzioni semplicemente non funzioneranno mai, tranne forse nelle situazioni più semplici in cui anche i sistemi basati su regole “stupide” avrebbero funzionato bene comunque. Al loro nucleo, le supply chain sono sistemi complessi fatti dall’uomo, ed è di solito irragionevole aspettarsi che il sistema AI - basato solo sui dati - riscopra da solo concetti fondamentali sul dominio come:
- fare promozioni per un marchio di lusso è assolutamente da evitare.
- gli ordini di vendita negativi nell’ERP sono in realtà resi di prodotti.
- i prodotti alimentari freschi devono essere trasportati entro determinati intervalli di temperatura.
- le varianti nei colori potrebbero essere buoni sostituti di abbigliamento, ma non le varianti nelle taglie.
- la manutenzione degli aeromobili è guidata dalle ore di volo e dai cicli di volo.
- le vendite nel Regno Unito sono effettivamente in GBP anche se l’ERP visualizza EUR come valuta.
- le persone acquistano parti di auto per i loro veicoli, non per se stessi.
- ogni diamante è unico, ma i prezzi dipendono principalmente da carati, purezza, colore e taglio.
- qualsiasi parte NOGO mancante da un aeromobile causa la messa a terra dell’aeromobile.
- molte centrali chimiche impiegano settimane per riavviarsi dopo essere state spente.

In questo senso, l’apprendimento profondo è stato tremendamente efficace perché, a differenza di molti approcci precedenti nell’apprendimento automatico, l’apprendimento profondo è profondamente compositivo: è possibile adattare ampiamente la struttura del modello per apprendere meglio in una situazione specifica. Adattare la struttura del modello è diverso dall’adattare l’input del modello - un compito noto come ingegneria delle caratteristiche - che era tipicamente l’unica opzione disponibile per la maggior parte degli algoritmi di apprendimento automatico non profondi come le foreste casuali.
Tuttavia, poiché i framework di apprendimento profondo sono emersi dai “Grandi Problemi” dell’apprendimento automatico, ovvero visione artificiale, riconoscimento vocale, sintesi vocale, traduzione automatica. Quei framework sono stati progettati e sintonizzati in profondità per scenari che sono letteralmente nulla come i problemi affrontati nelle catene di approvvigionamento. Pertanto, sebbene sia possibile sfruttare quei framework per scopi di ottimizzazione delle catene di approvvigionamento, non è stato un compito facile né leggero. In conclusione, con i framework di apprendimento profondo, molto può essere realizzato per le catene di approvvigionamento, ma la discrepanza di impedenza tra le catene di approvvigionamento e i framework di apprendimento profondo esistenti è forte; aumentando i costi, i ritardi e limitando l’applicabilità nel mondo reale di tali tecnologie.
Oltre l’ottimizzazione branch-and-cut
La maggior parte dei problemi nelle catene di approvvigionamento ha sia un angolo di apprendimento - causato da una conoscenza imperfetta del futuro, una conoscenza imperfetta dello stato attuale del mercato e talvolta persino una conoscenza imperfetta del sistema di catene di approvvigionamento stesso (ad es. inesattezze dell’inventario) - ma anche un angolo di ottimizzazione numerica. Le decisioni devono essere ottimizzate rispetto ai driver economici soddisfacendo molti vincoli non lineari (ad es. MOQ durante l’acquisto o dimensioni del lotto durante la produzione).
Sul fronte dell’ottimizzazione numerica, la programmazione intera e le tecniche correlate come branch-and-cut hanno dominato il campo per decenni. Tuttavia, questi algoritmi branch-and-cut e le relative soluzioni software hanno per lo più fallito nel fornire la flessibilità e la scalabilità necessarie per fornire soluzioni operative per molti, se non la maggior parte, delle sfide delle catene di approvvigionamento. La programmazione intera è uno strumento incredibilmente capace quando si tratta di risolvere problemi stretti con poche variabili (ad es. posizionamento dei componenti all’interno di un dispositivo elettronico per consumatori) ma mostra limitazioni drastiche quando si tratta di problemi su larga scala quando è coinvolta casualità (ad es. riequilibrio degli stock tra 10 milioni di SKU quando si affrontano sia la domanda probabilistica che i tempi di trasporto probabilistici).
Uno degli aspetti più sottovalutati del deep learning è che il suo successo è il risultato sia delle innovazioni sul fronte dell’apprendimento, sia delle innovazioni sul fronte dell’ottimizzazione. È perché la comunità scientifica ha scoperto che algoritmi estremamente efficienti stanno eseguendo ottimizzazioni su larga scala. Non solo questi algoritmi di ottimizzazione “deep learning” - tutti basati sul gradiente stocastico - sono molto più efficienti dei loro corrispettivi branch-and-cut, ma si adattano molto meglio all’hardware di calcolo che abbiamo, ovvero CPU SIMD e (GP)GPU che nella pratica garantiscono un aumento di velocità di due o tre ordini di grandezza. Queste innovazioni nella pura ottimizzazione numerica sono di grande rilevanza per le catene di approvvigionamento al fine di ottimizzare le decisioni. Tuttavia, se i framework di deep learning erano già in qualche modo inadatti per affrontare problemi di apprendimento nelle catene di approvvigionamento, sono ancora meno adatti per affrontare i problemi di ottimizzazione nelle catene di approvvigionamento. Infatti, questi problemi di ottimizzazione dipendono ancora di più dall’espressività del framework per consentire ai scienziati delle catene di approvvigionamento di implementare i vincoli e le metriche da rispettivamente far rispettare e ottimizzare.
Verso la Programmazione Differenziabile
In teoria, non c’è differenza tra teoria e pratica. Ma, in pratica, c’è. Walter J. Savitch, Pascal: Introduzione all’arte e alla scienza della programmazione (1984)
La Programmazione Differenziabile (DP) è la risposta per portare alle catene di approvvigionamento il meglio di ciò che il deep learning ha da offrire sia sul fronte dell’apprendimento che sul fronte dell’ottimizzazione numerica. Attraverso la DP, gli scienziati delle catene di approvvigionamento possono sfruttare al massimo le loro intuizioni umane per creare ricette numeriche allineate - in profondità - con gli obiettivi aziendali. Non c’è una delimitazione assoluta tra deep learning e programmazione differenziabile: è più un continuum dai sistemi più scalabili (deep learning) ai sistemi più espressivi (programmazione differenziabile) con molti costrutti di programmazione che diventano gradualmente disponibili - a discapito della scalabilità grezza - quando si passa alla programmazione differenziabile. Tuttavia, la nostra esperienza presso Lokad indica che passare da strumenti prevalentemente progettati per la visione artificiale a strumenti progettati per le sfide delle catene di approvvigionamento fa esattamente la differenza tra un prototipo “interessante” che non arriva mai in produzione e un sistema di grado industriale implementato su larga scala.
Deep Learning | Programmazione Differenziabile | |
---|---|---|
Scopo principale | Apprendimento | Apprendimento+Ottimizzazione |
Utilizzo tipico | Apprendi una volta, Valuta molte volte | Apprendi una volta, Valuta una volta |
Granularità dell’input | Oggetti pesanti (immagini, sequenze vocali, scansioni lidar, pagine di testo complete) | Oggetti leggeri (prodotti, clienti, SKU, prezzi) |
Varieà dell’input | Oggetti omogenei (ad es. immagini tutte con lo stesso rapporto altezza/larghezza) | Oggetti eterogenei (tabelle relazionali, grafi, serie temporali) |
Volume dell’input | Da megabyte a petabyte | Da kilobyte a decine di gigabyte |
Accelerazione hardware | Accelerazione hardware | Buona |
Espressività | Grafici statici di operazioni tensoriali | Programmi (quasi) arbitrari |
Ricette numeriche stocastiche | Incorporate | Idem |
Il tipico utilizzo è un punto sottile ma importante. Dal punto di vista del “Big AI”, il tempo di addestramento può essere (quasi) arbitrariamente lungo: va bene avere una rete computazionale in fase di addestramento per settimane se non mesi. Successivamente, la rete computazionale risultante deve essere valutata in tempo reale (ad es. riconoscimento di modelli per la guida autonoma). Questo punto è completamente diverso rispetto alle catene di approvvigionamento, dove i migliori risultati si ottengono riallenando la rete ogni volta. Inoltre, dal punto di vista della DP, i parametri addestrati sono spesso i risultati stessi che cerchiamo di ottenere; rendendo irrilevante il vincolo di valutazione in tempo reale. Anche le aspettative relative agli input di dati, sia in termini di granularità, varietà e volume, sono molto diverse. Tipicamente, il punto di vista del “Big AI” enfatizza quantità quasi infinite di dati di addestramento (ad es. tutte le pagine di testo del web) dove la sfida principale è trovare metodi estremamente scalabili che possano sfruttare efficacemente quei massicci set di dati. Al contrario, i problemi legati alle catene di approvvigionamento devono essere affrontati con una quantità limitata di dati altamente strutturati ma diversi. Questo orienta il deep learning verso framework basati su tensori, che possono essere massicciamente accelerati attraverso hardware di calcolo dedicato, inizialmente GPU e ora sempre più TPU. La Programmazione Differenziabile, essendo basata sul gradiente stocastico, mostra anche molte buone proprietà per l’accelerazione hardware, ma in misura ridotta rispetto ai grafici statici delle operazioni tensoriali. L’importanza delle ricette numeriche stocastiche è duplice. In primo luogo, queste ricette svolgono un ruolo importante dal punto di vista dell’apprendimento. Gli autoencoder variazionali o i dropout sono esempi di tali ricette numeriche. In secondo luogo, queste ricette svolgono un ruolo importante dal punto di vista della modellazione al fine di correttamente considerare i comportamenti probabilistici all’interno dei sistemi di catene di approvvigionamento (ad es. tempi di consegna variabili). Al contrario, c’è un’enorme differenza tra la programmazione differenziabile e la programmazione mista intera - l’approccio dominante negli ultimi decenni è stato quello di eseguire complesse ottimizzazioni numeriche.
Programmazione Mista Intera | Programmazione Differenziabile | |
---|---|---|
Scopo principale | Ottimizzazione | Apprendimento+Ottimizzazione |
Granularità e varietà dell’input | Oggetti leggeri, eterogenei | Idem |
Volume dell’input | Da byte a decine di megabyte | Da kilobyte a decine di gigabyte |
Accelerazione hardware | Povera | Buona |
Espressività | Disuguaglianze su forme lineari e quadratiche | Programmi (quasi) arbitrari |
Ricette numeriche stocastiche | Nessuna | Incorporate |
In difesa degli strumenti di programmazione mista intera, quegli strumenti - quando riescono a affrontare un problema - a volte possono dimostrare - nel senso matematico - di aver ottenuto la soluzione ottimale. Né il deep learning né la programmazione differenziabile forniscono alcuna prova formale in tal senso.
Conclusioni
La Programmazione Differenziabile è una svolta importante per le catene di approvvigionamento. È costruita sopra il deep learning, che si è dimostrato estremamente efficace nella risoluzione di molti problemi “Big AI” come la visione artificiale, ma è stato riprogettato nel nucleo per essere adatto alle sfide del mondo reale affrontate dalle catene di approvvigionamento reali. Lokad ha continuato a sviluppare la sua tecnologia di previsione basata sul deep learning per passare alla Programmazione Differenziabile, che rappresenta la prossima generazione della nostra tecnologia predittiva. Tuttavia, la DP è più di una semplice previsione, unisce ottimizzazione e apprendimento sbloccando soluzioni per una vasta gamma di problemi che prima non avevano soluzioni praticabili.