Programmazione differenziabile

La programmazione differenziabile deriva dal deep learning e rappresenta il punto d'incontro fra due campi della matematica algoritmica, il machine learning e l'ottimizzazione numerica. La programmazione differenziabile sblocca una serie di scenari logistici prima considerati perlopiù intrattabili: ottimizzazione congiunta di prezzi e scorte, ottimizzazione dell'assortimento in base alla fedeltà, previsione della domanda per prodotti non standard (come pietre preziose od opere d'arte), ottimizzazione dei flussi multilivello su larga scala, ottimizzazione congiunta pluricanale, ottimizzazione delle scorte sulla base di valori elettronici parzialmente non corretti, massimizzazione dei flussi su larga scala in presenza di numerosi vincoli, e così via. Per molti altri scenari già gestibili con metodi alternativi, la programmazione differenziabile offre risultati numerici di gran lunga migliori, con meno spreco di energie da parte dei data scientist e minori risorse di calcolo.


La programmazione differenziabile in movimento




Applicazione alle supply chain

Fondamentalmente, la programmazione differenziabile (o, con sigla inglese, DP) offre un percorso per unificare problemi rimasti scollegati troppo a lungo e risolverli insieme: assortimento, strategie di pricing, previsione, pianificazione, merchandising. A prima vista, una simile unificazione potrebbe sembrare fin troppo ambiziosa, ma in realtà si tratta di un approccio che le aziende seguono già ampiamente, quando tentano di accomodare i propri processi ai continui problemi generati dal fatto che queste sfide sono state suddivise in vari silos all'interno dell'organizzazione. Facciamo un esempio: le strategie di pricing hanno ovviamente delle ripercussioni sulla domanda; eppure, la pianificazione e la previsione sono eseguite quasi sempre ignorando del tutto i prezzi.

La DP offre un'opportunità immensa, quella cioè di fornire decisioni approssimativamente corrette a partire da una visione olistica dell'attività, invece che decisioni chiare, ma sbagliate, che suddividono i problemi fra i vari reparti dell'azienda senza risolverli.

Aneddoticamente, gran parte delle organizzazioni che si gestiscono con il solo aiuto di qualche foglio di calcolo fanno esattamente questo: cercare una soluzione approssimativamente corretta tenendo in considerazione l'intera attività, con l'aiuto dello strumento meno inadeguato a disposizione (i fogli di calcolo, appunto), in mancanza di una tecnologia più opportuna (come la DP).

E-commerce

Essere in grado di ricondurre il 100% delle unità vendute ai clienti noti rappresenta un'enorme mole latente di informazioni sul mercato; eppure, quando si tratta di ottimizzazione delle scorte e strategie di pricing, i dati sulla fedeltà dei clienti non vengono quasi mai sfruttati. La DP offre la possibilità di passare dalle previsioni con le serie temporali alla previsione con un grafico temporale, che tiene conto di ogni singola coppia cliente-prodotto mai osservata, al fine di portare a decisioni più intelligenti in termini sia di scorte che di prezzi.

Lusso

L'ottimizzazione di prezzi e assortimenti fino al livello dei punti vendita è stata a lungo considerata come un'impresa quasi impossibile, a causa di dati sparsi (i volumi di vendite di ogni articolo in ogni negozio sono infatti molto bassi, addirittura una sola unità venduta per prodotto in un punto vendita in un anno). La DP offre la giusta ottica per fornire soluzioni che funzionano con dati così scarsi, poiché è pensata per ottenere un'efficienza dei dati molto superiore rispetto ai normali metodi di deep learning.

Moda

L'ottimizzazione congiunta di scorte e prezzi è ovviamente fondamentale, poiché per molti articoli la domanda è strettamente connessa al prezzo. Eppure, l'ottimizzazione congiunta di acquisti e prezzi è rimasta a lungo una chimera, in mancanza di uno strumento che fosse in grado anche solo di acquisire questa coppia di dati (ossia, di comprendere che la possibilità di acquistare più articoli a un prezzo più basso aumenta la domanda, e viceversa). La DP offre tutta l'espressività necessaria ad affrontare questa sfida.

Industria manifatturiera

Per le reti multilivello di una certa dimensione, l'ottimizzazione numerica fallisce ogni volta che vengono applicati i solutori numerici classici (vedere la sezione "Oltre l'ottimizzazione branch-and-cut" più avanti). Questi solutori si dimostrano infatti ben poco pratici quando esistono milioni di variabili o comportamenti stocastici, come avviene, sfortunatamente, nell'industria manifatturiera. La DP propone una soluzione pratica per affrontare il multilivello, senza minimizzare la complessità degli schemi dei flussi reali all'interno della rete.

MRO (manutenzione, riparazione e revisione)

