- 「S式風のプロンプトの書き方が使えるかも?12」という説を目にして、実験してみました。
- 結果は、全く異なる構造のプロンプトを与えても、ほとんど同じ結果になってしまいました(GPT-4, Claude 3 Opus)。
- カッコをほとんど省いて「うまいこと」解釈しているようで、現状は修飾関係を明示するような用途では使えなさそうでした。
生成AIは、もっともらしく動作します。
だからこそ、うまくいくケースだけを与えて判断して、評価するのは危険ですね。
エラーチェックや境界条件を調査することが、プログラミング以上に大事だと思います。
もし、S式を解釈してくれるなら、日常会話がLISPにできるかも……、と思ったんだけどなぁ。
1. S式は文章構造を明確にする
わざわざカッコを使う意味があるなら、それは助詞による修飾関係を厳密できる場合だと思います(字数を減らすだけなら、空白によるキーワード列挙で済む)。
2つのS式風のプロンプトA, Bを用意します。
(((投げ方 (ボール 野球)) 練習) 方法)
(((野球 (ボール 方法)) 練習) 投げ方)
BのS式は、Aと区別して書かれています。
仮に「野球での、ボールにとっての方法で、練習を投げる方法」を意図したとします。
常識的には意味不明ですが、人間向けに言い換えれば「野球をしているとき、ボールの立場で練習を終わらせる方法は?」という意味とでもしましょう。
これについての ChatGPTの回答を比較します。
しかし、構造の違いにもかかわらず、ほとんど同じ回答を返しました。
- A:野球でのボールの投げ方を上達させるための練習方法について説明しましょう。…
- B:野球のボールの投げ方についての練習方法を説明しますね。…
2. プロンプトの文字数を削減したい
これは、Claude 3 Opusの場合でも同様です。
2つのS式プロンプトでの違いは誤差の範囲内でした。
キーワードを列挙しただけのプロンプトCとも比較しました。
いずれも大きな差は見られませんでした。
つまり、現時点ではS式である必要性はあまり感じることができません。
せっかく変態的な構文で書いても、ChatGPTには伝わらないのかぁ。
残念。
ただし、このアプローチのもう一つの目的は、「文字数削減(トークン数削減)」です。
多用するプロンプトはできるだけ圧縮しておきたい、という事情があるからです。
「JavaScriptライブラリをminifyしておく」みたいな感じですね。
というのも、同じようなプロンプトを使い回す場合、できるだけ短くしておいた方が効率的になるからです。
- APIから生成AIを使う場合、トークン数がコストになる
- 入力テキストが長くなるほど言語モデルの性能が低下する
生成AIを利用するサービスを構築する場合には、この差は大きくなります。
大規模言語モデルの推論能力についての研究6では、入力が長くなるほどモデルの性能が大きく低下することが知られています。
次単語予測の性能が高くても、長い入力での推論タスクの性能が高いとは言えないことがわかりました。
また、入力長を増加させると、言語モデルが具体的な指示に従わなくなったり、関連情報を取り込む能力が低下したりするなどの障害モードが特定されました。
3. セマンティクスが解釈の手がかり
ところで、身も蓋もない話ですが、そもそも自然言語処理系は S式の解釈を期待されていません。
- プログラミング言語処理系は、字句解析・構文解析・意味解析を経て、コード生成をする流れになっています。
- 一方、自然言語処理系(とくにトランスフォーマー)は、トークン化・ベクトル化・ニューラルネットワークによって、回答生成をする仕組みです。
つまり、自然言語処理では、仕組み上、入力ミスもありうる前提で「ありそうな意図」に補完して解釈します。
確率・統計的な処理により、「常識的に答える」のが生成AIの流儀です。
そもそも AのS式だって、意味を解釈できるのも「常識」からです。
言葉の構造(syntax)ではなく、意味内容(semantics)に引きずられて解釈しているのです。
特殊なプロンプトを厳密に伝えたいなら、むしろ丁寧に言語化した方がよいです。
明確に与えれば意味不明なプロンプトでも、それへの回答を試みてくれます。
何にせよ、いろいろ試せるのが、生成AIの面白さですよね。
どんどん、無茶振りしてみましょう。
3-1. 「〜っぽく振る舞う」ように強化されている
とはいえ、人間の場合、自然言語のS式を渡されたら、
「何がいいたいの?」
と聞き直すのが、一般的な反応かもしれません。
つまり、意味がわからなければ「わからない」ことを意思表示できます。
おそらく生成AIも質問意図を掴みかねているとは思いますが、強化学習の結果として、「とりあえずは回答する」ことを強いられている(強化)のかもしれません。
「無知の知」も知性なんだよね。
この辺は将来的にどうやって折り合いつけるんだろうね。
(補足)
- 赤澤仁士さん: 「生成AI、プロンプトは文章じゃなくていいんだなぁ (なんかLispっぽいですね) / X–
- 赤澤仁士さん: 「いいな、このプロンプトの書き方 GPT-4でも使えた / X–
- ニケちゃん@美少女AIエージェントさん / X
- 赤澤仁士さん / X
- 石川陽太 Yota Ishikawaさん/ X
- Same Task, More Tokens: the Impact of Input Length on the Reasoning Performance of Large Language Models