大規模言語モデルについて
1)ドキュメント_コンプリーター_Modelは、以下のように機能します。
ユーザープロンプト:
modelの回答:
2)ドキュメント_ジェネレーター_Modelは、以下のように機能します。
ユーザープロンプト:
modelの回答:
上記の二つのModelの違いについては、
一つ目のModelは単なるドキュメントコンプリーターで、プロンプトに続く最も可能性の高い次の文字を完成させます。 これはインターネットのデータの一部に基づいて訓練されたModelで、基本Modelと呼ばれます。
二つ目のModelは、ドキュメントジェネレーターで、プロンプトの質問に基づいて_人間のような_回答を生成します。 これはChatGPTのModelです。
ChatGP Modelは、プロンプトの質問に基づいて応答を生成できる推論Modelです。 基本Modelとほぼ99%同じですが、ファインチューニングと人間のフィードバックからの強化学習の二つの追加トレーニングステップがあります。
プリトレーニング:基本Model
これはAI革命の真核であり、まさに魔法が宿っていると言えます。
Modelのトレーニングは、大量のデータをフィードして、それから学習させるピロセスです。
GPT-3の論文GPT-3 paperの記載されているように、基本Modelはインターネットのデータの大きな塊に基づいてトレーニングされます。
これは我々にとって容易な作業ではありませんが、データの取得だけではなく、GPUやTPUのような多大な計算能力を必要とするためです。 私たちでも、自分のコンピュータ上で小さなGPT Modelをトレーニングする方法を学ぶことができますが、その方法は次のブログで説明します。
LLMトレーニングの革新性は、Transformerアーキテクチャの導入にあります。 これにより、Modelは膨大なデータから学習しつつ、入力の異なる部分の重要な_文脈関係_を保持することが可能になります。
これらの接続を維持することで、Modelは提供された文脈に基づいて新たな洞察を効果的に推測することができます。
それが個々の単語であれ、段落であれ、文書であれ、それ以上のものであれ、この能力により、 LLMトレーニングは自然言語処理と生成のタスクに新たな機会を開き、マシンが人間のコミュニケーションをよりよく理解し、応答することを可能にしました。
基本Modelのトレーニングに使用されるトランスフォーマーアーキテクチャは下記の通りです。

これは、"トークン化"、"エンベディング"、"ポジションエンコーディング"、"フィードフォワード"、 "レイヤーノーマライゼーション"、"マスキング"、"ソフトマックス"、そして最も重要な"マルチヘッドアテンション"など、 古典的および新しい技術を用いたニューラルネットワークベースのModelトレーニングを示しています。」
この部分は、私が最も興味を持っているところです。アーキテクチャの背後にある考え方とトレーニングがどのように正確に行われたかを明確に理解したいと思っています。
そこで次のブログから、基本モデルのトレーニングに使用される論文、コード、数学について掘り下げていきます。
ファインチューニング:アシスタントのトレーニング
ファインチューニングはとても賢い実装方法です。 このアイデアはOpenAIによって初めて実施されたと思います。 このアイデアは非常にシンプルですが、知的に機能します。 人間のラベラーを雇って多くのQ&Aの会話ペア(10万の質問と回答)を作成させます。
次に、その質問と回答のペアを基本Modelにフィードして、そこから学習させます。
このプロセスは_ファインチューニング_と呼ばれます。10万のサンプル会話がModelにトレーニングされた後に何か起こるか知ってますか? Modelは人間のように質問に答えることができるようになります。
これらのサンプルのラベル付けされた会話を見てみましょう
- Q&A
Q: あなたの名前は?
A: 私の名前はジョンです。
- Q&A
Q: 中国の首都は?
A: 中国の首都は北京です。
- Q&A
Q: 映画タイタニックのあらすじを要約してください。
A: 映画タイタニックは、海で沈む船についての話です。
これらのサンプルのQ&Aは私たちが互いに話す方法を模倣しています。
Modelにこれらの応答スタイルを教えることで、関連する文脈的な応答の確率が非常に高くなり、ユーザーのプロンプトに対してより良い応答となります。 様々な会話スタイルでModelをトレーニングすることにより、プロンプトに対して関連性が高く文脈に適した応答を生成する確率が高めます。
これが、言語Modelが非常に知的で人間のように見える理由です。現実世界の会話のリズムやパターンを学習することで、 ユーザーとの行き来の対話を説得力を持ってシミュレートすることができます。
この段階で、私たちは_アシスタントModel_と得たと言えます。 以下は、基本ModelのプリトレーニングからアシスタントModelのファインチューニングまでのいくつかのハイライトを示す図です。

