1. 程式人生 > >人工智慧裡的數學修煉 | AdaBoost的數學原理: 分佈更新推導

人工智慧裡的數學修煉 | AdaBoost的數學原理: 分佈更新推導

Boosting 是一族可以將弱學習器提升為強學習器的演算法。這族演算法的工作機制類似:先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多的關注,然後基於調整後的樣本分佈來訓練下一個基學習器;如此重複進行,直至基學習器達到事先指定的值T,最終將這T個基學習器進行加權結合。

AdaBoost整合演算法框架

這裡我們先給出AdaBoost的演算法框架,再給出框架裡公式的具體推導過程

輸入:
訓練集 D={(x1,y1),(x2,y2),...,(

xm,ym)};
基學習器 φ;
訓練輪數 T

過程:
1. D1(x)=1/m ##初始化權值分佈
2. for t=1,2,...,T do
3. ht=φ(D,Dt) ##基於分佈和資料集訓練出一個基學習器
4. εt=PxDt(ht(x)f(x)) ##估計出這個基學習器的誤差
5. if εt>0.5 then break
6. at=1/2ln((1εt)/εt); ##確定分類器的權重
7.

Dt+1(x)=Dt(x))Zt×{exp(at),ifht(x)=f(x)exp(at),ifht(x)f(x) ##更新分佈
8. end for

輸出:
H(x)=sign(t=1Tatht(x))

AdaBoost的數學推導

AdaBoost的數學推導主要是推匯出分類器權重和分佈的更新公式,也就是上述框架中的第6步和第7步。AdaBoost演算法有很多種推導方式,比較容易理解的是基於“加性模型“(additive model),即基學習器的組合

H(x)=t=1Tatht(x)

來最小化指數損失函式