第3部 AIを支える技術の基礎
第10章学習と推論のしくみ
ニューラルネットワークには、大きく分けて二つの場面があります。データから重みを調整していく「学習」と、 学び終えたモデルを使って答えを出す「推論」です。この二つは、必要な計算の量も、かかる費用も大きく 違います。この章では、その違いを整理します。LLMを使うときの費用や、モデルをどこで動かすかを考える うえでも役立つ基礎になります。
10.1学習フェーズ:誤差を小さくする
学習とは、モデルの出した答えと正解とのズレ(誤差)を測り、そのズレが小さくなるように重みを少しずつ調整していく作業です。これを大量のデータで何度も繰り返します。
学習フェーズでは、まずモデルにデータを入力し、答えを出させます。学習を始めたばかりのモデルの重みは でたらめなので、最初の答えは的外れです。その答えを正解と比べ、どれだけずれているかを測ります。次に、 そのズレが小さくなる方向へ、重みとバイアスをわずかに調整します。この「入力する、答えを出す、ズレを 測る、調整する」という手順を、大量のデータで何度も繰り返します。
繰り返すうちに、ズレは次第に小さくなり、モデルはより正しい答えを出せるようになっていきます。一回の 調整はごくわずかですが、膨大な回数を積み重ねることで、少しずつ「ちょうどよい」重みへと近づいていきます。 水滴が石を穿つように、小さな調整の積み重ねが、賢いモデルを作り上げるのです。
10.2損失関数と勾配降下法のイメージ
ズレの大きさを表す指標が損失関数で、それを小さくする方向へ少しずつ進む方法が勾配降下法です。学習は、この値を下げていく過程だといえます。
モデルの答えと正解のズレを、一つの数値として表したものが損失関数です。値が大きいほどズレが大きく、 小さいほど正解に近いことを意味します。学習の目標は、この損失関数の値をできるだけ小さくすることです。 そのために使われるのが勾配降下法という考え方で、いまいる場所から損失が小さくなる方向を調べ、その方向へ 少しずつ進んでいきます。
身近なたとえ
霧で先の見えない山で、谷底を目指す場面にたとえられます。遠くは見えなくても、足元の傾きは分かります。 その傾きを確かめ、下り坂の方向へ一歩ずつ進めば、やがて低いところにたどり着きます。勾配降下法は、 これと同じように、損失という高さを、足元の傾きを頼りに少しずつ下げていく方法です。
一歩の大きさは、大きすぎると谷底を通り越してしまい、小さすぎるとなかなかたどり着きません。この一歩の 大きさをどれくらいにするかも、学習の進み方を左右する大切な設定です。細かな調整はさておき、ここでは 「損失という高さを、少しずつ下げていくのが学習だ」というイメージをつかんでおけば十分です。
10.3推論フェーズ:学んだ結果を使う
推論とは、学習を終えて固定されたモデルに入力を与え、答えを出させることです。この段階では重みの調整は行われず、学んだ結果を使うだけです。
学習が済むと、重みとバイアスの値は固定され、一つの完成したモデルになります。このモデルに新しい入力を 与えて答えを出させるのが、推論フェーズです。私たちがLLMに質問して回答を得るのは、この推論にあたります。 推論では、すでに学んだ結果を使うだけで、重みを調整し直すことはありません。学習が「勉強する」段階だと すれば、推論は「学んだことを使って問題を解く」段階だといえます。
ここで大切なのは、多くのLLMは、いったん学習を終えると、その後の会話の内容を自分の重みに取り込んで 賢くなるわけではない、という点です。利用時のやり取りはあくまで推論であり、モデル自体は変わりません。 チャットで何かを教えても、それが恒久的にモデルの知識になるわけではないのです。この性質は、第7部で扱う 「ステートレス」という考え方に、そのままつながっていきます。
10.4学習と推論でコストが違う理由
学習は膨大なデータで調整を繰り返すため、非常に大きな計算資源と時間を要します。推論は一回の計算で済むため、相対的に軽くなります。
学習と推論では、必要な計算の量が大きく異なります。学習では、膨大なデータを使い、重みの調整を何度も 繰り返す必要があるため、多くの計算資源と長い時間、そして大きな費用がかかります。大規模なLLMの学習には、 高性能な計算装置を大量に使い、長期間にわたって計算を続けることもあります。個人や多くの企業が、大規模な LLMを一から学習させるのが難しいのは、このためです。
一方、推論は、完成したモデルに入力を一度通して答えを出すだけなので、学習に比べればずっと軽い処理です。 とはいえ、大規模なLLMでは推論にもそれなりの計算が必要で、利用が増えれば費用もかさみます。この 「学習は非常に重く、推論は相対的に軽い」という違いは、モデルをどこで動かすか、費用をどう見積もるかを 考えるうえで重要になります。
実務メモ:多くの場合、学習済みモデルを「使う」側に立つ
大規模なLLMを一から学習させるには、莫大な計算資源と費用が必要です。そのため、実際の開発では、 すでに学習された高性能なモデルを、推論の形で利用するのが一般的です。第5部で見るファインチューニング のように、既存のモデルを少し調整して使う方法もありますが、それでも一から作るよりはるかに軽く済みます。 「学習は重い、推論は軽い」という感覚を持っておくと、どこに費用がかかるのか、どのモデルを選ぶべきかを 現実的に考えられます。学習コストと推論コストは別物だ、という区別が出発点になります。
第3部では、機械学習からニューラルネットワーク、そして学習と推論までを見てきました。これで、LLMを支える 土台がそろいました。次の第4部では、いよいよ本サイトの中心であるLLMのしくみそのものに踏み込んでいきます。
この章の要点
- 学習は、答えと正解のズレを測り、それが小さくなるように重みを繰り返し調整する作業です。
- ズレを表すのが損失関数で、それを足元の傾きを頼りに下げていくのが勾配降下法です。
- 推論は、学習済みのモデルに入力を与えて答えを出す段階で、重みの調整は行われません。
- 利用時のやり取りは推論であり、多くのLLMはそれで賢くなるわけではありません(ステートレスにつながる話)。
- 学習は膨大な計算を要して重く、推論は相対的に軽い。実務では学習済みモデルを使う側に立つのが一般的です。