Siamo orgogliosi di annunciare la disponibilità immediata della versione beta privata di Lokad per la programmazione differenziabile destinata all’ottimizzazione della catena di approvvigionamento quantitativa. La programmazione differenziabile è l’erede del deep learning e rappresenta la convergenza di due campi algoritmici: l’apprendimento automatico e l’ottimizzazione numerica.

Cronologia della programmazione differenziabile presso Lokad

La programmazione differenziabile sblocca una serie di scenari della catena di approvvigionamento che erano considerati in gran parte irrisolvibili: ottimizzazione congiunta dei prezzi e delle 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 a più canali, ottimizzazione delle scorte con valori di scorta elettronica 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 Catene di Approvvigionamento

Alla base della Programmazione Differenziabile (DP) c’è un percorso per unificare problemi che sono rimasti separati 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à 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 le previsioni vengono quasi sempre effettuate ignorando completamente i prezzi.

La 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 una correttezza approssimativa tenendo conto dell’intero business è esattamente ciò che fanno la maggior parte delle organizzazioni basate su fogli di calcolo; 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.

E-commerce: Riuscire ad associare il 100% delle unità vendute a clienti conosciuti rappresenta una quantità latente di informazioni sul mercato; tuttavia, quando si tratta di prezzi e ottimizzazione delle scorte, le informazioni sulla fedeltà non vengono quasi mai utilizzate al giorno d’oggi. La DP offre la possibilità di passare dalla previsione time-series alla previsione temporal graph 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 degli assortimenti - fino al livello del negozio - è stata a lungo considerata in gran parte irrisolvibile a causa della scarsità dei dati, ovvero il volume di vendite molto basso per articolo per negozio - anche solo una unità venduta per prodotto per negozio all’anno. La DP fornisce angolazioni 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 regolari.

Marchi di moda: l’ottimizzazione congiunta delle scorte e dei prezzi è un requisito fondamentale - poiché la domanda per 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’attrezzatura in grado di comprendere anche solo questo accoppiamento - ovvero la capacità di acquistare di più a un prezzo più basso genera più domanda (e viceversa). La DP fornisce l’espressività per affrontare questa sfida.

Manifatturiero: l’ottimizzazione numerica di reti multi-anello di grandi dimensioni si disgrega quando viene tentata con risolutori numerici classici (vedi “Oltre l’ottimizzazione di taglio e ramificazione” di seguito). Infatti, tali risolutori diventano in gran parte impraticabili quando si tratta di milioni di variabili o comportamenti stocastici. Purtroppo, la manifattura presenta entrambi con molte variabili e comportamenti stocastici. La DP offre un approccio pratico per affrontare il multi-anello 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 utilità pratica. La 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 per molto tempo. Questo problema è amplificato dalle promozioni che mirano precisamente a spingere i clienti da un marchio all’altro. La DP offre la possibilità di affrontare la cannibalizzazione in presenza di promozioni. Invece di limitarsi a “prevedere le promozioni”, la 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 tecnologica del 2018 e il buzz continua ancora nel 2019. Tuttavia, mentre Lokad utilizza 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 suppostamente “chiavi in mano” stanno iniziando a rendersi 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 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 prodotti.
  • i prodotti alimentari freschi devono essere trasportati entro specifici intervalli di temperatura.
  • le varianti di colore potrebbero essere buoni sostituti di abbigliamento, ma non le varianti di taglia[^bambini].
  • 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 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 piante chimiche impiegano settimane per riavviarsi dopo essere state spente.

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[^problemi_complessi], tuttavia, finora i risultati sono stati ottenuti solo su problemi relativamente limitati. Le tecnologie di apprendimento automatico stanno costantemente spingendo sempre più avanti i confini di ciò che costituisce un problema “limitato”, e dopo decenni di sforzi, problemi importanti come la guida autonoma sicura e le traduzioni automatiche decenti sono risolti, o molto vicini alla soluzione.

Tuttavia, come illustrato dall’elenco sopra, le supply chain 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, è comunque necessario l’intervento di un supply chain scientist per definire la sfida in modo sufficientemente limitato affinché gli algoritmi possano funzionare.

