Programmazione differenziabile

power-clouds
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 di prezzi e scorte, ottimizzazione dell’assortimento basata sulla fedeltà, previsione della domanda per prodotti non standard (ad esempio, pietre preziose, opere d’arte), ottimizzazione del flusso multi-echelon su larga scala, ottimizzazione congiunta multi-canale, 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 offre risultati numerici superiori con solo una frazione degli sforzi dei data scientist e delle risorse computazionali.

Applicazione alle Supply Chain

Alla base, la programmazione differenziabile (DP) offre un percorso per unificare problemi che sono rimasti separati per troppo tempo e risolverli congiuntamente: assortimento, prezzi, previsione, pianificazione, merchandising. Sebbene tale unificazione possa sembrare ambiziosa in modo irrealistico, la realtà è che le aziende stanno già applicando una quantità incredibile di nastro adesivo ai propri processi per far fronte ai continui problemi generati dal fatto che tali sfide sono state isolati all’interno dell’organizzazione in primo luogo. Ad esempio, i prezzi influenzano ovviamente la domanda eppure la pianificazione e la previsione vengono quasi sempre effettuate ignorando completamente i prezzi.

DP sblocca l’enorme opportunità di prendere decisioni approssimativamente corrette da una prospettiva olistica sul business, invece di essere esattamente sbagliate spostando i problemi all’interno dell’organizzazione anziché risolverli.

Aneddoticamente, cercare la correttezza approssimativa tenendo conto del business nel suo complesso è esattamente ciò che fanno la maggior parte delle organizzazioni basate su fogli di calcolo; e per mancanza di una tecnologia - come DP - in grado di abbracciare una prospettiva di business globale, i fogli di calcolo rimangono l’opzione meno terribile.

Ecommerce

Essere in grado di associare il 100% delle unità vendute a clienti conosciuti rappresenta una quantità latente di informazioni enorme sul mercato; tuttavia, quando si tratta di ottimizzazione dei prezzi e dell’inventario, le informazioni sulla fedeltà non vengono generalmente utilizzate. 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 dei prezzi e delle assortimenti - fino al livello del negozio - è stata a lungo considerata in gran parte inaffrontabile a causa della scarsità dei dati, ovvero del basso volume di vendite per articolo per negozio - anche solo una unità venduta per prodotto per negozio all’anno. DP offre angoli per fornire classi di soluzioni che funzionano su tali dati ultra-sparse, perché sono progettate per offrire una maggiore efficienza dei dati rispetto ai metodi di deep learning tradizionali.

Marchi di moda

L’ottimizzazione congiunta delle scorte e dei prezzi è un requisito fondamentale - poiché la domanda di molti articoli può essere molto 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 - ovvero la capacità di acquistare di più a un prezzo più basso genera più domanda (e viceversa). DP offre l’espressività per affrontare questa sfida.

Manifatturiero

L’ottimizzazione numerica di reti multi-echelon di dimensioni considerevoli fallisce quando viene tentata con solutori numerici classici (vedi “Oltre l’ottimizzazione branch-and-cut” di seguito). Infatti, tali solutori diventano in gran parte impraticabili quando si tratta di milioni di variabili o comportamenti stocastici. Sfortunatamente, il manifatturiero presenta entrambi con molte variabili e comportamenti stocastici. DP offre un approccio pratico per affrontare il multi-echelon senza tradire la complessità dei veri pattern di flusso all’interno della rete.

MRO (manutenzione, riparazione, revisione)

Se una parte necessaria per la riparazione di un sistema manca, l’intero sistema - che potrebbe essere un aeromobile - rimane fermo. Le previsioni probabilistiche sono il primo passo per affrontare tali 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 utilità pratica. 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 talvolta tra negozi - sono state riconosciute come di primaria importanza da molto tempo. Questo problema viene amplificato dalle promozioni, intese appositamente per spingere 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 offre la possibilità di ottimizzare le promozioni per quello che sono: offerte redditizie gestite congiuntamente dal canale di distribuzione e dal marchio.

Oltre l’hype dell’Intelligenza Artificiale

