数理最適化とは何か?

竹迫良範氏(以下、竹迫):本日モデレーターを務めます竹迫と申します。

2015年にリクルートマーケティングパートナーズにキャリア採用で入社して、現在はアドバンスドテクノロジーラボ所長として、大学との共同研究や産学連携の活動を行っています。どうぞよろしくお願いいたします。では、梅谷さん、よろしくお願いいたします。

梅谷俊治氏(以下、梅谷):よろしくお願いします。まず自己紹介なんですが、2023年の10月にリクルートのデータ推進室、シニアリサーチャーとして入社しました。前職なんですけれども、実は20年ほど大学でずっと大学教員をしていました。2023年9月まで大阪大学で数理最適化寄附講座教授をやっていました。

専門分野のほうなんですけれども、今日のお話のタイトルにもあるように「数理最適化」ですね。あと、特にアルゴリズムとか離散数学あたりを中心に研究をしていました。

何人かの方はご存じかと思いますけれども、2020年に講談社から『しっかり学ぶ数理最適化』という本を出版いたしました。わりと広い範囲をカバーしていますので、今日のお話で興味を持っていただけたら、ぜひ手に取ってもらえればと思います。

今日なんですが、最適化のことをまったくご存じないという方もいるかと思いますので、数理最適化の概要と雰囲気をまずお伝えできればと思います。

AIと数理最適化の関係性

梅谷:今日参加していただいている、特にエンジニアの方はよくご存じかと思いますが、「AIで問題解決しました」という非常にたくさんのプレスリリースが出ているわけなんですけれども、その実態をどのように捉えればいいのかというのが、こちらのスライドになります。

真ん中の図を見ていただきたいんですが、AIと一口に言うものの、実際には「何か問題解決したい」と、そのようなことを考えた時に、実際には3つの段階があるんじゃないかと捉えることができます。それが、真ん中の3つの矢印になります。

どういう段階かというと、1番目はデータを収集して現状把握して可視化をする、いわゆる見える化をするというステップです。これは、わりとTechにおけるバズワードに対応しているんじゃないかと僕はいつもお話ししています。

どういうことかというと、わりと以前はビッグデータという言葉が非常に流行ったわけなんですけれども、それは企業の中で現状把握とか可視化という課題が盛んに出てきたからだと僕自身は捉えています。

ところが、いったん見える化できたからといって問題が解決するかというと、なかなかそうはいかないのは、みなさんよくご存じのことかと思います。

それがわりと今のステージで。実際にはデータがたくさんあってもしょうがないわけで、その中から重要なデータとか知識を取り出すと。要因とか予測分析をするという、いわゆる機械学習の技術というのが、今のAIと呼ばれるものの中心になっているのかなと思います。

今日お話しする数理最適化はどこになるのかというと、実はその先になります。下側にクーポン配信の事例を書いているんですけれども、機械学習を使って要因分析ができたらそれで終わりかというと、意外とそうでもないというのが今日お話ししたいところです。

これ、下にクーポン配信の事例があるんですが、例えば機械学習の協調フィルタリングと呼ばれる技術を使うと、下側に商品とユーザーの組合せが描かれます。どの商品をどのユーザーに推薦すれば、どれくらいの期待利得が得られるかは、わりと機械学習を使うと、何らかのスコアみたいなもので計算できるわけです。

それならば、スコアが高い組合せに、例えばクーポンを配信したり広告を出せばいいのかというと、必ずしもそうではないというのが実際のところです。それはなぜかというと、これもいつも言っていることなんですが、スコアが高い組合せは、要するに人気商品と感度の高いユーザーの組合せが非常に多いわけです。

ところがそういうのは、実際にはクーポンや広告などの施策がなくとも自然に売れていくものなので、スコアの高い順に貪欲的に割り付けていけば、それでうまくいくということにはならないというのが、実際のところです。

そうすると、わりと多くのユーザーに対して満遍なく、例えば決められた数の商品が推薦される。逆に商品の側から見ても、スコアが低くあんまり人気でない商品についても、ちゃんと一定の回数、推薦しましょうというようなことが必要になってくるわけです。そのような条件を課した上で、トータルの期待利得を最大にしたいというようなことが出てくるわけです。

