2015年4月29日水曜日

システム工学に関するメモ(講演資料作成にご協力お願いします)

某所でちょっとした講演をすることになっているのですが、アカデミックというか過去の発表例とはかなり異なった内容なので理解されるかどうかに心配があります。分かり易さや不足点、問題点等を指摘して頂き、それに合わせて本番での内容を改良したいです。出来れば感想等ください。以下講演内容の構想メモです。まだ途中ですけど。

講演概要
現在、同人ゲーム制作は(少なくとも当サークルでは)経験論的・場当たり的な手法に頼る部分が大きい。そのことがハードルとなりプログラミングやゲーム制作未経験者に対してゲーム制作の魅力を伝え、意欲を維持していく妨げになっている。そこで、何らかのモノやシステムを設計する際の考え方の基礎学問としてのシステム工学と、ゲームを遊ぶ、ないし制作する主体である人間の性質を扱う基礎学問としての認知科学を導入し、問題の解決を図る。具体的な手法はまだ開発できていないが、将来的には提案したい。

スライド案
・問題意識
ゲーム制作とかプログラミングって「投げっぱなし」が多くないですか
「好きでゲームを作る」だけで何でも上手く行くのなら、全〇連に参加する学生が減って衰退なんてことはそもそも無い訳ですし
問題解決の一般的フレームワークとして、システム工学とか使った方が良いんじゃないの
経験則や泥縄に頼っていることの問題点を、具体例とともに見てみましょう
①初心者問題
私の話です
「何をやればいい?」「好きなことをやればいい」
一見ごく真っ当なコミュニケーションにみえますよね?初心者には違うんです
「好きなこと」って何ぞや
遊んでいて楽しいゲームはあるけど、作る際に楽しいとは限らない
というか、プログラミングで何が出来るか知らないし
チューリング完全だから何でもできるとかいう意見はあり得ない
現実的にそこまでのスキルなんて修得不能だし
“自分に何が出来るか”なんて知らねえんだよ
ぶっちゃけ、苦労して作っても誰かに評価してもらえなきゃ空しいよね
「プログラミングそのものが楽しい」という一部の「異常者」以外は他人に喜んでもらえるものを作らないと、モチベーションが続かない
しかも、他人から評価された部分が自分の努力した部分に一致しないと、「分かってねーなコイツ」みたいな気分になってあまり モチベーションアップにならない
「好きなことをやってれば楽しい、長続きする」という考えは幻想
『プログラミングC#』
「必要な部分」だけ読めばいい、というアドバイス
しかし初心者は必要な部分がどこなのか誤認する。
例①何十万行ものcsvを読み込んで処理を行いたい
最初の私:ファイルの読み書きをするんだからファイルストリームの章だろう。文字列?stringとか興味無いわ
結論:ファイルストリームじゃなくて文字列の章を読め
例②dllファイルを作ってプログラミングを効率化したい
最初の私:アセンブリ?このハードウェア非依存の時代に、そんなの必要ねーよ
結論:アセンブリの章を読め
必要な部分とか、初心者には分からない
キーワード知らないし
結局初心者は何だかよく分からんうちに辞めていきます
②目標に対して効率的なゲーム制作

まあつまり、私がシステム工学と認知科学で解決したい問題、最大目標は「元からプログラミング好きの人以外にも、ゲーム制作なり何なりを楽しめるようにする」ことです
その中には、少ない労力で高い満足を得るゲーム制作の手法を含みます
これで解決できるとは限らないが、もし解決する方法があるのなら、他にはあり得ないとは確信している
・システム工学とは
システム……要素と要素間の関係を人間が認識して現れる、全体構造
「認識」であるから、内部構造や因果関係に恣意性が現れる
その違いをディスカッションすることで、お互いの現状認識や問題意識、目標についての認識の違いを把握できる
そういう違いを認識しないと、問題解決の議論において話がまとまらない、水掛け論なってしまう
工学……意思を実現する体系(工学部HP)
技術ありきではなく、自分が何をやりたいのか、目標が先にある
システム工学……因果関係のよく分からない問題をシステムと見做して整理し、意思を実行する為の学問
この場合には「何だかよく分からないがゲーム制作がイマイチ面白くない。どうすれば楽しくやれるの?」ということ
システム工学は個別の具体的な手法は割とどうでも良いんで、基本的なものの考え方が分かってくれればそれで
私はブレインストーミングで反対意見出したりするし(手法で実現したい目標をそっちの方が上手く達成できる場合)
手法の手順を厳密に守ることではなく、その手法をどういう思考の整理・発展に使いたいのか、目的を忘れないことが大事
盲目的に手順に従うだけだと「意識高い系」の出来上がり
個別の手法は参考文献などで自習してください
良い本が少ないので、選ぶのに苦労しました
要素に一度分解してから、もう一度全体を組み立てて因果関係を推測するのがキーポイント
個別だけ、全体だけでは表層的対応になり、上手く行かない
例:進捗が少ない→残業させれば解決、みたいな
・認知科学とは





