chokudaiのブログ

chokudai(高橋直大)のブログです

人生を最大限に楽しむための方法 〜アルゴリズマー的人生最適化〜

今までのブログでもう判ってもらえているかと思いますが、僕は「頭を適切に使って論理的に考えると人生が楽しくなるよ!」って主張を強く持っています。その主張が現状少し弱く感じたので、一つ具体例として、「人生をアルゴリズマー的に最大限楽しむ方法」というのを少し紹介してみようと思います。数式を多用していますが、ぶっちゃけ読み飛ばしても読めると思うので、数学アレルギーの人は適度に読み飛ばして読んでくださいな。

目的を明確に定義する

さて、「人生を最大限に楽しむための方法」とありますが、そもそも最大限に楽しむって何だろう?って問題が発生します。そこで、問題を明確に定義しましょう。まずは、貴方が、ある瞬間でどれくらい楽しさを感じているか、という関数fを定義します。この関数fは、貴方の行動、または選択の集合Aと、その時の時間tを与えて、f(A,t)とすることが出来ます。よって、これを人生の間で積分して最大化すれば良いので、
{\smashmargin2{\int\nolimits_{now}}^\infty}f(A,t)dt
とし、この期待値を最大化することで、人生を最大限に楽しむことが出来るわけです。定義が甘いかとは思いますが、大体の雰囲気を掴んでもらえれば十分です。

それぞれの項目に対して考える

ここまで定義したところで、各項目に対して、どう弄れるかどうかを見ていきましょう。

時間tに関して

これは、少なくともこの記事においては、意図的には全く変化させられないものとします。例えば自殺をしたり、タバコやお酒で寿命を縮めたりしたら積分範囲は変わるんじゃないのか?と思われる人もいるかもしれませんが、それは行動Aに含めます。そうすれば、その行為以降のf(A,t)が0となるだけで、計算式自体に何ら影響を与えません。「楽しい時間を出来るだけ長く感じる方法」などがあれば多少話が変わってくるかもしれませんが、それでも行動Aに含めちゃっていいんじゃないかな、と思います。

行動の集合Aに関して

「どんな行動をしても、人生の面白さは変わらない!」って主張をする人は多分いないかと思いますし、これは言うまでもないでしょう。当然変更可能であり、ある程度の予測も可能である、としてこの場では扱います。

幸せ関数fに関して

見落としがちではありますが、幸せ関数fに関しても、弄れる可能性は考慮しなければいけません。これが意図的に操作可能であるかに関しては意見が割れるかと思います。当然「面白いものは面白いし、そうじゃないのはそうじゃないに決まってるじゃないか」と主張する人は多くいるのではないかと思います。ですが、とりあえずは、変更可能ではあるが、予測が可能でないものとして扱おうかと思います。理由は後述しますが、簡単に言ってしまえば、変更可能である方が上記関数を大きくする事が可能であり、予測が可能でない=行動選択において考慮しない、というスタンスであれば、行動決定において影響を与えないからです。

ここまでのまとめ

さて、ここまでの考察を踏まえて、妥当であろうアルゴリズムを以下に示します。

  1. fを現状の状態で固定し、F(A)=∫f(A,t)dtについて考え、F(A)の期待値が最大となる行動の集合Aを考える。この際、fが明らかに変更可能そうであれば、出来るだけ都合の良い風に捕らえて考えても良い。基本はそんなことはないので固定して問題なし。
  2. 行動を決定したらAを実行し、それを最大限楽しめるように、関数fを変更することを常に意識する。

こんな感じが妥当なんじゃないでしょうか?これを踏まえて以下の話に続きたいと思います。

行動の決定方法・その1

まず、関数fに関しての誤解が発生している可能性がありますので、その誤解から解いていきたいと思います。1つ、問題の具体例を示したいと思います。

問題

貴方に、以下の2つの選択肢が与えられたとします。

  1. 100%の確率で、1億円貰える。
  2. 50%の確率で、10億円貰えるが、もう50%の確率で何ももらえない。

さて、どちらを選ぶのが良いでしょうか?

解答

