系
執筆日: 26.10.18
系という単語は、物理をやる人間にとっては、非常に馴染み深い単語である。 少なくとも私はおそらく一日に10回くらいは口にしているか、他人と話していなくても独り言や頭の中の会話で発している。 Wikipedia さんによると、
自然科学における系(けい、英語: system)とは、自然界のうちで考察の対象として注目している部分をいう。
ということだそうだ。 個人的には「自然界のうちで」を全く気にしていないので、考察の対象をまとめたもの・枠組みを、かなりふわっとした意味で系と呼んでいる。 というか、人間であろうが、機械であろうが、それも自然の一部であるので、その枕詞はあまり意味がないように思う。
系を定義する
系を定義するということは、系の境界を決めるということである。 すなわち、系の中に含まれるものと含まれないものを分けるということである。
その上で重要なことは、何が着目する対象を変化させうるかを見抜くことである。 その主要な因子を境界の内側に含め、それ以外のものは大胆に捨象してしまうのが気分が良い。 そのような因子を、系のパラメータとでも呼ぶことにしよう。
パラメータはいくつあっても良さそうだ。 選び方もたくさんありそうだが、パラメータ同士が独立(あるパラメータを変化させても、他のパラメータが影響を受けない)であることが望ましい。
パラメータはおそらく可算だろう。 しかし、それが無限かどうかはわからない。 事実上、無限個のパラメータを持つ系というのもあり得るかもしれない。 とにかく、パラメータは列としてまとめられそうだ。
「人間とロボットと pisat のこれから」を書いたときは、ロボットが運動する系とそのパラメータを考えていた。 ちょうど自律走行ロボットを作るときに、ロボットとは何だろうか、自律性とは何だろうか、ということを考えていた時期である。 よく大学の図書館の窓からたまに見かける車を観察しながら、車はどういう要素に分解するのが最も美しいかを考えていた。 本当に何かにとりつかれたように考えていたものだから、授業も適当に受け(行ったとしても数分で上の空)、移動中も色んな乗り物を見ては、ああでもないこうでもないと考えていた。 養老孟司の講演動画などを見ては、解剖学的に人間を捉えている人の視点を参考にしたりと、一般的な大学3、4年生は就活やらで忙しいというのに、私は呑気に自分の問いを追い求めていたのだなと振り返る。
系のパラメータが定義出来たら、系の状態というものを定義したくなってくる。 ここで状態が同じであるとはどういうことかを考えたい。 ここまで系のパラメータについて考えてきたが、パラメータ列の値が同じである2つの系を持ってきたとき、我々はそれらの系が同じ状態にあると自然に考えるだろう。
しかし、状態という言葉をもう少し楽に使いたいので、パラメータ列が状態であるという定義は避けたい。 なので、パラメータ列の写像を状態と定義することにしよう。 そうしておけば、パラメータ列のような無限個の組み合わせを持ちうるようなもので状態を定義しなくても、その写像として有限個の状態にまとめることが出来る。
pisat の実装を振り返れば、それは有限オートマトンのようなモデルで、有限個の状態と状態遷移、すなわちロボットの状態遷移グラフを定義させ、その状態のライフサイクルと遷移をフレームワーク側で管理するという設計思想だった。
着想そのものは Android の Activity のライフサイクルの考え方を学んだときに得たもので、スマホアプリの画面遷移をロボットの状態遷移に当てはめただけである。
pisat における状態は Node クラスで定義されており、状態遷移判定のための関数として Node.judge メソッドが予約されている。
機械翻訳もまともに使わずに、不自然な英語で書いた docstring が懐かしい:
class Node(Generic[LinkedModel]):
...
def judge(self, data: Union[LinkedModel, None]) -> Any:
"""Judge whether this Node has to move another Node.
This method recieves the result of data logging of one time and try to
judge whether the data deserves to exit the current Node and move to
another Node. The method is executed in the main method, or the same
method pisat system running, and ran at the same time of running
the control method.
This method can return any type of objects but the objects have to
be set to a Context object. Thus you have to define this method and
register the returned values to a Context simultaineously.
Pisat system determines to move to next Node from the current Node if
a returned value of this method is not the value to move to itself.
This means also that if you don't set the value for the Node itself and
only set values for other Nodes, then the pisat system try to judge
only once in the Node and move to other Nodes.
Returned values of the method must indicates next Nodes uniquely.
Parameters
----------
data : Dict[str, Logable]
Data logged by DataLogger.
See Also
--------
pisat.core.cansat.CanSat.feed : This method uses the judge method inside.
"""
pass
系を制御する
系の状態を定義できる場合、ある始状態から目的の状態(目的状態とでも呼ぼう)へ遷移させることが出来るかどうかが、我々の関心事の一つである。 このような営みのことを制御と呼ぼう。
系の制御は、一種の最適化問題とも言える。 多くの最適化問題では、目的関数が与えられ、それを最大化または最小化するようなパラメータの組み合わせを求める。 先ほどの系の状態の定義のように、状態はパラメータ列の写像であって順序を定義できるとは限らないので、最大化・最小化の操作そのものが一般に存在しないが、何らかの操作によって目的状態へ遷移させようとするのは、目的状態を目的関数の特定の値と解釈すれば、最適化問題の一種と考えることが出来そうだ。
ところで、系を制御する、つまり、ある状態から別の状態へ遷移させるためには、系のパラメータを操作する必要がある。 このことは、系のパラメータを操作する何らかのダイナミクスが存在することを暗示している。 そのダイナミクスを引き起こす因子は、系の外部に置くことも出来るが、内在的な因子として理解することも出来る。 その辺は、系をモデル化する主体の好みかもしれない。
一般に系のパラメータ列を変更することを系の操作と呼ぶのであれば、系の制御はその特殊な場合となる。 pisat は系の制御を行うためのフレームワークであった。 系の操作を繰り返しながら、ある条件で状態遷移を発生させ、その状態遷移の結果として目的状態へと遷移させる。 ロボットにおいて、系の操作は、ロボット自身のアクチュエータを操作させて位置や速度などのパラメータを変更させることに相当し、これは内在的な因子によるダイナミクスの発生と言える。 一方、風が吹いて飛ばされたり、障害物にぶつかって位置が変わったりすることは、外部的な因子によるダイナミクスの発生と言える(もちろん風や障害物も系に含んでいれば内在的な因子)。
このようなロボットを特徴づけようという試みの過程で、「人間とロボットと pisat のこれから」でも述べているように、私は人間のアナロジーとしてロボットを捉えようとしていた。 そしてそこで得たアイデアを、逆の発想で人間を理解することに適用してみようとなっていったと思われる。 これはおそらく、どこかのタイミングで決意したというよりか、周りの人や自分自身と向き合う中で、自然と最近考えていることとリンクして考えるようになったのだろう。
一人間系(いちにんげんけい)
人間は感覚器官を持っていて、それは数値化できるような代物ではないが、それによってロボットのセンサーのように外部からの刺激を受け取ることが出来る。 また、人間のアクチュエータは筋肉で、それを上手く活用することで、自分自身を含む系を操作することが出来る。
ただ、人間を含む系を考えただけではあまり面白くなく、人間のダイナミクスも考えてみたくなってくる。 特に興味があるのは、内在的な因子によるダイナミクスである。 つまり、人間自身を操作する(行動する)人間のパラメータとは何か、そして人間には目的状態があるのか、という問いである。 自分自身を観察していると、常に何か行動をして、自分自身を操作しているように思える。 一体なぜ自分は行動しているのだろうか。
そういう問いを持ったとき、私の頭に浮かんだのは、昔たまたま見かけた「ハーバード白熱教室」という番組で、マイケル・サンデル教授が解説していた「功利主義」という考え方である。 ジェレミー・ベンサムの功利主義は「最大多数の最大幸福」という言葉でよく知られているが、後に彼は最大多数という言葉を落として「最大幸福原理」として自身の提唱する道徳的原理を名付けたようである。 政治哲学の素人としてこれ以上彼の思想を語ることは避けたいが、この言葉だけを聞くと、ベンサムは最大化という数学的操作を行うことが出来る幸福という量が定義できると考えていたのだろうか、という疑問が浮かぶ。
私はある日、当時の自宅から歩いて数分のところにある餃子の王将で天津飯を食べながら、このベンサムの道徳的原理としての「最大幸福原理」と似たようなものを、人間の行動決定原理として置いてみたいと思った。 つまり、人間それぞれに幸福という量が定義できると仮定し、それぞれの人間はその個人の幸福を最大化するように行動していると考えるのである。 200年前くらいに誰かが考えたことをまた考えているなと当時思いながらも、この考えに対してそこまで批判的な感触を持たなかった。 それでも、幸福という量が定義できるのか、という疑問は残った。
そこで発想を逆転してみることにした。 すなわち、幸福というものがあってそれを最大化するように人間が行動しているのではなく、人間が行動することによって幸福という量が定義されるのではないか、という考えである。 これはニュートンの運動方程式 \(ma = F\) を、力というものによって加速度が与えられると考えるのか、観測結果としての加速度から力を定義するのか、という考え方の違いに似ている。 例えば、遅刻しそうな状況になったとき、走ることによって体力を消費しながら遅刻を回避することも出来るし、走らずに遅刻する代わりに体力を温存することも出来る。 どちらの未来が自分にとって幸福かが最初にあって、それによって行動を決定していると考えることも出来るが、逆に自分が取った行動から、どちらの未来を幸福と思ったかを定義することも出来るのでは、というのがここでの発想である。 これは幸福という捉えようのない概念が、人間の行動という観測可能な事象から定義できるのではないか、という考えである。 注意点としては、行動から幸せを定義できるかもしれないという発想であって、幸福を最大化させるように行動するという原理を否定するものではない。
ところで、この行動決定原理には簡単な反例がある。 例えば、人間はある行動の結果、後悔することがよくある。 この行動を取らなければよかったと思うことは、誰しも経験があるどころか日常茶飯事であろう。 それでは、私たちはそのように後悔することが幸せで、その行動を取ったのだろうか。
もちろんそうではない(後悔してみたいと思っている人が存在する可能性は否定しないが)。 ここで必要な修正は、幸せというのものは、その時点において期待されたものであるということである。 そうしておけば、期待される幸せを最大化するような行動によって、状態遷移した先で結果として生じた幸福が期待されたものと異なっていたとしても矛盾しない。
補足として、期待という言葉には、未来のことを予測するという意味が含まれている。 予測するためには、そのための情報が必要であるため、現在持っている情報は期待される幸福を決定づけるパラメータの一つであると考えることが出来る。 また、同じ情報を持っていたとしても、未来に対する予測は人それぞれ異なるだろう。 その差異を決定づけるパラメータには経験的なものも先天的なものも含まれるのかもしれない。
思い返せば、学部3年生のコロナ禍の中で、こんなことを1つのテーマとして考えていた。 コードを書いていないときはこういうことを考えていたのだから、相当な暇人であったことは間違いない。 特に行動から自分の幸福を見直そうという発想は、現在も私の中で根強く残っており、「実験家の人生」では自分自身を実験体とみなして、外的パラメータを意図的に変更した際に、自分自身の行動がどのように変容するかの観察を行うことで、自分自身の効用(上述した幸福に相当するもの;普段は効用という言葉を使っている気がする)を理解しようとする取り組みを記している。 そのアイデアを実際に公の場で発表してみたのは「10億円と万物の理論、どちらを選ぶ? - ある日の進学ガイダンスにて」で述べたような、博士課程への進学ガイダンスの場だった。 つまり、かれこれ5年以上は同じようなことを考えながら生きているわけで、それもそれでどうなんだろうと思えてくる。
ただ、その過程でもマイナーアップデートは若干あって、特に上述した自分の幸福を理解するために自分の行動を観測するという点において、重要なことは行動だけでなく、その行動が発生するパラメータ列なので、そのパラメータ列を変更するような環境をたくさん作って、学習データを増やそうというアプローチは自分の中で盛んに行われてきた。 例えば、「ランダムネスに流れを任せる - 極限宇宙第4回若手研究会、東京見聞録」では、「まだ知らない自分を知るためには、ランダムネスを受け入れると良い」と書いていて、その考え方は今もあまり変わっていないように思える。 こういったことは、最初からそう思っていたというよりは、同じようなことを何年も考えながら、自分の中でマンネリ化することで、何か変化を加えようとして出てきたアイデアなのだろう。
人間の多体系
More is different という Phillip. W. Anderson の有名な論文1がある。 彼はこの論文の最後で、"Marx said that quantitative differences become qualitative ones" (Marx はカール・マルクスのこと) と言いながら、以下の1920年代の会話として以下の2人の会話で締めくくった2:
FITZGERALD: The rich are different from us.
HEMINGWAY: Yes, they have more money.
物理学者としてのアンダーソンがこの論文で言いたかったことは、素粒子物理学のようなミクロな世界の法則が、マクロな世界にそのまま適用できるわけではない、ということであるとよく言われる。 実際のところは彼しかわからないが、彼が専門とした固体物理学のように、アボガドロ定数個程度の原子が集まったときの物質の性質は、単なる量的な差では説明できない質的な差になることがある、ということを言いたかったのだろう。
このことは人間社会でも同様かもしれない。 人は常に他人と関わりながら生きている。 いくら他人に縛られずに生きているように見えても、他人の存在を前提に行動しているものである。 人間がどんどん集まると、そこに共同体意識のような単独では発生しないものが生まれ、常識といった社会的通念のようなものが形成されることは、私たちは経験的に知っている。 こういったものが戦争や革命のような大きな社会的変化を引き起こすこともあるわけなので、そういった意味では、人間の多体系でも、単なる量的な差では説明できない質的な差が生まれることはあり得るのかもしれない。
ある人の部分系を考えたときに、その状態を決定づけるパラメータの中に、他の人が依存する要素が含まれている。 これは日常生活でとてもよくあることで、単純に自分の進む先に他人がいるからぶつからないように避けるということだけでなく、こういうことをしたらあの人はどう思うだろうか、それによって自分はどういう評価を受けるだろうか、というようなことを考えながら人間は日々行動決定していると思われる。 もちろんそれに加えて、その人特有の効用写像(関数と呼ぶと数値的な値域を連想するので、とりあえず写像にしておく)も混ざりあいながら、ごちゃごちゃした行動決定ロジックの計算が脳内で行われているのだろう3。 きちんと定式化しているわけではないので、定量的な議論をすることは出来ないが、少なくともこのようなことを考えることで1つ言えそうなことがあるとすれば、それは私たちはその存在だけで本質的に相互に影響しあう多体系の中に生きていて、互いに干渉しあわないように生きることは難しい、ということである。
上述したように、単純に存在や行動が他人に影響を与えるだけでなく、2人以上の人間が集まると、そこに規範的なものが生まれることがある。 例えば、世の中にはルールがたくさんある。 法律もあれば、学校や会社の規則もあり、明示的か暗黙的かを問わず、家庭や友人関係の中でのルールがある場合もある。 また、国や地域、特定のコミュニティ内の常識のようなものも、ある意味ルールとも言える。 そのようなルールは、上述した異なる2人の人間間の相互作用とはまた別の形の制約を生み出す。 そして、単に人間が集まっただけでは説明できないような、質的な差をもたらすのかもしれない。
「インターン旅行で感じた資本主義的コミュニタリアニズム」では、企業を1つの人間の多体系として捉えたとき、その多体系の文化的な側面を書き留めていた。 このときの本題は、組織の階層構造を考えた場合、階層ごとに別々のゲームルールが設定されうるということだった。 これも考えてみれば当たり前のことで、私たちの社会がいくら資本主義的な社会であるといっても、私たちが属するコミュニティ(家族や友人関係も含む)たちは全てお金儲けを目的にしているわけではないし、お金儲けをしている人たちが絶対的に賞賛されるように設計されているわけでもない。 つまり、多体系を構成する人間たちの効用はお金の一軸で測れないほど多様であり、集まる人間やその人間たちの関係性によっては、むしろ資本主義とは逆方向に向かうゲームルールが形成されることもあり得る。
物理であっても多体系の問題を解くことは難しいわけで、ましてや人間の多体系の問題を解くことは、ほぼ不可能に近い。 だからこそ、人々は自己啓発本や様々なネット媒体で流布されているような、ある人たちの経験則に基づいた格言的なものに頼るのだろう。 もちろん何かの実験をしてデータベースで理解できればいいのだろうが、それもまた自然実験以外では難しいかもしれない。 そういったことを自覚しながらも、第一原理から考えていくことの意義は、個人的に道に迷わないようにすることにあると思う。 自分の中に、この多体系を生きていくための知恵が断片的に与えられているより、完璧ではなくても体系をもって与えられている方が、今自分が直面している問題が、その木の枝のどの部分に位置しているのかを理解しやすくなる気がする。
対話による系の理解
ここまで人間の多体系について考えてきたが、人間と人間の相互作用の1つに対話がある。 人は対話によって情報を交換し、互いの状態を理解し合うことが出来る。 上述したように、情報は遷移しうる状態を予測するための重要なパラメータであり、対話によって情報を交換することは、互いの状態を操作しうる多体系の内在的な因子になると考えられる。
「想像すれば形になる時代 - PKSHA Technology のインターンに参加して」では、認知心理学におけるスキーマという概念に触れていた。 スキーマがないとコミュニケーションがうまくいかないという話を聞いたとき、確かにそうだなと思った。 おそらくそう思えた1つの理由に、学部生・院生時代に小学生たちに何かを教える活動を何度かやった経験がある。 小学生に数の割り算や分数の概念を教えたり、どうやったらペットボトルロボットがより長く飛ぶかを一緒に考えたり、ときにはプログラミングを教えたりする中で、僕と彼ら彼女らで世界の捉え方が大きく異なることを感じた。 そのような体験は小学生との関わり合いに限った話ではないが、それがより強調された気分だった。 その中で、どうにかそれらを教えるためには、彼ら彼女らの世界の捉え方をこちらが一生懸命理解することに努めながら、その世界観の上で物事を説明する必要があった。 私はスキーマという言葉の定義を専門家レベルで理解していないが、何となくそう思え込めたこと自体が、私の中にそのためのスキーマが形成されていたからだろう。
私が上記のような体験をすることで学んだことは、そもそもある物事を理解するためのスキーマが備わっている場合もあるということである。 それはもちろん自分も例外ではない。 したがって、そのような場合は何かを理解するために、アナロジー的な理解をするか、そのスキーマを形成するための体験をするしかないのではと思うこともあった。 自分の中で結論が出ている話ではないし、もしかしたら認知心理学の分野で研究が進んでいるのかもしれないが、少なくとも人間の多体系の中で生きる一人の個体として、そういうことがあり得ると知っておくことは重要だと感じた。 それさえ知っておけば、もしある人と会話をしていて、話が噛み合っていないように感じても、あの人は話が通じない人だと傲慢になることなく、ただどちらかのスキーマが欠けていたり、理解のベースとなっているスキーマが異なるだけかもしれないと考えることが出来る。
このように人間の認知の土台にスキーマがあって、それがその人間の経験的情報によって形成されていると考えると、対話によって交換された情報を単に符号化したものをパラメータとして考えるだけでは不十分である。 すなわち、その情報を生成する、もしくは受容するスキーマを決定づけるパラメータも考慮する必要がある。 つまり、その人の人生を理解する必要がある。 これには非常に粘り強い努力が必要だが、様々なことがファスト化している現代において、その努力が報われることは少ないかもしれない。
愛
愛を定義することは難しい。 しかし、ここであえて愛について触れてみることで、この一見ドライに見える世界観を、その見た目のままにしておきたくない。
愛といっても、恋愛感情のようなものだけではなく、家族愛や友情、博愛など様々な種類があるように思える。 最近で言うところの推しのようなものも、一種の愛なのかもしれない。 こういうことを考えていると、「でも幸せなら OK です」というネットミーム4が思い浮かぶ。 相手の幸せを願うことを愛という意見はよく耳にするし、私も賛同する側面があるので、それを考えの出発点にしてみるのであれば、B の効用が増加することによって A の効用が増加するとき、A は B を愛していると考えることが出来るのかもしれない。 そういう意味では、B の効用が減少することによって A の効用が増加する場合は、A は B を憎んでいると言えるのかもしれないが。
ここで難しいなと思うのは、A は B の効用を完全に理解することが出来ないということである。 したがって、前述したように A は B の行動の結果から、B の効用を推定するしかない。 それは B の仕草であったり、言葉であったり、より具体的な行動であったりするかもしれない。 そして同時に重要なことは、A は B の行動の結果から B の効用を推定し、その推定結果が A の効用を変化させるため、B の行動が A の効用を増加させるためには、そう推定されるような行動を B が取る必要があるということである。 ここでは B は任意の人として考えたが、もし B が A を愛している場合、B にとって A の効用が増加すれば B の効用も増加するので、A には自分自身の効用が増加したと推定してもらえるような行動を取ることで、A の効用を増加させ、同時に A も自分の効用が増加したと推定してもらえるような行動を B に示すことで、B の効用も増加させることが出来る。 つまり、A と B はお互いに自分の効用が増加したことを表明することによって、互いの効用を増加させることが出来るのである。
ここで一点注意したいのは、上記の話は A が B を愛していることの定義を、冒頭からの議論の延長線上で考えてみただけで、なぜ A が B を愛しているのか、という問いに答えたわけではない。 また、前述したとおり愛といっても多種多様で、今回の定義ではモノに対する愛については取り扱えないことにも注意が必要である。 とはいえ、愛がどのような構造を持っているかを理解できれば、少なくともその愛をどのように持続させるかに対する発展的な議論も出来るのではないだろうか。
さいごに
系という1つのキーワードを通して、学部2、3年生くらいからやんわりと考えてきたことについて、過去に自分が書き記したことも掘り起こしながら、とりとめもなく出力してみた。 自由とか公正とか正義とか、この考えをベースに他にも何となく考えていたサブテーマがあったが、もうさすがに飽きたかな、というのが正直なところである。 というのも、当時はまだ思考と行動にギャップがあったので、考えて意識することに一定の意義があったが、現在ではそのギャップがかなり埋まってしまって、特にこのテーマについて考えることに真新しさを感じなくなっている。 今回は現在の自分の世界観がどのように形成されたかの一部を備忘録として書き留めるために文字を打ったものの、この内容をより精密にしていきたいという気持ちはあまりない。 とにかく今は、ジェットコースターにでも乗りたい気分だ。
-
P. W. Anderson, "More is Different," Science, vol. 177, no. 4047, pp. 393–396, 1972. ↩
-
出典はなく、引用なのか逸話なのかは不明。 ↩
-
これは計算高いということを揶揄しているわけではなく、人間が持ちうる情報を持って自身の次の行動決定を行うプロセスをそのように表現している。 ↩
-
https://withnews.jp/article/f0170905004qq000000000000000G00110701qq000015856A など。 ↩