あわてんぼうの三択どうする?
タイトルが意味不明でごめんなさい。決して、ふざけている訳ではありませんので、なにとぞ、寛容な心持ちで受け流していただけたら幸いです。人生の選択で、三択に迫られる事って、ありましたか?プログラミングの基本的な処理は3つあり、順次処理、繰り返し処理、そして分岐処理です。この分岐処理は、Yes/Noの2択を組み合わせることで、複雑な処理が可能になります。例えば、奥様のご機嫌が麗しいかどうかを知りたいとしましょう。先ずは「表情が明るいか」、次に「返事はあるか」、そして「最近、プレゼントをしたか」として、全てYesとくれば、よろしいのですが、一つでもNoがあれば、少し接し方を考慮する必要があると判断できます。これを見て、「そんなに単純じゃないわよ」と思われるかもしれませんが、それはごもっともです。実際には、もっとさまざまな要因が絡んでくることでしょう。それらをどれだけ準備できるか、というところに難しさがあるのです。「ご飯は食べたか?」「風呂は入ったか?」「睡眠は十分か?」などを並べたら、誰かの歌でありそうですね。テストの点数で評価をするプログラムは、分岐処理の良い練習になります。例えば100点満点のテストで、70点以上を「優」、50点以上を「可」、それ以外を「1時間正座」とした時、1度に分岐できるわけではなくて、一つずつ比較していきます。Aさんが80点、Bさんが60点、Cさんが30点として、Aさんから始めます。簡単にするために、点数をnとします。Aさん(n=80)①比較 n>=70 →Yes ②処理 Aさん=「優」 こんな具合です。Bさん(n=60)①比較 n>=70 →No ②比較 n>=50 →Yes ③処理 Bさん=「可」。続いてCさん(n=30)①比較 n>=70 →No ②比較 n>=50 →No ③処理 Cさん=「1時間正座」となります。これを、定められた言葉で書けば、テストの評価プログラムが出来上がります。これは1例であり、他の方法もありますが、基本的には、分岐は2択を繰り返します。フローチャート上で、3つに分かれていても、プログラム上は2択の組み合わせなのです。さて、話を戻して、人生の選択ではどうでしょう?幾つもの選択肢がある場面を思い浮かべると、外食でお店を選ぶ時、迷いますよね。フードコートに行くと、いくつものお店が待ち構えていて、選ぶだけでも一苦労です。優柔不断という性格も災いしているのですが、観察すると、多くの人が悩ましい選択をしている様子を窺う事ができます。つまり、僕だけが感じているジレンマではないということを、殊更に強調しておきます。こういう時、どうやって判断していますか?人によってさまざまでしょうけど、大きく分けて、消去法と、採点法があるのではないでしょうか。候補リストをA店のハンバーガ、B店のカレーライス、C店のラーメンとしましょう。消去法であれば、「今日はカレーの気分じゃないな」→「そういえば昨日ラーメン食べたから今日は止めておこう」→A店のハンバーガに決定、というプロセスでしょうか。採点法であれば、それぞれに点数をつけて、最も数値の高いものを選択します。実際には、点数をつける、という行為は行われておらず、感覚的な評価によるものですが、それらは意識すれば、数値化できるはずです。価格も大きく影響してきます。例えば、全て一律500円であるとして、A店「ハンバーガ今なら50円引き」、B店「カレーライス大盛サービス」、C店「ラーメン(ライスお替り自由)」と表示されていたらどうでしょう。単純に価格で決めるなら、A店が450円です。ボリュームで選ぶなら、B店かC店になります。こうしてみると、複雑な選択でも、実はシンプルな分岐によって結果を導いていると考えられます。つまり、人間はそれだけ複雑な処理を、ものすごく高速に行っているということになります。このあたり、AIがディープラーニングで再現できるのか、楽しみな部分ではあります。AIが複数の選択肢と向き合った時、どのような判断をするようになるのか。これがゆくゆくは、様々な分野で大きな影響を与えていく部分ですから、しっかり見届けたいものです。