Durante la riparazione di un sistema (ad esempio, di un aereo), è sufficiente che manchi un solo pezzo di ricambio perché l'intero sistema risulti inutilizzabile. Le previsioni probabilistiche sono il primo passo per gestire una domanda così erratica e intermittente, ma diventano troppo complesse per essere di qualche utilità pratica quando si tratta di esaminare in dettaglio le co-occorrenze dei pezzi necessari e trasformare tale analisi in suggerimenti concreti per la gestione dell'inventario. La DP semplifica la risoluzione di questi problemi.

Reti retail

All'interno di una rete di vendita al dettaglio, la cannibalizzazione, solitamente fra prodotti o anche fra punti vendita, è ormai da tempo riconosciuta come un fenomeno di importanza capitale. Il problema è poi amplificato dalle promozioni, pensate appositamente per guidare i clienti da un brand all'altro. La DP offre la possibilità di gestire la cannibalizzazione in presenza di promozioni: invece di limitarsi a "prevedere le promozioni", questo metodo consente di ottimizzarle per quello che sono, ossia offerte redditizie operate congiuntamente dal canale di distribuzione e dal brand.

Intelligenza artificiale, al di là delle mode del momento

L'intelligenza artificiale (o, con acronimo inglese, AI) è stata sicuramente uno dei grandi trend tecnologici del 2018, ed è rimasta sulla cresta dell'onda anche nel 2019. Lokad utilizza ampiamente tecniche che di solito rientrano nell'ambito dell'AI (come il deep learning), ma siamo stati riluttanti a enfatizzare questo aspetto della nostra tecnologia. Infatti, per quanto riguarda l'ottimizzazione quantitativa della supply chain, i pacchetti di soluzioni AI semplicemente non funzionano. Una supply chain non ha nulla a che vedere, poniamo, con la computer vision: i dati, le metriche e i compiti sono infatti tutti molto eterogenei. Di conseguenza, le aziende che acquistano soluzioni di AI "chiavi in mano" iniziano ora a rendersi conto che questi approcci non funzionano quasi mai, se non forse nelle situazioni più semplici in cui si sarebbero potuti utilizzare anche i più elementari sistemi basati su regole. Le supply chains sono fondamentalmente sistemi complessi creati dall'uomo, ed è spesso irragionevole aspettarsi che una soluzione basata sull'AI possa apprendere da sola, con il solo aiuto dei dati, le conoscenze fondamentali proprie di ciascun settore commerciale, come ad esempio:

  • le promozioni per i beni di lusso sono assolutamente da evitare;
  • gli ordini di vendita negativi all'interno di un'applicazione ERP rappresentano in realtà i resi;
  • i prodotti alimentari freschi devono essere trasportati all'interno di intervalli specifici di temperatura;
  • nell'abbigliamento, un articolo mancante può essere sostituito con uno di diverso colore, ma non di diversa taglia1;
  • la manutenzione di un aeromobile si effettua in base a ore e cicli di volo;
  • le vendite nel Regno Unito sono in realtà in GBP, anche se il software ERP indica EUR come valuta;
  • i clienti acquistano i pezzi di ricambio per la propria auto, non per sé stessi;
  • ogni diamante è unico, ma il prezzo dipende principalmente da carati, purezza, colore e taglio;
  • in aeronautica, un qualsiasi pezzo NOGO mancante blocca l'aeromobile al suolo;
  • dopo un periodo di arresto, molti stabilimenti chimici richiedono settimane per riprendere l'attività.
In un futuro remoto, il machine learning potrebbe riuscire a emulare l'intelligenza umana e ottenere buoni risultati con problemi complessi2, ma per il momento tali risultati sono stati ottenuti solo con problemi relativamente ristretti. Ogni anno, le tecnologie di machine learning riducono il numero di quelli che possono essere considerati problemi "ristretti" e, dopo decenni di lavoro, attività complesse come una guida autonoma sicura o una buona traduzione automatica sono diventate realtà (o quasi). Come illustra l'elenco precedente, però, la supply chain è ancora decisamente troppo eterogenea per potervi applicare direttamente un pacchetto di algoritmi di machine learning. E il deep learning, sebbene offra le maggiori capacità di generalizzazione disponibili al momento, richiede ancora l'input di un supply chain scientist per rielaborare il problema in modo sufficientemente ristretto affinché l'algoritmo possa funzionare.

A questo riguardo, il deep learning ha avuto un enorme successo perché, a differenza di molti approcci precedenti di machine learning, è profondamente composizionale: è cioè possibile adattare in maniera estensiva la struttura del modello per apprendere meglio in una situazione specifica. Adattare la struttura del modello è diverso che adattare l'input del modello (un'attività nota come feature engineering), che era tipicamente l'unica opzione disponibile per gran parte degli algoritmi di machine learning non deep, come le foreste casuali3.

