目的は主観的に、手段は客観的に考える

ここ数年で色々な経験をした結果

目的は主観的に、手段は客観的に考える

のが良い気がしたのでメモしておく。


ある事をやろうとする。このある事を便宜上「目的」とよぶ。客観的に目的を検証すると、利点と欠点がリストアップされる。
だが大抵欠点の方が多いので目的を諦めるのが最適解になる。これだと何もしないのが最適になってしまい何も変わらない。
そこで目的を主観的に決定する。自分が「これはッ!」と思った事を目的にする。ここは決めたら曲げない。
そして目的を実行するための「手段」を考える。手段も便宜上の表現で、具体的な手段に加えて目的を達した時のリスクやリターンについても考える。リスクがある場合には、リスクは回避できるか、回避できないならダメージをリカバーするにはどうするか、を客観的に考える。
目的フェイズのポイントはとにかく自分の気持に正直になること。良いと思った部分にとにかく目を向けること。手段フェイズのポイントは「目的をやめる」という選択肢を除去し、断固目的を達成するための手段を考えること。
この手法はEMアルゴリズムに類似している。つまりEステップでQ関数(目的)を決め、MステップでQ関数を最大化する(目的を達成する)パラメータ(手段)を求める。この手法をObjective-Subjective(OS)アルゴリズムと名付けたい。
OSアルゴリズムはEステップで定めた「目的」に対してMステップで求めた「手段」のリスクが許容不能な大きさであった場合、人生が詰んでしまう欠点がある。
そこでOSアルゴリズムを拡張しSmoothed-Objective-Subjective(SOS)アルゴリズムを提案する。
SOSアルゴリズムではEステップで定める「目的」をK個にする。このときK個は主観によってのみ選択する点に注意されたい。続くMステップではK個の目的それぞれについて「手段」を求める。この手段K個のうちリスクが許容範囲かつリターン最大のものを選択する。
擬似コードを以下に示す。

SOS_Algorithm {
  while (1) {
    // E-Step
    for (i = 0; i < K; i++) {
      X[i] = argmax Subjective();
    }
    // M-Step
    for (i = 0; i < K; i++) {
      Y[i] = argmax Objective(X[i]);
      if (Y[i].risk > threshold) {
        Y[i].return = 0;
      }
    }
    sort_by_return(Y);
    do(Y[0]);
  }
}