😸

【ディープラーニング基礎⑥】教師あり学習の基本的な流れ

に公開

はじめに

教師あり学習の基本的な流れについて説明します。流れを説明しているだけなので学習の細かいことは説明しません。

1. 訓練データの準備

分類に使用する入力データと正解ラベルを収集・整備します。

具体例

  • 回帰問題: 入力データ[身長、年齢、体系、体格] 正解ラベル[体重]
  • 画像分類: 入力データ[猫か犬が写っている画像] 正解ラベル[猫なら0、犬なら1]

2. モデルの用意

分類タスクに適したアルゴリズムや構造を選びます。

3. 損失関数の決定

モデルの予測と正解ラベルの違いを測るための指標を定義します(例: クロスエントロピー損失)。

1. 0/1関数(0/1 Loss Function)

数式:

\mathcal{L}(y, \hat{y}) = \begin{cases} 0 & \text{if } y = \hat{y}, \\ 1 & \text{if } y \neq \hat{y}. \end{cases}

性質:

  • 誤り率(エラー率) を直接測定する損失関数。
  • 誤った予測に対して1、正しい予測に対して0を割り当てます。
  • 非連続な関数であるため、モデルの学習に直接使用するのは難しい。

適用:

  • モデル評価に利用されることが多い(例えば、分類タスクでの正答率計算)。

2. クロスエントロピー損失(Cross-Entropy Loss)

数式:

mathcal{L} = - \frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{i,c} \log (\hat{y}_{i,c})
  • y_{i,c}: 実際のクラスのワンホットエンコーディング
  • \hat{y}_{i,c}: クラス c の予測確率

これは以下の動画で解説されています。
https://www.youtube.com/watch?v=uP5pCKC9FMM

