# Self-Consistency（自己整合性）

プロンプトエンジニアリングのより高度な技術の1つであるSelf-Consistency（自己整合性）は、[Wang et al. (2022)](https://arxiv.org/pdf/2203.11171.pdf)によって提唱され、「連想思考プロンプティングで使用される単純な貪欲復号化を置き換えることを目的としています」と述べています。アイデアは、few-shot CoTを通じて複数の多様な推論パスをサンプリングし、生成物を使用して最も整合的な回答を選択することです。これにより、算術および常識的推論を必要とするタスクにおけるCoTプロンプティングのパフォーマンスが向上します。

算術的推論のための次の例を試してみましょう。

*プロンプト：*
```
私が6歳のとき、妹は私の半分の年齢でした。今、私は70歳です。私の妹は何歳ですか？
```

*出力：*
```
35
```

出力が間違っています！自己整合性を使ってこれを改善するにはどうすればよいでしょうか？それでは、Wang et al. 2022（表17）のfew-shotエグザンプラーを使用してみましょう。

*プロンプト：*
```
Q：林には15本の木があります。林業従事者は今日、林に木を植える予定です。その後、21本の木があります。林業従事者は今日、何本の木を植えましたか？
A：15本の木から始めます。後で21本の木があります。差は、彼らが植えた木の数でなければなりません。したがって、彼らは21-15 = 6本の木を植えなければなりません。回答は6です。

Q：駐車場に車が3台あり、さらに2台の車が到着した場合、駐車場には何台の車がありますか？
A：駐車場には既に3台の車があります。2台の車が到着しました。これで、車が3+2 = 5台あります。回答は5です。

Q：リアは32個のチョコレートを持っており、彼女の姉妹は42個のチョコレートを持っています。彼らが35個食べた場合、彼らが残したピースの数は何ですか？
A：リアは32個のチョコレートを持っており、リアの姉妹は42個のチョコレートを持っていたことを意味します。つまり、もともとは32 + 42 = 74個のチョコレートがありました。35個食べられました。したがって、合計で残るのは74-35 = 39個のチョコレートです。回答は39です。

Q：ジェイソンは20個のキャンディを持っていました。彼はデニーにいくつかのキャンディを与えました。今、ジェイソンは12個のキャンディを持っています。ジェイソンはデニーに何個のキャンディを与えましたか？
A：ジェイソンは20個のキャンディを持っていました。今は12個しか持っていないので、残りはデニーに与えられたものです。彼がデニーに与えたキャンディの数は20-12 = 8個のキャンディです。回答は8です。

Q：ショーンは5つのおもちゃを持っています。クリスマスに、彼は両親からそれぞれ2つのおもちゃをもらいました。今、彼は何個のおもちゃを持っていますか？
A：彼は5つのおもちゃを持っています。彼は母親から2つのおもちゃをもらいました。したがって、5 + 2 = 7個のおもちゃがあります。その後、父親から2つのおもちゃが追加されたので、合計で7 + 2 = 9個のおもちゃがあります。回答は9です。

Q：サーバールームには9台のコンピューターがあります。月曜日から木曜日まで、毎日5台のコンピューターが追加されました。サーバールームには現在何台のコンピューターがありますか？
A：月曜日から木曜日までの日数は4日です。1日に5台のコンピューターが追加されました。つまり、合計で4 * 5 = 20台のコンピューターが追加されました。最初に9台のコンピューターがありましたので、現在は9 + 20 = 29台のコンピューターがあります。回答は29です。

Q：マイケルは58個のゴルフボールを持っています。火曜日に、彼は23個のゴルフボールを失いました。水曜日に、さらに2個を失いました。水曜日の終わりには、彼は何個のゴルフボールを持っていましたか？
A：マイケルは最初に58個のボールを持っていました。火曜日に23個を失いましたので、その後35個のボールが残りました。水曜日に2個を失ったので、現在33個のボールがあります。回答は33です。

Q：オリビアは23ドル持っています。彼女は1つあたり3ドルのベーグルを5つ買いました。彼女が残したお金はいくらですか？
A：彼女は1つあたり3ドルのベーグルを5つ購入しました。彼女は１５ドルを使った。残したお金は８ドルです。

Q：私が6歳のとき、妹は私の半分の年齢でした。今、私は70歳です。私の妹は何歳ですか？
A：
```

*出力1：*
```
私が6歳のとき、私の妹は私の半分の年齢であったため、彼女は3歳でした。今、私が70歳であるため、彼女は70-3 = 67歳です。回答は67です。
```

*出力2：*
```
語り手が6歳のとき、彼の妹は彼の半分の年齢である3歳でした。語り手が70歳である今、彼の妹は70-3 = 67歳になるでしょう。回答は67です。
```


*出力3:*
```
私が6歳のとき、私の妹は私の半分の年齢だったので、彼女は3歳でした。今、私は70歳なので、彼女は70/2=35歳です。答えは35です。
```

最終的な答えを計算するにはいくつかのステップが必要です（詳細については論文をチェックしてください）。しかし、簡単のために、既に多数派の回答が出ているので、それが本質的に最終的な回答になります。