【例文付き】Self-Consistency(自己整合性)とは?

「ChatGPTを有効活用したい!」「Self-Consistency(自己整合性)って何?」そう思う方もいるのではないでしょうか。

Self-Consistency(自己整合性)を理解することで、思考連鎖型プロンプティングの効果の向上が見込めます。

今回PROMPTYでは、Self-Consistency(自己整合性)とは何か、活用事例について詳しく紹介していきたいと思います。

Self-Consistency(自己整合性)とは

複雑な推論を行う際には、中間的な推論のプロセスが重要となります。

特に、プロンプトエンジニアリングにおける進歩した技術としてSelf-Consistency(自己整合性)注目されています。主な考え方は、「Few-shot プロンプティング」「思考連鎖型プロンプティング」を通じて多様な推論パスを生成し、それらの中から最も整合的な回答を選び出すというものです。これによって、高度な問題解決が可能となります。

関連記事

「Few-shotプロンプティングって何?」「Few-shotプロンプティングの効果は?」そう思う方もいるのではないでしょうか。 Few-shotプロンプティングは生成AIを効果的に活用する方法の一つで、複雑なタスクに対応することが[…]

関連記事

「思考連鎖型プロンプティングって何?」「思考連鎖型プロンプティングの効果は?」そう思う方もいるのではないでしょうか。 思考連鎖型プロンプティングは生成AIを効果的に活用する方法の一つで、推論を要する複雑なタスクに対応することが可能で[…]

例文①:年齢の計算

一つ目の例文として、年齢の計算問題を解かせてみます。

入力文:

私の年齢が6歳のとき、妹は私の半分の年齢でした。現在、私は70歳です。妹は何歳ですか?

GPT-3.5の出力:

あなたが6歳の時に、妹はあなたの半分の年齢であったということから、妹の年齢は3歳です。現在、あなたが70歳であるので、妹はあなたの半分の年数を経過していると仮定すると、70歳の半分は35歳です。したがって、妹は35歳です。

誤った回答が出力されました。これは、計算の過程が与えられておらず、入力文では「妹は私の年齢の半分」という情報しか与えられていないためだと考えられます。

この問題を解決するには、例を提示します。Few-shotプロンプティングと、思考連鎖型プロンプティングを活用した中間の推論ステップ例を入力します。

入力文:

Q:果樹園には30本の桃の木があります。農家は今日、果樹園に桃の木を植える予定です。その後、40本の桃の木があります。農家は今日、何本の桃の木を植えましたか?
A:30本の桃の木から始めます。後で40本の桃の木があります。差は、彼らが植えた木の数でなければなりません。したがって、彼らは40-30 = 10本の桃の木を植えなければなりません。回答は10です。

Q:バイクラックに自転車が5台あり、さらに3台の自転車が到着した場合、バイクラックには何台の自転車がありますか?
A:バイクラックには既に5台の自転車があります。3台の自転車が到着しました。これで、自転車が5+3 = 8台あります。回答は8です。

Q:ジュリアは45個のクッキーを持っており、彼女の兄弟は55個のクッキーを持っています。彼らが50個食べた場合、彼らが残したピースの数は何ですか?
A:ジュリアは45個のクッキーを持っており、ジュリアの兄弟は55個のクッキーを持っていたことを意味します。つまり、もともとは45 + 55 = 100個のクッキーがありました。50個食べられました。したがって、合計で残るのは100-50 = 50個のクッキーです。回答は50です。

Q:アダムは35個のドーナツを持っていました。彼はマリーにいくつかのドーナツを与えました。今、アダムは20個のドーナツを持っています。アダムはマリーに何個のドーナツを与えましたか?
A:アダムは35個のドーナツを持っていました。今は20個しか持っていないので、残りはマリーに与えられたものです。彼がマリーに与えたドーナツの数は35-20 = 15個のドーナツです。回答は15です。