というわけで、実際には制約条件の下で最適化問題を解きたいということが、実は機械学習で要因予測分析した後に生じるというのが、実際のところだったりします。これは後でも紹介しますが、でもやはり実際の事例でもこういうことが非常によく起こります。

(スライドを示して)実際に数理最適化を現実問題に適用しましょう、といった時の流れが下になります。

僕自身、大学に長くいて研究したからわかるのですが、例えばみなさんが数理最適化に興味を持たれて、専門書とか教科書を手に取ると、わりと最適化問題がこういう問題ですというのが与えられて、いかに効率のいいアルゴリズムを作るかに焦点が当てられているなと感じられるかもしれません。

ところが実際は、実務にいったん取り組むと、実はその手前のところで、現実問題は実際どういうふうなかたちで数式に落とし込むのか、最適化問題に定式化するのかが実は非常に難しいことに気づかされます。

実際、これはよくあることなんですけれども、現場にインタビューして最適化問題を定式化してアルゴリズムを作って持っていくわけですね。そうするとわりと言われるわけなんです。「なんか違う」とか、「ぜんぜん違う」みたいな。

そこで、フィードバックをいただいて、最適化問題の定式化をやり直して、というようなことをグルグルやります。そういったことが実際にはよく起こります。そんな感じで、実務では数理最適化を使った問題解決が進むのが実際のところです。

数理最適化の具体例「野菜ジュース配合問題」

梅谷:前置きはこれくらいにして、数理最適化をご存じない方にちょっと簡単な例をご紹介します。これ、僕が大学にいた時に、わりと授業の1回目でやるやつで、「飲料メーカーで野菜ジュースを作りましょう」というようなことを考えます。

(スライドを示して)ここでは原材料としてトマト、にんじん、ほうれん草を持ってくると。野菜ジュースの場合、いろいろな栄養素が含まれているというのがわりと売りになるので、真ん中の表にあるように、食物繊維、ビタミンC、鉄分、βカロチン。これが一番下の行に書いてある決められた必要量を満たすように、うまくトマト、にんじん、ほうれん草の原料を配合してください、というような問題を考えます。

ただ、野菜はその時々によって価格が変わるものですから、できれば合計のコスト、特に原料費をなるべく最小に抑えたいというようなことを考えるわけです。この問題を最適化問題に定式化してみます。

まず変数ですね。何を考えたらいいのかというと、要するにトマト、にんじん、ほうれん草をどれだけ買うかという量をそれぞれ変数x1、x2、x3と置きます。

そうすると、例えば原料費の合計はどう書けるかというと、実は一番下のところの数式のところの1行目。「400x1 + 250x2 + 1000x3」が原料費を表す式になります。これを最小化したい、というような感じ。これを最適化問題では目的関数といいます。

これだけだと駄目で、その後の「subject to」と書かれたところの下に制約条件がついてきます。これは真ん中の表で見ると、縦の列に対応しています。要するに「食物繊維、ビタミンC、鉄分、βカロチン、必要量を満たしてください」という部分になるわけですね。

縦の食物繊維の列を見てみます。先ほどトマト、にんじん、ほうれん草をx1、x2、x3と決めたわけですから、そうすると食物繊維の量の合計は、2行目に書いてあるとおり「10x1 + 25x2 + 30x3」と書くことができます。「これが必要量である50以上になってくださいね」というような条件として書けるわけですね。同じようにビタミンC、鉄分、βカロチンについても書いてあります。

あと、気をつけなくてはいけないのが、変数は全部0以上という条件なわけです。これらを全部書き並べると最適化問題が出来上がり、というような感じになります。

こんな感じで、現場の方からインタビューで聞いてきた内容を数式として書き下すということによって、最適化問題を書くことができます。

実際、この問題を解くと、最適値が1600になって、x1、x2、x3がこんな感じになります。実際、トマトがかなり多いということがわかるわけです。

