ブーストに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} が分布になるように選択された正規化係数です) )。
- しかし、重み更新の特定の選択が、特定の弱学習器によって作成されたエラー率の指数関数と乗算されるのはなぜですか?
- 他に可能なアップデートはありますか?はいの場合、この更新が学習プロセスのある種の最適性を保証するという証拠はありますか?
これがこの質問を投稿する適切な場所であることを願っています。そうでない場合は、リダイレクトしてください!
ご協力いただきありがとうございます。