線形回帰: ハイパーパラメータ

ハイパーパラメータは、トレーニングのさまざまな側面を制御する変数です。一般的なハイパーパラメータは次の 3 つです。

一方、パラメータは、重みやバイアスなどの変数で、モデル自体の一部です。つまり、ハイパーパラメータはユーザーが制御する値であり、パラメータはモデルがトレーニング中に計算する値です。

学習率

学習率は、モデルの収束速度に影響する浮動小数点数です。学習率が低すぎると、モデルの収束に時間がかかります。ただし、学習率が高すぎると、モデルは収束せず、損失を最小化する重みとバイアスの周りをバウンスします。目標は、モデルが迅速に収束するように、高すぎず低すぎない学習率を選択することです。

学習率は、勾配降下プロセスの各ステップで重みとバイアスに加える変更の量を決定します。モデルは、勾配に学習率を乗算して、次の反復処理のモデルのパラメータ(重みとバイアス値)を決定します。勾配降下法の 3 番目のステップで、負の勾配の方向に移動する「少量」は学習率を指します。

古いモデル パラメータと新しいモデル パラメータの差は、損失関数の勾配に比例します。たとえば、勾配が大きい場合、モデルは大きなステップを踏みます。小さい場合は、小さなステップを踏みます。たとえば、勾配の大きさが 2.5 で学習率が 0.01 の場合、モデルはパラメータを 0.025 変更します。

理想的な学習率は、妥当な数の反復処理でモデルを収束させるのに役立ちます。図 21 の損失曲線は、最初の 20 回の反復でモデルが大幅に改善された後、収束し始めていることを示しています。

図 21. 急勾配で始まり、その後緩やかになる損失曲線。

図 21。急速に収束する学習率でトレーニングされたモデルを示す損失グラフ。

一方、学習率が小さすぎると、収束までに多くの反復処理が必要になることがあります。図 22 の損失曲線は、各反復処理後にモデルがわずかに改善されていることを示しています。

図 22: ほぼ 45 度の傾斜を示す損失曲線。

図 22小さい学習率でトレーニングされたモデルを示している損失グラフ。

学習率が大きすぎると、各反復処理で損失が変動するか、継続的に増加するため、収束しません。図 23 の損失曲線は、各反復処理後にモデルの損失が減少してから増加することを示しています。図 24 では、後半の反復処理で損失が増加しています。

図 23. ギザギザの上下線を示す損失曲線。

図 23。学習率が大きすぎるモデルをトレーニングした損失グラフ。損失曲線は大きく変動し、イテレーションの増加に伴って上下しています。

図 24. 後半のイテレーションで損失が増加していることを示す損失曲線

図 24。学習率が大きすぎるモデルをトレーニングした損失グラフ。後半のイテレーションで損失曲線が急激に増加しています。

演習: 理解度を確認する

最適な学習率はどれくらいですか?
最適な学習率は問題に依存します。
各モデルとデータセットには、独自の理想的な学習率があります。
0.01
1.0

バッチサイズ

バッチサイズは、モデルが重みとバイアスを更新する前に処理するサンプルの数を指すハイパーパラメータです。重みとバイアスを更新する前に、モデルがデータセット内のすべてのサンプルの損失を計算する必要があると思われるかもしれません。ただし、データセットに数十万、数百万のサンプルが含まれている場合、完全なバッチを使用することは現実的ではありません。

