当たり前のことを数式で記述するチカラの重要性
2021/12/13 宮武 昌史
皆様,こんにちは。上智大学理工学部機能創造理工学科の一教員,MIYATAKE, Masafumi / 宮武 昌史.icon宮武 昌史と申します。書類上はエレラボの顧問ですが,ほとんど何もしておらず,幽霊顧問を自称しております。設立当初のエレラボは,テスラコイルなどパワみのあるド派手な実験が多く,安全性を懸念する大学当局に,「大丈夫です」と言うのが一番重要な役割でした。
自己紹介は,例えば以下のリンクをご参照下さい,ということで省略させて頂きます。専門は広い意味での電気工学です。
Transportation Electrification & Smartification lab を略した TESlab TESlab.iconという研究室を主催しています。 さて,今回はエレラボのアドベントカレンダーを埋めるべく,幽霊顧問の分際で僭越ながら話題提供をさせて頂きます。
個人的に慣れていて,LaTeX数式表記が使えるScrapboxを使います。元ネタを少し改変するくらいにしようと思ってたら,結構長くなってしまいました。すみません。
くだらないことに対して,数式を持ち出して仰々しく語るポエムです。それでは,ご覧下さい。
余談ですが,私の書く文章では,句読点をカンマとマルにしています。これは,電気学会の標準がそうなっているからです。
-----------------------------------------------------------------------------------------------------
はじめに
世の中にはちょっとした数式を持ち出すことですっきりと説明でき,物事の本質を言い当てられることが色々とある。それは当たり前のことだったりもするのだが,それを数式で言い表すことに意味を見出すこともまた趣深いものである。今回は実例をベースにそのことを紹介したい。
学生生活におけるリアルな問題設定
突然だが,学生の皆さんなら身に覚えのある次の場面を考えよう。
明日はテストが$ N 科目もある。しかし,テストまでの勉強時間は…なんと,$ T時間しか残されていない。この状況で最善を尽くし,明日のテストを乗り切らなくてはならない。
https://scrapbox.io/files/61adfe81b03e0e001d226228.png
(イメージ : なお,これらの科目は現在の本学にはない)
ここで,かなり乱暴な仮定だが,$ i番目の科目を$ T_{i}だけ勉強した時の得点が$ P_{i}(T_{i})であることが分かっているとする($ i=1,2,\cdots,N, $ 0\leq T_{i} \leq T)。つまり,ノー勉で臨むと$ P_{i}(0)点しか取れないが,$ T_{i}時間勉強するとそれが$ P_{i}(T_{i})点になる,ということである。(後述の図1参照) もちろん,$ P_{i}(T_{i})\geq P_{i}(0)であることが期待される。
このとき,$ T時間の総勉強時間を,各科目の勉強時間にどう配分するのが最善と言えるだろうか?
最適化問題としての定式化
この仮定に対し,次のような疑問が色々と思い浮かぶが,考えると面倒なのでガン無視する。
そもそも,関数$ P_{i}(T_{i})が予め確実に分かるなら苦労しないのだが…?
勉強の順番と試験の順番も得点に影響すると思うが…?
複数の科目で類似の内容がある場合,得点は相互に影響し合うはずだが…?
以下では,$ P_{i}(T_{i})を単に$ P_{i}と書くが,具体的な関数の形は陽に与えない。
まず,今回の目的は,テストで高得点を取ることである。$ N科目全部の総合得点は $ \sum_{n=1}^{N} P_{i}と書けるので,それを最大にすることにしよう。つまり,$ T_{1},T_{2},\cdots,T_{N}を変数として,最適化問題の目的関数$ Jは式(1)のように書ける。
$ \tag{1} J(T_{1},T_{2},\cdots,T_{N}) = \sum_{n=1}^{N} P_{i}\longrightarrow \max
なお,一般には最適化問題は最小化問題として定式化されることが多いが,符号を反転するだけなので,本質的には同じことである。この例題では本来の意味を尊重し,最大化問題のまま説明する。
無限に勉強時間があれば$ Jはどんどん大きくなるが,$ N 科目の総勉強時間$ \sum_{i=1}^{N} T_{i}は$ T時間しかない。つまり,時間というリソースには限度がある。よって,式(2)を等号制約条件として考慮せねばならない。
$ \tag{2} \sum_{i=1}^{N} T_{i}=T
なお,ここでは,勉強時間を減らすということは想定していないが,与えられた時間一杯勉強することがベストであることは間違いないため,式(2)は等号でも不等号でも同じ結果となる。勉強時間を減らせば睡眠時間が増えて寝坊の可能性が低くなる,というようなことまで考えれば話は別だが…。
式(1)(2),すなわち目的関数と制約条件で最適化問題を式で書き表す定式化ができたことになる。
このように定式化できれば,各種有償無償の最適化ソルバに放り込めば解いてくれる。あるいは,Excelのソルバー機能でも解ける。しかし,ここでは次で理論的に解くことにする。ソルバの話はまた機会があれば説明したい。 (私の科目「電気電子工学の数値解析」ではExcelのソルバーを使用した演習を行っている)
ラグランジュの未定乗数法を用いた最適解
この問題は等号制約付の非線形最適化問題である。等号制約は1本だけであり,ラグランジュの未定乗数法が容易に適用できる。これは解析の授業の延長線上,あるいは物理であれば解析力学あたりで出てくると思うが,理工学だけでなく経済学や経営学でも習う人はいるであろう。ラグランジュの未定乗数$ \lambdaを導入して,ラグランジアン$ Lを式(3)の通り構成する。
$ \tag{3} L(T_{1},\cdots,T_{N},\lambda) = \sum_{n=1}^{N} P_{i} - \lambda \left( \sum_{i=1}^{N} T_{i} - T \right) \longrightarrow \max
これにより$ T_{1},\cdots,T_{N},\lambdaを変数とする制約条件のない非線形最適化問題に変換されたことになり,最適となる必要条件は式(4)の通りである。
$ \tag{4} \frac{\partial L}{\partial T_{i}} = \frac{\partial L}{\partial \lambda} = 0 \ \ \ (i=1,2,\cdots,N)
ただし,$ \frac{\partial L}{\partial \lambda} = 0は総勉強時間の制約条件そのものになる。
これを計算する。偏微分なので,微分する変数以外は定数とみなせばよく,式(5)となる。
$ \frac{\partial L}{\partial T_{i}} = \frac{\partial P_{i}}{\partial T_{i}} - \lambda = 0 $ \tag{5} \therefore \frac{\partial P_{i}}{\partial T_{i}} = \lambda \ \ \ (i=1,2,\cdots,N)
これを書き下せば,式(6)のようになる。ところで,個別の$ P_{i}は1変数関数であるため,この式を偏微分$ \partialではなく常微分$ \mathrm{d}で書いても差し支えない。
$ \tag{6} \frac{\partial P_{1}}{\partial T_{1}} = \frac{\partial P_{2}}{\partial T_{2}} = \cdots = \frac{\partial P_{N}}{\partial T_{N}}
式(6)は,どのような条件なら最適かを示してくれる。科目数が4,すなわち$ N=4の場合について図示したのが図1である。図1のように,それぞれの科目の特性は異なる曲線で示されるが,各科目の勉強時間$ T_{i}の所の傾き (増分成績)$ \frac{\partial P_{i}}{\partial T_{i}}が全て同じであれば最適となる,という意味である。これを等増分成績則,と呼ぼう。
https://gyazo.com/b00af872dfe8928b868ac95604422019
図1: 等増分成績則 (丸印の横軸が各科目の最適な勉強時間,縦軸が成績を示す)
等増分成績則の解釈
この意味するところは何だろうか。例えば,全科目から任意の科目$ iと科目$ jを取り出し,前者の勉強時間を微小時間$ \Delta Tだけ増やし,後者を$ \Delta Tだけ減らすことを考える。こうすれば合計勉強時間は保たれ,また曲線は微小区間内では直線とみなせる。もし,等増分成績則が成り立つ場合,図2左のように,両科目の得点の増減が釣り合っており,改善できないことを意味する。一方,それが成立しない場合,図2右のように,両科目の得点の増減が異なるため,改善できる余地があることを意味する。つまり,最適とは,それ以上改善できない,という意味であるといえる。
https://scrapbox.io/files/61ac767952bcf8001de8f630.png
図2: 等増分成績則の解釈 (微小区間のため曲線は直線で近似できる)
さらに,$ \lambdaとは何だろうか。$ \lambdaは総勉強時間$ Tに対して一意に決まる値であるのだが,$ \lambda = \frac{\partial P_{i}}{\partial T_{i}}であるため,増分成績,すなわち勉強時間を少し増やした時に増える得点を示す。今回の場合,次のことが言える。
$ Tが短いうちは図1の左側の方に解が来るため,傾きを示す$ \lambdaが大きく,勉強の効果が大きい
$ Tが長くなるにつれて$ \lambdaが小さくなるため,勉強の効果が小さくなる
$ \lambdaは,経済学的にはシャドウプライスと呼ばれるものに相当する。
注意点
この結論には注意点がいくつかある。まず,全ての関数$ P_{i}(T_{i})は単調増加かつ上に凸な関数である必要がある。テスト勉強の問題に当てはめると,次のように言える。
少し勉強したら成績は上がるが,勉強を進めるにつれて難しくなり,成績が上がりにくくなる科目ならば適用可
少し勉強しても成績はなかなか上がらないが,ある所で急に閃いて理解が進み,一気に成績が上がる科目には適用不可
要は,式(4)の条件は,数学的には最大値 (global maximum) を取る必要条件に過ぎない。図3のように,次の3つの場合が考えられる。
最大ではない極大値 (local maxima)
極小値
単なる停留点(最大でも最小でもない)
一方,$ P_{i}(T_{i})が単調増加かつ上に凸な関数であれば,工学的観点で最大値を取る必要十分条件となることは自明となる。このように,最適点の存在がある程度分かっている,というのは実は重要で,工学的な問題では良くあるパターンである。(これにより必要十分条件であることを数学的に説明することを省略できる?)
https://scrapbox.io/files/61ac792e6365b00023574722.png
図3: 傾きが0となる様々なケース (この図は最小化問題を想定しているため,最大化問題の時は上下逆に見る)
次に,関数$ P_{i}(T_{i})には定義域と値域があることにも注意が必要である。定義域は$ 0\leq T_{i} \leq Tであるが,これを考えないと特殊な条件下で負の時間が現れる可能性がある。また,これは特に学生には大きな問題となり得るが,合格最低点が$ P_{\min}ならば値域を$ P_{i}(T_{i}) \geq P_{\min}とする制約を与えるべきであろう。例えば,最適化により最も得点が低い図1の科目4が$ P_{\min}を下回っている場合は,単位取得のために科目4の勉強時間を合格最低点に達するまで増やさざるを得ない。ただし,全ての科目で合格最低点を満たす実行可能解がない可能性もあり,その場合は残念ながら一部の科目の単位を諦めざるを得ず,修得単位数の最大化のように,目的関数を変えるなどの対応が必要となる。
限られたリソースを最適配分する問題は世に溢れる
さすがにテスト勉強をこのように考える人はほとんどいないだろうが,人,機械,資金,時間,エネルギーなどの限られたリソース(資源)を最適配分する問題はあらゆる場面で見出すことができる。私の専門の工学だけでなく,経済学や経営学などでも同様の問題は多く出てくるであろう。実用的な観点では,今回のような単純な問題として定式化される例は稀であるが,その最も基本となる今回の話をきちんと理解しておくことは重要と思う。
実はこの話は私にとっての元ネタがある。電気電子工学の一つの分野である電力系統工学における火力発電所の経済運転理論で出て来る等増分燃料費則がそれであり, 等λ則とも呼ばれる。この法則は古くから知られており,必要な電力需要を満たしつつ火力発電所の燃料費を最も少なくする出力配分を求めることができる。
このような問題で重要なのは,内訳を見るのではなく,その変化を見よ,ということである。図1のテスト勉強の例でいえば,変化の大きい科目1に時間のリソースを多く割き,変化の小さい科目3には時間のリソースを少なく割く,という風になっている。つまり,得点が悪い科目に目が行きがちであるが,科目の得点自体は意思決定には関係ないのである。
これをもっと単純な例で説明しよう。ある会社の工場AとBのエネルギー消費量が対策前の状態で図4左のようであったとすると,工場Bのエネルギー消費量を減らすように考えたくなるだろう。しかし,同じコストをかけた時の省エネ効果は,図4中央と右のように,工場Aの方が大きいこともあり得るのだ。良く考えれば当たり前のことではあるが,そこまで見ないと,正しい意思決定はできない。
https://scrapbox.io/files/61ac9ec98fb89a001dfbfca0.png
図4: 内訳よりその変化を見よ,の簡単な例
当たり前を数式で記述することのコロンブスの卵的な面白さ 〜列車ダイヤの事例
私は,この等λ則を単純かつ重要な原理を示唆する素晴らしい公式だと思い,それをどこかで使えないか,と,私が電力系統工学を習った大学3年 (1992年: 年齢がほぼバレる) から思っていた。それから18年経った2010年頃に,なんとその機会がやってきた,という話を少ししよう。次がそれに関するレター論文である。
今回の例で示した図1と同じようなグラフを,鉄道でも見つけることができた。それが図5である。
https://scrapbox.io/files/61ac6f9fbcb932001de73a87.png
図5: 列車の駅間の走行時間と消費エネルギーの関係 (上の文献のFig.1より)
この図は,列車が駅間$ iを走行するのに必要なエネルギー$ W_{i}が,駅間の走行時間$ T_{i}に依存することを示している。実はこの関数$ W_{i}(T_{i})は,走行時間を短くするとエネルギーが加速度的に増大するのである。色々な理由でそうならない場合もあるが,単純な場合ではこのグラフは下に凸となる。
https://scrapbox.io/files/61ac7e9f6d87ef001d14e4c4.png
図6: 省エネダイヤの問題設定 (始発駅の発時刻と終着駅の着時刻のみ固定)
ここで,図6のように,全ての駅間の合計走行時間を固定(すなわち始発駅と終着駅との所要時間を固定)して,総消費エネルギーを最小にする駅間の走行時間の最適配分問題を考え,この問題を式(7)(8)のように定式化する。図6は,横軸が時刻,縦軸が駅,といういわゆる鉄道好きにはお馴染みの列車ダイヤ図である。
$ \tag{7} J(T_{1},T_{2},\cdots,T_{N}) = \sum_{n=1}^{N} W_{i}\longrightarrow \min
$ \tag{8} \mathrm{subject\ to \ \ } \sum_{i=1}^{N} T_{i}=T
テスト勉強の例と比べて,曲線が下に凸であることと,最小化問題であることが異なるが,最適条件は同じで,次のようになる。
$ \tag{9} \frac{\partial W_{1}}{\partial T_{1}} = \frac{\partial W_{2}}{\partial T_{2}} = \cdots = \frac{\partial W_{N}}{\partial T_{N}}
上の論文中では,等増分消費エネルギー則と名付けたが,オイラーの公式をもじって,俺等の公式(オイラノコウシキ)と勝手に呼んでいる。
これはある意味当たり前の結論を言っているのだが,これを発表した時は,鉄道関係の研究者や事業者の関心を集めることができた (東日本大震災による電力使用制限などの背景も作用した)。実際には様々な難しい条件があり,これをそのまますぐ適用できるという訳ではないが,列車ダイヤの設定において,このような形で明確にエネルギーを最小化できる条件を示せたことは恐らく初めてで,それはある意味,コロンブスの卵的な発想であったと言える。
(なお,このような議論は国内では受けが良かったが,海外では現実の複雑な条件を豊富な資金的かつ人材的リソースを投入していきなり力技で解くという例が多く,国内ほど受けは良くなかった…気がする。こうした傾向は,他の分野でもあるようである。)
おわりに
世の中では,機械学習などのAI応用が当たり前のように行われる時代になったが,それに闇雲に頼ると物事の本質を見る力が弱くなることを懸念している。少し考えれば当たり前のことであっても,物事の本質を単純な数式で明快に記述することの面白さを伝えたくて,この記事を執筆した次第である。こういう思索は大学にいてこそできるものであろう。
多分,くだらないことを馬鹿正直に説明して呆れている読者の方もいらっしゃることだろう。ここまで読んでもらえた方がいらっしゃったら大変光栄である。
<その他参考資料>
同様の最適化の考えを用いたものをさらにいくつか挙げる。全て鉄道への適用例である。なお,文献の一部は有償であるが,大学から又はVPN接続でダウンロードできる場合がある。
英文のものもあるが省略。
他には,私の授業「モータドライブシステム」や大学院の「電気エネルギー管理と制御」でも似たような話を取り上げている。