まぁ人によるかと思いますが、まずは上の考え方に沿っているようで、間違った思考方法を考えてみようかと思います。金額の期待値を考えてみると、上の選択肢は1億*1=1億円、下の期待値は10億*0.5=5億円で、下のほうが期待値は5倍となります。よって下の選択肢を選ぶべきです。……本当にそうでしょうか?
上記の計算では、金額的な期待値を考えましたが、考えるべきは、幸せ関数fに関しての期待値です。じゃあそれはどうやって求めれば良いんだ、と感じる人が多いかと思いますが、そんなのは人によって違うので、直感で良いのではないでしょうか?さすがにこれだと投げやりすぎる気はするので、一応、一般的に考えることが可能な思考法を紹介したいと思います。
まず、特にこの選択肢によって何も変わらない、という状態を、∫f(A1,t)dt=1、とします。次に、今この瞬間で突然死んじゃうような状態を考え、∫f(A2,t)dt=0とします。死んじゃうのはマイナスではないのか、と思う人もいるかもしれませんが、死ぬという行為によって発生するマイナス要素は、「〜〜出来ない」という系統であり、それはマイナスではなく、元々の状態で存在するプラスと比較してマイナスに見えるだけで、0と定義して問題ありません。死んじゃうときに苦しいやら痛いやらはこの場では無視します。で、適当な設問を用意します。「a%で1億円もらえるが、100-a%で突然死する」選択肢と、「何も起こらない」選択肢を考慮し、妥当なaを考えれば、1億円もらえた時の幸せ関数の値はかなり正確に計算できます。例えば、自分の場合は大体99.5%くらいかな、となるので、上の選択肢は、1億円もらえる場合のを∫f(Aq1,t)dtとして、
{\smashmargin2{\int\nolimits_{now}}^\infty}f(A_{q1},t)dt*99.5 + {\smashmargin2{\int\nolimits_{now}}^\infty}f(A_2,t)dt*0.5 = {\smashmargin2{\int\nolimits_{now}}^\infty}f(A_1,t)dt * 100
{\smashmargin2{\int\nolimits_{now}}^\infty}f(A_{q1},t)dt=100/99.5=1.005025.....
と求めることが出来、これで上の選択肢の期待値が計算できます。同様に、10億円もらえると1.006かなーくらいに計算できるとすると、下の選択肢のの期待値は、(1.006+1)/2=1.003となり、上の選択肢の方が、少なくとも僕にとっては良いことがわかります。
もちろん、この計算が出来るのであれば、直接比較すれば良いのではないか、という人も多いかと思いますが、直接比較するとどちらが良いか判らなくなってしまう、ということはよくあります。そうした際に、このように何か別の基準となる比較材料を用意して、幸せ関数の数値を数値化する、というのも大切なことではないかと思います。今回は単純な例で示しましたが、「幸せとなる期間」や、「一時的に喜べるもので、喜びが減衰していくもの」等色々ありますので、適当に計算しやすい形でこれが妥当かな?みたいなのを選んで計算してみると良いのではないかな、と思います。

行動の決定方法・その2

ここまで長々と説明しておいて酷いことをぶっちゃけますが、こんな計算をする必要性なんて殆どありません。結局は、「自分の選択に自信を持って、後悔しないこと」が非常に大切となります。要するに、そんな計算なんてしなくても自信を持って選択できるような状況であれば、最初に言ったとおり直感で選んでしまっても全く問題ありません。困った場合は、選択を行った際に、後悔してしまう可能性が高いケースです。そういった場合に備えて、2つのケースに合わせた必要な考え方を明記します。

行動選択までに必要な時間が極めて短い場合

この場合は、その場にある情報で意思決定を行うしかなく、その場合に「こっちにすれば良かった」なんて事は、当然ありえないわけではないですが、その場で思いついた選択肢の中で良いと思ったのを選んだわけで、後悔する必要は全くありません。もし何か見落としが発生していても、そのときに思いつけなかったのは貴方の能力不足または運不足であり、あんまり後悔しても仕方ありません。(反省はする必要はあるかもしれませんが)
基本的に、その手の場合で後悔してしまうのは、ちょっと突き詰めてみれば、自らが超能力者かなんかでない限りどうしようもなかったケースが殆どであり、結果論で色々言っても仕方ないでしょう。

行動選択までに必要な時間がそれなりにある場合

こちらは、上の場合と状況が変わってきます。

  • 集められる情報がまだあり、どれを選ぶか微妙なケース