Le strutture del deep learning sono però emerse dalle "grandi questioni" del machine learning, ossia computer vision, riconoscimento vocale, sintesi vocale e traduzione automatica, e sono quindi state progettate e affinate per scenari che non hanno letteralmente nulla a che vedere con le sfide delle supply chain. È dunque possibile sfruttare queste strutture4 per ottimizzare la supply chain, ma il compito non è né facile, né leggero. In conclusione, il deep learning può fare molto per la supply chain, ma esiste un disadattamento di impedenza notevole tra le supply chain e le sue strutture esistenti, il che aumenta i costi, causa ritardi e limita l'applicabilità di queste tecnologie al mondo reale.

Oltre l'ottimizzazione branch-and-cut

Molti problemi della logistica possono essere visti non solo in un'ottica di apprendimento (poiché abbiamo una conoscenza imperfetta del futuro, dello stato attuale del mercato e, talvolta, perfino della supply chain stessa, come dimostrano le imprecisioni nell'inventario), ma anche in un'ottica di ottimizzazione numerica. Le decisioni devono essere infatti ottimizzate in base a fattori economici, soddisfacendo al contempo numerosi vincoli non lineari (come i MOQ durante un acquisto o le dimensioni dei lotti durante la produzione).

Sul fronte dell'ottimizzazione numerica, la programmazione a numeri interi e le tecniche a essa correlate, come il "branch-and-cut", hanno dominato la scena per decenni. Questo tipo di algoritmi e le soluzioni software a essi associati, però, non sono quasi mai riusciti5 a fornire la flessibilità e la scalabilità necessarie per offrire soluzioni operative, se non a tutte, almeno a molte delle sfide della logistica. La programmazione a numeri interi è uno strumento estremamente potente quando si tratta di risolvere problemi "rigidi" con poche variabili (ad esempio, la collocazione dei componenti all'interno di un dispositivo di elettronica di consumo), ma mostra limiti evidenti nel caso di problemi su vasta scala con caratteristiche di casualità (ad esempio, riequilibrare le scorte fra 10 milioni di SKU, in presenza di domanda e tempi di trasporto probabilistici).

Uno degli aspetti più sottovalutati del deep learning è che il suo successo è dovuto a svolte epocali non solo dal punto di vista dell'apprendimento, ma anche dell'ottimizzazione: la comunità scientifica ha scoperto infatti che alcuni algoritmi straordinariamente efficienti consentono l'ottimizzazione su vasta scala6. Questi algoritmi di ottimizzazione in "deep learning", tutti incentrati sulla discesa stocastica del gradiente, non solo sono di gran lunga più efficaci della propria controparte branch-and-cut, ma sono anche molto più adatti per gli strumenti hardware di calcolo di cui disponiamo, soprattutto CPU SIMD e GPGPU: in pratica, essi consentono una velocità superiore di due o tre ordini di grandezza. Tali avanzamenti in termini di ottimizzazione numerica sono fondamentali per ottimizzare le decisioni logistiche. Tuttavia, se le strutture di deep learning erano già in qualche modo poco adatte per affrontare i problemi di apprendimento della logistica, sono ancora meno adeguate per risolverne i problemi di ottimizzazione, che dipendono ancora di più dall'espressività della struttura per consentire ai supply chain scientist di implementare i vincoli da rispettare e gli indicatori da ottimizzare.

Verso la programmazione differenziabile

In teoria, non vi è alcuna differenza fra teoria e pratica. In pratica, però, sì.

Walter J. Savitch, Pascal: An Introduction to the Art and Science of Programming (1984, traduzione nostra)


La programmazione differenziabile (in inglese Differentiable Programming, o DP) consente di dare alle supply chain quanto di meglio il deep learning ha da offrire, sia in termini di apprendimento, sia in termini di ottimizzazione numerica. Grazie alla DP, infatti, i supply chain scientist possono sfruttare al massimo le proprie osservazioni umane per mettere a punto delle "ricette" numeriche allineate (in profondità) con gli obiettivi aziendali. Non esiste una linea di demarcazione netta tra deep learning e programmazione differenziabile: si tratta piuttosto di un continuum dai sistemi più scalabili (deep learning) ai sistemi più espressivi (programmazione differenziabile). Spostandosi verso la programmazione differenziabile, quindi, diventano disponibili sempre più costrutti di programmazione, a spese della pura scalabilità. La nostra esperienza con Lokad ci ha però insegnato che passare da strumenti creati principalmente per la computer vision a strumenti pensati per le sfide della logistica fa la differenza tra un prototipo "interessante" che finisce per non essere mai prodotto e un sistema di livello industriale impiegato in scala.