実際に市販の野菜ジュースを飲むと、わりとトマト味だなとか思ってしまうわけで、解いてみて「あっ、わりと合っているな」というのを実感した感じです。

連続最適化問題と組合せ最適化問題

梅谷:ちなみに最適化問題なんですが、今のやつはわりとイメージしやすくて、変数がいわゆる連続値を取るような最適化問題。これを連続最適化問題といいます。

ところが世の中の問題は、実は組合せ最適化問題と呼ばれる問題が非常に多いです。組合せ最適化問題が何かというと、もともとのベースが組合せ数学になっているような最適化問題のことを言います。

ちょっとイメージしにくいかもしれないんですけれども、例えば中学とか高校で、組合せの数学をやったかと思います。順列の並びとか割当とかですね。

例えば、「袋の中から赤玉とか白玉を取り出す組合せはいくつありますか?」とかいう問題ですね。中学とか高校の数学でやったのは、組合せの数を数えなさいという問題だったんですけれども、その一つひとつの組合せに対してコストが決まる、利益が決まるというような問題を考えるわけです。

そうすると、「たくさんある組合せの中で一番いい組合せを探しなさい」という問題を考えたものが、組合せ最適化問題になる感じです。

実際にこれ、『しっかり学ぶ数理最適化』の初めのほうに書いてあるんですけども、連続最適化と組合せ最適化問題についていろいろな問題があります。それに対していろいろなアルゴリズムがあるというのが実際のところです。

数理最適化がどのようなところで応用されているのかというと、こちらのスライドにあるような感じなんですけれども、数理最適化自体、第二次世界大戦の直後あたりから始まった学問で、これまで非常にいろいろな分野に適用されています。

ここで気をつけていただきたいのが、数理最適化自体は、この下の図にあるように実にいろいろな分野に適用することができます。

これは数理最適化に限らず、機械学習とかシミュレーションとか、信号処理、制御とかいろいろありますが、ほかの数理の技術についても言えることなんですけれども、現実世界の分野と1対1には対応しているわけではないということに気をつけてください。

だからどういった問題とかに適用できるのか、だからどういった分野に応用ができるのかは、わりとみなさんの想像力次第というようなところが実際あります。なので僕自身も、実はいろいろな分野のところで、お手伝いしてきたというのが実際のところです。

リクルートでの数理最適化の応用事例

梅谷:時間がなくなってきたのでサラッといきますが、僕自身が入社する前から、実はリクルートと大学にいた時から共同研究していましたので、今日はそちらの話をいくつか紹介したいと思います。

1つ目は、先ほどお話ししたクーポン配信のものです。弊社のサービスを使っている方は、時々クーポンを受け取るかと思いますけれども、そのクーポンをどういうふうに配信するかを最適化問題として解くという話です。

ただ実際顧客の数が非常に多いので、普通に最適化問題を解こうとするとなかなか大変だったりします。

数理最適化については、出来合いのソフトウェアとかライブラリ、たくさんあるんですけれども、やはり問題が大きいとなかなか効率良く解けないということで、これ、当時の修士の学生の子と一緒に、2年ぐらいかけてがんばって解けるようなアルゴリズムを開発した、というような話です。

次は宿泊予約システムのリスト作成ということになります。これは、左下のところの図をちょっと見てもらえるとわかるんですけれども、例えば宿泊とかの予約システムだと、エリアを指定すると、候補がダーッと出てくるわけです。

ところがわりと困るのが、似たようなホテルとか同じホテルの異なるプランというのがバーッと並んでしまうと。そうすると、いろいろ自分は探したいのに、同じようなのばっかり見ていて情報が少ない、困るといったようなことがよく起こるわけです。

そうすると、単純に推薦のスコアが高いやつだけじゃなくて、バラエティ、つまり多様性も加味したいというようなことを考えるわけです。

どうやって多様性を加味するのかという話です。実際の内部の最適化問題としては、隣に並んでいるホテルの間の類似度を計算しておいて、この類似度が低くなるようなものを隣に並べるような感じでやるというのが、実際のところです。

