8

入力セットのサイズが大きくなるにつれて、VowpalWabbitの「状態」がどのように維持されるかを確認しようとしています。通常の機械学習環境では、1000個の入力ベクトルがある場合、それらすべてを一度に送信し、モデル構築フェーズが完了するのを待ってから、モデルを使用して新しい予測を作成することを期待します。

VWでは、アルゴリズムの「オンライン」の性質により、このパラダイムがよりパフォーマンスが高く、リアルタイムで調整できるようになっているようです。

  1. このリアルタイムモデル変更はどのように実装されますか?

  2. VWは、時間の経過とともに入力データの合計サイズに関して増加するリソースを使用しますか?つまり、VWモデルにデータを追加すると(小さい場合)、特徴ベクトル入力の累積数が1000、10000、または数百万に増えると、リアルタイム調整の計算に時間がかかり始めますか?

4

2 に答える 2

19

carlosdcの良い答えに追加するだけです。

vowpal wabbitを際立たせ、tera-feature(10 12)データサイズにスケーリングできるようにする機能のいくつかは次のとおりです。

オンラインの重みベクトル: vowpal wabbitは、メモリ内の重みベクトルを維持します。これは、基本的に、構築しているモデルの重みのベクトルです。これはあなたがあなたの質問で「状態」と呼ぶものです。

無制限のデータサイズ: 重みベクトルのサイズは、例(インスタンス)の数ではなく、特徴(独立した入力変数)の数に比例します。これが、他の多くの(オンラインではない)学習者とは異なり、vowpalwabbitを宇宙で拡大させるものです。通常のバッチ学習者のようにすべてのデータをメモリにロードする必要がないため、メモリに収まらないほど大きいデータセットから学習することができます。

クラスターモード: vowpal wabbitは、クラスター内の複数のホストでの実行をサポートし、ノードにバイナリツリーグラフ構造を課し、all-reduceリーフからルートへの削減を使用します。

ハッシュトリック: vowpal wabbitは、ハッシュトリックと呼ばれるものを採用しています。すべての機能名は、を使用して整数にハッシュされますmurmurhash-32。これにはいくつかの利点があります。ハッシュテーブルの管理や衝突に対処する必要がなく、機能がときどき衝突する可能性があるため、非常にシンプルで時間効率が高くなります。(実際には)何千もの異なる特徴を持つトレーニングセットでの少数の特徴の衝突は、暗黙の正則化項を追加することに似ていることがわかります。これは直感に反して、モデルの精度を下げるのではなく改善することがよくあります。また、特徴空間のまばらさ(または密度)にも依存しません。最後に、機能名/ IDがa)数値とb)一意の両方である必要があるほとんどの従来の学習者とは異なり、入力機能名を任意の文字列にすることができます。

並列処理: vowpal wabbitは、2つの別々のスレッドで解析と学習を実行することにより、マルチコアCPUを活用し、速度をさらに向上させます。これが、vwデータを読み取るのと同じくらい速く学習できるようにするものです。でサポートされているアルゴリズムのほとんどはvw、直感に反して、学習速度ではなくIO速度によってボトルネックになっていることがわかります。

チェックポインティングとインクリメンタル学習: vowpal wabbitを使用すると、学習中にモデルをディスクに保存し、モデルをロードして、--save_resumeオプションで中断したところから学習を続けることができます。

テストのようなエラー推定:vowpal wabbit によって「そのまま」計算された平均損失は、常に見えない(サンプル外の)データにあります(*)。これにより、事前に計画されたホールドアウトに煩わされたり、相互検証を行ったりする必要がなくなります。トレーニング中に表示されるエラー率は「テストのような」ものです。

線形モデルを超えて: vowpal wabbitは、行列因数分解(ほぼスパース行列SVD)、潜在的ディリクレ割り当て(LDA)などを含むいくつかのアルゴリズムをサポートします。また、用語の相互作用(ユーザー指定のユニット数を持つバイリニア、2次、3次、フィードフォワードシグモイドニューラルネット)、マルチクラス分類(基本的な回帰とバイナリに加えて)のオンザフライ生成もサポートします。分類)など。

githubの公式vwwikiには、チュートリアルと多くの例があります。

(*)1つの例外は、--passes Nオプションで複数のパスを使用する場合です。

于 2013-03-21T03:59:39.690 に答える
10

VWは、確率的勾配降下法の(非常に)洗練された実装です。確率的勾配降下法について詳しくは、こちらをご覧ください。

確率的勾配降下法の優れた実装は基本的にI/Oバウンドであり、データを取得できる限り高速であるため、VWにはデータを「コンパイル」するための高度なデータ構造がいくつかあります。

したがって、質問(1)の答えは確率的勾配降下法によるものであり、質問(2)の答えは間違いなくそうではありません。

于 2012-01-30T17:27:20.783 に答える