オンライン学習での正則化と機能スケーリング?


15

ロジスティック回帰分類器があるとします。通常のバッチ学習では、過剰適合を防ぎ、体重を小さく保つための正規化用語があります。また、機能を正規化およびスケーリングします。

オンライン学習環境では、継続的なデータのストリームを取得しています。各例で勾配降下更新を行い、それを破棄します。オンライン学習で機能スケーリングと正則化用語を使用することになっていますか?はいの場合、どうすればそれができますか?たとえば、スケーリングするトレーニングデータのセットがありません。また、正規化パラメーターを調整するための検証セットもありません。いいえの場合、なぜですか?

オンライン学習では、例のストリームを継続的に取得します。新しい例ごとに、予測を行います。次に、次のタイムステップで、実際のターゲットを取得し、勾配降下更新を実行します。

回答:


9

オープンソースプロジェクトvowpal wabbitには、重量の更新に影響を与える3つの追加要因のオンザフライ(オンライン)計算によって強化されるオンラインSGDの実装が含まれています。これらの要因は、それぞれのコマンドラインオプションで有効/無効にすることができます(デフォルトでは、3つすべてがオンになり、--sgdオプションにより、すべてがオフになります。つまり、「クラシック」SGDにフォールバックします)。

3つのSGD拡張オプションは次のとおりです。

  • --normalized 各機能の規模に合わせて調整された更新
  • --adaptive 適応勾配(AdaGrad)を使用(Duchi、Hazan、Singer)
  • --invariant 重要性を意識した更新(Karampatziakis、Langford)

一緒に、彼らはオンライン学習プロセスが以下の3ウェイ自動補償/調整を行うことを保証します:

  • 機能ごとのスケーリング(大きい値と小さい値)
  • 機能の重要度に基づく機能ごとの学習率の低下
  • 例ごとの特徴の有病率/希少性に対する特徴ごとの適応学習率調整

要するに、学習者の偏見を減らしてより効果的にするために、さまざまな機能を事前に正規化またはスケーリングする必要はありません。

さらに、vowpal wabbitは、正則化オプションを使用した切り捨て勾配降下によるオンライン正則化も実装します。

  • --l1 (L1-ノルム)
  • --l2 (L2-ノルム)

複数のデータセットでこれらの拡張機能を使用した私の経験では、それぞれがコードに導入されたときにモデルの精度が大幅に向上し、収束がスムーズになりました。

これらの機能強化に関する詳細については、いくつかの学術論文をご覧ください。


Arielf-3つの拡張機能(--sgdを介して)をオフにすると、github.com / JohnLangford / vowpal_wabbit / wiki / v6.1_tutorial.pdfのスライド11に表示されているsgdになり、power_tとinitial_tが関連するようになります?
B_Miner

1
B_miner:私が理解--power_tして--initial_tいる限り、グローバル(機能ごとではなく)独立したオプションです。 --sgd「クラシック」SGDのみに戻ります。IOW:--sgdのみキャンセルが--invariant--normalized、および--adaptive(別ごとの機能学習率を意味するものではあり)
arielf

(非同期SGDで行われているように)これらの更新を並列非同期方式で行う方法があるかどうか知っていますか?複数のワーカーを持つVWは、各パスの最後に各ワーカーのモデルを平均しているようです。これを行う方法に関する論文/ソフトウェアのポインタはありますか?
JC1


1

はい、あなたは確かに正則化が必要です...それはまた勾配降下を助けます(そして1 / Cに学習率を初期化します)

例:SGD-QNペーパーhttp://leon.bottou.org/papers bottouのペーパー

オンライン学習の意味を実際に説明していません。たとえば、各ポイントで目標値を獲得できますか?どのように組み込むかはわかりません... Cを検索しています...異なる正則化用語を持つ複数の分類器を使用し、予測エラーを追跡します(重みを更新する前に)


オンライン学習により、1つの例を取得し、予測を行います。次のタイムステップで、この例の実際のターゲットを取得し、勾配降下更新を行います。
siamii

さて、それは私が提案したとおりです-異なる正則化パラメーターで一連の分類器を実行し、各分類器の予測エラーを追跡します。
seanv507

学習率を1 / Cに初期化することの意味がわかりません。Cとは サポートベクターマシンについて話しているのですか?正則化に係数ラムダがあるロジスティック回帰について話しています。それが学習率と何の関係があるのか​​分かりません。
siamii

はい、l2正則化パラメーター、C、ラムダなど。それはぼとうのsgdqn論文の脇で言及されているものであり、私は他のどこかでもっとよく説明したと思います。基本的にあなたの学習率は、あなたのエラー面がある今ならば...あなたのエラー表面の1 /曲率(ヘッセ行列の逆数)でなければなりません
seanv507

1
機能のスケーリングも行う必要がありますか?オンライン設定でそれを行う方法は?
siamii
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.