Deep learningProgrammazione differenziabile
Scopo primario Apprendimento Apprendimento e ottimizzazione
Utilizzo tipico Learn-once, Eval-many Learn-once, Eval-once
Granularità input Oggetti pesanti (immagini, sequenze vocali, scansioni lidar, pagine in full text) Oggetti leggeri (prodotti, clienti, SKU, prezzi)
Varietà input Oggetti omogenei (es. immagini tutte con lo stesso rapporto altezza-larghezza) Oggetti eterogenei (tabelle relazionali, grafici, serie temporali)
Volume input Da megabyte a petabyte Da kilobyte a decine di gigabyte
Accelerazione hardware Eccellente Buona
Espressività Grafici statici di operazioni tensoriali Programmi (quasi) arbitrari
Ricette numeriche stocastiche Integrate Idem

L'utilizzo tipico è un aspetto apparentemente trascurabile, ma in realtà essenziale. Dal punto di vista della "Big AI", il tempo dedicato all'apprendimento può essere arbitrariamente lungo (o quasi): una rete computazionale può essere infatti addestrata per settimane, se non mesi, senza problemi. In seguito, la rete computazionale che ne deriva deve solitamente essere valutata in tempo reale (pensiamo ad esempio al riconoscimento dei pattern per la guida autonoma). Questo è un approccio totalmente diverso da quello necessario nella logistica, settore in cui i risultati migliori si ottengono addestrando nuovamente la rete ogni volta. Inoltre, sul piano della DP, i parametri oggetto dell'apprendimento sono spesso gli stessi risultati che cerchiamo di ottenere, il che rende irrilevante il vincolo di valutazione in tempo reale. Sono totalmente diverse anche le aspettative riguardo agli input dei dati, in termini di granularità, varietà e volume. La prospettiva "Big AI" di solito enfatizza quantità pressoché infinite di dati per l'apprendimento (ad esempio, tutte le pagine di testo del web), in cui la sfida principale è quella di trovare metodi estremamente scalabili che possano sfruttare in maniera efficace tali mastodontici set di dati. Per le supply chain, invece, i problemi devono essere affrontati con una quantità limitata di dati altamente strutturati, ma diversificati. Questo spinge il deep learning verso strutture basate su tensori, che possono essere ampiamente accelerate attraverso specifici strumenti hardware di calcolo (inizialmente si trattava di GPU, ora sono sempre più diffuse le TPU). Anche la programmazione differenziabile, che si basa sulla discesa stocastica del gradiente, presenta numerose proprietà ottime per l'accelerazione hardware, ma in misura minore rispetto ai grafici statici di operazioni tensoriali. L'importanza delle ricette numeriche stocastiche è doppia: da un lato, tali ricette hanno un ruolo fondamentale sul piano dell'apprendimento (pensiamo a dropout e codificatori automatici variazionali); dall'altro, esse sono importanti anche in un'ottica di modellizzazione, al fine di tenere adeguatamente conto di comportamenti probabilistici all'interno del sistema di una supply chain (ad esempio, i lead time variabili). Di contro, esiste un divario notevole tra programmazione differenziabile e programmazione intera mista, l'approccio dominante utilizzato negli ultimi decenni per eseguire ottimizzazioni numeriche complesse.

Programmazione intera mistaProgrammazione differenziabile
Utilizzo tipico Ottimizzazione Apprendimento e ottimizzazione
Granularità e varietà input Oggetti leggeri, eterogenei Idem
Volume input Da byte a decine di megabyte Da kilobyte a decine di gigabyte
Accelerazione hardware Scarsa Buona
Espressività Disuguaglianze su forme lineari e quadrate Programmi (quasi) arbitrari
Ricette numeriche stocastiche Nessuna Integrate

In difesa della programmazione intera mista, va detto che tali strumenti, quando riescono ad affrontare un problema, possono talvolta provare (nel senso matematico del termine) di avere ottenuto la soluzione ottimale: né il deep learning, né la programmazione differenziabile offrono alcuna prova formale di questo tipo.

Conclusioni

La programmazione differenziabile (DP) rappresenta una vera svolta per la supply chain: si tratta di un approccio creato a partire dal deep learning, che si è rivelato di grande successo per la risoluzione di molti problemi della "Big AI" come la computer vision, ma che è stato rielaborato a fondo per potersi adattare alle sfide del mondo reale come quelle affrontate dalle supply chains. Lokad ha aggiornato la propria tecnologia di previsione con il deep learning, traghettandola verso la programmazione differenziabile, ultima generazione della nostra tecnologia predittiva. Tuttavia, la DP non ha solo un'utilità predittiva: essa coniuga ottimizzazione e apprendimento, schiudendo soluzioni fattibili per numerosi problemi che prima non ne avevano alcuna.

Vorresti provare la nostra versione beta privata? Contattaci