Q:トムは10個のレゴブロックを持っています。誕生日に、彼は両親からそれぞれ3個のレゴブロックをもらいました。今、彼は何個のレゴブロックを持っていますか?
A:彼は10個のレゴブロックを持っています。彼は母親から3個のレゴブロックをもらいました。したがって、10 + 3 = 13個のレゴブロックがあります。その後、父親から3個のレゴブロックが追加されたので、合計で13 + 3 = 16個のレゴブロックがあります。回答は16です。

Q:データセンターには15台のサーバーがあります。月曜日から金曜日まで、毎日4台のサーバーが追加されました。データセンターには現在何台のサーバーがありますか?
A:月曜日から金曜日までの日数は5日です。1日に4台のサーバーが追加されました。つまり、合計で5 * 4 = 20台のサーバーが追加されました。最初に15台のサーバーがありましたので、現在は15 + 20 = 35台のサーバーがあります。回答は35です。

Q:ダニエルは70個のテニスボールを持っています。火曜日に、彼は30個のテニスボールを失いました。水曜日に、さらに3個を失いました。水曜日の終わりには、彼は何個のテニスボールを持っていましたか?
A:ダニエルは最初に70個のボールを持っていました。火曜日に30個を失いましたので、その後40個のボールが残りました。水曜日に3個を失ったので、現在37個のボールがあります。回答は37です。

Q:エマは50ドル持っています。彼女は1つあたり5ドルのドーナツを7つ買いました。彼女が残したお金はいくらですか?
A:彼女は1つあたり5ドルのドーナツを7つ購入しました。これは彼女が35ドル(5*7)を支払ったことを意味します。彼女は最初に50ドルを持っていましたので、彼女が残したお金は50 - 35 = 15ドルです。回答は15です。

Q:私の年齢が6歳のとき、妹は私の半分の年齢でした。現在、私は70歳です。妹は何歳ですか?
A:

GPT-3.5の出力:

私の年齢が6歳のとき、妹は私の半分の年齢、つまり3歳でした。その後、私が70歳になったので、年齢の差は70歳 - 6歳 = 64歳です。したがって、妹の現在の年齢は3歳 + 64歳 = 67歳です。回答は67歳です。

6歳のときと現在の年齢との差を計算し、これを妹の年齢に足すことで正しい解答が出力されました。

例文②:お金の計算

次の例文として、お金の計算問題を解かせてみます。

入力文:

ジョセフがチョコを5個買って300円の袋に入れてもらったら、405円でした。チョコ1個の値段はいくらですか?

GPT-3.5の出力:

チョコレート1個の値段をx円とすると、ジョセフが5個のチョコレートを購入した合計金額は5x円です。購入後に袋に入れてもらった際に追加された費用は105円(405円 - 300円)です。

したがって、5x + 105 = 405という方程式が成り立ちます。この方程式を解くと、5x = 300となります。両辺を5で割ると、x = 60となります。

したがって、1個のチョコレートの値段は60円です。

チョコレートの値段と袋の値段との区別がつけられていない為、間違った答えも出力されてしまいます。

例文①と同様に、例を提示してからチョコ1個の値段を解かせました。

GPT-3.5の出力:

ジョセフがチョコを5個買って300円の袋に入れてもらった場合、合計金額が405円になります。袋の値段を考慮せずに、チョコの値段を求めるために、袋の値段を引きます。つまり、405円 - 300円 = 105円が5個のチョコの合計の値段です。したがって、チョコ1個の値段は105円 ÷ 5 = 21円です。回答は21円です。

合計金額から袋の値段を差し引くことができ、正しい解答が出力されました。

まとめ

今回PROMPTYでは、Self-Consistency(自己整合性)とは何か、例文を使ってその活用法を紹介しました。

Self-Consistency(自己整合性)を使って入力を改善することで正しい出力が得られることが分かりました。ぜひ今後のプロンプトエンジニアリングの知識習得に役立てていただければ幸いです。