Adaboost
在學習AdaBoosting和online Boosting, 最好有bagging和boosting基礎,這樣看起來比較會比較順。有空再補上。
AdaBoost 算法的主要思想之一就是在訓練集上維護一套權重分布,初始化時 ,Adaboost 為訓練集的每個訓練例指定相同的權重 1/m。接着調用弱學習算法進行迭代學習。每次迭代后更新訓練集上不同樣本的權值,對訓練失敗的樣本賦以較大的權重,也就是讓學習算法在后續的學習過程中集中對比較難的訓練例進行學習
首先給定一個弱學習算法和訓練集 ( x1 , y1 ), ( x2 , y2 ),..., ( xN , y N ) ,xi ∈ X , 表示某個X實例空間; yi ∈ Y = {1, −1} ,Y 表示一個帶類別標志的集合。在每一步的迭代中,弱學
弱假設 ht 的性能由習算法根據訓練樣本的分布及權重 Dt 產生一個弱假設 ht :X→{1,-1}。
它的誤差 ε m來衡量:
誤差 ε m 的大小與訓練弱學習算法所依賴的樣本分布 Dt 相關,可以理解為對於權值較大
的樣本錯分會導致較大的誤差增量。這樣設計誤差函數的目的正如前文所描述的,在
於使學習算法在后續的學習過程中集中對比較難的訓練例進行學習。AdaBoost 算法根
據每次迭代后得到的預測結果,為每個弱分類器根據預測的結果賦予一個權值,最終
的預測結果由每個弱分類器通過帶權重的投票方式產生。
online Adaboost
和online算法對應是offline算法(在線學習算法和離線學習算法),以前我學的大多數都是offline算法,例如,svm,神經網絡等算法
offline算法最明顯的特征是:首先訓練模型,模型訓練完就預測,預測得到一個結果,沒有考慮到預測的樣本對模型的影響。
而online算法:首先也要訓練一個簡單的模型,其主要在預測的過程中學習,由於預測的樣本沒有保存在內存中,只有一次的學習機會。
online adaboost, 這篇文章發表於CVPR2006引用率蠻高,在tracking方面特別牛逼。
下面來介紹一下這篇文章的主要思想,這篇文章最好最好要有online boosting基礎。也和online boosting差不多。先看算法的流程。
首先介紹一下選擇選擇器(selectors)和分類器(classifier).
在算法的開始,每個選擇器里面都有m個弱分類器,算法的目的就是每個選擇器在m個分類器中找出最優的一個分類器。然后再把n個選擇器組合起來。這種思想確實和adbooost一樣。m個弱分類器可以自己建立,也可以在每一維上建立分類器。
λ的作用是樣本在每個分類上的權重。當第一個選擇器分類正確是,λ的值就回減少,否則就增加,這也和adboost有點像。
αn表示每個選擇器的權重,是按選擇器錯誤率來定權的,這也和adboost有點像。所以online adoosting就是offline adboosting算法的山寨版。
這幾年的cvpr上的幾篇做tracking的文章以這個idea為基礎。tracking的方法是用最近比較流行的tracking-by-detection的方法。簡答的說就是在tracking的時候,observation model這一塊是用一個在線訓練的分類器。tracking的過程如下圖所示(圖中還有一步是用跟蹤的結果作為訓練器的新的輸入):
以上是我個人的理解,如有錯誤,請留言告訴我,本人感激不盡。 作者:BIGBIGBOAT/Liqizhou