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

ハイパーパラメータは、トレーニングのさまざまな側面を制御する変数です。一般的なハイパーパラメータは次の 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 倍にすると、学習率が大きくなりすぎ、重みが「跳ね回って」収束に必要な時間が長くなる可能性があります。最適なハイパーパラメータは、データセットと使用可能なコンピューティング リソースによって異なります。