2015年4月28日火曜日

科学は人間の主観から自由か

 結論から言えば、私が思うに、科学も人間の感情や主観から自由ではない。その理由を列挙すると、次のようになる。尚、ここでの議論は一部に社会科学を暗に想定したものも存在するが、科学一般に適合すると私は考えている。

①ある現象を再現するモデルは複数考案されるのが普通であり、そのうちの何れを選択するか、また自分ならどうモデル化するかに個人の主観が反映する。
②「人間の思考能力や行動基準を~であると仮定すると、経済現象に~という性質が現れる」という数学的、ないしアルゴリズム的に記述される“科学的事実”は人間の主観に対して独立だが、その仮定と帰結が現実社会に適合するかどうかはその時々の様々な経済的状況に依存し、“正しい理論”が何なのか決定することが出来ない。
③そもそも科学において何を研究したいのか、その方向性や問題意識が応用科学や工学等の現実世界と密接に関係しており、科学の進展方向は現実世界に非依存ではない。

以下、それぞれ説明する。

①について
 例えば流体の運動なら(何らかの極限を取れば何れもNavier-Stokes方程式と等価だと数学的には示されているが)フラクショナル・ステップ法やSPH法、MPS法に格子ボルツマン法等の様々な全く異なる表現で書き表すことが出来る。空間の不動な各点に速度や圧力等を成分とするベクトル場が広がっていると見ても良いし、そういう計算格子が拡散したり集まったり変形して、時に一滴の飛沫になる世界観も良い。果ては、規則的な世界に有限個の矢印があって、その方向に1単位時間に1マスしか進まない仮想的な、存在密度の流れでさえ構わない。これが社会・経済現象となると更に難しく、何らかの極限を取ってもモデルの意味が一致しないということも普通である。例えば金融市場のstylized factsを再現するモデルとしてGCMG(grand canonical minority game)やマスロフモデルがあるが、前者は状況に適応して知的に振る舞うエージェントの挙動をモデル化して金融市場の価格決定メカニズム(ザラバ、学術的には連続ダブルオークション)を無視しており、逆に後者はエージェントの知的挙動は全く考慮しない、単なるランダムとして扱い、市場の価格決定メカニズムのみをモデル化している。従って、どう考えても両者は同一のモデルとして考えることはあり得ない訳だが、どちらもstylized factsを再現することが出来る。

②について
 ①後半の金融市場の例で近いものを挙げたような気はするが、やはり別個の概念として存在すると思うので、典型的な例を挙げる。高校の政治経済の授業ではセイの法則とケインズの有効需要の法則を習う筈なのであるが、その矛盾を考えたことはあるだろうか。前者では供給は需要を創造する、即ち作れば作っただけ売れると主張するのに対して、後者では需要があって初めて供給がある、即ち作り過ぎれば売れ残ると主張している。この矛盾は、決して片方が間違っているという訳ではなく、仮定している前提状態が異なるのである。雑に説明すると、前者では価格は常に変動し、生産者は値引きをしてでも全ての商品を売ると考えるのに対し、後者では生産者は価格を下げず、そして売れ残りが発生すると考えている。これまた極めて雑な議論で申し訳ないが、前者が(新)古典派で、後者がケインズ派と呼ばれている。数学的にはどちらも正しいが、どちらが現在の社会状況に整合するのかはその時々で異なる。多分今の日本のような状況だとケインズ派の方が正しいんじゃないかと根拠は無いが個人的には感じている。

③について
 先ずは分かり易いであろう②の延長戦で話を進めると、ケインズが出てきたのは当時不況であり、従来から存在した古典派の理論では状況を説明出来ず、不況を脱することが出来ないという現実世界からの問題意識があった。科学が現実世界に影響されていることの証左である。これは経済学のような社会科学だけでなく、数学や物理学においても類似の例は多々ある。例えば数学の微積分学は(ライプニッツがどうだかは知らないが)ニュートンが力学の問題を記述する為に開発したものであるし、関数解析や作用素の概念は量子力学を正確に記述する為の表現として誕生した。微分幾何学はアインシュタインの相対性理論を書く為である。純粋な理論と思われている数学も、どの方向に進化していくか、その問題意識は強く現実世界にリンクしている部分もあると言って良いだろう。物理学においても同様で、空気動力学は航空機の飛行を研究する為に発展したものであるし、流体力学の境界層理論はコンピュータの無い時代に手計算で飛行機の翼の回りの流れを計算し、揚力から飛行能力を導出する為に使われるものだ。

 結局、私が言いたいのは、純粋な科学と雖も現実世界の問題から離れられず、科学のより良い発展には現実世界との向き合い方、問題意識の発見の仕方が重要なのではないかということに尽きる。

