私は現在、機械学習アルゴリズムに取り組んでいますが、Matlabを使用するfminunc
と、パラメーターを手動で更新した場合と比較して、アルゴリズムが非常に高速に(数回の反復で)グローバル最小値に収束することに気付きました。
thetas[j] = thetas[j] - (alpha*gradient)/sampleNum;
alpha
素朴に(ステッププロポーション)は一定だと思っているからだと思います。
fminunc
では、 Cのようなものをどのように実装するのでしょうか?
alpha
現在のコストが以前のコストよりも大きいことが判明した場合は、大きいものから始めて調整しようとしました。これに伴う問題は、最小化された関数の形状が線形でない場合に発生します。これは、alpha
最初は非常に小さい値を取得し、関数の形状が「フラット」になる傾向がある場合(そしてより大きなステップを踏む可能性がある場合)に大きな値に戻らない可能性があるためです。 。