数理最適化とは①

データサイエンスの数理最適化について勉強していきたいと思います。
(勉強のメモがてらまとめていく)


数理最適化とは?

「ある条件下で、集合の中から最もよさそうなものを選択すること」を数理最適化と呼びます。
データサイエンス内の立ち位置は、三好さんの図がわかりやすいです。
 ※参照:AI・データサイエンスにおける技術群

言葉にすると難しそうな気がしますが、「私たちが日常やっている選択」を「数式を使って選択する」のが、数理最適化になります。

例えば、子供にお小遣いを500円あげて、「好きなお菓子を買っていいよ」と言います。
そうすると、子供たちは、自分でいろいろと組み合わせを考えます。
ポテチと、チョコビと、グミと、ポッキー。
でも、飲み物も欲しいな。
じゃー、チョコビをチロルチョコに変えて、ファンタを追加して。
少しお金が余るから、うまい棒を足して、500円ぎりぎりまで使って。
こんな感じで、「自分の好み」「量」「バランス」などいろいろ考えながら、500円で最も満足する組み合わせを考えてお菓子を買います。
これを、数式を使って選択するのが、「数理最適化」です。

数理最適化の実用例

  • カーナビのルート探索

  • 製造業での生産計画

  • 電力供給量

  • 在庫管理

  • 投資ポートフォリオ

いろいろな場面で使われています。

そういえば、鉄道に遅延が発生したときに、ダイヤを作り直す専門家がいるというのをテレビで見たことがあります。
これも、数理最適化で解決しようとしています。

(余談)
鉄道のダイヤの乱れはとても複雑で計算量が膨大なようで、最近ではAIを使った復旧ダイヤ作成が始まったようです。


基本用語

  • 目的関数:最大化あるいは最小化したい関数

  • 決定変数(変数):目的関数を最適化するために決めたい変数

  • 制約条件:最適化するうえで満たさないといけない条件

最適化の種類

大きくわけると、2種類あります。

  • 連続最適化

  • 組み合わせ最適化(離散最適化)

2つの違いは、「変数」の種類です。
変数が連続的な数値を取るような最適化問題のことを「連続最適化」と言います。
変数が離散的な数値を取るような最適化問題のことを「組み合わせ最適化(離散最適化)」と言います。

連続最適化

変数は無限の値を取ります。

【連続最適化の例:商品価格の最適化】
価格ごとに変わる「購買人数の割合」「利益」などを考慮し、最適な価格を導き出す問題。

組み合わせ最適化

変数は離散的な値を取ります。
離散的な値とは、[0, 1, 3, ・・・] というようにとびとびの数値のことを言います。
対象となる変数が2種類(A, B)の場合は、とりうる変数の組み合わせは以下のようになります。
 組み合わせの数 = Aのパターン数 × Bのパターン数

【組み合わせ最適化の例:ナップサック問題】
ナップサックに食料や道具等の物品を詰める際、ナップサックの許容重量範囲内でできるだけ有用な物を選ぶという問題。

機械学習との違い

ChatGPTなどの登場によりディープラーニング・機械学習が一般化されたため、特に違いや数理最適化の必要性がよくわからなくなってきました。

数理最適化も機械学習も、データを活用して何かしらの結論を導き出すという役割は同じです。
両方ともデータサイエンスの分野の一つです。

違いでよく言われるのが、利用目的です。
・機械学習:データから学習して予測する
・数理最適化:予測をもとに最適な選択をする
機械学習は、過去のデータを元にどうなるかを予測したいときに利用します。
数理最適化は、「目的を達成するために何をすればよいのか」という、具体的な意思決定をおこないたいときに利用します。
データとルールは分かっているのに、最良の解決策を導き出すことが困難な場合に有用です。

ただし、これは全ての問題に当てはまるというわけではないような気がします。
連続最適化は、機械学習の一部になっているものが多いです。
どちらかというと、組み合わせ最適化に対して上記の違いが当てはまりそうな感じです。
制約条件の有無によっても変わってきそうですが、このあたりはまだもやっとしているところです。
もう少し勉強していくとわかってくるのかもしれません。


この記事が気に入ったらサポートをしてみませんか?