ただ、それをすると、最適化問題はかなり難しくなってしまって、数百ぐらいある候補について一遍に並び替えを解くことがなかなか難しいということで、これはかなり悩んだ問題です。

ただ、このリストの作成は、1つ特徴があって、みなさん実際そうだと思うんですけれども、多くのユーザーの方は上位の数件から20件~30件ぐらいしか見ないという特徴があります。

なので、結局ここの多様性についても、ユーザーが情報を検索した時、実際に目に触れる部分に、より情報のバラエティという観点を加えていこう、というような感じで捉えてしまえば、難しい問題を解く範囲を狭めることができる。というわけで、実際そのような考え方に基づいて、2段階で解くというようなことを実際にした、というような感じです。

そのほかの話としては、やはり弊社はマッチングとかレコメンド、推薦の話が非常に多いです。ただ、この時に気をつけなければいけないのは、先ほども言ったようにスコア順に割り付けてしまうと、人気商品ばっかりが推薦に出されてしまうと。

右側のところにグラフが描いてあるんですけれども、やりたいのはできるだけいろいろな商品が多くの人に推薦されるようにしたいというのが狙いです。

なので、最適化問題を考える時の目的関数をどうするかっていうと、スコアの合計を最大化するんじゃなくて、ある一定の基準をあらかじめ決めておいて、その基準以上に達するような商品をできるだけ多くしましょうというように、最適化問題を定式化する時に工夫します。だから、必ずしも設定したKPIそのままを定式化するわけではないというところに、わりと工夫があったりします。

このような感じでいろいろ実務の問題に取り組んでいる、というのが実際のところです。

汎用性と高性能の両立

梅谷:いろいろな最適化問題をやっているんですけれども、先ほどもあったように、数理最適化はわりと汎用に使えるライブラリとかもありますが、やはり汎用のライブラリっていうのはなかなか性能が出ない。

そうすると個別の問題に対して、専用のアルゴリズムを開発しましょうという話があるわけです。こちらが実にトレードオフの関係になっていて、汎用性と高性能っていうのを両立させるというのがなかなか難しいというのが、現在、数理最適化における、わりと僕は重要な課題だなというふうに思っています。

そのような状況の下で、僕自身大学にいた時から、今リクルートに移って、研究をやっています。研究のことで言うと、例えば大阪大学にいた時にはこういった図形の詰め込み問題みたいな、専用のアルゴリズムの研究をしていました。

今も大阪大学にいた時からも続けているんですけど、汎用のアプローチとして、大規模な整数計画問題と呼ばれる、変数が整数値を取る最適化問題を解くようなアルゴリズムを研究しています。そのような感じでいろいろやっているというのが実際のところです。

汎用性と高性能の両立

梅谷:最後になんですけれども、今僕自身が大学から大学教員から今リクルートに移って、どういう立場で仕事をしているかというのを少し紹介したいと思います。

今僕が所属しているのは、データ推進室と呼ばれるリクルートの中でデータアナリティクスを担当している組織になります。下側の図に書いてあるように、データ推進室も各プロダクトに対応した領域と、それ以外にも横断でテクノロジーを担当する領域があります。

後でもたぶん出てくるんですけれども、このデータ推進室がおもしろいのは、僕だけじゃなくていろいろな人がたくさん兼務しているんですね。

僕自身は、主務としては、左のところに書いてある室直下のアドバンスドテクノロジーラボ部というところで、一応研究開発と産学連携がメインということになっています。

なんですけれども、実際には下側のところに書いてあるように、アジリティテクノロジー部というところにも所属していて、実際いろいろな領域のプロダクトについていろいろな人とコラボレーションしながら、実際にプロダクトの開発とかのお手伝いもするというようなこともしています。

それ以外の話としては、もう1つデータサイエンス部、機械学習エンジニアリング部といったところで、社内教育などデータ推進室の中のエンジニアのみなさんの底上げというような感じで、数理最適化をがんばって根付かせようというようなことをやっています。最近も4月に新人研修ということで最適化モデリング入門講義ということで担当したりしました。

