【スポンサーリンク】

ChatGPTがS式を解釈する?(自然言語処理と構文解析)

ChatGPTがS式を解釈する?(自然言語処理と構文解析)
  • 「S式風のプロンプトの書き方が使えるかも?12」という説を目にして、実験してみました。
  • 結果は、全く異なる構造のプロンプトを与えても、ほとんど同じ結果になってしまいました(GPT-4, Claude 3 Opus)。
  • カッコをほとんど省いて「うまいこと」解釈しているようで、現状は修飾関係を明示するような用途では使えなさそうでした。
ChatGPTがS式を解釈する?(自然言語処理と構文解析)

生成AIは、もっともらしく動作します。
だからこそ、うまくいくケースだけを与えて判断して、評価するのは危険ですね。

エラーチェックや境界条件を調査することが、プログラミング以上に大事だと思います。

ChatGPTがS式を解釈する?(自然言語処理と構文解析)

もし、S式を解釈してくれるなら、日常会話がLISPにできるかも……、と思ったんだけどなぁ。

\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. S式は文章構造を明確にする

わざわざカッコを使う意味があるなら、それは助詞による修飾関係を厳密できる場合だと思います(字数を減らすだけなら、空白によるキーワード列挙で済む)。

2つのS式風のプロンプトA, Bを用意します。

(((投げ方 (ボール 野球)) 練習) 方法)
(((野球 (ボール 方法)) 練習) 投げ方)

BのS式は、Aと区別して書かれています。

仮に「野球での、ボールにとっての方法で、練習を投げる方法」を意図したとします。
常識的には意味不明ですが、人間向けに言い換えれば「野球をしているとき、ボールの立場で練習を終わらせる方法は?」という意味とでもしましょう。

これについての ChatGPTの回答を比較します。

S式は文章構造を明確にする

しかし、構造の違いにもかかわらず、ほとんど同じ回答を返しました。

  • A:野球でのボールの投げ方を上達させるための練習方法について説明しましょう。…
  • B:野球のボールの投げ方についての練習方法を説明しますね。…

2. プロンプトの文字数を削減したい

これは、Claude 3 Opusの場合でも同様です。
2つのS式プロンプトでの違いは誤差の範囲内でした。

キーワードを列挙しただけのプロンプトCとも比較しました。

プロンプトの文字数を削減したい

いずれも大きな差は見られませんでした。
つまり、現時点ではS式である必要性はあまり感じることができません。

S式・LISPっぽいプロンプトへの懐疑的な意見
  • GPT-4ならこの括弧なくてもこれくらいの回答しない??3
  • 括弧でくくっていくと結果的に意図した結果をもたらす単語の並び方になっている模様
    括弧の有無自体はあまり影響を与えないっぽくて、 単語と単語の並び方の影響が強そう4
  • 人間にとってLispは可読性が低いので、人間の言葉から学習したLLMも同じで理解しずらいのではないだろうか。
    なので、単に意味の順番に単語を並べていく方が、圧縮率および復元精度はともに高いかもしれない5
プロンプトの文字数を削減したい

せっかく変態的な構文で書いても、ChatGPTには伝わらないのかぁ。
残念。

ただし、このアプローチのもう一つの目的は、「文字数削減(トークン数削減)」です。
多用するプロンプトはできるだけ圧縮しておきたい、という事情があるからです。

プロンプトの文字数を削減したい

「JavaScriptライブラリをminifyしておく」みたいな感じですね。

というのも、同じようなプロンプトを使い回す場合、できるだけ短くしておいた方が効率的になるからです。

  • APIから生成AIを使う場合、トークン数がコストになる
  • 入力テキストが長くなるほど言語モデルの性能が低下する

生成AIを利用するサービスを構築する場合には、この差は大きくなります。

Same Task, More Tokens

大規模言語モデルの推論能力についての研究6では、入力が長くなるほどモデルの性能が大きく低下することが知られています。
次単語予測の性能が高くても、長い入力での推論タスクの性能が高いとは言えないことがわかりました。
また、入力長を増加させると、言語モデルが具体的な指示に従わなくなったり、関連情報を取り込む能力が低下したりするなどの障害モードが特定されました。

3. セマンティクスが解釈の手がかり

ところで、身も蓋もない話ですが、そもそも自然言語処理系は S式の解釈を期待されていません。

  • プログラミング言語処理系は、字句解析・構文解析・意味解析を経て、コード生成をする流れになっています。
  • 一方、自然言語処理系(とくにトランスフォーマー)は、トークン化・ベクトル化・ニューラルネットワークによって、回答生成をする仕組みです。

つまり、自然言語処理では、仕組み上、入力ミスもありうる前提で「ありそうな意図」に補完して解釈します。
確率・統計的な処理により、「常識的に答える」のが生成AIの流儀です。

セマンティクスが解釈の手がかり

そもそも AのS式だって、意味を解釈できるのも「常識」からです。

言葉の構造(syntax)ではなく、意味内容(semantics)に引きずられて解釈しているのです。

特殊なプロンプトを厳密に伝えたいなら、むしろ丁寧に言語化した方がよいです。

セマンティクスが解釈の手がかり

明確に与えれば意味不明なプロンプトでも、それへの回答を試みてくれます。

セマンティクスが解釈の手がかり

何にせよ、いろいろ試せるのが、生成AIの面白さですよね。

どんどん、無茶振りしてみましょう。

3-1. 「〜っぽく振る舞う」ように強化されている