これが一番難しい状態です。情報を収集する、という選択肢が常に提示されているが、情報を収集する時間、っていうのは明らかにプラスに働くケースっていうのはそこまで多くもなく、どのタイミングで結論を下すか、というのは難しいところです。
こういったケースに関して、上の話で挙げたような、確率分布を考えて、その期待値を計算する、という計算を拡張して、確率分布に幅をつけて見ましょう。調べることによって、この予想はこの辺からこの辺まで変わりそうだなぁ、みたいな予想をした上で、下限と上限を計算します。この下限と上限の範囲に、明らかに有意な差(例えば90%程度)が発生したら、思考を切り上げる、というのが妥当なところではないかと思います。情報が膨大な場合は大変になりますが、大抵の場合において、そのうち調べられる情報なんてなくなります。そうなると、当然予想できる下限と上限の範囲は狭まって、比較的早期に、妥当な決断を下すことが出来ます。そこまで考えた上で多少おかしな方向に転んだとしても、それは結果論であり、後悔する必要なんてないでしょう。

  • 情報を集める気になれない場合

これは、貴方がその選択に対して興味があまりないか、どちらか一方に自信を持っているか、どっちかでしょう。だったらコメントするまでもないかと思います。

  • 集められそうな情報がこれ以上存在しない場合

これは上に書いた通り、調べた上で変動する可能性のある確率分布、というのが0になるので、時間がない場合と全く同じになります。

ここまでのまとめ

要するに、後悔しないように行動をしたら、後はちょっと考えれば後悔する必要なんてないんだから、後悔するな、って話です。しつこく書きましたが、これが出来てない人は多いように感じますし、直せるなら早期に直しましょう。我々は人間であってエスパーではありません。

行動の決定方法・その3

後半となりましたが、ここまで考えないと、ただの独りよがりな個人主義の残念な人になりかねません。ここで、他人の存在を意識してみましょう。上の問題に関して、自分ひとりが選択可能であれば当然結論は変わりませんが、100人が挑戦するとしたらどうでしょう?僕は、その100人と連絡を取って、「全員で下の選択肢を選び、得られた金銭を山分けする」という行為を提案します。こうすることで確実に5億程度を得られ、明らかにどちらかを一人で選ぶより良い選択をすることが出来ます。
さて、こうした考察をする上で他人を意識することが大切なことは判ってもらえたかと思いますが、具体的にどのように意識すれば良いでしょうか?ここで、囚人のジレンマを例に取り上げて見ようかと思います。自分と相手が、協力するかしないかに対して、以下のようなポイントが得られるゲームを考えます。先に書かれているのが自分の行動で、後に書かれているのが相手の行動です。これを何度も行うことを考えましょう。

自分の行動\相手の行動 ×
5,5 1,7
× 7,1 3,3

ここで、単純に自分の期待値だけを考慮するのであれば、常に×を選ぶことが最善です。ですが、それで相手も×を選んだ場合、自分は3ポイントしか得られませんし、相手も3ポイントしか得られません。ここで両者が結託することで、お互い5ポイントを継続的に得られるようになるわけです。もちろんこういった表が常に同じであるケース、というのは社会においてはあまり発生せず、常に得点の分布は変わっていきます。こうしたケースにおいて考える必要があるべきなのは、両者の幸せ関数の和が最大となる選択肢を選ぶ、ということでしょう。ある一面だけを見れば、自己犠牲になっていたり、一方的に尽くしてもらったりしていることもあるかもしれませんが、結果的には自分の幸せ度を高めることが可能です。
以上を踏まえて、自分がある程度信頼できる人n人に対して、
\sum_{k=0}^n{\smashmargin2{\int\nolimits_{now}}^\infty}f_k(A,t)dt
みたいな感じの関数を最大化することを意識してみれば良いんじゃないかなぁ、と思います。これじゃあ少しお人好し過ぎないか、と思う人も居るかと思いますので、その場合は、ある人kへの信頼度や友好度g(k)などを適当に定義して、
\sum_{k=0}^n{\smashmargin2{\int\nolimits_{now}}^\infty}f_k(A,t)dt*g(k)
とかを最大化することを目指せば良いのではないでしょうか?統計等に強い人がいたらもうちょっと適切な式の作り方が出来るのかなぁ、とか思いますが、人間の処理限界とかを考えると、これくらいの簡単めな関数で意識しておいたほうが、計算量も少なめで良い答えが得られるんじゃないかな、と思います。
もちろん、これは多少自らに余裕がある場合の提案です。余裕のない人は、こんな甘っちょろいことは言ってられない人が多いかと思いますし、当然強要はしません。ですが、こういった選択をすることでお互いにとって良い関係が築けるかと思いますし、少なくとも僕自身は、こうした協力的な関係を築ける人に対しては良い関係を築こうとしていますし、そうでない人に対してはそれなりに攻撃的になっているかと思います。(もちろん、環境的に仕方ない部分などは除いて考えますが)
長くなりましたが、ここまでで行動決定の話を終わりとします。

