人生のあらゆる問題を解決する、「最適停止」という名の思考法

『Algorithms to Live By』(2016年)は、アルゴリズムが私たちの日常生活と想像以上に深く関わっていることを示す、実践的で役立つガイドブックです。問題解決、意思決定、生産性向上を助けることで、アルゴリズムがより良い人生へと導いてくれるのです。

どんな価値がある? 自分の人生にアルゴリズムを応用する

目の前にあるスマートフォンやタブレットが、どのように「思考」しているか、少し考えてみてください。大量のデータを処理し、私たちが読んだり聞いたりしている要約として提示するには、どうやって「判断」しているのでしょうか。その答えは、一連の命令、すなわち「アルゴリズム」にあります。

しかし、これから学ぶように、アルゴリズムを使うのはコンピューターだけではありません。私たち自身の思考や直感、意思決定にも、アルゴリズムは関わっています。さらに素晴らしいことに、人生の難題を解決するのに自分自身のアルゴリズムが役に立たない時は、シンプルながらも強力なコンピューターのアルゴリズムに助けを求めることができるのです。この要約で学べることは次のとおりです。

  • デートをやめて今のパートナーに落ち着くべきタイミングを、数学が教えてくれる方法
  • ゾンビ本のコレクション整理にアルゴリズムが役立つ理由
  • あなたの机の上の散らかり具合が、見た目ほど悪くない理由

アルゴリズムは人間とコンピューターの問題解決を助ける

今日のテクノロジーに詳しい人なら、コンピューターが問題解決に常にアルゴリズムを使っていることを既にご存じでしょう。しかし、「アルゴリズムとは正確には何か?」と疑問に思ったことがあるかもしれません。この言葉は9世紀にペルシャの数学者ムハンマド・アル=フワーリズミーによって初めて使われましたが、アルゴリズムの使用そのものは、約4000年前のシュメール文明にまで遡ることができます。

簡単に言えば、アルゴリズムとは問題解決を助ける有限のステップの連続であり、私たちが日常的に使っている手法です。料理のレシピでさえ、美味しい食事という望ましい結果を得るための一連の指示に従うという点で、アルゴリズムと考えることができます。マフラーを編む手順や、イケアの家具を組み立てる手順も同じです。また、転職のオファーを受けるべきか、大きな決断を下すべきかを決めるためにメリットとデメリットのリストを作る時、あなたは「直感的アルゴリズム」に従っています。その性質上、人間が使う直感的アルゴリズムは厳密ではありません。私たちは不確実な状況で、新しい事業投資に飛び込む潜在的な利益とリスクを比較検討するなど、可能な限り最善の決断を下すためにこれを使います。

したがって、これらの直感的アルゴリズムは、コンピューターが使う数学的アルゴリズムと比べると主観的で無作為に見えるかもしれませんが、基本的には同じ解決策を提供します。不快なアパート探しを例にとってみましょう。ほとんどの人は、最低限必要な広さ、学校や職場からの距離、家賃の上限といった一連の基準を念頭に置いて探し始めます。これらの条件が満たされた時、次のステップに進み、賃貸契約にサインします。これは本質的に、コンピューターのアルゴリズムが使うのと同じ方法です。次の要約では、これらの方法がどのように役立つかを探っていきます。

多くの場合、いつ運試しをやめるべきかをアルゴリズムが教えてくれる

競争の激しい市場でアパートを探した経験があれば、いつオファーを受けて探すのをやめるべきかを決めるのがどれほど難しいかご存じでしょう。私たちの判断はしばしば、最初に出会ったものに曇らされがちで、それを最良の選択肢と認識しがちです。そして、同じくらい簡単に、二番目の選択肢が次に良いものに見えてしまいます。こうした問題は、「最適停止」アルゴリズムがまさに解決しようと設計されたものです。