とはいえ、人間の場合、自然言語のS式を渡されたら、
「何がいいたいの?」
と聞き直すのが、一般的な反応かもしれません。

つまり、意味がわからなければ「わからない」ことを意思表示できます。

おそらく生成AIも質問意図を掴みかねているとは思いますが、強化学習の結果として、「とりあえずは回答する」ことを強いられている(強化)のかもしれません。

「〜っぽく振る舞う」ように強化されている

「無知の知」も知性なんだよね。
この辺は将来的にどうやって折り合いつけるんだろうね。

こちらもどうぞ。
Transformerモデルと「自然言語」(GPTが「スマホの次」だった)
Transformerモデルと「自然言語」(GPTが「スマホの次」だった)
Transformerがもっと強力になったら、個々のアプリもいらなくなるかも。 たとえば、時間を聞いて、その場で時計盤の画像を生成して見せくれるなら、極端な話 時計も時計アプリもいらなくなっちゃう。 すでに、そういう次元じゃないかもしれないけど。 あとは、電気代の問題ですね。 Transformerモデルがすごいのは、「自己注意機構」でテキスト内の単語間関係を分析できるようになったこと。旧来のモデルと比べ、効率的に文脈全体を把握できるようになったのが成長の背景です。 翻訳や要...

Claudeという生成AI(調べものの回答では本当っぽい捏造を含むので注意)
Claudeという生成AI(調べものの回答では本当っぽい捏造を含むので注意)
Claudeは、ChatGPTよりも「流暢な日本語」を生成するAIで、クリエイティブな作業や長文の生成に向いています。 長い複雑な文章を与えても、かなり精度よく要約や回答させることができます。 しかし、前提なしに調べものの回答をさせると、いかにも本物っぽい事例が架空のものだったりするので、受け売りは要注意です。 Claude 3が話題なので気になる、という話。 調べものに使うと足元をすくわれそうですが、要約はとても自然でわかりやすいです。自然言語処理にはいろんな用途があるので...

生成AIは「正解のない問題」を聞く道具(検索との違い)
生成AIは「正解のない問題」を聞く道具(検索との違い)
代表的な生成AIとしては、ChatGPT、Copilot、Geminiなどがあります。 すごく当たり前ですが、生成AIは「生成」が必要な作業に役立ちます。 生成AIを「調べもの」に使うと、「遅くて」「的外れ」な回答が多いと感じるかもしれません。しかし、対話を伝え続けると「文脈」が共有され、徐々に意図に沿った回答が得られるようになります。 生成AIは、「正解のない問題」が得意です。反対に「正解がある問題」を調べるには従来の検索エンジンの方が速い面も。 「生成AI」というと、「な...

なるべくChatGPTの不正確な回答に気づくコツは?
なるべくChatGPTの不正確な回答に気づくコツは?
ChatGPTの回答との付き合い方は、インターネット情報と一緒です。つねに誤情報の可能性を念頭において、吟味する必要があります。 とくに、ChatGPTは、暗黙のうちに「答えがある」と考えて回答するので、未知のことへの回答は推測が含まれています。 技術は真新しいけど、リテラシーの基本は一緒だね。 本当に答えがある質問なの?(生成:ジェネレーティブ) ChatGPTに質問するときには、注意しなくてはいけない性質があります。それは、ChatGPTは「質問者の言うことを否定しない」...

MacにEmacsをインストールした 【パッケージ管理システムHomebrew】
MacにEmacsをインストールした 【パッケージ管理システムHomebrew】
MacにEmacsをインストールするには、まずパッケージ管理システムのHomebrewをインストールします。 次に、ターミナルから「brew install emacs」コマンドを実行することで、Emacsをインストールできます。 これで、「emacs」コマンドを使ってEmacsを起動し、テキスト編集を始めることができるようになります。 MacにEmacsをインストールする2つの準備 macOS 10.15 Catalinaには、はじめからEmacsが入っているわけではありま...

ChatGPTで擬似コードを計算させたら「空気を読む」だけだった【言語モデルはプログラム処理系ではない】(GPT-3)
ChatGPTで擬似コードを計算させたら「空気を読む」だけだった【言語モデルはプログラム処理系ではない】(GPT-3)
ChatGPTに擬似コードを与えると、解釈して実行結果を表示できるようです。 しかし、ちょっと試してみると その「ハリボテ感」にも気づかされます。一見、本当っぽい出力なのですが、全く正しくないのです。 これは「言語モデル」のもつ、必然の性質です。擬似コードの演算結果に見えるものは、「演算」しているわけではありません。これまでの文書データからの「推測」を言っているだけなのです。 けして万能ではないんですよね。 用途に応じて使い分けることが大事。 環境 ChatGPT 3 (20...

(補足)

  1. 赤澤仁士さん: 「生成AI、プロンプトは文章じゃなくていいんだなぁ (なんかLispっぽいですね) / X
  2. 赤澤仁士さん: 「いいな、このプロンプトの書き方 GPT-4でも使えた / X
  3. ニケちゃん@美少女AIエージェントさん / X
  4. 赤澤仁士さん / X
  5. 石川陽太 Yota Ishikawaさん/ X
  6. Same Task, More Tokens: the Impact of Input Length on the Reasoning Performance of Large Language Models
QRコードを読み込むと、関連記事を確認できます。

ChatGPTがS式を解釈する?(自然言語処理と構文解析)
【スポンサーリンク】
タイトルとURLをコピーしました