2015年4月20日月曜日

DBMによる落雷のシミュレーション(2)

雷を連続で落とし、後続のが先行のに影響を受ける“ダンシング”までシミュレーションしました。アニメやゲームに出てくる雷撃にかなり近いグラフィックになっています。但し、画像においては単純に画像を重ね描きしています。XNAで作成したので、動画を公開出来るかは定かでありません。取り敢えずこれで分かったことは“アニメやゲームの電撃は、一発に見えていても、物理的整合性から考えると、実は連射している”ことではないでしょうか。







2015年4月18日土曜日

物理学における経済物理の意義について

 今日、計数の友人と話した折、彼は「経済物理は今まで物理学で記述出来ると思われていなかった経済という現象が、物理で書けると分かったことに意義がある。それによって、多くの物理学者が参入した。」という趣旨のことを述べていたが、それは違うと私は考えている。その理由について、以下述べる。但し、私の言いたいことを述べる上で適切な用語が度々なかったので、不正確な言葉遣いが現れたり、同じ用語がその時々によって異なる意味に使われていることはご容赦頂きたい。また、書いている最中に文献を細かく確認しなかったので、事実関係に誤りがある可能性がある。
 まず、経済物理とは経済現象を(彼が思っているであろう)物理学で記述したものではない。確かに、冪乗則や自己相関関数、相転移等の物理由来の概念は使われているが、それだけではないし、その用法は他の物理学とは違う。寧ろ経済物理の物理学としての(社会科学、経済学の一部としての価値はまた別である)価値は、平衡がマクロな変数で大域的に決まるのではなくミクロな局所的変数で決まり、構成要素が学習をしない粒子ではなく学習・適応していくエージェントからなる系への物理学の拡張という点にある。
 例えば2次相転移に関して言えば、通常の物質系の物理学では秩序パラメータmの揺らぎが臨界点で発散する、臨界揺らぎという現象が見られる。即ち、雑に言えば、臨界点において系は不安定である。ところが経済物理においては、例えばMG(minority game)やMDRAG(market-directed resource allocation game)に見られるように、臨界点において揺らぎが最小化し、市場として安定するという性質を持つ系がある。この差異がどこから生じるのかと言うと、系の状態の決まり方の違いからである。物質系においては、系がどういうマクロ状態に最終的に落ち着くかは、マクロなパラメータである自由エネルギーの最小化で決まる。その最終状態、即ち自由エネルギー最小状態での秩序パラメータの値を知る為には、与えられた条件(例えば温度をTにする等)の下での自由エネルギーを、秩序パラメータmで展開し、自由エネルギーを最小にするmを求めればよい。そのような考えに基づいた計算を行えば、臨界揺らぎがあるということは理解出来る。このような議論は物質の種類等の系の性質に依存せず、この結果は極めて普遍的であるように見える。しかし、MGやMDRAGには成り立っていない。マクロなパラメータで議論出来るとするとこの結論は必ず導かれる筈であることから考えれば、MG等で成り立っていないことより、MGの状態がマクロなパラメータに支配されている訳でないことが分かる。実際、MGやMDRAGがどうなるかは個々のエージェントの戦略選択、意思決定に依存しており、大局的にではなく局所的な要因から決まっている。このような現象は物質系の物理学にはあまり見られない現象であり、これは物理学のアイデアを単に社会現象に応用した訳ではないことが分かるだろう。そうではなく、今までの物理にはなかった概念まで、物理学を拡張したのである。エージェントの学習・適応に関しても同様である。
 結論として、私の主張としては、経済物理は経済を物理学で記述したことに意義があるのではなく、経済現象を契機にして、物理学の概念を拡張したことに意義があるのである。

2015年4月14日火曜日

DBMによる落雷のシミュレーション

DBM(dielectric breakdown model)によって落雷を計算し、簡単に可視化しました。DBMのアルゴリズムは簡単には次のようになります。

Step0 空間を格子に分割し、地面を高電位、雷の発射点を低電位に設定します。これらは境界条件になります。
Step1 各点の電位をラプラス方程式(∇^2)V=0を解いて求めます。
Step2 雷の既に通った格子に接している格子から一つを、電位のη乗に関するルーレット選択で選び、その点に雷が進みます。その点の電位は0となり、以後境界条件として扱います。
Step3 雷が地面に到達すればそこで計算終了。そうでなければStep1に戻ります。

このシミュレーション結果の一例は以下のようになります。


次の改良として①可視化の美麗化②連続で雷を落とし、“ダンシング”を再現、の2つを考えています。

参考文献(出所となる雑誌がどこか忘れてしまったので、不完全)
T.Kim., M.C.Lin. : Physically Based Animation and Reffering of Lightning