幸せ関数fを都合よく弄る

次に幸せ関数fについて考えて見ましょう。
先程の関数を固定した場合の例を見てもらえればわかるかと思いますが、1億円もらえるとしても、自分の定義している幸せ関数ってのは0.5%程度しか変わりませんでした。どんなに良い選択を繰り返したとしても、こっちの「気の持ちよう」を間違えると、大して人生を楽しむことは出来ない、ということとも言えます。ということで、こちらの話のほうが、実は人生を楽しむ上では非常に重要となります。
上の話がかなり理論的だったのに対して、この話はかなり精神論っぽくなります。まずは、これが変更可能であるかそうでないかという議論から始める必要があるかと思いますので、具体例を見ていきましょう。

自己防衛について

自らの行動に関して、最初は多少良くないと思っていた部分もあったようなものを、いつの間にか正当化したりしていることはないでしょうか?多分これがない、って人はいないのではないかと思います。これは、日常的に行う行動に関して、そういったマイナスの意識があると良くないので、自己防衛として、そういった意識を感じないようにして正当化した、つまり関数fを弄ったわけです。何が良い、何が悪い、という考え方が変われば、その行動を行う際の楽しさっていうのは当然変わります。無意識下ではありますが、これは関数fを良い方向に弄った例となります。

〜〜は本当に面白いのか?と考えてしまうケース

ちょっと良い例が浮かばなかったので、抽象的な例を挙げます。自分は結構おばかなのであんまり考えないことではあるのですが、ちょっと頭の良い人は、何でも疑ってかかります。せっかく自分が今面白いと感じているもの(例えばAとする)に対して、「Aが面白いのか?」と考えて、それが面白くないって結論になっちゃった場合、今後Aに対する楽しみは明らかに下がってしまいます。こういう疑ってかかる人は、大体こういうことを考えた場合、あんまりプラスの方向に向かいません。これは、関数fを悪い方向に弄ってしまった例となります。あんまり例が良くないので、良い例を募集していますw
本当は、「悲劇の主人公を演じちゃってる人」だったりとか、「死にたい死にたい言いまくってる人」だとかそういうのを例に出して考えてみようと思ったのですが、ちょっと書いてみたら過激な意見になっちゃったので、こちらで考えてみたい場合は自分で考えてみてください。

まとめ

以上に挙げたように、この幸せ関数ってのは、無意識下でかなり変わりますが、大体それを説明する際に、それなりの理屈が自分の中で構築出来ていることが多いのではないかと思います(この場において、それが成立しているかどうかは問いません)。ってことは、それなりの理屈を自分の中で構築しちゃえば、自分がどこで面白いと感じるか、幸せと感じるかっていうのは弄れるのではないでしょうか?あくまでも自分の場合は、と前置きをしなければいけませんが、これは弄れると思い込みながら色々考えれば、十分弄れるものだと思います。そこで自分が推奨するのは、ある物事に対して、全て楽しめるものだという前提にした上で、後からある程度妥当な理由を与える、というものです。全然論理的じゃありませんが、そもそも何が面白いか、何が幸せかなんて考え出した時点でわけがわからないと思いますし、適当に良いところで思考停止させちゃえば良いのです。色々頭を使って導き出した結論が、「人生は無意味で生きてる価値なんて何もない」とかだったらそれこそつまんないわけで、もしそれが正しかったとしても、そんな思考をすること自体が愚かなのではないでしょうか?どうせなら、出来るだけ幸せになれるように頭を使って、出来るだけ全てのものを楽しめるように、頭を魔改造しちゃいましょう!

余談

この内容は、僕の大学で行っている授業の「意思決定能力の開発」という授業の履修選抜試験において僕が書いた文章を、ブログ向けにアレンジしたものです。友人への受けは良かったのでブログにも書いて見ましたが、履修選抜は残念ながら落ちてしまいました。まだまだ考え方が浅いみたいです。それなりに良い環境で育っちゃってるという自覚はありますので、意見に甘いところや、当然考えるべき抜け落ちている視点等が多く存在するのではないかと思いますので、そういった点は、はてブ、コメント等にどしどしくれると嬉しいです!
本当はもうちょっとありますが、あまり長くなりすぎるのもよくないのでこのあたりで終わりにします。以上、長くなりましたが、ここまで読んでくれている方がいればありがとうございました!