最後のスライドなんですけれども、今日の対談の最後、テーマにもある産学連携の推進ということでお話しします。

今日お話を聞いている方の中では大学との連携みたいなことを検討されたりとか、過去に経験された方もいるかと思います。僕自身も大学側の人間としてやっていて、なかなか難しいっていうのが実際のところです。とにかく長続きしないという感じです。

やっていて思うのはやはりまず「共同研究をやりましょう」というプロジェクトをぶち上げるよりも、大学でやっている僕は数理最適化とかなんですけれども、そういった専門知識を企業にいるみなさんが勉強する機会を作ることがわりと大事かなと思っています。これは本当にやっていて思いました。

例えば僕自身も共同研究で、「じゃあ、何かやりましょう」って言ってテーマを持ってくる。企業の研究所の方と「じゃあ、こういうテーマでやりましょう」と。ただやはり1年ごとに契約とかするもんですから、なかなか長続きさせるのが難しい。企業の方もがんばって予算を取ってきていただけるんですけれども、やはりほかにも業務がある中で進めているので、なかなか難しい、みたいなことはやはりよくある話です。

そうこうしているうちに打ち合わせとかをやっていても、忙しい時も集中して打ち合わせする時もあれば、わりと間が空いちゃうような時もあるんです。

そうした時に僕は、「じゃあ、打ち合わせをせっかく月1回ぐらいでやっているんだから、僕が大学でやっているような授業でもやりましょうか?」って言ったら、「あっ、じゃあぜひぜひ」みたいな感じで。

そういう感じで、共同研究とかの合間に、そういった教育も混ぜるみたいなことを実は大阪大学にいた時にやったんですね。これが非常に効果的だったんですね。こういったことをうまく織り交ぜることで、共同研究とかが長続きすると。

またそういったことで、現場の企業側から「こういうことをやってみたい」みたいな話も出てきて、うまく回るというサイクルが出来上がるみたいなことを経験しました。こういったことも、後でまたお話しできればと思います。

というわけで僕のパートはこれで終わりにしたいと思います。

Q&Aセッション「数理最適化の未来と実務での活用」

竹迫:梅谷さん、発表ありがとうございました。

梅谷:ありがとうございます。

竹迫:2024年入社の新人研修では、梅谷さんの講義があるっていうことで、僕も新しくリクルートに入社し直したいなと思った限りでございます(笑)。非常に贅沢な講義が受けられると思っています。

今参加者のほうから3件ほど質問が来ているので、Q&Aタイムということで、梅谷さんにおうかがいできればと思います。

まず1件目ですけれども、「ご講演ありがとうございます。ビッグデータから機械学習から数理最適化へというお話でしたが、数理最適化とデータサイエンスはどのような関係とお考えでしょうか? また、梅谷先生は数理最適化の次にはどのようなことが求められるとお考えでしょうか?」というご質問があります。

梅谷:なるほど。僕は数理最適化というのは、いわゆるポストデータサイエンスかなと思っています。今日一番初めにご紹介したとおり、あれってITを使った問題解決の流れを表しているわけで、前段がデータサイエンスだと思うんですね。その後に来る出口、たぶん問題解決の出口に当たるのが数理最適化と。そういう関係かなと思っています。

ちなみに、数理最適化の次はどのようなことかというと、それはわりと鋭い質問でして、数理最適化は万能じゃなくて、例えば時系列とかそういったものが含まれる問題はわりと解きにくいという欠点があります。

なので、そういった時系列に関わるような問題解決の技術、例えばその1つに強化学習とかいろいろあるかと思いますけれども、オンライン最適化とかが入ってくるのかなと。数理最適化に、そういう時系列を考慮した要素が、次に来る技術かなと考えています。

竹迫:ありがとうございます。確かに今、生成AIのLLMとかも流行っていますけど、距離が離れ過ぎているところが、なかなか対応付けが難しいというのもあるので、まさに時系列データの扱いみたいなのは今後盛り上がってくる分野なのかなと私は思いました。