数学的に言うと、選択肢が100ある場合、最適停止理論は、最初の37個はどれも選ばずに見ることを勧めます。その代わり、基準を確立するためにそれらを観察します。例えば、1階にあるアパートやバスルームが小さいアパートは除外する、といったことです。そして、最初の37個を見た後、その基準を満たす最初の物件に飛びつくべきです。この戦略は最高の物件に決まることを保証するものではありませんが、この最適な確率は単なる当て推量よりはるかに優れています。そして、これはアパートにだけ当てはまるのではありません。車を探す場合でも、仕事を探す場合でも、将来の伴侶を探す場合でも、魔法の数字は常に37パーセントなのです。残念ながら、数学が常に正しい停止時期を教えてくれるとは限りません。

単純なコイントスを見てみましょう。「トリプル・オア・ナッシング」戦略を使って結果に賭けるとします。つまり、トスごとに賭け金を3倍にしますが、それまでに得たもの全てを失うリスクも負います。4ドルから始めて、確率が50/50であれば、半分の確率で何も得られず、残りの半分の確率で12ドルを得るため、平均すると6ドルを手にすることが期待できます。次のラウンドでは、12ドルの開始賭け金でオッズは同じですが、18ドルを手にすることが期待できます。

こうしたオッズと平均値を考慮すると、純粋数学は、期待できる獲得金額が増加していくため、賭け続けることを示唆するでしょう。しかし、もちろん、遅かれ早かれあなたは全てを失い、ゲームオーバーになります。したがって、純粋に数学的なアルゴリズムがあらゆる状況で機能するとは限らないのです。

何か新しいことを探求すべきかを決めるのに、数学的アルゴリズムが役立つ

もう少しギャンブルの話を続けましょう。カジノで最も人気のあるゲームの一つ、スロットマシンを見てみます。いつかジャックポットが出ると信じて一日中1台のスロットマシンに向かう人もいれば、選択肢を探り、情報を集めて有利に使おうとする人もいます。いつまで損をしている選択肢に固執し、いつ次に移るべきかというこの基本的なジレンマは、デートや投資など、人生の多くの状況に当てはまります。では、勝利する戦略とは何でしょうか?

数学では、このような問題は「多腕バンディット問題」と呼ばれ、いくつかの異なる答えがあります。スロットマシンで勝率を上げる最も簡単なアプローチは「勝ったらそのまま、負けたら移動」と呼ばれますが、これが最善の戦略とは限りません。勝っている間は1台のマシンに固執し、負けたら別のマシンに移るだけです。しかし、たった一度の損失は、運の流れを示す最良の指標ではないため、このアプローチはミスリーディングになり得ます。より良い方法は、「信頼上限」アルゴリズムです。その使い方はこうです。まず、プレイする上で最高の「期待値」を提供するマシンを見つけます。

この場合、あなたが持っている唯一の情報はジャックポットの表示なので、最もジャックポットが大きいマシンを選びます。プレイしながら、実際の結果(この場合、いくら勝っているか)を記録し、期待よりも徐々に良くなっているか、徐々に悪くなっているかを記録します。実際の結果が継続的に期待を下回るようなら、その時点で次にジャックポットが大きいマシンに移動します。これを繰り返します。このアルゴリズムは、良いマシンでもたまには損失を出すことがあり得るという事実を考慮に入れているため、勝つ可能性を高めます。多腕バンディット問題を解決するもう一つのヒントは、製薬業界における「適応的臨床試験」から得られます。

医師がある病気の異なる薬を試験する際、被験者を継続的に評価し、試験が終了する前から、試験計画をその場で変更します。もし薬が効いていないようであれば、すぐにそれを中止し、効果のあった他の薬に注力します。彼らは、最終結果が出る前から、常に新しい情報を活用する準備ができているのです。

ファイル整理に必ずしも助けは必要ないが、必要な時はアルゴリズムが役立つ