重みとバイアスを更新する前にデータセット内のすべての例を確認する必要なく、平均で正しい勾配を取得する一般的な手法は 2 つあります。確率的勾配降下法ミニバッチ確率的勾配降下法です。

  • 確率的勾配降下法(SGD): 確率的勾配降下法では、イテレーションごとに 1 つのサンプル(バッチサイズ 1)のみを使用します。十分な反復処理を行うと SGD は機能しますが、ノイズが非常に多くなります。「ノイズ」とは、イテレーション中に損失が減少するのではなく増加する原因となるトレーニング中の変化を指します。「確率的」とは、各バッチを構成する 1 つの例がランダムに選択されることを意味します。

    次の画像は、モデルが SGD を使用して重みとバイアスを更新するときに損失がわずかに変動する様子を示しています。これにより、損失グラフにノイズが発生する可能性があります。

    図 25. 急激に減少する損失曲線が、小さな変動を繰り返しながら平坦化します。

    図 25。確率的勾配降下法(SGD)でトレーニングされたモデル。損失曲線にノイズが見られます。

    確率的勾配降下を使用すると、収束付近だけでなく、損失曲線全体にノイズが発生する可能性があることに注意してください。

  • ミニバッチ確率的勾配降下法(ミニバッチ SGD): ミニバッチ確率的勾配降下法は、フルバッチと SGD の妥協点です。$N $ 個のデータポイントの場合、バッチサイズは 1 より大きく $ N$ より小さい任意の数にできます。モデルは、各バッチに含まれる例をランダムに選択し、勾配を平均化して、反復処理ごとに重みとバイアスを更新します。

    各バッチのサンプル数は、データセットと使用可能なコンピューティング リソースによって異なります。一般に、バッチサイズが小さい場合は Stochastic Gradient Descent のように動作し、バッチサイズが大きい場合はフルバッチ グラディエント ディセントのように動作します。

    図 26. 急な損失曲線が平坦になり始め、収束近くでは変動が大幅に小さくなります。

    図 26ミニバッチ SGD でトレーニングされたモデル。

モデルをトレーニングする際、ノイズは除去すべき望ましくない特性と考えられることがあります。ただし、ある程度のノイズは良いこともあります。後続のモジュールでは、ノイズがモデルの一般化を改善し、ニューラル ネットワークで最適な重みとバイアスを見つける方法について説明します。

エポック

トレーニング中に、エポックとは、モデルがトレーニング セット内のすべてのサンプルを1 回処理したことを意味します。たとえば、1,000 個のサンプルを含むトレーニング セットと 100 個のサンプルのミニバッチサイズの場合、1 つのエポックを完了するにはモデルに 10 回のiterationsが必要です。

通常、トレーニングには多くのエポックが必要です。つまり、システムはトレーニング セット内のすべての例を複数回処理する必要があります。

エポックの数は、モデルのトレーニング開始前に設定するハイパーパラメータです。多くの場合、モデルが収束するまでに必要なエポックの数をテストする必要があります。一般に、エポック数が多いほどモデルの精度は高くなりますが、トレーニングにかかる時間も長くなります。

図 27. フルバッチはデータセット全体、ミニバッチはデータセットのサブセット、エポックは 10 個のミニバッチを完全に処理することを意味します。

図 27フルバッチとミニバッチ。

次の表に、バッチサイズとエポックがモデルのパラメータを更新する回数とどのように関連しているかを示します。

バッチタイプ 重みとバイアスの更新が発生するタイミング
バッチ全体 モデルがデータセット内のすべてのサンプルを確認した後。たとえば、データセットに 1,000 個のサンプルが含まれ、モデルが 20 エポックでトレーニングする場合、モデルは重みとバイアスを 20 回(エポックごとに 1 回)更新します。
確率的勾配降下法 モデルがデータセットの 1 つの例を調べた後。たとえば、データセットに 1,000 個のサンプルが含まれ、20 エポックでトレーニングする場合、モデルは重みとバイアスを 20,000 回更新します。
ミニバッチ確率的勾配降下法 モデルが各バッチのサンプルを確認した後。たとえば、データセットに 1,000 個のサンプルがあり、バッチサイズが 100、モデルが 20 エポックでトレーニングする場合、モデルは重みとバイアスを 200 回更新します。

演習: 理解度を確認する

1. ミニバッチ SGD を使用する場合の最適なバッチサイズはどれですか。
状況によって異なります。
理想的なバッチサイズは、データセットと使用可能なコンピューティング リソースによって異なります。
バッチあたり 10 個の例
バッチあたり 100 個の例
2. 次の記述のうち、正しいものはどれですか。
バッチサイズが大きい場合、外れ値が多いデータには適していません。
この文は間違っています。より多くの勾配を平均化することで、バッチサイズを大きくすると、データに外れ値が存在することによる悪影響を軽減できます。
学習率を 2 倍にすると、トレーニングが遅くなる可能性があります。
この文は正しいです。学習率を 2 倍にすると、学習率が大きくなりすぎ、重みが「跳ね回って」収束に必要な時間が長くなる可能性があります。最適なハイパーパラメータは、データセットと使用可能なコンピューティング リソースによって異なります。