2件目の質問です。「実問題を扱う際にはどのようなプログラミング言語を使用していますか? データ分析も行うことを考えるとPythonが良いかなと思いますが、セキュリティの観点から企業ではPythonを使わせてもらえないという話を聞くで、質問させていただきました」。

梅谷:なるほど。僕自身セキュリティの専門家じゃないのであんまりアレなんですけど、僕自身そこまで気にしたことはなくて、わりとPythonを使っていますし、周りの人もPythonを使っていることが多いかなとは思います。特に出来合いのライブラリとかを組み合わせる時には、Pythonが非常に使い勝手がいいですねというところです。

竹迫:ありがとうございます。ちなみにC++とかC言語みたいなものって、梅谷先生は使われることはありますか?

梅谷:そうですね。やはり専用のアルゴリズムを作る時には、速度や計算効率がすごく大事になってくるので、そういう時にはやはりC++とかCとかを使いますね。そこはうまく使い分ける感じでやっています。

竹迫:わかりました、ありがとうございます。あと、セキュリティの問題は最近、サプライチェーンセキュリティといって、オープンソースで公開されているライブラリのリポジトリのサーバーがハッキングされて、それでトロイの木馬とかちょっと悪いことをするようなライブラリが混入してしまうのが、けっこうPythonとかNode.jsとかでも、報告がここ数年上がってきているので。

そういったところは通信を監視するとか、そういうところで企業では対策を進めているというのが、私からの回答になります。

梅谷:なるほど。いや、勉強になります。

竹迫:そうなんですよ。pip installとかね、カジュアルにやっちゃうんですけど、それが本当に信用できるサーバーからちゃんとダウンロードできているかを最近は気にするようになってきている感じですね。

梅谷:なるほど、ありがとうございます。

竹迫:続いて3件目の質問です。「最近生成系AIが流行していますが、生成AIは数理最適化にどのような影響を与えているのでしょうか? 機械学習のように数理最適化の価値を高めることになるのか、それとも数理最適化が不要になるように作用することが予想されるのでしょうか?」というご質問です。

梅谷:なるほど。これに関しては、数理最適化周りでも生成AIを使いましょうみたいな話は出てきています。どういうところに出てくるのかというと、今日お話しした中で一番初めの最適化問題を定式化するところで使えないかっていうような試みが、ちょこちょこ出てきています。

ただ、うまくいくかというとやはり難しいところはあって、結局数式に書き下ろさなきゃいけないんですけど、そこは生成AIと必ずしも相性がいいわけではないというようなところが、なかなか難しいところだったりします。

お話で言うと、不要になるかっていうと、むしろ数理最適化の活用が増える方向、手軽さが増す方向に働くのかなと僕は思っています。

竹迫:ありがとうございます。そうですね。私もいろいろ試しているんですけど、ネットに転がっているサンプルコードを生成するとかだと、ぜんぜんいけるんですけど、具体的な問題に対してこれを解けるかどうかっていうのは、なかなかうまくいかないものとかがあったり。

あと形式変換みたいな感じのものだったらいけるところもあるので、そういったところでそれを使って、どんどん解を早くしていくところはあるのかなと感じています。

梅谷:そうですね。全体として、作業が効率化されるというのはけっこうあるのかなっていう気はしますね。

竹迫:わかりました、ありがとうございます。追加でどんどん質問が来ているので、ちょっと時間があるので、せっかくなので梅谷さんにいろいろ聞いてみたいと思います。

4件目の質問です。「どのようにして事業インパクトもありつつ学術的におもしろい課題を選定されているのでしょうか?」というご質問です。

梅谷:メチャクチャ難しい話で、基本的に両立は難しいなとは思っています。実は今リクルートの中でも、やはり同じようなことはあると思います(笑)。

今のところは、技術的におもしろいというのと事業インパクトが両立すれば最高なんですけど、もうそれはもう必死になってそういうのを探していて、でももうしょうがないから、もう事業インパクトがあるやつを優先するしかないね、みたいな感じでやっていますね(笑)。

