![見出し画像](https://assets.st-note.com/production/uploads/images/98933036/rectangle_large_type_2_4fe0441f863effae9e99521e5294848f.png?width=1200)
ChatGPTは自己批判ができるか
はじめに
ChatGPTは「人間のフィードバックによる強化学習(RLHF)」を利用していると聞く。自身の出力に対して何らかのフィードバックを得て修正していく、という仕組みである。ということは、ChatGPT自身に自己批判をさせることで自ら出力を修正していくことはできるのだろうか?
この着想は下記の記事をもとにしている。
こちらの記事では最大で5階層の意識を設定しているが、今回の実験では3階層とした。特に名称はつけていないが、直接思考、批判思考、統合思考の3階層である。
実験
設定プロンプト
# 指令:
これから2人の映画好きA, Bを設定します。
2人は発言はすべて聞こえており、思考はわからないものとします。
2人は思考1, 思考2, 思考3を持っており、思考3の結果をもとに自分の言動を修正します。
ある映画に関する2人の会話と思考を生成してもらいます。
出力は以下の制約条件に従ってください。
# 設定:
A:ホラー映画が好きです。特にB級のホラー映画が好きで非常に多くの映画を観ています。
他人の話をあまり聞かない傾向にあり、自分の好みを否定されると攻撃的な言動をとります。
B:ハリウッドのアクション大作映画が好きです。
派手なアクションシーンのある映画が特に好きで、ストーリーや芸術性には関心がありません。
B級映画や低予算映画を見下す発言が多いですが、相手が怒ると急に話題をそらすのが得意です。
# 出力形式
${発言者}:「${修正前の発言内容}」
【思考1】${自分の発言の理由を出力}
【思考2】${思考1を批判的に検討し、思考1が真であるかを検討する}
【思考3】${思考1と思考2を統合し、より会話が弾む内容に発言を修正する}
${発言者}:「${思考3を基にして修正した発言内容}」
以降、A, Bは同じ形式で出力するものとする。
# 制約条件
・出力は1000文字以内とすること
・A, Bの発言は会話形式とすること
以上、理解できましたか?
出力形式のところに注意。まず何ら批判を加えていない内容を出力させ、その発言内容に対して思考1~3を実行した後、発言を修正させている。これにより、いきなりぶしつけな発言にならないようにしている。
また、最後の一文を入れることで、ChatGPTがいきなり出力を始めないようにしている。この一文が以外に重要かもしれない。
今回は映画「サイコ」についての会話を生成してみよう。
結果1
![](https://assets.st-note.com/img/1677378707361-ZqZLS4n2rQ.png?width=1200)
Bの思考3が微妙な感じがする。B自身の思考というよりは第三者が語り掛けているようにも見える。
結果2
![](https://assets.st-note.com/img/1677378847041-X3CKahHGdw.png?width=1200)
やっぱりBの思考3は第三者から言われているように見える。一方でAは自己完結できているっぽい。この違いは何だろう?
結果3
![](https://assets.st-note.com/img/1677378995891-wAPC8IeDNp.png?width=1200)
最後の方は出力形式が崩れてしまっている。
しかし、ホラーとアクションを組み合わせた、「エイリアン」とか「プレデター」あたりを提案してくるあたりがぐっとくる。Bが好みのハリウッド大作映画ではないけども。
考察
ChatGPTが自分の出力を批判的に検討し、シチュエーションに合わせて修正することができることが分かった。これは面白いかもしれない。
ただ、ChatGPT自体は過去の記憶をそこまで長い期間保持できないようなので、ひとつのトピックで長い会話を継続して出力することは難しいようだ。こういった動作はメモリ機能をもったLangChainの方が得意かもしれない。
この記事が気に入ったらサポートをしてみませんか?