勾配降下法を使用してモデルを最適化する
ここまで、モデルがデータを使用してどれだけの精度で機能しているかをコスト関数で評価する方法を説明しました。 オプティマイザーはパズルの最後のピースです。
オプティマイザーの役割は、パフォーマンスが向上するようにモデルを変更することです。 この変更は、モデルの出力とコストを調べ、モデルの新しいパラメーターを提案することによって行われます。
たとえば、農場のシナリオの線形モデルには、直線の切片と直線の傾きという 2 つのパラメーターがあります。 直線の切片が正しくない場合、モデルでは、平均気温が過少または過剰に推定されます。 傾きの設定が正しくない場合、1950 年代以降に気温がどのように変化したかをモデルで適切に示すことはできません。 これら 2 つのパラメーターは、気温の経時的なモデル化が最適に行われるように、オプティマイザーによって変更されます。
勾配降下
現時点で最も一般的な最適化アルゴリズムは、勾配降下法です。 このアルゴリズムにはいくつかのバリエーションがありますが、使用される中心的な概念は、これらすべてで同じです。
勾配降下法では、微積分を使用して、各パラメーターを変更するとコストがどのように変化するかを推定します。 たとえば、パラメーターを引き上げるとコストが減少すると予測される場合があります。
勾配降下法は、各モデル パラメーターとコストの間の関係の勾配 (傾き) を計算することから、このような名前が付けられています。 パラメーターは、この傾きを下に移動するように変更されます。
これはシンプルでありながら強力なアルゴリズムですが、コストを最小限に抑える最適なモデル パラメーターが見つかる保証はありません。 誤差の 2 つの主な原因は、極小値と不安定性です。
極小値
前述の例は、パラメーターが 0 より小さいか 10 より大きい場合にコストが増加し続けると仮定すると、適切に処理が行われているように見えました。
次の画像のようにパラメーターが 0 より小さいか 10 より大きい場合にコストがより小さくなれば、このジョブは適切に行われていません。
前述のグラフでは、パラメーター値 -7 の方がコストが小さいため、5 よりも適切な解になっています。 勾配降下法では、各パラメーターとコストの間の完全な関係 (点線で表されている) が事前にわかっていません。 このため、極小値 (最適解ではなく、勾配がゼロのパラメーター推定) が検出される傾向にあります。
不安定性
関連する問題として、勾配降下法は不安定性を示すことがあります。 この不安定さは、通常、ステップ サイズまたは学習率 (各反復によって各パラメーターが調整される量) が大きすぎる場合に発生します。 この場合、各ステップでパラメーターが大きく調整されすぎて、モデルは、実際には、各反復によって改悪されます。
学習率を下げると、この問題を解決できますが、問題が発生する可能性もあります。 まず、学習率を下げると、より多くのステップが必要なため、トレーニング時間が長くなる可能性があります。 次に、少ないステップを使用すると、トレーニングが極小値で停滞する可能性が高くなります。
これに対して、より高速な学習率を使用すると、極小値に陥ることを回避しやすくなります。これは、より大きなステップでは極小値をスキップできるためです。
次の演習で確認するように、問題ごとに最適なステップ サイズがあります。 この最適なものを見つけるには、多くの場合に実験が必要です。