竹迫:ありがとうございます。続いて5件目の質問です。「今『しっかり学ぶ数理最適化』を輪講ゼミで読んでいます。正直、数式ばかりでついていけていないです。数理最適化の分野に私は向いていないのでしょうか?」という質問が来ています。

梅谷:そんなことはないと思いますよ。今日お話ししたように、結局数式で書いてあるのも、もともとはわりと文章なんですよね。だからわりと僕は慣れかな、とは思っています。数式を見た時に、これはこういうことを言っているんだなっていう、わりと雰囲気が大事かなとは思っているので、僕は諦めることはないかなとは思っています。

竹迫:ありがとうございます。そういうのも含めて、プロトコルを学ぶために、まさに輪講とかゼミでやっていて、それがやはり慣れてくるとなんとなくわかってくるという感じですかね?

梅谷:そうですね。だからわりと外国語を勉強しているのに近いんじゃないかなと僕は思いますね。だんだんやっているうちに脳が慣れてくる感覚はあるかなと思います。

竹迫:初めて読む時はすらすら読めなくても、安心してくださいっていうことですかね。

梅谷:そうですね。僕自身もわりと学生の頃、というか今も数学が苦手なので、いや、わりと大変でしたよ、そこらへんは(笑)。

竹迫:ありがとうございます。ちなみに私も会社員になって「ビッグデータの分析とかできないか?」って言われた時に、Bishop先生の『Pattern Recognition and Machine Learning』の本を読んだんですけど、まったくわからなかったので、会社の同僚と輪講したりとかしていてですね。

やはり途中の数式変換とかね、けっこう端折ったりすることもあったりとかしていて、だからすごく読むのが遅かったんですけど、でもそれはかえって理解が深まる方向に行ったので、よかったかなと思いますね。とりあえず、なんとなくわかった気になってすっ飛ばさなくてよかったなっていうのは、今になって思います。

梅谷:そうですね。学生の時とか時間がある時に、そういうのを丁寧にやるのがわりと大事ですね。

竹迫:ありがとうございます。6件目の質問となります。「実問題を最適化問題として定式化する場合、パラメーターをどう決めるのかが難しい点だと感じています。そのあたり、機械学習の手法と組み合わせるみたいな手法はありますか?」というご質問です。

梅谷:そうですね。それはわりとあります。だから今日お話ししたように、結局機械学習でデータからモデルを作って、それを最後に最適化に起こすっていう感じなので、まさにそういう流れはあると思います。

ただ、機械学習で出てきたやつが、それが本当に塩梅がいいのかというと、うまくいかなかったりとかして、わりと右往左往しています。それは今も社内でも、やはり僕自身もしますし、周りもわりと大変みたいな話はよく聞きますね。

竹迫:わかりました、ありがとうございます。どしどし質問が来ているんですけど、いったん次で最後の質問にしようと思います。

「最近『PuLP』を用いた数理最適化を学び始めたばかりなのですが、定式化の力を養うための練習問題集的なものはありますか?あと、論文などの探し方に関しても、どのような学会がメジャーなのかわからない次第です。OR学会を中心にサーベイすればよいのでしょうか?」という質問が来ています。

梅谷:なるほど。定式化については、あんまりいい本がなかなかないんですよね。僕自身もどっちかというと基本的な定式化のTipsを20個~30個ぐらい知った後は、もうとにかく実践あるのみ、みたいな感じでしたね。

ただ、これだとちょっと答えにならないので(笑)、いい本で言うと洋書になってしまうんですけど、『Model Building in Mathematical Programming』という本がありまして、これが今、第6版まで出ているすごくいい本なので、英語で大変なんですけど、これは手に取られるのが、まずいいかなというのが1つです。

論文の探し方については、そう僕も(日本の)オペレーションズ・リサーチ学会に所属しているわけですけれども、とてもいいですし、特に実はアメリカのほうでオペレーションズ・リサーチとか数理最適化の実務応用ってすごく盛んなんですね。

なので、そちらはINFORMSと呼ばれる学会なので、そちらで出している論文誌とか学会の情報を拾うと、もっといいかなと思います。

(次回につづく)

<続きは近日公開>