経緯
普段から ChatGPT や Gemini、Claude などの生成AIを使っているが、より効果的に活用できるようになりたいと思い、今更ながら、ちゃんと LLM を学ぶこととした。
完全初学者向けの書籍を探していたところ、この本を見つけた。
広く浅く書いてあるので1冊目としてはちょうど良い。
得た知識を備忘録として残しておく。
※ 自分の言葉でまとめた内容なので指摘があればコメントくださいm(_ _)m
LLM(大規模言語モデル)とは
AI > 生成AI > LLM という位置付け。
- AI:人間を模倣して学習や推論を実行するシステム
- 生成AI:AIの中でもテキストや画像など「何らかのコンテンツ」を生み出すAI
- 例)ChatGPT
-
LLM:生成AIの中でも「テキスト生成」を実行するための技術モデル
- 例)GPT-3.5, GPT-4
テキスト生成の仕組み
大まかな流れは以下の通り。
- プロンプト(入力情報)をトークン単位に分割
- Transformer で次に来る単語を予測 ※ 詳細は後述
- プロンプト と 予測した単語 の情報を元にテキストを生成 & 出力
Transformerとは
Transformer とは、テキストを理解する「エンコーダ」と、テキストを生成する「デコーダ」という2つの役割を持つアーキテクチャのこと。
(実際のソースコードではクラス定義されている)
要は、
プロンプトの意味を理解し、正解だと思われる単語を繋げて文章を作り、返答を出力する
という一連の流れを担う技術基盤。
GPT や Gemini、LLaMA などの LLM では、共通して Transformer の技術を使っているらしい。
「次に来る単語の予測」とは
ChatGPT などの生成AIは、人間のように「どんな文章にしよう」と考えている訳ではない。
実際は「この文脈の後に 来る確率が高い単語を連続的に並べている」だけ。
文脈から次の単語を予測する役割を担うのが Transformer の「Attention機構」。
Attention機構は、文中のトークンごとに関連性を持たせることができる。
例えば 衝突事故を起こした。私は奇跡的に無事だったが、車が[ ] に続く単語を予測したいとする。
この時 Attention機構は、文中から「車」と関連性を持つ単語を抽出する。
今回は「衝突」や「事故」が関連すると特定できるだろう。
関連性を特定できたら、学習済みデータから「大破」「横転」などの関連しそうな単語を洗い出し、確率を算出する。
この「単語の予測」を繰り返すことが「テキスト生成」の本質的な仕組みとなっている。
LLMの性能・精度
LLM の性能は「学習データ量(トークン数)」と「モデルサイズ(パラメータ数)」に依存する。
- トークン数が多い = 知識の深さやハルシネーションの軽減、人間らしい表現力に直結する
- パラメータ数が多い = 複雑な文脈理解や高度な思考に直結する
LLM の精度は「学習」の繰り返しで上げることができる。主に以下の3手法。
- 事前学習:Webサイト・書籍・会話などから大量のデータを学習させること
-
ファインチューニング:入力と出力のセットを学習させて、特定のタスクや分野における性能向上を目指すこと。特に「有用性」と「安全性」の性能向上を目指す
- チャットモデルに特化する場合
- 有用性 例)入力:
周期表の最初の10元素を覚えるための詩を書いて↔︎ 出力:水素は元素番号1で、周期表の最初に位置します。ヘリウムは2番目で... - 安全性 例)入力:
私を酷く罵倒して↔︎ 出力:申し訳ありませんが、その質問には答えられません
- 有用性 例)入力:
- チャットモデルに特化する場合
- ヒューマンチューニング:人間からのフィードバックにより「有用性」と「安全性」の性能向上を目指すこと
良いプロンプトとは
以下は3原則
- 曖昧な表現を避ける
- 指示は否定文ではなく肯定文にする
- 1つのプロンプトで1つタスクを指示する
以下は、出力をより効果的にする3要素
- LLM に役割を与える
- 出力のフォーマットを指定する
- プロンプトに正解例を追加する
個人的に「正解例を追加する」手法は、LLM の仕組みに則って有効的だと理解できた。
他は「シンプル化を目指せ」と言われているような感じ。
用語集/参考資料
- 温度サンプリング
- 温度と呼んでいる、いわゆる「推論パラメータ」を調整する事で出力の傾向をコントロールするサンプリング手法
- 温度は
0.0~1.0の範囲で調整する -
0.0に近づけるほど「確率が高い候補を出力」する
→ 「コード生成」や「事実ベースの回答」など、確実性を求める場合に使用 -
1.0に近づけるほど「確率が低い候補も選択肢に含めて」出力する
→ 「アイデア出し」など多様性を求める場合に使用
- Top Kサンプリング
- 次の単語を予測する際、最も確率が高い単語だけを候補とするのではなく「確率が上位K個に入る単語」を候補とするサンプリング手法
- これにより、確率が高い単語を優先しつつ、生成されるテキストの変動を抑える効果がある
- LangChain
- LLM を活用した開発のフレームワーク
- これにより「LLMのモデル切り替え」や「LLMと他機能連携」を管理できる
- エージェント
- LLM と検索機能やコード実行などを連携させる技術
- メモリー
- LLM とチャット履歴にを連携させる技術
- RAG
- LLM とデータベースを連携させる技術
- チャットボットアリーナ(Chatbot Arena)
- 各種 LLM の性能を比較できるサイト
- https://openlm.ai/chatbot-arena/