数理最適化の入門書として、モデリングからアルゴリズムまで幅広く学べるようになっている『しっかり学ぶ数理最適化』。
自分も買ってはいたんだけど、読むのが後回しになっていて、ずっと読んでいなかった。 けっこうな厚さがある本だと、気合を入れないとなかなか読み始められないよね(^^;
そんな中、去年の12月にconnpassで勉強会の募集があった:
これはいい機会だと思って参加し、そのあとも継続的に参加し続けてる。 そこで、勉強会の様子や感想を紹介してみたい。
これは数理最適化 Advent Calendar 2025の2日目の記事です。
勉強会の進め方
勉強会は月1回で、毎月第2土曜日の9:30〜12:30で開催されている。 3時間あるけど、最初の10〜20分は挨拶や近況報告のアイスブレークがあり、途中で10分くらいの休憩を挟むことが多いので、実質2時間半くらい。 毎回10人前後集まっている感じ。
スタイルとしては、誰か一人がチューターを務めたり、発表者になったりというのではなく、みんなで一緒にワイワイと議論を深めていく感じ。 ランダムに読む人を決めて、ある程度のまとまりを声に出しながら読んでもらったら、そこで分からなかったこととかを議論して次に進むというのを繰り返す。
声に出して読んでもらうというのがけっこう大きくて、じっくりと読んでいくので、なんとなく読み飛ばしてしまいそうなところも「あれ?」となって議論になることがけっこうあった。 参加してる人のバックグラウンドにも幅があるので、人によって引っ掛かりポイントが違ったりというのもあったり。 こういうのを通して本当にじっくりと読み進められているのは、なかなかいい経験になってると思う。
ただその分時間がかかってるのも事実で、けっこうなスローペースで進んでる。 しっかりとやろうとすると、どうしてもそうなるよねぇ。 これまで12回開催していて、1章と2章が終わり、3章はスキップして(これは当初の予定通り)、今は4章の完全単模行列周り。 2章までが74ページ、4章に入ってからが29ページとかなので、合計100ページちょっとで、一回あたり10ページ弱とか。 4章の残りは130ページ強あるので、このペースだと追加であと1年ちょっと掛かる計算(^^; まぁどこかキリのいいところまでなのかなぁ。
感想とか
ここからは本の感想とか勉強会で思ったこととか。
定式化の例がたっぷり
数理最適化の入門書だと定式化されたあとの解き方に関する理論やアルゴリズムの話が中心となるけど、この本はその前の定式化に関する話がたっぷりと書かれているのがやはり特徴的。 正直、一人で読んでたら「そんな応用もあるんだなぁ」くらいで軽く読み飛ばしてたと思うんだけど、今回はみんなで読み合わせしていったこともあって、かなりじっくりと読んでいった。 整数計画のスケジューリング問題とか長方形詰め込み問題とかは、上手いこと定式化するなぁとみんなで感心したり。
ただ、じっくり読んでいった分、「これってどうなってるんだろう?」みたいなののもちょこちょこあったり。 これについてはまた別の記事で話してみたい。
ちなみに、「2.1 線形計画問題の定式化」で3回くらい使ってて、「4.1 整数計画問題の定式化」で直近3回が使われてる(まだ途中であと1回くらい必要)。 たぶんここまでじっくり読んでる勉強会は他にないと思う。
区切りが分かりにくい場合がある
じっくり読んでてちょっと気になったのは、話題やコンテキストの切り替わりがちょっと分かりにくい場合があったこと。
たとえば、「2.1.3 連立1次方程式の近似解」では、最初に平均誤差を最小化する例を出し、次にその応用として回帰分析で平均誤差を最小化する例、さらに最悪誤差を最小化する例、さらには予算分配を公平にする例を出していたりするんだけど、区切りがちょっと分かりにくい。
とくに、最初の平均誤差を最小化する例では、係数の$a_{ij}$や$b_i$が与えられ、変数の$x_j, z$を最適化するのに対し、次の回帰分析の例では、変数にあたる$x_i, y_i$が与えられたもので、係数にあたる$w_i$を最適化するので、ちょっとややこしそう。 たしかに使ってるテクニック自体は同じなんだけど、同じ文字が一方では与えられたもの、他方では求めたいものになってるので、しっかりと区切りを入れてコンテキストが変わったことを分かりやすくした方がいいのかも。 正直、自分も慣れてしまってるので混乱はなかったけど、いろんな人がいると、たしかに混乱する人もいるなぁと思ったり。
あと、「2.3.1 双対問題」では双対問題の導出を行っているんだけど、最初に不等式標準形の双対問題を導出したあと、続けて非負制約のない問題の双対問題の導出、さらには等式標準形の双対問題の導出まで行っている。 それぞれが地味に混み入った話なんだけど、それが続けて行われてるので、パッと見だと今何をやってるのかが分からなくなる。 これと同じことが「2.3.2 緩和問題」でもラグランジュ緩和を用いた形での導出で繰り返されてるので、ややこしさを増している感じ。
正直、標準形を1つ決めれば、いずれも標準形に変形してこれるのだから、その標準形についてだけ議論した方がスッキリしそう。 実際、そのあとの双対定理についての議論は等式標準形についてだけ議論してるし。
単体法を図で説明する功罪
線形計画問題を導入するとき、不等式標準形にすることで実行可能領域を2次元のグラフで図示し、単体法では各頂点を巡るようにして最適解に辿り着くんだという説明はよくあるもの。 ただ、この説明は直観的で分かりやすいものの、いいところばかりではないよなぁとも思ったり。
具体的には、単体法を解くためにスラック変数を導入して等式標準形に直すわけだけど、このときに元の変数とスラック変数との差はなんなのかという議論が起きてたり、元の2次元の図でスラック変数がどのように現れているのかの理解に手間取っていたりがあった。 各直線が変数の1つが0になってることを表してたり、直線の交わりである頂点は変数2つが0になってる(5変数で制約が3つなので非基底変数の数は2個)ことを表してたりというのが、「2次元で」考えてるとなかなか掴みにくい。
そのあとの図(たとえば図2.8や2.9)だと、2次元の図なのに点の座標は(目的関数値の$z$を入れて)6次元で表現されてて、実際にはこれが5次元空間にある実行可能領域を2次元平面に射影したものであることが暗に示されてるんだけど、まぁなかなか厳しそう。
これについてもまた別の記事で話してみたいと思ってるけど、等式標準形とそこでの行列演算に話を絞って、幾何的なイメージはあとから与えた方がこのギャップを生じなくていいのかもなぁと思う。
双対問題や相補性条件の意義
個人的に意外に感じたのが、双対問題とか相補性条件を考える意義は何なのか?という話がけっこう出ていたこと。
あまり深く考えず、双対問題っていうのがあるのねーとか、そういうのを考えたときに主問題と双対問題でキレイな関係性が言えるのねーとか、素朴に捉えていたんだけど、なんで双対問題なんか考えるの?みたいな声がけっこうあった。
これは双対性の議論をする前に単体法の議論を終わらせていたのが大きくて、すでに単体法で解けるようになってる(=最適解が分かってる)のに、なんでさらに双対問題とかを考えて最適解を上とか下から抑えようとしているの?という疑問で、まぁ言われてみればたしかに。 あえてそれでも考えようというなら、何かしらの嬉しさがほしいわけだけど、その嬉しさがなかなか出てこないもどかしさがあったっぽい。
理論的には双対問題と相補性がアルゴリズムの背後にあって正しさを支えてくれているようなところがあるんだけど、まぁそういうのを知らなくてもすでに解けちゃってるので、あとからそういうのを言われてもまぁ響かないよなぁ(^^;
かといって、先に双対理論をちゃんとやってから単体法を説明するのだと、アルゴリズムに辿り着く前に諦めちゃう可能性もあるし、このあたりは難しいところ。
もちろん、後述の感度分析とか、(精度保証のある)近似アルゴリズムとかだと、双対問題が最適値の下界(や上界)として機能するといった応用的な嬉しさもちゃんとあるんだけど、そういった話をするにはさらに議論を重ねないといけないし。
感度分析
感度分析についてはしっかりと勉強してなかったので、ここで改めてしっかりと勉強できたのがよかった。
ただ、説明がちょっと分かりにくかったかも。 どういう変更が入った場合を考えるのか、どういう条件を満たされてた場合には解が変わらないのか、条件が満たされてない場合にはどうやって計算を続けていけばいいのかとかの全体像がまず最初に示されているとよかった気がする。
独学の難しさ
勉強会に参加してて思ったのは、独学だとなかなか大変なんだろうなということ。
自分は数理最適化についてある程度勉強してたし、他にも数理最適化について知見がありそうな人がいたので、必要に応じて助け舟を出していたところがあった。 でも、そういった助け舟がない状態で本を読むのだと、それだけで理解していくのはなかなか大変そうに感じた。 なので、数理最適化について何も知らない人は、一人で読んでいくというよりも、ある程度知ってる人と一緒に読んでいったり、相談する場があったりするとよさそう。 本当は一人で読み進めていっても理解できるのが一番いいとは思うけど。
今日はここまで!