L’Intelligenza Artificiale (AI) è sicuramente stata la parola di tendenza tecnologica del 2018 e la tendenza continua nel 2019. Tuttavia, mentre Lokad sta utilizzando ampiamente tecniche che di solito rientrano nella definizione di AI - ad esempio, il deep learning - siamo stati restii a mettere l’accento 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 le attività sono tutti estremamente eterogenei. Di conseguenza, le aziende che hanno acquistato soluzioni AI “chiavi in mano” si stanno rendendo conto 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, creati dall’uomo, e 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 è un grande no-no.
  • gli ordini di vendita negativi nell’ERP sono in realtà resi di prodotti.
  • i prodotti alimentari freschi devono essere trasportati entro specifici intervalli di temperatura.
  • le varianti di colori potrebbero essere buoni sostituti di abbigliamento, ma non le varianti di taglie.
  • la manutenzione degli aeromobili è determinata dalle ore di volo e dai cicli di volo.
  • le vendite nel Regno Unito sono effettivamente in GBP anche se l’ERP mostra EUR come valuta.
  • le persone acquistano pezzi di ricambio per i loro veicoli, non per se stesse.
  • ogni diamante è unico, ma i prezzi dipendono principalmente dal carato, dalla purezza, dal colore e dal taglio.
  • la mancanza di una parte NOGO su un aeromobile causa l’immobilizzazione dell’aeromobile.
  • molte fabbriche chimiche impiegano settimane per riavviarsi dopo essere state spente.
power-clouds
In un futuro lontano, potrebbe esserci un momento in cui l'apprendimento automatico riesce a emulare l'intelligenza umana e ottiene risultati di fronte a problemi complessi, tuttavia, finora i risultati sono stati ottenuti solo su problemi relativamente ristretti. Le tecnologie di apprendimento automatico stanno spingendo costantemente ogni anno i confini di ciò che costituisce un problema "ristretto", e dopo decenni di sforzi, problemi importanti come la guida autonoma sicura e le traduzioni automatizzate decenti sono risolti, o molto vicini alla soluzione. Tuttavia, come illustrato dall'elenco sopra, le catene di approvvigionamento rimangono disperatamente troppo eterogenee per un'applicazione diretta di algoritmi di apprendimento automatico confezionati. Anche se l'apprendimento profondo fornisce le capacità di generalizzazione più forti fino ad oggi, è ancora necessario l'intervento di un Supply Chain Scientist per definire la sfida in modo sufficientemente ristretto affinché gli algoritmi possano funzionare.

In questo senso, l’apprendimento profondo è stato estremamente 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, mentre i framework di apprendimento profondo sono emersi dai “Grandi Problemi” dell’apprendimento automatico, ovvero visione artificiale, riconoscimento vocale, sintesi vocale, traduzione automatica. Questi framework sono stati progettati e ottimizzati in modo approfondito per scenari che sono letteralmente nulla come i problemi affrontati nelle catene di approvvigionamento. Pertanto, sebbene sia possibile sfruttare tali framework per scopi di ottimizzazione delle catene di approvvigionamento, non è stato un compito facile né leggero. In conclusione, con i framework di apprendimento profondo, si possono ottenere molti risultati 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 aspetto di apprendimento - causato da una conoscenza imperfetta del futuro, una conoscenza imperfetta dello stato attuale del mercato e talvolta anche una conoscenza imperfetta del sistema di catene di approvvigionamento stesso (ad esempio, inesattezze dell’inventario) - ma anche un aspetto di ottimizzazione numerica. Le decisioni devono essere ottimizzate in base ai driver economici soddisfacendo contemporaneamente molti vincoli non lineari (ad esempio, MOQ durante l’acquisto o dimensioni del lotto durante la produzione).

Sul fronte dell’ottimizzazione numerica, la programmazione intera e le relative tecniche come il branch-and-cut hanno dominato il campo per decenni. Tuttavia, questi algoritmi di 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 molte, 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 esempio, 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 esempio, riequilibrare le scorte tra 10 milioni di SKU di fronte a domanda probabilistica e tempi di trasporto probabilistici).

