Markus Leopoldseder (マッキンゼーのグローバル製造およびSupply Chain Practice担当ナレッジディレクター) は、供給チェーン向けに差分可能-プログラミング(DP)を適用することに関して、2つの重要な疑問を提起しました。この比較的技術的な記事では、DPにおいて整数の制約と不確実性がそれぞれどのように扱われるかについての洞察を提供しようと試みています。これはLokadのアプローチを垣間見る最初の一例にすぎません。後日、docs.lokad.com に拡張レシピを投稿する予定です。

DPはどのように整数変数に適用されるのでしょうか?実際、目的関数が整数を入力とする場合、微分不可能である可能性があります。

供給チェーンの観点から見ると、ほとんどの意思決定は 離散的 です。製品を4.2単位で注文することはできず、4か5のどちらかです。したがって、学習と最適化の両面から 整数 に対してうまく機能する手法を模索しています。我々の読者が鋭く指摘したように、DPにおけるパラメータは数値であり、それらを整数に制約することはできません。なぜなら、その考え方はDPの中核である確率的勾配降下法と両立しないからです。

DPを通じて離散的な意思決定とそれに対応する離散的な目的関数を得る方法はいくつか存在し、単純で直接的な方法から、数値最適化において他に類を見ないほど複雑な方法まで様々です。

整数と差分可能-プログラミングにおける不確実性

最も単純なアプローチは、学習時に目的関数を補間し、評価時にその結果を丸めるというものです。例えば、注文数量(整数であると予想される)を求める場合、目的関数は補間により任意の数値に拡張できます。これは、離散的でありながらも比較的線形的な振る舞いを示すシステムにおいてうまく機能します。しかし、MOQ(最小発注数量)制約のような強い非線形性に直面すると、うまく機能しません。

このような状況に対処するため、目的関数は代理関数に置き換えることができます。代理関数は元の目的関数を平滑かつ微分可能な方法で近似する関数です。例えば、MOQ制約のペナルティコストに通常関連付けられるステップ関数は、シグモイド関数に置き換えることができます。エポックを重ねるごとに、代理関数は元の目的関数に数値的に近づくように徐々に変形されます。

供給チェーンの観点から、我々の経験では、代理関数は驚くほどうまく機能します。実際、良い解に向かってスムーズに反復できない状況は稀です。供給チェーンの問題は、解の一部を一ビット変えただけで全体が崩れるような暗号学的パズルではありません。例えば、MOQが500単位であるにもかかわらず490単位の注文が利益を生む場合、500単位の注文も利益を生む可能性が高いのです。

次に、変分オートエンコーダーに触発されたより洗練されたアプローチがあります。これは、「ディープラーニング層」におけるような層の小数出力を、例えばポアソン分布のような任意の分布から得られるランダムな整数偏差に変換するというものです。この仕組みにより、プログラムは小数パラメータのみで動作しながらも整数出力を生成し、それを目的関数に組み込むことが可能になります。確率的勾配降下法は、このプロセスを多数(モンテカルロ法のように)繰り返し、ランダムな整数偏差の生成を支配する_法則_が適切に調整されることを保証します。

最後に、AlphaZeroのような最も複雑なアプローチでは、離散的な意思決定を生成するために、複雑な層のリスト(例:ディープな計算ネットワーク)を導入し、通常はSoftmaxに似た層で終わらせます。これらのアプローチは、AlphaGo(その後AlphaZeroと再定義された)が李世乭に勝利したことが示すように、非常に非線形な最適化問題において最先端の成果を提供します。DPもまた、計算負荷を抑えるためにネットワークの深さと複雑さを調整するだけで、これらの手法の利点を活用可能です。実際、MOQの問題を解くのは比較的困難ですが、最適化問題としては囲碁の世界チャンピオンに勝つほどではなく、(ディープラーニングの基準では)「浅い」ネットワークでも既に多くの成果を上げています。

供給チェーンの現場でよく見られる離散的な状況に対して、より直接的かつ実践的な対処法を提供することが、Lokadが既存のフレームワークを改造するのではなく、自社独自のDPソフトウェアスタックを開発した主な理由の一つでした。これは、そうした状況に合わせた特殊な構造を導入する余地をより多く持つためでもありました。

これらの構造の中には、単に繰り返しの作業を軽減し、ミスの発生を避けるためにDP言語自体で記述された「標準」ライブラリの関数群に過ぎないものもあります。しかし、一部の構造は、純粋な自動微分では実現できなかった専門的な機能を提供するために、確率的勾配降下法と絡み合うように設計された、より微妙なものも存在します。

DPではどのように不確実性に対処するのでしょうか?確かに、DPはニューラルネットワークを最適化する確率的勾配降下法を用いてパラメータを調整することで、あらゆる複雑な目的関数を最適化することができます。確率分布はどのように考慮されるのでしょうか?

DPにおける不確実性に対処する我々の主要なアプローチは、基礎となる確率分布から将来のイベントの流れを反映した時系列軌跡)を生成し、その後モンテカルロ法に従って目的関数を動作させるというものです。このアプローチは、入力として用いられる確率分布が完成品の将来需要のみであった場合でも、連鎖的なBOMs(部品表)の影響など、システム内の複雑な離散的相互作用をモデル化する可能性を提供します。

このアプローチは新しいものではありません。変分オートエンコーダーは、やや異なる視点から設計されながらも、分布のパラメータ化(VAEではガウス分布)を入力とし、出力として偏差を生み出すという類似の戦略を採用しています。前述したように、我々はしばしばガウスのような連続分布ではなく、整数偏差を生み出す カウント 分布を利用しています。

この生成的アプローチ、すなわち分布を観測値(すなわち軌跡)に変換する手法は、DPプロセス内に完全に組み込むことも可能です。確率分布を入力として取り、それに基づいて意思決定を最適化する代わりに、分布自体を最適化と同時に学習することができます。例えば、_需要予測_は_価格最適化_と同時に実施することが可能です。価格戦略が需要に大きな影響を与えるため、これら二つの側面は切り離して分析することはできません。

上記で述べたレシピの生成的な部分は、非常にフォトリアリスティックな画像生成に大成功を収めた生成的敵対ネットワーク(GAN)にも既に見られます。時系列を考慮する際、LSTMやGRU(LSTMのよりシンプルで現代的な同等モデル)は、確率分布だけでは明示的にモデル化できなかった複雑な時系列を生成する手段を提供します。

DPは、通常ディープ-ラーニングの視点で考えられるシナリオと比較して、グラフ、時系列、リレーショナルデータなどより多様なオブジェクトを扱う供給チェーンの観点から、これらの能力を活用するためのさらなる柔軟性を提供します。改めて、Lokadのエンジニアリングの大部分は、在庫、価格、購買、生産、品揃えなどの最適化時に生じる特定の要求に合わせたツールの整備に注力してきたのであり、画像、音声、自然言語処理に注力する場合とは異なるのです。