Programmazione differenziabile

power-clouds
La programmazione differenziabile è la 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 che erano 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 esempio pietre preziose, opere d’arte), ottimizzazione del flusso multi-anello su larga scala, ottimizzazione congiunta a molti canali, ottimizzazione delle scorte in presenza di valori di magazzino elettronici parzialmente errati, massimizzazione del flusso su larga scala in presenza di 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 overhead, sia in termini di sforzi dei data scientist che di risorse computazionali.

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, prezzi, previsioni, pianificazione, merchandising. Sebbene tale unificazione possa sembrare irrealisticamente ambiziosa, 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 siloed within the organization in primo luogo. Ad esempio, i prezzi ovviamente influenzano la domanda eppure la pianificazione e le previsioni vengono quasi sempre eseguite ignorando completamente i prezzi.

DP sblocca l’enorme opportunità di fornire decisioni approssimativamente corrette da una prospettiva olistica sul business, invece di essere esattamente sbagliati mentre si spostano i problemi all’interno dell’organizzazione anziché risolverli.

Aneddoticamente, cercare la correttezza approssimativa tenendo conto dell’intera attività è esattamente ciò che la maggior parte delle organizzazioni basate su fogli di calcolo cerca; 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 sul mercato; tuttavia, quando si tratta di ottimizzazione dei prezzi e dell’inventario, le informazioni sulla fedeltà non vengono generalmente utilizzate al giorno d’oggi. DP offre la possibilità di passare dalla previsione delle serie temporali alla previsione del grafico 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 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 ultra-sparse, perché sono progettati per fornire una maggiore efficienza dei dati rispetto ai metodi di deep learning regolari.

Marchi di moda

L’ottimizzazione congiunta di scorte e prezzi è un requisito chiaro - poiché la domanda per molti articoli può essere altamente sensibile al prezzo - tuttavia, l’ottimizzazione congiunta di acquisto e prezzo non poteva essere raggiunta a causa della mancanza di uno strumento in grado di apprendere anche questo accoppiamento - ovvero la capacità di acquistare di più a un prezzo più basso genera più domanda (e viceversa). DP fornisce l’espressività per affrontare questa sfida.

Produzione

L’ottimizzazione numerica di reti multi-echelon di dimensioni considerevoli fallisce quando viene tentata con risolutori numerici classici (vedi “Oltre l’ottimizzazione di taglio e ramificazione” di seguito). Infatti, quei risolutori diventano in gran parte impraticabili quando si tratta di milioni di variabili o comportamenti stocastici. Sfortunatamente, la produzione presenta entrambi con molte variabili e comportamenti stocastici. DP offre un angolo pratico per far fronte a multi-echelon senza tradire la complessità dei veri schemi 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 utilizzo 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 per indirizzare i clienti da un marchio all’altro. DP offre la possibilità di affrontare la cannibalizzazione in presenza di promozioni. Invece di semplicemente “prevedere le promozioni”, DP offre la possibilità di ottimizzare le promozioni per ciò che sono: offerte redditizie gestite congiuntamente sia dal canale di distribuzione che dal marchio.

Oltre l’hype dell’Intelligenza Artificiale

L’Intelligenza Artificiale (AI) è stata certamente la parola d’ordine tecnologica del 2018 e il buzz è ancora forte nel 2019. Tuttavia, mentre Lokad sta utilizzando ampiamente tecniche che di solito rientrano nella parola d’ordine AI - ad esempio 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 catene di approvvigionamento non sono affatto come, ad esempio, la visione artificiale: i dati, le metriche e le attività sono tutte estremamente eterogenee. Di conseguenza, le aziende che hanno acquistato soluzioni AI suppostamente “chiavi in mano” stanno iniziando a capire che quelle soluzioni semplicemente non funzioneranno mai, tranne forse nelle situazioni più semplici in cui i sistemi basati su regole “stupide” avrebbero funzionato comunque bene. Al loro nucleo, le catene di approvvigionamento sono sistemi complessi fatti dall’uomo, ed è generalmente irragionevole aspettarsi che il sistema AI - basato solo sui dati - riscopra da solo le conoscenze 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 prodotto.
  • i prodotti alimentari freschi devono essere trasportati entro specifici intervalli di temperatura.
  • le varianti di colore potrebbero essere buoni sostituti dell’abbigliamento, ma non le varianti di taglia.
  • la manutenzione degli aeromobili è guidata 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 parti di auto per i loro veicoli, non per se stessi.
  • ogni diamante è unico, ma i prezzi dipendono principalmente dal carato, dalla chiarezza, dal colore e dal taglio.
  • qualsiasi parte NOGO mancante da un aeromobile fa sì che l’aeromobile sia a terra.
  • molte piante 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 ad emulare l'intelligenza umana e ottiene risultati di fronte a problemi malvagi, 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 una diretta applicazione di algoritmi di apprendimento automatico confezionati. Anche se l'apprendimento profondo fornisce le capacità di generalizzazione più forti fino ad oggi, è ancora necessario l'input di un scienziato della catena di approvvigionamento per inquadrare la sfida in modo sufficientemente ristretto per far funzionare gli algoritmi.