人間のフィードバックからの強化学習
2022年1月にOpenAIはAligning language models to follow instructions .に関する研究を公開しました。 そのブログ投稿では、Modelが人間のフィードバックを用いて、さらにファインチューニングされた方法について説明しています。
これは少し複雑ですが、アイデアはModelに人間のフィードバックから学ばせることです。 約10万件のラベル付けされたQ&Aペアを提供する代わりに、ユーザーのプロンプトとModelの応答を収集し, その後、人間によるランキングを行います。
ランク付けされた会話を最も望ましいQ&Aサンプルとして持ち、 それらを再びModelにフィードして、それから学び、全体的なパフォーマンスを改善させます。
このプロセスはOpenAIによって blog :で紹介されています。
以下は基本Modelとファインチューニング/RLHFされた応答の比較です
prompt: | Explain the moon landing to a 6 year old in a few sentences. |
---|---|
| Explain the theory of gravity to a 6 year old. |
Explain the theory of relativity to a 6 year old in a few sentences. | |
Explain the big bang theory to a 6 year old. | |
Explain evolution to a 6 year old. | |
| People went to the moon, and they took pictures of what they saw, and sent them back to the earth so we could all see them. |
ファインチューニングとRLHFがなければ、Modelは単なるドキュメントコンプリーターに過ぎないことがわかります。
プロンプトエンジニアリング
ファインチューニングとRLHFを施しても、Modelは望ましい応答を得るための助けがまだ必要です。
ここでプロンプトエンジニアリングの出番です。
簡単に言うと、プロンプトを慎重に設計することで、Modelがより望ましい応答を引き出せます(時にはファインチューニング無しで)。
もし数学やコーディングに深く入り込むつもりがなければ、プロンプトエンジニアリングにもっと注意を払うことをお勧めします。
なぜなら、より良いプロンプトを作成するだけで、LLM Modelから最大の効果を引き出すことができるからです。
では、例を見てみましょう。
プロンプト:
出力:
少し改善してみましょう
プロンプト:
出力:
promptにいくつかの指示を含めることで、Modelは何をするべきか、何を応答すべきかを知ることができます。
もう一つ面白い例をみてみましょう:
prompt:
output:
答えは間違っています。 正解は67歳です。Modelは質問を理解しているようですが、数学的な計算を参照してしまっているのではなく、 論理的な推論を行うべきです。
ファインチューニングとRLHFなしで、正確な答えを得るためには、プロンプトにさらに例示的な指示を追加するだけで済みます。
prompt:
output:
output 2:
両方の答えが正しいです! 単にいくつかの例として論理的な説明をプロンプトに追加し、同じ質問を再度します。 Modelは今、質問を理解し、正しく答えることができます。
上記の例はWang et al. (2022)) によって紹介され、最終答えを算出するのにいくつかのステップが必要であるとされています。
強力なプロンプトは、数学の問題を解決したり、テキストを生成したりするような複雑なタスクをModelに実行させるために使うことができます。 そのため、"プロンプトエンジニアリングも"もLLMエコシステムの非常に重要な役割を果たしています。
プロンプトエンジニアリングについてさらに詳しくは、こちらの優れたprompting guideチュートリアルをご覧ください。
まとめ
ここまで読んでくださり、特にLLMの世界に新しい方にとっては、全ての情報を消化するのに時間がかかったと思います。 本当にAIの専門家になる準備ができていると思います!
今のところ、基本的な概念や背景情報について十分にカバーできたと思います。
私たち自身の大規模言語Modelを構築する準備を始める時が来ました。 理論はここまでにして、 トランスフォーマーアーキテクチャの重要な部分に進むにあたり、実践的に取り組んでいきましょう。