机やオフィスが片付くと、探しているものが何も見つからなくなるように感じたことはありませんか? ある程度の「整理された混沌」を好むタイプの人なら、次のアドバイスを聞いて嬉しくなるでしょう。常に全てをきちんと整頓しておくことを心配しすぎないこと。何よりも、全てを整理し整頓する主な理由は、必要な時に何かを見つけやすくすることだからです。

そして、特にどこに何があるか既に正確に把握しているなら、紙の山を仕分けするのには多くの時間とエネルギーがかかり、それは他のことをするのにより良く使えたはずかもしれません! しかし、あなたの散らかったファイリングシステムがあなたをため込み屋のように見せていて、もっと良い整理方法が欲しいとしましょう。幸いなことに、まさにこのためのアルゴリズムが存在します。最も効率の悪い方法である「バブルソート」から始めましょう。これは、全てが整理されるまで、一度に一組ずつ、何度も繰り返して整理するものです。ゾンビに関する膨大な本のコレクションをアルファベット順に並べたいとします。まず、整理されていない本棚の「A」で始まる本が入るべきエリアに行き、既にそこにある最初の2冊を見て、その2冊を順番に並べます。

これで、「アルバトロス・ゾンビ」の次に「アリゲーター・ゾンビ」が来るかもしれません。次に、その次の本、「アードバーク・ゾンビ」に移り、それを前のペアの最後の本である「アリゲーター・ゾンビ」と比較して並べ替えます。これで、本棚には「アルバトロス・ゾンビ」、「アードバーク・ゾンビ」、「アリゲーター・ゾンビ」の順に並ぶはずです。これを全ての本を一通り確認するまで繰り返し、コレクション全体が整理されるまで、つまり本の場所を入れ替える必要がなくなるまで、何度でも最初からやり直します。

明らかに、家中が本でいっぱいなら、これが最も簡単な方法とは言えません。より良い方法は、「挿入ソート」を使うことです。全ての本を棚から取り出し、一冊ずつ戻しますが、その際に、常に既に戻した本と比較して正しい場所に置くようにします。大規模なコレクションには、「マージソート」法がさらに優れています。全てを複数の山に分け、それぞれをAからZまで分類し、後でそれらの山を統合するのです。

データの整理に関して、コンピューターから学べることは多い

本棚が整頓されたところで、机の上の紙の山や、手元に置いているメモや情報に目を向けましょう。これらはおそらく、支払い待ちの請求書や早急な返事が必要な手紙など、すぐにアクセスする必要がある重要な書類でしょう。コンピューターは、迅速に取り出す必要があるものを扱う、かなり便利な方法を持っています。データを「ハードディスクドライブ」か「ソリッドステートドライブ」に保存します。

それぞれに利点があります。ハードドライブはより多くのデータを保存できますが、ソリッドステートドライブ(SSD)はそのデータをより速く提供します。今日では、多くのデバイスがこれらのドライブを組み合わせ、重要なものは高速なSSDに保存し、大規模なアーカイブの保存にはハードドライブを使用します。しかし、最も重要で最も頻繁に使用される情報は「キャッシュ」に保存されます。これは、最も迅速にアクセスできる、メモリの最上位層という貴重な領域です。コンピューターは、何をキャッシュに保存するかを決めるためにシンプルなアルゴリズムを使います。それは「Least Recently Used(LRU)」と呼ばれ、基本的に最後に使ったものを一番上、つまりキャッシュの上位層に保存します。

このアルゴリズムは、コンピューターが将来どのファイルが必要になるかを推測するための簡単な方法です。幸いなことに、これは請求書、重要な手紙、手の届くところに置いて意識しておく必要があるものに対しても、アナログな世界でうまく機能します。つまり、机の上の散らかりはそのままで良いのです。なぜなら、おそらくあなたの整理された散らかりでは、既に最近使ったものや最も重要な手紙が一番上にあるからです! 私たちの脳も同じように機能します。情報が長い間使われないと、それを思い出すのが難しくなります。ですから、朝に大きな試験や会議を控えているなら、寝る直前にノートを読んでください。起きた時に、情報がより簡単にアクセスできるようになります。

