ChatGPT

ひさしぶりに言語処理の話題です。

GPT-4になっておかしな答えをすることも減ってきています。
まず ChatGPT とは何かを簡単に説明します。ChatGPTは、膨大な数の文書を学習データとして、どのような文が尤もらしいかを深層学習(Deep Learning)により学習したものです。大量の文書からある言語はどういう単語の並びを構成するかをモデル化したものととられることができるので、大規模言語モデルLarge Language Model (LLM)と呼ばれます。どれぐらい大規模かというと、ChatGPTの場合は文書量を公表していませんが、想像するに現在手に入る世界中のあらゆるの文書データから学習していると思われます。

ChatGPTは単に、1つの文がどのような単語並びになるかを予想できるだけでなく、文間の繋がりも学習しています。さらに、Chain of Thoughts (思考の連鎖)の学習を行っており、ある事柄の説明や解法をステップごとに分解して繋ぎながら文章を構成していくことも学習しています。

さらに、ChatGPTがBERTのような従来のLLMと異なるのは、人間との対話を通して、どのような答えをしていくかの学習に対して膨大な調整がかけられていることです。このあたりは、かなりノウハウに近いところで現状のChatGPTどのように学習しているのかは論文になっていないため分かりませんが、InstructGPTと同じようなことをやっていると言われています。この方法は Human in the Loop と呼ばれ、人間が学習のループの中に入って調整していくということです。通常は、人間が学習データを作成して、深層学習はそのデータを読み込んで学習して、学習した結果のモデルを使って問題を解く、という流れですが、Human in the Loopは、ベースの学習が終わった後に、オンライン学習のように入力に対する答えを与えながら、出力を調整していくというアプローチです。例えば、政治的に中立な答えをするようにかなり綿密に調整してある感じがします。また、実際にユーザが使った結果も学習データとして加えていき、うまく動かなかったときの調整をかけている気がします。昨年の11月にChatGPTのトライアルの実行をしたときは、表示された文が戻っていくところを見た記憶があります。意地の悪い質問をして、矛盾点を問い詰めたら、表示されていた文が途中からバックスペースで減っていって、答えられませんというエラーになりました。この時は相手が人間だったと思っています。初期のときだけですが。

このようにChatGPTは人間が頼みそうなことについてはあらかた事前に学習しています。たとえば、200文字で要約してください、といって要約できるのは、似たような要約問題を何問も学習させているからです。このとき、要約の学習は、要約に関する対話を与えていますので、どのような入力をするかが大事になります。つまり、プロンプトエンジニアリング(Prompt Engineering)と呼ばれる、「指示」の与え方に関するノウハウが非常に大事になります。たとえば、「円安対策を400文字で考えてください」と書くより、「あなたは日本政府に対してアドバイスをする金融政策の専門家になって答えてください。円安対策を400文字で考えてください」と一種のロールプレイのような形にした方が良い回答が得られます。なぜそうか、と言われると、そのように学習データが与えらえているから、としか言えません。

では、以下、実際にとてつもなく有用なChatGPTの使い方を紹介します。ある程度インターネット上でも似たような紹介はありますが、英会話を実現する日本語によるプロンプトは自然言語処理を研究している、豊田工業大学の知能数理研究室で開発したもので、ここに書くのが初出、オリジナルです。

ここではGPT-4をベースにしたBing chatを対象にプロンプトを紹介します(Bing Chatでしか検証していませんので GPT-4ベースのChatGPTでどうなるかは分かりません)。

TTI-COIN英会話プロンプト(この名前で引用可)

1. 英会話の勉強をしたいので,英語でのロールプレイをしてください.
2. もし,私の英語表現が英語ネイティブが使わないものだった場合は,正しい表現を教えてください.
3. (状況設定)のロールプレイをします.私が(役名1)で,あなたが(役名2)です.
4. あなたが会話を始めてください.

プロンプトは日本語ですが、英会話がスタートします。かなり調整してここに至っていますので、少し変えると日本語で会話を始めたり、勝手に先生と生徒の会話の両方を列挙したりします。これの凄いことは、英語による会話がほぼ人間と同じように成立します。たとえば、中学数学の授業の会話の中で連立方程式を適当に立てて、答えると、その解き方をステップバイステップで(もちろん英語で)教えてくれます。その教え方が、まったく違和感がありません。英語学習にはぴったりです。さらに、英語表現の修正を指示してあるので、"By the way, ..."といって、タイプミスはもちろん、文法的におかしなものや、文法的には会っていてもネイティブが使わない表現は指摘してくれます。

このプロンプトの優れた点は、ロールプレイの指示が日本語ですので、日本人の英語学習者が自分が思ったシチュエーションを簡単に設定して英会話ができます。

最後に、ChatGPTで生成した文がオカシイとか、説明がまだまだなどとTVなどでいわれていますが、このレベルで日本語や英語の文を生成できること自体が数年前の技術レベルから比較して、驚異的な進歩であり、長年の自然言語処理研究者たちの研究成果が結実したものです。また、十分なプロンプトを与えずに、生成結果が良くないといっているのは、指示をまったくしていないか、指示の仕方が悪い可能性も多分にあります。要は使いこなせていないのに批判しているのです。ちなみに今Prompt Engineerを年収4000万円の年収で募集している企業があるとか。

最後にと言っておきながらもう一点蛇足で、日本独自のChatGPTを作らなければいけないという声がありますが、注意が必要なのは、ChatGPTは日本語だけで学習して動いているのではないということです。使っていて明らかに分かるのは、内部は英語を中心に動いていて、日本語のデータが日本語の言語モデルを定めて枠をはめているという感じです。ただし翻訳しているのではなく、多言語翻訳のように隠れ状態で多言語が混ざっている感じです。ですから、日本独自の生成言語モデルを作るのは、話としては結構なことですが、英語や多言語を含めて学習をかけないと日本語のみではデータ量の差があるのでChatGPTには永遠に追い付きません。GoogleのBARDでさえChatGPTに追いつけていないので、責任者は相当な覚悟で取り組む必要があります。