9

ブーストにOpenCV を使用した後、独自のバージョンのAdaboostアルゴリズムを実装しようとしています (参照については、こちらこちら、および元の論文を参照してください)。

すべての資料を読んで、アルゴリズムの実装に関するいくつかの疑問を思いつきました。

1) 各弱学習器の重み a_t がどのように割り当てられているかは明確ではありません。

私が指摘したすべての情報源では、選択はでありa_t = k * ln( (1-e_t) / e_t )、k は正の定数であり、e_t は特定の弱学習器のエラー率です。

このソースの 7 ページには、その特定の値が特定の凸微分可能関数を最小化すると書かれていますが、私はその節を本当に理解していません。

  • 誰か説明してくれませんか?

2) トレーニング サンプルの重み更新の手順に疑問があります。

明らかに、それらが確率分布のままであることを保証するような方法で行う必要があります。すべての参考文献はこの選択を採用しています:

D_{t+1}(i) = D_{t}(i) * e^(-a_t y_i h_t(x_i)) / Z_t (Z_t は、D_{t+1} が分布になるように選択された正規化係数です) )。

  • しかし、重み更新の特定の選択が、特定の弱学習器によって作成されたエラー率の指数関数と乗算されるのはなぜですか?
  • 他に可能なアップデートはありますか?はいの場合、この更新が学習プロセスのある種の最適性を保証するという証拠はありますか?

これがこの質問を投稿する適切な場所であることを願っています。そうでない場合は、リダイレクトしてください!
ご協力いただきありがとうございます。

4

1 に答える 1

1

1) 最初の質問:

a_t = k * ln( (1-e_t) / e_t )

トレーニング データの誤差は Z_t)alpha) の積によって制限され、Z_t(alpha) はアルファに対して凸であるため、誤差の上限を最小化する「グローバルな」最適なアルファは 1 つしかありません。これは、魔法の「アルファ」を見つける方法の直感です

2) あなたの 2 番目の質問: しかし、特定の弱学習器によって作成されたエラー率の指数関数を使用して、重み更新の特定の選択が乗算されるのはなぜですか?

簡単に言うと、上記のアルファを見つける直感的な方法は、実際に精度を向上させることです。これは驚くべきことではありません。実際には、他の学習者よりもうまく機能する学習者をより信頼し (大きなアルファの重みを与えることで)、悪い学習者をあまり信頼しません (小さなアルファを与えることで)。以前の学習者よりも新しい知識をもたらさない学習者には、0 に等しい重みアルファを割り当てます。

によって制限されるトレーニング エラーを生成する最終的なブーストされた仮説を証明 (参照) することができます。

exp(-2 \sigma_t (1/2 - epsilon_t)^2 )

3) 3 番目の質問: 他に可能なアップデートはありますか? はいの場合、この更新が学習プロセスのある種の最適性を保証するという証拠はありますか?

これは言うまでもありません。ただし、ここで覚えておいていただきたいのは、更新によって「トレーニング データ」の精度が向上している (オーバー フィッティングのリスクがある) ことですが、その一般性については言いにくいことです。

于 2013-09-07T22:51:27.157 に答える