Uno degli aspetti più sottovalutati del deep learning è che il suo successo è il risultato sia delle scoperte sul fronte dell’apprendimento, sia delle scoperte sul fronte dell’ottimizzazione. È perché la comunità scientifica ha scoperto algoritmi estremamente efficienti che eseguono ottimizzazioni su larga scala. Non solo questi algoritmi di ottimizzazione “deep learning” - tutti basati sulla discesa del gradiente stocastico - sono molto più efficienti dei loro omologhi 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 scoperte nell’ottimizzazione numerica pura 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 i 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 agli scienziati delle catene di approvvigionamento di implementare i vincoli e le metriche da rispettivamente applicare 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 scapito della scalabilità grezza - quando si passa alla programmazione differenziabile. Tuttavia, la nostra esperienza presso Lokad indica che il passaggio da strumenti prevalentemente progettati per la computer vision a strumenti progettati per le sfide delle catene di approvvigionamento fa esattamente la differenza tra un prototipo “interessante” che non arriva mai alla 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 sottili (prodotti, clienti, SKU, prezzi)
Varieà dell’input Oggetti omogenei (ad esempio, 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à Grafi statici di operazioni sui tensori Programmi (quasi) arbitrari
Ricette numeriche stocastiche Incorporate Idem

L’uso tipico è un punto sottile ma importante. Dal punto di vista dell’IA “Big”, il tempo di addestramento può essere (quasi) arbitrariamente lungo: va bene avere una rete computazionale che viene addestrata per settimane, se non mesi. Successivamente, la rete computazionale risultante di solito deve essere valutata in tempo reale (ad esempio, riconoscimento di pattern per la guida autonoma). Questo punto di vista è completamente diverso dalle catene di approvvigionamento, dove i migliori risultati si ottengono riaddestrando 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. Le aspettative riguardanti gli input di dati, sia in termini di granularità, varietà e volume, sono anche molto diverse. Tipicamente, il punto di vista dell’IA “Big” enfatizza quantità di dati di addestramento quasi infinite (ad esempio, tutte le pagine di testo del web) dove la sfida principale è trovare metodi estremamente scalabili che possano sfruttare efficacemente questi enormi dataset. Al contrario, i problemi legati alla catena di approvvigionamento devono essere affrontati con una quantità limitata di dati altamente strutturati ma diversi. Questo orienta l’apprendimento profondo verso i framework basati su tensori, che possono essere massicciamente accelerati attraverso hardware di calcolo dedicato, inizialmente le GPU e ora sempre più le TPU. La Programmazione Differenziabile, essendo basata sulla discesa del gradiente stocastico, presenta anche molte buone proprietà per l’accelerazione hardware, ma in misura ridotta rispetto ai grafi statici delle operazioni sui tensori. 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 anche un ruolo importante dal punto di vista della modellazione al fine di adeguatamente considerare i comportamenti probabilistici all’interno dei sistemi di catena di approvvigionamento (ad esempio, tempi di consegna variabili). Al contrario, c’è un’enorme differenza tra la programmazione differenziabile e la programmazione intera mista: l’approccio dominante negli ultimi decenni è stato quello di eseguire complesse ottimizzazioni numeriche.

Programmazione Intera Mista Programmazione Differenziabile
Scopo principale Ottimizzazione Apprendimento+Ottimizzazione
Granularità e varietà dell’input Oggetti sottili, eterogenei Idem
Volume dell’input Da byte a decine di megabyte Da kilobyte a decine di gigabyte
Accelerazione hardware Scarsa Buona
Espressività Disuguaglianze su forme lineari e quadratiche Programmi (quasi) arbitrari
Ricette numeriche stocastiche Nessuna Incorporate

In difesa degli strumenti di programmazione intera mista, quegli strumenti - quando riescono a affrontare un problema - possono talvolta provare - nel senso matematico - di aver ottenuto la soluzione ottimale. Né l’apprendimento profondo né la programmazione differenziabile forniscono alcuna prova formale in questo senso.

Conclusioni

La Programmazione Differenziabile è una svolta importante per le supply chain. È costruita sulla base dell’apprendimento profondo, che si è dimostrato estremamente efficace nella risoluzione di molti problemi di “Big AI” come la visione artificiale, ma è stata riprogettata nel suo nucleo per essere adatta alle sfide del mondo reale affrontate dalle supply chain del mondo reale. Lokad ha sviluppato la propria tecnologia di previsione basata sull’apprendimento profondo per passare alla Programmazione Differenziabile, che rappresenta la prossima generazione della nostra tecnologia predittiva. Tuttavia, la PD è più di una semplice previsione, unifica ottimizzazione e apprendimento sbloccando soluzioni per una vasta quantità di problemi che prima non avevano soluzioni praticabili.