機械学習の全体地図(5)深層学習とLLM
ニューラルネットワークの仕組みからCNN・RNN・Transformer、学習済みモデルの活用、LLMができるまでの流れ、使う側の選択肢、限界と評価までを整理します。
連載 機械学習の全体地図 第5回/全8回
深層学習とLLM
深層学習は、③モデルのニューラルネットワークを何層にも重ねたものです。画像・音声・文章で主役となり、その延長にLLM(大規模言語モデル)があります。
ニューラルネットワークの仕組み Neural networks
1つのニューロン(脳の神経細胞をまねた計算の最小単位)は、入力の重み付き和に活性化関数をかけて次の層へ渡します。活性化関数がないと、何層重ねても1つの線形モデルと同じになってしまいます。代表はReLU(負なら0、正ならそのまま)です。
学習は2つの計算の繰り返しです。入力から予測を出す順伝播と、損失から各重みの勾配を出力側から逆にたどって求める誤差逆伝播法(Backpropagation)です。求めた勾配を使い、勾配降下法(ミニバッチ+Adamなど)で重みを更新します。
層を深くすると、浅い層が単純な特徴(画像なら線や角)を、深い層がそれを組み合わせた複雑な特徴(目や車輪)を捉えるようになり、人が特徴量を設計しなくて済みます。その代わり、大量のデータと計算資源(並列計算が得意なGPUなど)が必要です。
深層学習でよく使う工夫
- ドロップアウト:学習中にニューロンの一部をランダムに無効にし、過学習を防ぐ
- 正規化層(バッチ正規化・レイヤー正規化):層の出力のばらつきを整え、学習を安定させる
- 残差接続:層を飛び越える近道を作り、非常に深いネットワークでも学習できるようにする
- 学習率のスケジュール:学習が進むにつれて学習率を下げる
- データ拡張と早期終了(④手順の過学習対策と同じ)
CNN・RNN・Transformer
CNN Convolutional neural network
小さなフィルタを画像全体にずらしながら当て、位置が変わっても同じ模様を見つけます。画像認識の定番です。
RNN Recurrent neural network
系列を1つずつ順に読み、それまでの内容を「状態」として次へ引き継ぎます。長い系列では前半の情報が薄れやすく、順番に計算するため並列化もしにくいという弱点があります。
Transformer
各単語が、文中の他のすべての単語との関連度を計算し、関連の強い単語の情報を重点的に取り込みます。この仕組みをAttention(自己注意、Self-attention)と呼びます。全単語を同時に処理できるので並列計算に向き、大規模化しやすいのが強みです。そのままでは語順が分からないため、位置を表す情報を組み込んで与えます。
数式で見る:ニューロン・softmax・Attention
1つのニューロン(f は活性化関数)
softmax:出力の数値を、合計1の確率に変えます。多クラス分類や、LLMの次のトークンの確率に使います。
Attention(Transformerの中心)
Q(クエリ)は注目する側、K(キー)は注目される側の目印、V(バリュー)は取り込む情報です。QKT で関連度を計算し、softmaxで合計1の重みにして、V を重み付きで足し合わせます。√d(d=ベクトルの次元数)で割るのは、値が大きくなりすぎて学習が不安定になるのを防ぐためです。
学習済みモデルを活用する
転移学習:大規模なデータで学習済みのモデルを出発点にして、自分のデータで追加学習(ファインチューニング)します。少ないデータでも高い精度が出やすくなります。すべての重みを更新すると計算が重いため、少数の追加パラメータだけを学習するLoRAなどの手法もよく使われます。
埋め込み(Embedding):学習済みモデルの中間の出力は、意味を反映した数値ベクトルとして使えます。ベクトル同士の近さ(向きの近さを測るコサイン類似度など)で似た文章や画像を探せるので、類似検索・推薦・下のRAGの土台になります。
LLMができるまで Large language models
文章はまずトークン(単語や文字の断片)に分割されます。LLMは「次に来るトークンの確率」を出すモデルで、確率に従って1トークンずつ選ぶことを繰り返して文章を作ります。
確率からトークンを選ぶときの温度(Temperature)を上げると出力がばらつき、下げると確率の高いものに寄ります。
LLMを使う側の3つの選択肢
| 方法 | 何をするか | 向いている場面 | 手間 |
|---|---|---|---|
| プロンプト In-context learning | LLMへの指示文(プロンプト)に、指示や数個の例を書く。モデルは学習し直さない | 最初に必ず試す。形式や口調の指定、簡単な分類・要約・抽出 | 小 |
| RAG Retrieval-augmented generation | 質問に関係する文書を検索し、入力に添えて答えさせる | 社内文書や最新情報など、モデルが知らない知識に基づいて答えさせたい | 中(検索の仕組みが必要) |
| ファインチューニング Fine-tuning | 自分のデータでモデルを追加学習する | 特定の形式や専門分野での振る舞いを安定させたい。プロンプトでは届かない精度が要る | 大(データ準備・学習・評価) |
知識を答えさせることが目的なら、一般にファインチューニングよりRAGが基本です。文書を差し替えるだけで知識を更新でき、回答の根拠になった文書も示せるためです。
LLMの限界と注意点
ハルシネーション Hallucination
もっともらしいが誤った内容を、自信があるように出力することがあります。根拠となる文書を添える(RAG)、出典を確認する、重要な判断では人が確かめる、といった対策をとります。
知識の期限
学習データを集めた時点より後の出来事は知りません。最新の情報が必要なら、検索やRAGで補います。
計算や厳密な論理
計算や細かい条件の処理を誤ることがあります。計算はコード実行や電卓などの道具に任せる設計にします。
プロンプトインジェクション Prompt injection
入力に紛れ込んだ指示に従ってしまうことがあります。外部の文書やWebページを読ませるシステムでは、読み込んだ内容を指示として扱わないよう設計し、実行できる操作を制限します。
入力した情報の扱い
機密情報や個人情報を入力する前に、利用するサービスの規約と、入力データの保存・学習への利用の有無を確認します。
LLMの評価
正解が1つに決まらないことが多く、評価は難しい課題です。代表的な方法は、公開された問題集で測るベンチマーク、人による比較評価、別のLLMに採点させる方法(LLM-as-a-judge)です。LLMによる採点は手軽ですが、採点するLLM自身に偏りがあるため、人の評価と一致するかを確かめてから使います。自分の用途では、実際に来る質問を集めて評価用データを作るのが最も確実です。
理解度チェック
Spark