In questo senso, l’apprendimento profondo è stato tremendamente efficace perché, a differenza di molti approcci precedenti nell’apprendimento automatico, l’apprendimento profondo è profondamente composito: è 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 la visione artificiale, il riconoscimento vocale, la sintesi vocale, la traduzione automatizzata. Quei framework sono stati progettati e sintonizzati in profondità per scenari che non assomigliano affatto ai problemi affrontati nelle catene di approvvigionamento. Pertanto, sebbene sia possibile sfruttare quei framework per scopi di ottimizzazione della catena di approvvigionamento, non è stato un compito facile né leggero. In conclusione, con i framework di apprendimento profondo, molto può essere raggiunto 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 quelle tecnologie.

Oltre l’ottimizzazione a 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 catena di approvvigionamento stesso (ad esempio, inesattezze dell’inventario) - ma anche un angolo di ottimizzazione numerica. Le decisioni devono essere ottimizzate rispetto ai driver economici, soddisfacendo molte 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 sue 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 molte, se non la maggior parte, delle sfide della catena di approvvigionamento. La programmazione intera è uno strumento fantastico quando si tratta di risolvere problemi stretti con poche variabili (ad esempio, il 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 la casualità (ad esempio, riequilibrare le scorte 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 di progressi sia sul lato dell’apprendimento che sull’ottimizzazione. È perché la comunità scientifica ha scoperto che gli algoritmi tremendamente efficienti stanno eseguendo 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 sono molto più adatti all’hardware di elaborazione che abbiamo, ovvero CPU SIMD e (GP)GPU che nella pratica forniscono due o tre ordini di grandezza di velocità extra. Questi progressi 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 ai ricercatori della catena 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: An Introduction to the Art and Science of Programming (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 su quello dell’ottimizzazione numerica. Attraverso DP, i ricercatori della catena di approvvigionamento possono sfruttare al meglio 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 spese della scalabilità grezza - quando si passa alla programmazione differenziabile. Tuttavia, la nostra esperienza presso Lokad indica che la transizione da strumenti prevalentemente progettati per la visione artificiale a strumenti progettati per le sfide della catena di approvvigionamento fa esattamente la differenza tra un prototipo “interessante” che non arriva mai in produzione e un sistema di grado industriale distribuito su larga scala.

Deep Learning Programmazione differenziabile
Scopo principale Apprendimento Apprendimento+Ottimizzazione
Utilizzo tipico Apprendi una volta, valuta molte Apprendi una volta, valuta una volta
Granularità di input Oggetti grassi (immagini, sequenze vocali, scansioni lidar, pagine di testo complete) Oggetti sottili (prodotti, clienti, SKU, prezzi)
Varianza di input Oggetti omogenei (ad esempio, immagini con tutti lo stesso rapporto altezza/larghezza) Oggetti eterogenei (tabelle relazionali, grafici, serie temporali)
Volume di 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

L’utilizzo tipico è un punto sottile ma importante. Dal punto di vista dell’ “AI Big”, il tempo di formazione può essere (quasi) arbitrariamente lungo: va bene avere una rete computazionale in fase di formazione per settimane se non mesi. In seguito, la rete computazionale risultante di solito deve essere valutata in tempo reale (ad esempio, il riconoscimento di modelli per la guida autonoma). Questo punto di vista è completamente diverso dalle catene di approvvigionamento, dove i migliori risultati si ottengono riformando la rete ogni volta. Inoltre, dal punto di vista della DP, i parametri addestrati sono spesso i risultati stessi che cerchiamo di ottenere; rendendo tutto il vincolo di valutazione in tempo reale irrilevante. Anche le aspettative che circondano gli input dei dati, sia in termini di granularità, varietà e volume, sono molto diverse. Tipicamente, il punto di vista dell’ “AI Big” enfatizza quantità di dati di formazione quasi infinite (ad esempio, tutte le pagine di testo del web) dove la sfida principale è trovare metodi tremendamente scalabili che possano sfruttare efficacemente quei massicci insiemi di dati. Al contrario, i problemi di 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 elaborazione dedicato, inizialmente GPU e ora sempre più 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 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 anche un ruolo importante dal punto di vista della modellizzazione al fine di fattorizzare correttamente i comportamenti probabilistici all’interno dei sistemi di catena di approvvigionamento (ad esempio, i 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à di input Oggetti sottili, eterogenei Idem
Volume di 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 catene di approvvigionamento. È costruita su deep learning, che si è dimostrato estremamente efficace nella risoluzione di molti problemi “Big AI” come la visione artificiale, ma rielaborato al nucleo per essere adatto alle sfide del mondo reale come quelle affrontate dalle catene di approvvigionamento del mondo reale. Lokad ha sviluppato la sua tecnologia di previsione di deep learning per passare alla programmazione differenziabile, che è la prossima generazione della nostra tecnologia predittiva. Tuttavia, DP è più di essere solo predittivo, unifica ottimizzazione e apprendimento sbloccando soluzioni per una vasta quantità di problemi che prima non avevano soluzioni praticabili.