人間の「フレーム問題」解決事例
R2D1の悩み解決事例
人間が、苦労して
何を考慮すべきか検討する
過程を、キチンと表現した事例が、講談社+α文庫の加藤寛一郎著「墜落」にありました。これは、1980年代末の、コンピュータによる、数値計算の問題です。当時の計算機は、現在の計算機と比べ性能は、とても低いモノでした。そのため、実用になる計算を行うためには
必要な項目を絞り込み
大胆な近似を行う
必要がありました。
そこで
どのような項目を選ぶか
逆に何を無視すべきか悩む
と言う、前に書いたR2D1の悩みです。これをどのように対処した課を、味わってみましょう。
1.概略から出発
まずは、計算を始めるために、大雑把なモノから開始しますが、これはまず失敗します。そこから、失敗理由を考えて修正して、何とか答えが出るまで2~3週間を費やします。
こうして動き出すと、一応の答えが出ます。それを見て改善すべき所を改善する。これを繰り返していきます。こうした試行錯誤の繰り返しから、
解の動き方、解の修正のされ方
が一応わかってきます。
ここで一つの「概略モデル」ができました。
2.詳細を追加
こうした、「概略モデル」では、実用になる精度が有りません。そこで細部を追加していきます。これを行うとまた失敗します。そこで修正を行うのですが
今まで使っていた「概略モデル」も修正
する必要があります。これは、成熟した技術の世界では、あまり起こりえないことです。喩えて言えば
家の骨組み外枠ができ
窓などの細部を工事しているとき
不具合のため
骨組みまで修正
と言うことは普通起こらないでしょう。しかし、計算機ソフトの仕様検討では、このような
細部が大枠を覆す
事態が少なからずあるのです。こうした、トラブルが物事を複雑にしていきます。
さて、こうしていろいろと工夫をしていると、ある時に、急速に答えが改善されるようになります。答えに近くなると劇的に答えがよくなり、これで一つの最適解を得ることができます。ここまでに2~3ヶ月かかります。
3.安定した答え
さて、このような答えが出ると、その周辺にある答えは、比較的簡単に求められるようになります。
さて、ここで大切なのは
最初の答えに執着しない
ことです。最初の答えは
いろいろな制約等で使いにくい
場合が多くあります。これを見直し
できるだけ使いやすい答え
を求めることが大切です。この為、骨組みである「概略モデル」から見直す必要があります。
これは、無駄な作業に見えるかもしれませんが、後々のことを考えると、必要な作業です。なお、最初の苦労は、無駄にはなりません。
最初の経験から、答えのパターンや性質などがかなりわかってきています。その結果、答えの形を想像し、修正のされ方も予想できます。
4.フレーム問題への人間の対応
この事例が示すように、答えのパターンや性質がわかるほど、経験を積むと、多くの問題は比較的簡単に解決します。私達は、子供の時から多くの経験を積んでいますし、親などからの伝承、さらに学校教育の結果など、多くの蓄積があります。
こうした情報が、意識するしないにかかわらず、私達判断に影響しています。これが
何を選び何を無視するか
を、迷う時間を短くする力を持っています。
これが、人間の「フレーム問題」解決法だと考えます。
参考
以下は、講談社の+α文庫P980加藤寛一郎著「墜落」のっpp395-398からの引用です。なお、これは高野博行工学博士の博士論文審査会での、大須賀節雄教授との議論が、原型になっています。
東京大学工学部航空工学科学位論文「最適制御における状態量不等式校則に関する研究」1990年1月
手づくりの解ー人間が手で修正する
「運動方程式や拘束条件を大雑把に満たす解から計算をスタートさせます。これを第一次近似と言いますが、その結果は大抵発散してしまいます。ここでいう発散とは、計算機内の数値がものすごく大きくなって、計算機が計算を受け付けない状態になることです。計算機ではこれをオーバーフローとも言います」
「そこで次になぜ発散したかを調べます。第一次近似の与え方が悪かったのかもしれません。運動方程式が悪かったのかもしれません。運動方程式が悪いという意味は、式が間違っていると言う意味ではありません。変数の選び方が悪いのかもしれません。無次元化の仕方が悪いのかもしれません。いろいろな場合があり得ます」
「そういうふうにいろいろと工夫して何とか解が出るようにします。こうして、何か解が出はじめるのに、二、三週間かかります。計算機はその解を改良します。こうしてまがりなりにも計算機が繰り返し計算をはじめるようにするのが最初の段階です。計算機が繰り返し計算をはじめれば、たとえわずかであっても、解を改良する可能性が出てきます」
「次はその解をさらに改良します。ここまでトライアル&エラーの繰り返しですから、解の動き方、解の修正のされ方が一応わかっています。その動き方を見て、さらによい解を探すわけです。計算機の中には解を改良するルーチンが組み込まれています。しかしそれを飛ばして、人間が手で修正することも行います。だからこれは『手づくりの解』です」
人間の腕の見せどころ
「今まで申し上げたような計算は、いわゆる一次の計算といえる種類のものです。この計算法では一般に精度の足りない部分が多く、これを二次の計算法で、さらに精度を洗練させることが必要です」
「二次の計算法に移ると、最初はやはり解が発散します。このときには多くの場合、一次の計算に戻ってその解を変え、再び二次の計算に移行する、といった繰り返しが続けられます。このときにも最初に申し上げたような、いろいろな工夫が必要なわけです」
「そしてある日、二次の計算結果が急速に改善されるようになります。正解に近づいてくると、劇的に解がよくなります。こうして、二次の計算で収斂判定条件(解が正解に近いか否かを判定する条件、この値が小さいほどよい)の数値が充分に小さくなったとき、ようやく最適解の一つにたどりついたことになります」
「このようにして、一種類の解が得られるのに、二ヶ月から三ヶ月かかります」
「ひとたび解がでると、その問題の設定値を少し変えたような解は比較的容易に得ることができます。すなわち最初に求めた解から少し離れたところにある、もう一つ別の最適解を得るわけです」
「しかしここで非常に重要なことがあります。最初の解をそのまま使ってはいけません。最初の解はその問題に付随するいろいろな拘束条件(数値を制限する条件)にかかっています。この最初の解を第一次近似に使うと解が効率よく修正されません。むしろ制限値(拘束条件)にかかっていないような解から出発するほうが効率がよいのです。そういうふうに最初の解を工夫することが、一つの腕の見せどころです」
「こういうわけで、制限値にかからない解を最初用意します。しかし一番最初に問題を解いた経験から、その解がだいたいどんな形になるか想像することができます。またその解が計算の途中でどんな修正のされ方をするか、だいたい予想することができます」
「そういうことをよく考えたうえで、第一次近似を決めるわけです。前回、解を求めた経験がこういうときに生かされます。それは最初の問題を解く際に、いろいろと苦心したことを通して、解のパターンとか解の性質などが、かなりわかっていることによります」