LLMに関して全く知見がなかったので、いくつか書籍を読んだり調べた内容をメモとしてまとめておく
知見がある方には一切役に立たない内容です
LLM概要
- ChatGPTなどのサービスの裏側には、「LLM(大規模言語モデル)」という計算技術が存在する
- 難しく捉えてしまうが、LLMは基本的に「文章の次に続く単語を確率で予測しているだけ」のモデル
- この単なる予測マシンが賢いAIになるまでには、以下3つの学習ステップがある
- 事前学習: インターネット上の膨大な文章を読み込ませ、「1、2、3、4」の次は「5」といったように、次の単語を当てるタスクを繰り返して言語としてのルールを獲得
-
ファインチューニング: 人間との対話ができるように「質問」と「回答」のペアを与えて会話方法を調整
- ファインチューニングとは、すでに大量のデータで学習済みのAIモデル(事前学習モデル)に対し、新しいデータを追加で学習させて特定のタスクや目的に最適化する手法
- アライメント: 人間のフィードバックをもとに、倫理的に好ましく安全な回答を返すように仕上げることを指す
従来AIとLLMの違い
従来のAIと異なり、LLMにはその場で柔軟に対応できる革新的な能力が備わっている
主に違いは以下の3つ
- 汎用性(General-Purpose): 従来のAIが特定の分野専門の特化型(例: 一昔前のGoogle翻訳など翻訳専用のルールベースAI)だったのに対し、LLMは1つのモデルで翻訳・計算・コーディングetc..など幅広いタスクをこなせる
- In-Context Learning(アドリブ力): 事前に専用の学習をしていなくても、指示(プロンプト)の中でいくつか例を示すだけで、その場でルールを理解して対応可能
-
Chain-of-Thought(段階的な思考): 例えば「段階的に考えて」と指示して思考過程を出力させるだけで、ケアレスミスを防ぎ複雑な問題も解ける
- 現在このChain-of-Thoughtは様々なモデルに組み込まれている
LLMを実務で使うために知っておくべき「3つの限界」
- ハルシネーション: LLMは事実を確認する内部メカニズムを持たないため、統計的に自然な単語を並べて「もっともらしい嘘」をつくリスクが常にある
-
トークンとコンテキストウィンドウ: LLMは文章を「トークン」という単位に分割して処理する
- LLMはテキストを一度細かく分解し、数値に変換してから処理する
- この分解された一つひとつが「トークン」
- 一度に入力できるトークン数(記憶力)には上限があり、それを超えるとエラーになるか、最初のほうの会話履歴を忘れていったりする
- こんにちは = 「こん」「にち」「は」のように分解されて3トークン
- 日本語は必ずしも1文字1トークンになるわけではない
- LLMはテキストを一度細かく分解し、数値に変換してから処理する
- 著作権リスク: AIに学習させること自体は著作権法上(原則として)問題になりにくいが、生成された出力物をそのまま利用すると既存の著作権を侵害するリスクがあり
プロンプトの基本ルール
1. プロンプトの基本要素と仕組み
-
5つの基本要素: プロンプトは「指示文」「質問」「出力フォーマット」「文脈情報」「出力サンプル」の組み合わせで設計するもの
- 基本はやはり指示文や質問が多い
- 2つのプロンプト: AIの基本動作を決める「システムプロンプト」と、人間が入力する「ユーザープロンプト」の大きく2つに分けられる
-
温度パラメータ: 出力のランダム性(多様性)を制御する仕組みが存在する
- 低くすると回答が論理的になるプログラミングや数学向きになり、高くすると回答表現が豊かになる
2. AIに正確に回答してもらうためのプロンプトの基本ルール
-
「~するな」はNG: 否定文だけの指示は避け、「代わりに何をするか」を具体的に指定することで意図した挙動を引き出すことができる
- AIは「〇〇するな」と言われると、その「〇〇」という言葉自体に強く注意を向けてしまい、逆にその言葉に引きずられた回答をしてしまう傾向があるため
- 結論から書かせない: AIは「次に続く単語を予測」する仕組み上、先に理由(思考過程)を出力させることで、計算ミスや論理の飛躍を劇的に減らすことができる
- 構造化して伝える: AIはMarkdown記法やXML記法ライクなので、なるべくこれらを使用して複雑な情報を構造化してAIに伝えることで、正確な情報処理をさせることができる
3. 失敗しないためのAI活用アプローチ
-
入力情報 ≧ 出力情報: 要約や翻訳、情報抽出など、入力情報の中で完結するタスクを選ぶことで、AIのハルシネーションを効果的に防ぐことができる
- なるべく具体的で正確な情報を沢山渡してあげること
- 裏取りを楽にする: 回答と一緒に「根拠の箇所(参照元)」を抜粋させることで、人間側の確認作業を大幅に効率化することができる