LLMがどのように機能するか

まず、名前について。LLMは大規模言語モデルの略です。ChatGPTのようなツールの背後にあるAIの種類で、プロンプトを送るとテキストが返ってくるものです。このチャプターは、実際にそれが何であるかの実践的なイメージです。
質問を入力すると、数秒後に流暢で自信に満ちた答えが現れます。モデルがあなたを理解して答えを調べたように見えます。そのイメージは役に立ちますし、重要な点で間違っていますし、その2つのギャップが初心者の間違いの大部分の原因です。
これはあなたのキャリア全体を通じて、このツール群との関わりで報酬をもたらすチャプターです。モデルを構築するために、モデルを学習させるための数学を知る必要はありません。それが答える時に実際に何が起きているかの実践的なイメージが必要です。なぜなら、そのイメージが他のすべてを説明するからです。プロンプティングがなぜ機能するのか、同じ質問がなぜ異なる答えを与えるのか、モデルがなぜ事実を発明するのか、なぜ計算コストがかかるのか、そしてなぜいくつかの機能は簡単に見えるのに難しいのかを説明します。このハンドブックの後のすべては、ここにある考え方の結果です。
モデルが実際に何であるか
チャットインターフェースを取り除くと、大規模言語モデルは1つのもの:巨大な数学関数で、**パラメータ**と呼ばれる固定された数十億個の数字のセット(重みと呼ばれることもあります)。それがモデル全体です。データベースではなく、検索エンジンではなく、ボックスの中に小さな人がいるわけではありません。テキストを入力して出力するものは非常に大量の数字です。
これらの数字はプログラマーが入力したものではありません。学習中に設定されました。プロバイダーはモデルに膨大な量のテキスト、書籍、コード、記事、ウェブページを与え、簡単なドリルを数十億回実行しました。次の単語を隠して、モデルにそれを予測するよう求め、推測が間違うたびにその数字をわずかに調整します。それを大規模で繰り返すと、数字はゆっくりとテキスト予測が上手な値に落ち着きます。それが学習です。予測が良くなるまで数十億のダイアルを調整することです。
これから2つの事柄が続き、後で出会う多くの動作を説明します。まず、学習は一度だけ、事前に行われ、非常に高額です。モデルを呼び出す時点で、その数字は凍結されています。モデルはあなたの会話から学びません。あなたが言うことは何もそのパラメータを変えません。覚えていて適応しているように感じますが、それはモデル自体ではなく、その周りのソフトウェアであり、コンテキストウィンドウセクションで重要な問題として戻ってきます。
2番目に、その中に事実の表があります。「知識」はそれらの数字に焼き込まれたパターンとして存在します。1万個のパンを焼いたパン職人が、レシピを読まずに手にテクニックを持っているのと同じように。モデルは正しく、賢明なテキストの形を学びました。それが同じ文で流暢で間違っていることができる理由です。保管された事実から棚をスキャンするのではなく、良い答えの形を再現しているのです。
次トークンを予測する
その数字の塊が配置されると、モデルは正確に1つの仕事をします。テキストの次のチャンクを何度も何度も予測することです。
ここでスローモーションでのループです。あなたはそれにいくつかのテキストを与えます。それは可能な次のチャンクのすべてに対する確率を生成します。それが知っているテキストの数万のオプション。「フランスの首都は」の後に、チャンク「東京」は97%のスコア、「a」は1%のスコア、他はすべてほぼ何もありません。
モデルはその後1つのチャンク を選び、それをテキストに追加し、次を選ぶために全体を再度実行します。答えが終わるまで繰り返します。
それが全体のエンジンです。単一の思想として読む返信は、1度に1チャンク構築されました。各チャンクは可能性の最新のランキングから選択され、文がどこに向かうかについて「次に何が起こりそうか」以上の計画がありません。チャット、コード、翻訳、ツール使用、推論を使用するすべての機能は、この同じループが下で実行されています。
あなたの次の単語を提案する電話キーボードは、小型の同じ考えです。違いは推測の背後にある数十億のパラメータです。十分なテキストで学習された「最も可能性の高い次のチャンクは何か」は、作業コードと明確な説明を書くのに十分です。しかし、基礎となる動きは変わりません。それは理解ではなく、保存されている答えをルックアップするのではなく、予測です。
ランダムネスダイアル
モデルが常に最高スコアのチャンクを掴んだ場合、同じプロンプトに対して同じ答えを何度も何度も渡され、その答えはしばしば平らで反復的です。ですから、ほとんどの場合、ピックに少しのランダムネスがあります。通常は高確率のチャンクを取りますが、常に非常に上位のものではありません。これがなぜあなたが正確な同じ質問を2回尋ね、2つの異なる返信を得るかです。それはシステムが意図したように動作する欠陥ではなく、設計です。
あなたはモデル呼び出しコードのチャプターで呼び出す時に設定する**温度**と呼ばれる設定を通じてランダムネスの量を制御します。直感は今持つ価値があります。低温では、モデルはトップ選択肢に近い。フォーカスされた、一貫した、予測可能な、それはあなたが請求書から数値を引き出したり、テキストをカテゴリーにソートするために必要なものです。より高い温度では、より低い確率チャンクがより頻繁に選択されます。より多様で創造的で、より間違った場所に歩く可能性があります。ブレーンストーミングと創造的な執筆より高い端を望んでいます。正しい答えがあるものは低端を望んでいます。
だから単一のダイアルはモデルを「慎重で反復可能」と「驚くべき創意」の間でスライドさせます。温度がスライダーを変えるだけで同じ予測ループです。それは、モデルが最も安全な推測をどれだけ大胆に到達するかを変えるだけです。
トークン
モデルが予測する「チャンク」には名前があります。トークン。トークンはテキストの一部で、多くの場合は単語全体であり、時には1つだけの部分です。一般的な単語は通常単一のトークンですが、より長い単語またはレアな単語はいくつかに分割されます。
"tokenization" -> "token" + "ization"
"unbelievable" -> "un" + "believ" + "able"
"cat" -> "cat"なぜ、単語全体または単一の文字を使用する代わりにテキストをこれらの奇妙な部分に切り刻みますか?それはトレードオフです。単一の文字はすべてのシーケンスを計り知れないほど長くし、長さはモデルが計算する必要があります。単語全体は数百万のエントリのボキャブラリーを必要とし、誰かが単語を発明するか、タイプミスを行う最初の時間に壊れます。トークンは中間パス。数万の一般的な部分の固定されたボキャブラリーは、モデルが見たことのない単語を含むすべてを綴るためにスナップできます。
ここは多くの人を驚かせる下のフード結果です。モデルは手紙を見えません。それはトークンを見ます。これは実際には、それらのチャンクのIDナンバーです。ですから、簡単に見えるタスクは難しいことができます。単語の文字を数えて、文字列を反転させ、「東京」には3つのrがあることに注目します。
それは昏い。それはすべて個々の文字を認識しません。完成した塊のパンで小麦粉の個々の粒をなめることができない方法と同じです。モデルがスペルまたは文字数タスクに失敗したとき、これが理由であり、修正は通常、代わりに通常のコードでその部分を行うことです。
トークンはまた、あなたが常に気にかけるようになる2つのことの単位です。
- お金: プロバイダーはトークンごとに請求します。あなたが送信したトークンとモデルが書き戻すトークンの両方。したがって、長いドキュメントとのテキストの長い答えが外出されるコストが高くなります。英語の大まかなゲージは、1トークンあたり約4文字、または75語のすべての100トークンです。コードおよび他の言語はしばしば、より多くのトークンに分割されます。これはコストがより高い理由の一部です。コードからモデルを呼び出すときに、これに直面します。
- 制限: モデルが一度に処理できるトークン数に上限があり、これが次のセクションです。
コンテキストウィンドウ
**コンテキストウィンドウ**は、モデルが一度に受けることができるテキストの量であり、トークンで測定されます。それをモデルのデスクの大きさとして想像してください。単一のリクエストに関わるすべてがその机の上に一度に収まる必要があります。あなたの指示、これまでの会話、あなたが貼り付けたドキュメント、そしてモデルが書いている返信。
なぜそもそも制限があるのでしょうか?それは予測の仕方に由来しています。次のトークンを選択するために、モデルは入力内のすべてのトークンがどのように他のトークンに関連しているかを比較するので、「それ」が3文前の猫を指すことができます。そのすべてのすべての比較はモデルが通路の意味を追跡することができます。また、長い入力を処理するのに非常に費用がかかります。プロバイダーは、各リクエストを管理可能に保つために上限を設定します。コンテキストウィンドウ。
机がいっぱいになると、何かが来る必要があります。会話が長く成長してウィンドウをオーバーフローするほど長ければ、最古の部分は取り除かれ、モデルはそれらを見ることができなくなります。これが長いチャットが最初に何を言ったかを「忘れる」ように見える理由です。人間的な感覚で忘れなかった。これらのトークンは机から降りています。また、モデルが机の上にあるもので最初と終わりに最も注意深く支払う傾向があり、中央に埋められたものを追跡できなくなる傾向があるので、重要なテキストをどこに配置するかは、あなたが窓いっぱいになるときに重要です。
さて、ほぼすべての初心者を捕まえるポイント。そしてそれはそれ以降のすべてよりも重要です。モデルは個別のリクエスト間でメモリーを持っていません。その数字が凍結されていることを覚えてください。各呼び出しは空の机から始まります。モデルはあなたの最後の質問、あなたの名前、または1分前から何かを覚えていません。
チャットアプリは、アプリが静かにすべての履歴を各新しいメッセージで再度送信しているため、1つの流動的な会話のように感じます。連続性はモデルが持つモデルの周りのソフトウェアが構築するものであり、何かではありません。
その単一の事実は、ここから先のすべての構築を形成します。モデルが何かを知ることを望む場合は、その要求でそれを机に置く必要があります。これまでの会話、ユーザーの詳細、関連するドキュメント、すべてのもの、毎回。このハンドブックの大部分は、本当に1つのことをよくするためです。適切なテキストを机に乗せます。
モデルが知らないもの
すべてのモデルの知識は学習中に焼き込まれたため、それが知っているのは、その学習データにあったことだけであり、そのデータは過去のカットオフポイントに収集されました。2つの制限がこれからまっすぐ落ちます。
まず、カットオフの後に起きたことは知りません。先週のニュースまたは今月出た図書館について聞いてください。そして、それは実際の考えがありません。2番目に、プライベートなことは一度も知りません。あなたの会社の内部ドキュメント、ユーザーの注文履歴、データベースの内容。それのどれも、公開されたテキストで訓練されたわけではなく、どんなに上手に聞いても知ることができません。
より静かな制限もあります。モデルは通常、「知っている」何かがどこから来たのか、あなたに言うことはできません。知識は別々の事実としてではなく、その中で一緒にブレンドされているからです。それはあなたに引用文を書くことができます。しかし、それは実引用をルックアップするのではなく、引用がどのように見えるべきかを予測しています。
これは、後で出会うRAGと呼ばれるテクニックの理由です。最近のイベント、または独自のプライベートデータについてモデルが回答することを望む場合は、再学習しません。あなたは関連するテキストを自分で取得し、リクエスト時にそれを机に設定します。そのため、モデルは推測する代わりに事実を持っています。モデルは、特定の事実の信頼できる井戸ではなく、あなたが与えるテキストよりもはるかに理性的です。
モデルがなぜものを作り出すのか
時々モデルは完全な自信を持って何か偽を述べます。誰も言わなかった引用。存在しない関数。決して書かれなかった研究への引用。これは**幻覚**と呼ばれ、最後のいくつかのセクション後、それはなぞなぞよりも避けられないように感じるべきです。
理由は、モデルに「真実」対「偽り」の内部感覚がないことです。それは「可能性の高いテキスト」対「不可能性のテキスト」のみを持っています。ほとんどの場合、それらはラインアップするので、それが学習したテキストでは、本当の文は偽のステートメントよりもはるかに一般的です。つまり、可能性の高い継続は通常、正しいものです。
しかし、モデルが間隙に当たる場合、それは決して訓練を受けたことがなく、見たことができなかったプライベートデータがあります。それは止まって間隙にフラグを立てません。最も可能性の高い継続を確実に言うことはできません。それが唯一行うことをします。最も確率の高い継続を生成します。
自信に満ちた、十分に形成された、間違った答えはしばしば、最も可能性の高いサウンドスタートであることです。それを流暢にするのと同じ機構が、それが間違っているときに流暢にします。
これはあなたが坐る部分です。幻覚は、あなたが完全にプロンプト離れることができるグリッチではありません。あなたはそれを減らすことができます。後のチャプターは方法を表示します。モデルは「知りません」と言うことが許可されていることを伝えることはわずかに役立ちます。あなたが提供するテキストからのみ答えるようにそれを要求することは、ギャップがないためにはるかに役立ちます。なぜなら、今、埋めるギャップがないからです。しかし、傾向はモデルが根本的に何であるか。それはグリッチではなく、事実チェッカーの内部での確率マシンですし、耐久性のある修正は構造的です。それが必要とする事実を与え、重要なことを確認するのではなく、それを訓練に含まれているのか望んでください。
この章から上に1つのルールを実行してください。モデルの自信は、それが正しいかどうかについて何も伝えていません。流暢さと正確性は同じプロセスで生成され、常に分かります。単一の答えが間違う可能性があるかのように構築します。単一の答えすべてがない可能性があります。
すべてを組み立てる
このチャプターのすべてが、異なる角度から見た1つの考えです。モデルは、次のトークンを予測する凍結された数字の塊であり、ほぼすべての動作を扱う傾向はそこから落ちます。
- 確率のランキングから1度に1トークンを予測するため、それは回収ではなく即興です。そして、わずかなランダムネス(温度)は答えが異なるという意味です。
- トークンはそれが機能するチャンク。あなたの請求の単位、あなたのサイズ制限の単位、そして、なぜそれは確実に文字をカウントできないかの理由。
- コンテキストウィンドウは単一のリクエストの机であり、すべてで共有されており、モデルはリクエスト間でメモリを覚えていないため、継続性はあなたの仕事です。
- その知識は学習カットオフで凍結され、プライベートデータを含まなかったため、事実を取得してプロンプトに入れます。
- 幻覚は、真実を感じることなく可能性の高いテキストを予測するシステムの価格です。接地と確認によって削減され、巧妙なワーディングだけでは削除できません。
これらを一緒に保つと、驚くほどの量のAIエンジニアリングは異なる衣装のもと1つのタスクです。適切なテキストを机に乗せ、正しい形で、正しい時間に、そして出力を盲目に信頼しません。次のチャプター開かれた閉じたモデルは、モデルの種類と、次にプロンプティングがどのようにしてそのすべての予測を実際に望むことに向かっていを見ます。

