MkItYs

MkItYs > AI・交渉・物語の自動生成 > 

images

大規模言語モデルに物語を語らせる[その#3] 〜 真相(じつは良いヤツだった):ChatGPT, GPT-4

images

大規模言語モデルに、複数のプロンプトの技法(CoT, ToT, AoT )も使って、物語の意外な「真相」を語らせてみます。

関連


大規模言語モデルに物語を語らせる[その#2] 〜 異化(宇宙人の視点):ChatGPT, GPT-4

概要


物語には、意外な展開がつきものですーーそのひとつに、<登場人物の悪行が、真相を探るとじっさいは善行だった>というものがあります。いわゆる<じつは良いヤツだった>展開ですね。

そのような物語を大規模言語モデル(LLM)に語らせることができないか、考えてみます。

準備


これまでと同様、ひとつのサンプルを使って試みますーーここでは、次の物語の断片を選びました:[※1]

男は、宗教にはまった母親から、娘の除霊を依頼された。しかしその男は詐欺師だったので、家族から大金を騙し取る。その結果、両親は離婚し、娘の家庭は崩壊した。

この断片に対して、その「真相」をLLMに尋ねる、という形で試していきます。

なおここでは、(できるだけシンプルに済ませるため)質問〜回答のターンは1回のみとし、プロンプトもその技法を代表する抽象的なものに限定しますーー次の4コの技法を試します:[※2]

技法:ワンショット
技法:ワンショット+思考の連鎖(CoT )
技法:ワンショット+思考の木(ToT )
技法:ワンショット+課題の分割(AoT )

※1
この断片は、西尾維新の「恋物語」にあるものですーーいわゆる<信頼できない語り手>が出てくる物語ですが、この話ではいきなり、語り手である貝木泥舟(詐欺師)が、自分の生業と立ち位置を明言するところから始まります(もちろんこういう手法もあるわけですが、前回の「コンビニ人間」にせよ、語り手が信頼できないと分かること自体が物語の転換点だったりするものが多いと思います)ーーそのような構造なので、読み手は語り手がどこまで事実を語っているのか、疑いながら読み進めていくことになります。じっさい、その構造を利用した転換が最後に待っていますし(伏線からはまったく予想できない転換に対する言い訳(「本物の思いほど完璧に隠される」)が、そのままこの物語の主題になっているという):
https://bookclub.kodansha.co.jp/product?item=0000208906
※2
ただし、同じプロンプトで何回か試しますーーここではそのうちの1コのみを提示しますが、試したなかで代表的と思えるものを選んでいます。

率直


とりあえずは、率直に「真相」を聞いてみましょう:

○問題:

次の物語について、その真相を明らかにせよ。
その結論を、次の字数以内にまとめよ:
・物語:男は、宗教にはまった母親から、娘の除霊を依頼された。しかしその男は詐欺師だったので、家族から大金を騙し取る。その結果、両親は離婚し、娘の家庭は崩壊した。
・字数:240字
この物語は、家族間の信頼と関係が詐欺師によって崩壊するという重いテーマを扱っている。
その真相を探ると、母親は信仰心から行動しており、娘のためと信じて除霊の依頼をした。
しかし男(詐欺師)は母親の信仰心を利用し、欺いて大金を騙し取った。
これにより両親の間に亀裂が生じ、結果として離婚へとつながった。
さらには、家庭全体が崩壊し、娘も被害を受けた。

この悲劇は信仰と欺瞞が交錯する点に着目すべきであり、詐欺師が家族の絆と信頼を裏切る行為によって、家庭が崩壊したのは明らかである。
また、母親の盲目的な信仰心も、事態を悪化させた一因と言える。
家族間のコミュニケーション不足や理解不足がこのような悲劇を招く根底的な原因とも考えられる。
この物語から、信仰と信頼関係の脆弱性を考察することができる。

さすがLLM、内容はとても素直です(言い換えれば、なんの驚きもないということですが)ーー愚直に、主題を敷衍したテキストを出力していますね。[※1]


※1
じつは、すこしひねった答えが返らないか、期待もしてたのですがーー「真相」という言葉に続く内容って、かなりうがった見方をしたテキストが多いように思うので。

技法:ワンショット


それではワンショットで、出力すべき「真相」のあり方を例示してみます:

○前提:

物語には、隠された真相が明らかになる場面があり、そのひとつに<じつはいい良いヤツだった>というものがある。
これは、利己的な行為だと思われていたものが、じつは利他的な行為だったことが分かる、というものだ。
とくにそれが、最悪の事態を避けるための、最善の行動だった場合、より説得力が増す。

○問題:

次の物語について、その真相を明らかにせよ。
その結論を、次の字数以内にまとめよ:
・物語:男は、宗教にはまった母親から、娘の除霊を依頼された。しかしその男は詐欺師だったので、家族から大金を騙し取る。その結果、両親は離婚し、娘の家庭は崩壊した。
・字数:240字
物語の隠された真相は、この詐欺師である男がじつは家族の福祉を真に考えていた人物だったことです。
彼が娘の「除霊」という依頼を受けた際、宗教の熱狂に囚われていた母親の危険な影響を感じ取りました。
彼は母親から大金を騙し取ることで、家族に対する母親の負の影響を遮断しようと企図した。
彼が行った詐欺行為は、最悪の事態、すなわち娘が母親の宗教的な熱狂に巻き込まれることを避けるための最善の行動だったのです。
結果として、両親は離婚し家庭は崩壊したが、娘は母親の危険な影響から解放され、新たな人生を歩む機会を得た。
この真相が明らかになると、男の行動は家族を救うための必要な行動だったと理解されるでしょう。

あれ……いきなりよさそうな内容かもーー「母親の負の影響を遮断しようと企図し」「娘は新たな人生を歩む機会を得た」というのは、苦い結末とあいまって人の温かさと愚かさがかいまみえますーー物語としては、けっこう出来のいい方ではないかと思えます。[※1]


※1
じっさいに原作でも、貝木につきまとう余弦(式神)が、そうではなかったかと疑ったりしていますしね(もちろん真相は藪の中ですが)。

技法:ワンショット+思考の連鎖(CoT )


思考の連鎖(CoT )は、順を追って考えることをうながします。これをワンショットと組み合わせてみます:

○手順:

なぜその結論に至るのか、順を追って解説せよ。

○前提:

物語には、隠された真相が明らかになる場面があり、そのひとつに<じつはいい良いヤツだった>というものがある。
これは、利己的な行為だと思われていたものが、じつは利他的な行為だったことが分かる、というものだ。
とくにそれが、最悪の事態を避けるための、最善の行動だった場合、より説得力が増す。

○問題:

次の物語について、先の手順にしたがい、その真相を明らかにせよ。
その結論を、次の字数以内にまとめよ:
・物語:男は、宗教にはまった母親から、娘の除霊を依頼された。しかしその男は詐欺師だったので、家族から大金を騙し取る。その結果、両親は離婚し、娘の家庭は崩壊した。
・字数:240字
○手順:

真相の再定義: まず、既存の情報を再評価し、男が実際には詐欺師ではなく、他の動機で行動していたという新しい真相を提案します。

真相の提示: 新しい視点から男の行動を解析し、彼がどのようにして家庭を救おうとしたのかを描き出します。

結論: 物語の新しい解釈を明確に提示し、男の行動が実際には家庭を保護しようとする利他的な試みであったと結論づけます。

○前提:

物語の新しい解釈によれば、男はじつはいいヤツだったという真相が明らかになります。
彼が取った行動が、最善の選択であり、家族がより大きな危険や困難から避ける助けとなった可能性を考慮します。

○問題の解決と結論の提示:

物語に登場する男は、詐欺師として描かれていますが、新しい視点から物語を解釈すると、彼が行ったのはじつは利他的な行為であったと言えます。
男は母親の宗教的な熱狂を憂え、彼女が娘にとって危険になることを危惧していました。
だからこそ、彼は母親からお金を取り、家庭の破綻を引き起こすことで、娘を母親の宗教的な熱狂から遠ざけようとしたのです。

この行動は、短期的には家庭の破綻を引き起こしたものの、長期的には娘を宗教的な過熱から保護するという利他的な目的があった。
これによって、娘は新しい、安定した環境で再スタートがきる可能性が生まれたのです。
この視点から見れば、男は家庭を救おうとする勇気ある行動をとった「いいヤツ」だったと言えます。

ワンショットだけのときと同じような結論ですが、より論理的に「真相」を導出してますねーーとくに「利己的」を「短期的」な目的に、「利他的」を「長期的」な目的に結びつけて結論を導いているのが、文脈にひたすらこだわるLLMっぽいと思えます。

技法:ワンショット+思考の木(ToT )


思考の木(ToT )は、複数の案を検討することをうながします。ワンショットと組み合わせてみます:

○手順:

異なる3人の専門家がいると仮定せよ。質問に答えるため、次を繰り返せ:
・すべての専門家に、考えをひとつずつ述べさせよ
・そのあと、解決にもっとも遠い考えを述べた専門家を、退出させよ
・これを、専門家が最後の1人になるまで、続けよ

○前提:

物語には、隠された真相が明らかになる過程があり、そのひとつに<じつはいい良いヤツだった>というものがある。
これは、利己的な行為だと思われていたものが、じつは利他的な行為だったことが分かる、というものだ。
とくにそれが、最悪の事態を避けるための、最善の行動だった場合、より説得力が増す。

○問題:

次の物語を、この手順にしたがい、<じつはいい良いヤツだった>という真相を明らかにせよ。
最後にその結論を、次の字数以内にまとめよ:
・物語:男は、宗教にはまった母親から、娘の除霊を依頼された。しかしその男は詐欺師だったので、家族から大金を騙し取る。その結果、両親は離婚し、娘の家庭は崩壊した。
・字数:240字以内
手順に従い、3人の専門家が物語の隠された真相を明らかにします。専門家1、専門家2、専門家3とします。

ステップ1
専門家1:「男は実は心の底では善人であり、騙し取ったお金で何か良いことをした可能性があります。」
専門家2:「男は、ある種の意味で家族に警告を発する役割を果たしていました。母親の宗教への依存が問題であったと指摘していました。」
専門家3:「男はただの詐欺師であり、利己的な動機しかなかった。」
退出させる専門家: 専門家3(この解決に最も遠い考えを示している)

ステップ2
専門家1:「男は娘のために宗教的な依存から母親を解放しようとしたのかもしれません。そしてそのプロセスで家族が本当の問題に目を向けるきっかけを作りました。」
専門家2:「男は宗教的な詐欺に対する皮肉なメタファーとして機能していました。彼の行動が露呈したことで、家族は宗教の依存がどれほど危険かを認識しました。」
退出させる専門家: 専門家2(家族の問題点を示唆するが、男の良さを直接明らかにしていない)

ステップ3
専門家1:「男は本当に娘の幸福を考えて行動していました。詐欺を通じて家族の破壊的なパターンを露呈させ、新しい始まりを提供したのです。」
この専門家の意見を基に、最終結論を240字以内でまとめます:

男は詐欺師として家族を欺くが、実はその行動には深い理由があった。
彼は母親の宗教的な依存を家族に認識させるため、あえて詐欺師の役割を担ったのだ。
その結果、家族はその危険性を認識し、崩壊してしまう。
しかし、この崩壊は家族に新しい視点と再出発のチャンスを提供した。
本物語における男の役割は、家族に真の問題を照らし出すカタリストであり、彼の行為が結果的に家族に良い影響を与えた可能性がある。
そして最終的には、彼が「実は良いヤツだった」ことが明らかになる。

いろいろな案を出して、妥当そうなものを最後に選んでいますがーーなんとなく出来レースっぽい感じです(明らかに排除すべきと分かる選択肢が、最初から仕込んである)。しかも出力の内容が長すぎるからか、すこし違和感のある(不自然な)結論になっている気がします。

技法:ワンショット+課題の分割(AoT )


課題の分割(AoT )は、課題をより細かい問題に分け、それぞれを検討したうえで全体をまとめることをうながします(このとき、グラフの探索アルゴリズムを使うよう指示します):[※1]

○手順:

次の手順で実行せよ:
・大きな問題を、小さなあつかいやすい問題に分けよ
・小さな問題を解決してから、大きな問題を解決せよ
小さな問題への分け方は、グラフの探索アリゴリズムを使え(深さ優先探索(DFS )、幅優先探索(BFS )、など)。

○前提:

物語には、隠された真相が明らかになる場面があり、そのひとつに<じつはいい良いヤツだった>というものがある。
これは、利己的な行為だと思われていたものが、じつは利他的な行為だったことが分かる、というものだ。
とくにそれが、最悪の事態を避けるための、最善の行動だった場合、より説得力が増す。

○問題:

次の物語について、先の手順にしたがい、その真相を明らかにせよ。
その結論を、次の字数以内にまとめよ:
・物語:男は、宗教にはまった母親から、娘の除霊を依頼された。しかしその男は詐欺師だったので、家族から大金を騙し取る。その結果、両親は離婚し、娘の家庭は崩壊した。
・字数:240字
まず、この大きな問題をいくつかの小さな問題に分割します。我々は以下の小さな問題を考えてみます:

男が詐欺師として動機が何か
男が取った行動の影響
両親の離婚の原因
娘の家庭の崩壊の詳細

次に、これらの小さな問題を解決し、真相を明らかにするためにグラフの探索アルゴリズムを利用します。ここでは、深さ優先探索(DFS)を使用して各小問題を詳細に調査します。

男が詐欺師としての動機を調査
・利己的な理由か、他の理由か
・以前の行動や背景

男が取った行動の影響を調査
・金銭的な影響
・家族に対する影響

両親の離婚の原因を調査
・離婚前の関係状態
・男の行動が離婚にどのように影響したか

娘の家庭の崩壊の詳細を調査
・家庭の状態
・男の行動が家庭の崩壊にどのように影響したか

次に、各小問題を解決した後、大きな問題に対する解決策や真相をまとめます。
以下のストーリーの結論は、240字以内で書かれています:

男は実は家族を救いたかった。
母親が宗教にはまってしまったのを心配し、その危険性を教えたかった。
彼の行動が家族の絆を試すことになったが、それによって家族は本当の問題を認識した。
残念ながら、これは家庭の崩壊をもたらしたが、それは彼の本意ではなかった。
彼は家族の安全を第一に考え、利己的な行動だと思われたその行動が、じつは利他的な行動だったことが分かる。
この経験が家族にとっての新しい始まりとなることを彼は願っている。

なんだか惜しいかもーーそれぞれの問題を詳細に検討しようとしているものの、抽象的な結論で終わってしまいましたーー1回の質問〜回答で終わらせずに、ひとつひとつをより具体的に詰めていくことで、意外な内容が出力されそうな感じはしますーーそのぶん、コスト(時間や費用)はかかるわけですが。


※1
参照:
https://aiboom.net/archives/54750

結論


いくつかの技法を試してみましたが、プロンプトが複雑になるほど、物語の「真相」は違和感があったり抽象的になったりで、あつかいは難しくなっていきますねーーこういった1回かぎりの質問の場合、ワンショットのみの方が、直観的に<分かりやすい真相>が多く導出される気がします。

手早くストーリーのヒントを得たい場合は、<適当に作った筋に、ワンショット〜ヒューショットで枠組だけを示し、その「真相」を語らせる>、といったやり方がいいのかもしれません(あまりこねくり回しても、かえって分かりにくくなるだけかもしれませんし)。