アルゴリズムは生活のスケジュール管理に役立つが、限界もある

ファイル整理に加えて、生産性を高めるもう一つの鍵は、時間を整理し、全てをやり遂げる方法を見つけることです。毎日には困難が伴います。全ての締め切りを守り、犬を獣医に連れていくのを忘れない時間を見つけるのは難しいものです。幸いなことに、こうしたスケジューリング問題に対処するアルゴリズムがたくさんあります。

例えば、複数のタスクを掛け持ちしていて、どこから始めればいいか分からない場合は、「最早期日」アルゴリズムを使い、常に締め切りが最も近いタスクから始めましょう。時間がなくなり、全てをやり遂げられないと分かっているなら、「ムーアのアルゴリズム」に従い、最も時間がかかるタスクをスキップします。そうすれば、全体としてより多くのタスクを完了できます。しかし、何をするにしても、「優先順位の逆転」に注意してください。これは、重要でないタスクに全ての時間とエネルギーを取られ、重要なことが何も片付かない場合に起こります。残念ながら、時間管理の銀の弾丸は存在しません。私たちが直面するスケジューリング問題の大部分は、簡単な解決策では解決できないことが研究で示されています。

そしてもちろん、スケジューリングそのものに1日の多くの時間を取られる可能性があるので、時間を整理することに費やす時間を制限するようにしてください。かなり複雑に聞こえるかもしれませんが、迷った時には、最も短い時間で最大の成果を上げるために使える一つのシンプルな方法があります。それは、一度に一つのことに集中し、その間に届くEメールやその他の要求を全て無視することです。タスクから受信トレイへ、そしてまたタスクへと絶えず注意を切り替えるのは、信じられないほど時間がかかり、圧倒される行為です。なぜなら、切り替えのたびに作業記憶に負荷がかかり、一からやり直す必要があるからです。ですから、一度に一つのタスクに集中し、あらゆる邪魔を無視してください。To-Doリストの長さすら心配する必要はありません。全てはしかるべき時に片付きます。これを念頭に置けば、どこから始めるべきか心配することなく、より多くのことを成し遂げ、生産性を高めることができるはずです。

適切なアルゴリズムは未来を予測するのに役立つ

私たちのほとんどは未来を見通せたらと思いますが、その次に良いこと、つまり、おそらく何が起こるかを予測するのはどうでしょうか? アルゴリズムの助けを借りれば、起こりうる結果を予測することは、それほど突飛なことではありません。この種の予測は18世紀のイギリスに遡ります。トーマス・ベイズ牧師が、ある先行する出来事を考慮して、当選宝くじを引くような未来の出来事の可能性を予測する基本的な方法を考案した時です。ベイズの論理を今日のスクラッチ宝くじに当てはめてみましょう。

あなたが3枚のスクラッチくじを買い、それらを使って、流通しているくじ全体のうち、ある種の当たりがあるものの割合を理解したいとします。ベイズの洞察は、まず流通している全てのくじにおける当たりの普及率について仮説を立て、これを前提として、あなたが実際に3枚のくじで目にする結果の確率を計算する必要がある、というものでした。例えば、3枚のくじ全てが当たりだった場合、流通している全てのくじが当たりだと合理的に推測できます。結局、全てのくじが当たりなら、3枚中3枚が当たるのを目撃する確率は100パーセントです。しかし、もし半数のくじだけが当たりなら、あなたの3倍の幸運が訪れる確率はたったの12.5パーセントです。

したがって、全てのくじが当たりである可能性の方がはるかに高いのです。もちろん、より多くの情報を集めれば集めるほど、次の仮説はより正確になります。しかし、長年にわたり数学は発展し、より良い予測を行うためのより正確なツールを私たちに与えてきました。その予測を大いに助けるのが、現象の「分布パターン」を理解することです。例えば、多くの現象に当てはまる「正規分布」に基づいた有名な「ベル曲線」があります。ランダムな集団の平均年齢を予測する場合、非常に若い人や非常に年老いた人はごくわずかで、ほとんどはベルの中央に位置すると想定できます。