A questo proposito, 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[^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. Questi framework sono stati progettati e ottimizzati in modo approfondito per scenari che sono letteralmente nulla di simile ai problemi affrontati nelle supply chain. Pertanto, sebbene sia possibile sfruttare questi framework[^testamento] per scopi di ottimizzazione della supply chain, non è stato un compito facileleggero.

In conclusione, con i framework di apprendimento profondo, si possono ottenere molti risultati per le supply chain, ma l’incompatibilità tra le supply chain e i framework di apprendimento profondo esistenti è forte; aumentando i costi, i ritardi e limitando l’applicabilità nel mondo reale di queste tecnologie.

programmazione differenziabile

Oltre l’ottimizzazione branch-and-cut

La maggior parte dei problemi nelle supply chain 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 supply chain 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 molteplici vincoli non lineari (ad esempio, MOQ durante gli acquisti o dimensioni dei lotti durante la produzione).

Sul fronte dell’ottimizzazione numerica, la programmazione intera e le tecniche correlate 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ù fallito1 nel fornire la flessibilità e la scalabilità necessarie per fornire soluzioni operative per molte, se non la maggior parte, delle sfide delle supply chain. La programmazione intera è uno strumento incredibilmente capace quando si tratta di risolvere problemi compatti 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 in presenza di 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 innovazioni nel campo dell’apprendimento che delle innovazioni nel campo dell’ottimizzazione. La comunità scientifica ha scoperto che gli algoritmi estremamente efficienti del deep learning sono in grado di eseguire ottimizzazioni su larga scala2.

Non solo questi algoritmi di ottimizzazione del “deep learning” - tutti basati sul metodo del gradiente stocastico - sono molto più efficienti rispetto ai loro omologhi di branch-and-cut, ma si adattano molto meglio all’hardware di calcolo che abbiamo a disposizione, ovvero CPU SIMD e (GP)GPU, il che in pratica consente di ottenere un aumento di velocità di due o tre ordini di grandezza.

Questi progressi nell’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 per affrontare i problemi di apprendimento nelle supply chain, lo sono ancora di meno per affrontare i problemi di ottimizzazione. Infatti, questi problemi di ottimizzazione dipendono ancora di più dall’espressività del framework per consentire agli scienziati delle supply chain 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 supply chain il meglio di ciò che il deep learning ha da offrire sia sul fronte dell’apprendimento che su quello dell’ottimizzazione numerica. Attraverso la DP, gli scienziati delle supply chain 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: è 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 principalmente progettati per la computer vision a strumenti progettati per le sfide delle supply chain fa esattamente la differenza tra un prototipo “interessante” che non arriva mai alla produzione e un sistema di livello 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)
Varieità 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 Eccezionalmente buona Buona
Espressività Grafi statici di operazioni tensoriali Programmi (quasi) arbitrari
Ricette numeriche stocastiche Incorporate Idem

L’uso 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. 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 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 irrilevante il vincolo di valutazione in tempo reale.

Le aspettative relative agli input di dati, sia in termini di granularità, varietà e volume, sono anche molto diverse. Tipicamente, il punto di vista dell’“AI Big” enfatizza quantità infinite di dati di addestramento (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 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 grafi 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 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 leggeri, 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, questi strumenti - quando riescono a affrontare un problema - possono talvolta dimostrare - 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. È basata sull’apprendimento profondo, che si è dimostrato estremamente efficace nel risolvere molti problemi dell’“AI Big” come la visione artificiale, ma è stata riprogettata nel suo nucleo per essere adatta alle sfide del mondo reale affrontate dalle catene di approvvigionamento del mondo reale.

Lokad ha sviluppato la sua 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, unisce l’ottimizzazione e l’apprendimento, sbloccando soluzioni per una vasta gamma di problemi che prima non avevano soluzioni praticabili.

Interessato a partecipare al nostro beta privato? Mandaci una email a contact@lokad.com


  1. Software di ottimizzazione come CPLEX, Gurobi e ora il loro equivalente open-source sono disponibili da oltre 3 decenni. In teoria, ogni singola situazione di acquisto che affronta MOQ (quantità minima d’ordine) o sconti di prezzo dovrebbe essere affrontata con software che offre capacità simili. Tuttavia, nonostante abbia avuto l’opportunità di entrare in contatto con oltre 100 aziende nell’ultimo decennio in molti settori, non ho mai visto nessun dipartimento di acquisti utilizzare questi strumenti da nessuna parte. La mia esperienza personale con tali strumenti indica che pochi problemi si adattano effettivamente a un insieme di disuguaglianze statiche che includono solo forme lineari e quadratiche. ↩︎

  2. L’algoritmo Adam (2015) è probabilmente il miglior rappresentante di quegli algoritmi di ottimizzazione semplici ma estremamente efficienti che hanno fatto fare un salto in avanti all’intero campo dell’apprendimento automatico. ↩︎