簡単なまとめ

  1. 導入
    情報量(自己情報量)は -\ln(q) で表され、珍しい事象ほど情報量が多くなります。この情報量に事象の発生確率 P(q) をかけたものがエントロピーです。エントロピーは不確実性を表しており、例えば表と裏がそれぞれ1/2で出るコインのように、どちらが起こるか予測がつかない場合は不確実性が高くなります。また、2つの分布 pq の違いは、KLダイバージェンスを使って計算できます。

  2. KLダイバージェンス
    KLダイバージェンス(Kullback-Leibler Divergence)は、ある分布 (p(x)$ と他の分布 (q(x)$ との間の「差」を測る指標です。数式で表すと:

    D_{\mathrm{KL}}(p \| q) = \sum_{x} p(x) \ln \frac{p(x)}{q(x)}

    この式は、真の分布 p(x) に基づいて観測されたデータが、近似分布 q(x) によってどれだけ効率的に符号化されるかを示します。KLダイバージェンスは常に非負で、D_{\mathrm{KL}}(p \| q) = 0 のとき、2つの分布は完全に一致しています。(対数の割り算は引き算に変形できるので当然)

  3. 交差エントロピーの導出
    交差エントロピーは、真の分布 p(x) に基づいて、近似分布 q(x) を用いて符号化した際のエントロピーを表します。数式で表すと:

    H(p, q) = -\sum_{x} p(x) \ln q(x)

    この式をKLダイバージェンスとの関係で導出できます:

    H(p, q) = H(p) + D_{\mathrm{KL}}(p \| q)

    ここで、H(p) は真の分布 p(x) のエントロピーであり D_{\mathrm{KL}}(p \| q) は分布 p(x)q(x) の差を示します。これにより、交差エントロピーはKLダイバージェンスを含む形で理解できます。

性質:

  • 分類タスクに適しており、モデルの出力が確率(0~1)で表されるときに使用。
  • 正解クラスの予測確率が高くなるようモデルを訓練します。
  • 連続かつ微分可能で、最適化に適しています。

適用:

  • 分類問題全般(ロジスティック回帰、ニューラルネットワークなど)。

3. 二乗損失(Squared Loss, MSE)

数式:

\mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2

性質:

  • 実際の値と予測値の差を二乗し、平均をとったもの。
  • 大きな誤差に対して重いペナルティを与えます(外れ値に敏感)。
  • 連続かつ微分可能で、最適化に適しています。

適用:

  • 回帰問題で広く使用される。

4. 絶対損失(Absolute Loss, MAE)

数式:

\mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y}_i|

性質:

  • 実際の値と予測値の差の絶対値の平均を計算。
  • 外れ値の影響が少ない(MSEと比べて頑健)。
  • 微分可能だが、絶対値の勾配に不連続点がある。

適用:

  • 回帰問題。外れ値が含まれるデータセットで特に有効。

分類問題で交差エントロピーを使う理由

二乗誤差でも可能だが、勾配が急速に小さくなり、うまく学習できないため。

4. 目的関数の導出

損失を最小化するようにモデルのパラメータを調整するための数式を設定します。

5. 学習を行う

訓練データを用いて、目的関数を最適化し、モデルのパラメータを学習します。

誤差逆伝播法

勾配降下法の勾配をより効率的に求める誤差逆伝播法を用いて学習を行います。
誤差逆伝播についてはわかりやすい動画を貼っておきます。
https://www.youtube.com/watch?v=0itH0iDO8BE

勾配降下法

現在のパラメータにおける勾配vを求めて、その勾配に従って更新する方法。

\theta \leftarrow \theta - \eta \nabla_\theta \mathcal{L}(\theta)

ここで:

  • \theta: パラメータベクトル
  • \eta: 学習率(ステップサイズ)
  • \nabla_\theta \mathcal{L}(\theta): 損失関数 \mathcal{L}(\theta)\thetaに関する勾配
    以下のように説明を加えます:

確率的勾配降下法(SGD: Stochastic Gradient Descent)

確率的勾配降下法は、全データセットではなく、ランダムに選ばれた1つのデータ(または少量のデータ)を用いて勾配を計算し、パラメータを更新する手法です。これにより、計算量を抑えながら、効率的な学習が可能です。

\theta \leftarrow \theta - \eta \nabla_\theta \mathcal{L}_i(\theta)

ここで:

  • \mathcal{L}_i(\theta): データサンプル i に対する損失関数
  • \nabla_\theta \mathcal{L}_i(\theta): i 番目のサンプルに基づく損失の勾配

ミニバッチ学習

ミニバッチ学習は、確率的勾配降下法を拡張した方法で、データセット全体からランダムに選ばれた小さなデータ群(ミニバッチ)を用いて勾配を計算します。これにより、SGDよりも安定した学習を実現します。

更新式は以下のようになります:

\theta \leftarrow \theta - \eta \frac{1}{|B|} \sum_{i \in B} \nabla_\theta \mathcal{L}_i(\theta)

ここで:

  • B: ミニバッチに含まれるサンプルの集合
  • |B|: ミニバッチのサイズ
  • \nabla_\theta \mathcal{L}_i(\theta): サンプル i に基づく損失の勾配

まとめ

これにより、以下の特徴を持つ勾配降下法の種類が説明されます:

  1. 勾配降下法(全データセットで計算、安定性が高いが計算コストが大きい)
  2. 確率的勾配降下法(データ1つまたは少量で計算、計算効率が高いがノイズが大きい)
  3. ミニバッチ学習(両者の中間、バランスが良い)

正則化(データオーグメンテーションなど)

正則化とは、学習時に汎化能力を手に入れるための方法です。例えば、正則化項を加える方法があります。画像を回転させたり、一部を隠したりするデータオーグメンテーションはその代表例です。

6. モデルの評価

未知データでモデルの性能を確認し、正解率やその他の評価指標を測定します。

評価結果

大きく以下の三つに分けられます。

  1. 訓練誤差も汎化誤差も大きい(未学習): 難しすぎることが原因
  2. 訓練誤差は小さいが、汎化誤差は大きい(過学習): 正則化など過学習を抑える必要がある。
  3. 訓練誤差も汎化誤差も大きい(学習成功)

リーク

評価データを学習に使用することは許されません。使用することをリークといいます。

Discussion