web-dev-qa-db-ja.com

線形回帰で正則化パラメーターを計算する方法

線形回帰のセットアップで点のセットを近似するために使用される高次の線形多項式がある場合、過剰適合を防ぐために、正則化を使用し、コスト関数にラムダパラメーターを含めます。次に、このラムダを使用して、勾配降下アルゴリズムのthetaパラメーターを更新します。

私の質問は、このラムダ正則化パラメーターをどのように計算するのですか?

39
London guy

正則化パラメーター(ラムダ)はモデルへの入力であるため、おそらく知りたいのはどのようにselect lambdaの値かです。正則化パラメーターは過剰適合を減らし、推定回帰パラメーターの分散を減らします。ただし、これは見積もりにバイアスを追加することを犠牲にして行われます。ラムダを大きくすると、オーバーフィッティングが少なくなりますが、バイアスも大きくなります。それで本当の質問は「あなたの見積りでどれだけのバイアスを許容するつもりですか?」です。

あなたが取ることができる1つのアプローチは、ランダムにデータをサブサンプリングし、推定値の変動を調べることです。次に、ラムダの値を少し大きくしてプロセスを繰り返し、推定値の変動性にどのように影響するかを確認します。決定したラムダの値がサブサンプリングされたデータに適切である場合、より小さな値を使用して、完全なデータセットで同等の正規化を実現できる可能性があることに注意してください。

47
bogatron

閉形式(チホノフ)対勾配降下

こんにちは!直感的で一流の数学的アプローチについての素晴らしい説明があります。 「問題解決」ではなく、確実に高速化し、適切な正則化ハイパーパラメーターを見つけるプロセスに一定の一貫性を与えるのに役立つ可能性があるいくつかの特異性を追加したかっただけです。

lambda項で線形的に重み付けされたL2(ak "weight decay")正則化について話していると思います。 、およびclosed-form Tikhonov Equation(低次元線形回帰モデルに強く推奨)を使用して、モデルの重みを最適化しています。または、バックプロパゲーションを使用した勾配降下法のバリアントを使用します。そして、このコンテキストでは、lambdaの値を選択して、最高の汎化能力を提供する必要があります。


閉じたフォーム(チホノフ)

モデルでTikhonovの方法に進むことができる場合( Andrew Ng は1万の次元で言いますが、この提案は少なくとも5年前です) Wikipedia-Tikhonov因子の決定 =は、最適な値を提供することが証明された興味深い閉形式のソリューションを提供します。しかし、このソリューションは、おそらく何らかの実装上の問題(時間の複雑さ/数値の安定性)を引き起こします。それを実行する主流のアルゴリズムがないため、私は知りません。この 2016年の論文 は非常に有望に見えますが、線形モデルを最適に最適化する必要がある場合は試してみる価値があります。

  • より迅速なプロトタイプ実装のために、この 2015 Pythonパッケージはそれを繰り返し処理するようです。最適化してからラムダの最終値を抽出することができます。

この新しい革新的な方法では、一般的なTikhonov正則化問題を解くための反復アプローチを導出しました。これは、ノイズのない解に収束し、ラムダの選択に強く依存せず、それでも反転問題を回避します。

そして、プロジェクトの GitHub README から:InverseProblem.invert(A, be, k, l) #this will invert your A matrix, where be is noisy be, k is the no. of iterations, and lambda is your dampening effect (best set to 1)


グラディエントディセント

このパートのすべてのリンクは、Michael Nielsenの素晴らしいオンラインブック「Neural Networks and Deep Learning」、推奨講義からのものです!

このアプローチの場合、言うまでもなく、コスト関数は通常非凸であり、最適化は数値的に実行され、モデルのパフォーマンスは何らかの形式の相互検証によって測定されます( オーバーフィットと正則化を参照) および 正則化が過剰適合を減らすのに役立つ理由 十分なものがない場合)。しかし、クロス検証の場合でも、ニールセンは何かを提案します: この詳細な説明 を見てください。L2正則化がどのように重み減衰効果を提供するかについてですが、要約はサンプル数に反比例するn。したがって、L2項を使用して勾配降下式を計算する場合、

通常どおり、バックプロパゲーションを使用してから、すべての重み項の偏導関数に(λ/n)*wを追加します。

そして彼の結論は、異なるサンプル数で同様の正則化効果が必要な場合、ラムダを比例的に変更する必要があるということです。

正則化パラメーターを変更する必要があります。その理由は、トレーニングセットのサイズnn=1000からn=50000に変更され、これにより重み減衰係数1−learning_rate*(λ/n)が変更されるためです。 λ=0.1を使用し続けると、重量減衰が大幅に減少し、したがって正規化効果が大幅に減少します。 λ=5.0に変更することで補正します。

これは、同じモデルを異なる量の同じデータに適用する場合にのみ役立ちますが、それがどのように機能するかについての直感への扉を開き、さらに重要なことは、ラムダを微調整できるようにすることでハイパーパラメーター化プロセスをスピードアップすることですより小さなサブセットで、その後スケールアップします。

正確な値を選択するために、彼は ニューラルネットワークのハイパーパラメーターの選択方法 純粋に経験的なアプローチに関する結論で提案します:1から始めて、適切な大きさの順序が見つかるまで10で徐々に乗算および除算し、その地域内でローカル検索を行います。 このSE関連の質問 のコメントでは、ユーザーBrian Borchersは、そのローカル検索に役立つ可能性のある非常によく知られた方法も提案しています。

  1. トレーニングおよび検証セットの小さなサブセットを使用します(それらの多くを妥当な時間で作成できるようにするため)
  2. λ=0から始めて、ある領域内で少しずつ増やし、モデルの簡単なトレーニングと検証を実行し、両方の損失関数をプロットします
  3. 次の3つのことを確認します。
    1. モデルはトレーニングデータ専用に最適化されているため、CV損失関数は一貫してトレーニング関数よりも高くなります(EDIT:しばらくすると、L2の追加が助けたMNISTケースを見てきましたCV損失は、収束するまでトレーニング1よりも速く減少します。おそらく、データの途方もない一貫性と最適化されていないハイパーパラメーター化のためです()。
    2. トレーニング損失関数はλ=0に対して最小値を持ち、正則化とともに増加します。これは、モデルがトレーニングデータに最適に適合しないようにすることが正則化とまったく同じであるためです。
    3. CV損失関数は、λ=0で高く開始し、その後減少し、ある時点で再び増加し始めます(EDIT:これは、セットアップがλ=0に過剰適合できることを前提としています。力と他の正則化手段はあまり適用されません)。
  4. λの最適な値は、おそらくCV損失関数の最小値付近になります。また、トレーニング損失関数がどのように見えるかに少し依存する場合があります。これの可能な(ただし、唯一ではない)表現については図を参照してください。「モデルの複雑さ」の代わりに、x軸λが右側でゼロで左側に向かって増加していると解釈する必要があります

L2 diagnostics: instead of "model complexity" one should interpret the x axis **as <code>λ</code> being zero at the right and increasing towards the left

お役に立てれば!乾杯、
アンドレス

25
fr_andres

上記の相互検証は、機械学習でよく使用される方法です。ただし、信頼性が高く安全な正則化パラメーターを選択することは、数学の研究で依然として非常にホットなトピックです。いくつかのアイデアが必要な場合(そして、まともな大学図書館にアクセスできる場合)、このペーパーをご覧ください: http://www.sciencedirect.com/science/article/pii/S0378475411000607

7