このようにして、ブラインドデートに行く場合、90歳の人と食事をしないだろうと合理的に確信できます。他の状況は「べき乗分布」に従いますが、これはかなり異なります。これらの場合、ほとんどの観測値が中央値を下回り、少数の巨大な観測値だけがそれを上回ることで、中央値に達します。この完璧な例が富の分布です。一般的に言って、多くの貧しい人々がおり、世界の富の大部分を所有するのはごく一部の選ばれた人々だけです。

アルゴリズムはメッセージの交換やデータ過多の処理を助ける

ここで古典的な思考実験を紹介します。二人の将軍が、要塞化された谷にある都市への共同攻撃の準備をしています。唯一の問題は、各将軍が谷を隔てた丘の上にいて、攻撃する前に正確な時間を決める必要があることです。しかし、メッセージを届ける唯一の方法は、谷を通って誰かを送ることですが、伝令は捕まりそうです。では、どうやって時間を決め、相手がそれに同意したと分かるのでしょうか?

この種の問題は、メッセージを確実に目的地に安全に届けるのに役立つアルゴリズムを生み出すために、コンピューター科学者たちが熟考したものです。彼らが最初に考案した方法は、「崩壊するまで再送信」と呼ばれます。そのアイデアは、伝令を次から次へと送り込み、一人が捕まらずに最終的にたどり着くことを願うというものです。これは本質的に、友人が最終的に返事をするまでテキストメッセージを送ったり電話をかけ続けたりするのと同じです。しかしもちろん、最近では伝令が傍受されるのとは別の問題に直面することがほとんどです。例えば、Eメールをチェックするたびに、サーバーが過負荷であるというエラーが出るとしましょう。

この場合、「指数関数的バックオフ」法が役立ちます。慌てて更新ボタンを連打する代わりに、トラフィックが落ち着くまで数分待ちます。そして、それでもまだエラーが出るなら、待ち時間を2倍の4分にし、再試行する前にさらに倍にし、接続できるまで倍増し続けます。理想的には、サーバーを使おうとする全ての人がこの方法に従えば、迅速な解決を確実にするのに役立ちます。しかし、最善の解決策は、そもそも過負荷問題を防ぐことであり、これは「加法増加、乗法減少」(AIMD)と呼ばれる方法です。このアルゴリズムは、ネットワークが処理できる最大データ量を決定するのに役立ちます。

まず、データのパッケージを1つだけ送信することから始めます。次に、過負荷のポイントに達するまで、毎回2倍の量を送信します。次に、障害が発生する前の最大量を送信し、後続のパッケージを制限に達するまでわずかずつ増やすことで、限界を特定しようとします。ところで、「囚人のジレンマ」という言葉を聞いたことがありますか? あなたと相棒が銀行強盗に成功したと想像してください。

人々が何をするかを推測し、意思決定を導くアルゴリズムがある

その後、あなたと相棒は警察の取り調べを受け、別々の部屋に入れられます。警察は強盗の罪で2人とも有罪にするのに十分な証拠を持っていないので、黙っていれば、より軽い罪での懲役1年だけです。その後、出所して盗んだ金を楽しめます。しかし、ここに落とし穴があります。警察はあなたと相棒の両方に司法取引を持ちかけます。もしあなたが相棒に不利な証言をし、相棒が黙秘すれば、あなたは釈放され、相棒は懲役10年になります。

しかし、2人ともが互いを裏切れば、それぞれ懲役5年になります。あなたならどうしますか? これは、合理的な人ならこのような状況にどう反応するかを探る「ゲーム理論」を代表する、古典的な戦略問題です。囚人の場合、彼らはほぼ間違いなく互いを裏切り、その場合、それぞれが懲役5年になります。このシナリオでは、明確な「最大報酬」があります。相手を告発し、刑務所に入らず、金を独り占めできる可能性があることです。相棒も話したとしても、黙秘して10年の刑を受けるよりは、5年の方がまだましです。

