多くのオンラインチュートリアルで勾配降下について説明し、それらのほとんどすべてで固定ステップサイズ(学習率)を使用しています。行検索(バックトラック行検索や正確な行検索など)を使用しないのはなぜですか?
多くのオンラインチュートリアルで勾配降下について説明し、それらのほとんどすべてで固定ステップサイズ(学習率)を使用しています。行検索(バックトラック行検索や正確な行検索など)を使用しないのはなぜですか?
回答:
バニラ勾配降下は、ライン検索を使用してより信頼性の高いものにすることができます。これを行うアルゴリズムを作成しましたが、非常に安定したアルゴリズムになります(必ずしも高速ではありません)。
ただし、確率的勾配法に対してライン検索を行うことはほとんど意味がありません。私がこれを言う理由は、完全な損失関数を最小化することに基づいてライン検索を行うと、確率的方法を実行する主な動機の1つをすぐに失ってしまうからです。ここで、更新ごとに完全な損失関数を計算する必要があります。通常、完全な1次導関数の計算に匹敵する計算コストがかかります。計算コストのために完全な勾配の計算を避けたいと考えると、完全な損失関数の計算で大丈夫になることはほとんどありそうにないようです。
編集
@DeltaIVは、これが個々のサンプルだけでなく、ミニバッチにも適用されることを指摘しています。
チュートリアルでは、勾配降下について説明します。これは、最適化に使用される最も単純なアルゴリズムの1つであるため、説明が簡単だからです。このようなチュートリアルのほとんどはかなり簡潔であるため、単純な内容に焦点を当てています。深層学習に使用される単純な勾配降下以外にも、少なくともいくつかの一般的な最適化アルゴリズムがあります。実際、人々は通常、より速く収束するため、異なるアルゴリズムを使用してから勾配降下を使用することがよくあります。それらのいくつかは、一定ではない学習率を持っています(例えば、時間とともに減少します)。このようなアルゴリズムのレビューについては、Sebastian Ruder(またはarXivedの論文)が投稿した「勾配降下最適化アルゴリズムの概要」を参照してください。