しかし、結局は、それぞれの人が相手に不利な証言をすることになるので、勝つのは警察です。ゲーム理論のもう一つの分野は、より直接的な「メカニズムデザイン」です。これは、特定の反応を期待して選択肢を設定するのではなく、人々を望ましい方向に行動させるものです。例えば、多くの雇用主は、従業員が休暇を取らないという問題に直面しています。そして、雇用主は、十分に休息した従業員が、働きすぎの従業員よりもはるかに優れたパフォーマンスを発揮することを知っています。Evernote社は、休暇を取るためのインセンティブとして1000ドルのボーナスを提供しましたが、これでさえ効果はありませんでした。

この問題にメカニズムデザインを適用すると、従業員を「説得」する方法を考える必要はありません。問うべきは、どうすれば休暇を「取らせる」ことができるか、です。そして、その答えはシンプルです。休暇を義務化することです! このように、アルゴリズムは多くの分野で応用されています。最後に、最後の要約で、その限界について議論しましょう。

アルゴリズムには限界があることを知ることが重要

何か複雑なものをモデル化しようとする場合、一般的に複雑なモデルは単純なモデルよりも優れています。例えば、肥満の原因を説明するモデルを開発する場合、偏った食事から遺伝、運動不足まで、多くの要因を考慮に入れた複雑なモデルが必要になるでしょう。単純なモデルでは食事だけに焦点を当てるかもしれませんが、それでは不十分です。しかし、モデルが複雑になりすぎると問題も発生します。

これは、データに常に不確実性と誤差が存在する現実世界の問題を考える際のリスクです。おそらく、サンプルデータセットから始めて、それに基づいて予測を行うアルゴリズムを構築しようとするでしょう。誘惑に駆られるのは、誤差も含めて、データ内の全てを完璧に説明するまで、アルゴリズムに変数を追加してしまうことです。これは「過剰適合」として知られており、同じアルゴリズムを別のデータセットに適用しようとする際に問題を引き起こします。基本的に、モデルはサンプルデータに厳密に適合しすぎて、柔軟性を全て失い、他のデータではうまく機能しなくなってしまいます。例えば、肥満を考える際、サンプルデータで国の特定の地域が他の地域よりも肥満率が高いことに気づくかもしれません。

しかし、これは偶然である可能性が高く、人物の居住地の重要性を強調するようにモデルを微調整すると、居住地が重要でない新しいデータに適用した際に、モデルの予測力が悪化します。完璧なアルゴリズムは存在しないと理解すれば、自分の基準を少し緩めて、完璧ではなく十分良いものを選ぶことができます。「巡回セールスマン問題」を考えてみましょう。これは、どこにも二度行かずに、複数の地点間を結ぶ単一の最適ルートを見つけるにはどうすればいいか、というものです。この問題を州全体や国全体に拡大すると、言葉にできないほど複雑になります。

このような状況では、最も効率的な解決策は、基準を緩めることです。セールスマンに異なる場所を少なくとも二度訪問させてみてください。完璧ではないかもしれませんが、妥当な時間内に、良い解決策にかなり近づけることができます。

最終的な要約

アルゴリズムは、数学者やコンピューターだけを助けるために存在する、理解不能なものではありません。実際、気づいていなくても、私たちは毎日これらを使っています。

アルゴリズムには、適切な判断を下し、起こりうる結果を予測し、より生産的な人間になるのに役立つ、多くの問題解決の知恵が詰まっています。実用的なアドバイス:最初に単純なことをする。やるべきことリストが長くなりすぎて、できるだけ多くの項目をチェックしたい時は、「最短処理時間」アルゴリズムを使いましょう。最も早く完了できる順にタスクをリストアップすることです。これにより、非常に短い時間で多くのことを完了できます。

Add Comment