AdaBoost 演算法【Latex原稿】
阿新 • • 發佈:2018-12-10
\documentclass[a4paper,11pt]{ctexart} \title{AdaBoost} \author{itnerd} \date{\today} \usepackage{algorithm} \usepackage{algorithmic} \usepackage{geometry} \usepackage{cite} \usepackage{latexsym} \usepackage{amsmath} \usepackage{amsfonts} \newtheorem{definition}{定義} \newtheorem{theorm}{定理} \newtheorem{proof}{證明} \CTEXsetup[name={第,節}]{section} \CTEXsetup[beforeskip = {20bp plus 1ex minus 0.2ex}]{section} \CTEXsetup[afterskip = {6bp plus 0.2ex}]{section} \CTEXsetup[format = {\zihao{4}\bfseries}]{section} \CTEXsetup[name={第,小節}]{subsection} \CTEXsetup[beforeskip = {12bp plus 1ex minus 0.2ex}]{subsection} \CTEXsetup[afterskip = {6bp plus 0.2ex}]{subsection} \CTEXsetup[format = {\fontsize{13bp}{15.6bp}\selectfont\bfseries}]{subsection} \CTEXsetup[beforeskip = {12bp plus 1ex minus 0.2ex}]{subsubsection} \CTEXsetup[afterskip = {6bp plus 0.2ex}]{subsubsection} \CTEXsetup[format = {\zihao{-4}\bfseries}]{subsubsection} \geometry{ a4paper, hmargin = 2.6cm, top = 2.92cm, bottom = 3.03cm, headheight = 0.45cm, headsep = 0.55cm, footskip = 1.05cm } \begin{document} \maketitle \pagestyle{plain} \section{弱學習器} 通常對於非平凡的學習任務,直接設計一個PAC學習演算法是困難的,但是找到如下定義稍弱一點的學習演算法一般是比較容易的。 \begin{definition} \textbf{弱學習}\\ 一個概念類C是 \textbf{弱PAC-可學習} 的,如果存在$\gamma>0$和多項式函式$poly(\cdot,\cdot,\cdot,\cdot)$,使得對於所有 $\epsilon,\delta>0$,輸入空間 X 的任意分佈 D,以及任意目標概念 $c\in C$,只要訓練樣本數 $m\geq poly(1/\epsilon,1/\delta,n,size(c))$,由某個演算法 A 訓練得到的假設函式 $h_S$ 滿足: \begin{equation} \Pr_{S\sim D^m} [R(h_s)\leq \frac{1}{2}-\gamma] \geq 1-\delta. \end{equation} 稱演算法A為針對概念類C的一個\textbf{弱學習演算法},由弱學習演算法返回的假設函式h稱為\textbf{基分類器}。 \end{definition} \section{Adaboost演算法} \begin{algorithm}[ht] \caption{AdaBoost($S=\{(x_1,y_1),\dots,(x_m,y_m)\})$} \begin{algorithmic}[1] \label{alg:1} \FOR{$i \leftarrow 1$ \textbf{to} $m$} \STATE $D_1(i) \leftarrow \frac{1}{m}$ \ENDFOR \FOR{$t \leftarrow 1$ \textbf{to} $T$} \STATE $h_t \leftarrow$ 由弱學習演算法$H$得到的誤差為$\epsilon_t = \Pr_{i\sim D_t}[h_t(x_i)\neq y_i]$ 的基分類器 \STATE $\alpha_t \leftarrow \frac{1}{2}log\frac{1-\epsilon_t}{\epsilon_t}$ \STATE $Z_t \leftarrow 2[\epsilon_t(1-\epsilon_t)]^{\frac{1}{2}}$ \FOR{$i \leftarrow 1$ \textbf{to} $m$} \STATE $D_{t+1}(i) \leftarrow \frac{D_t(i)exp(-\alpha_t y_i h_t(x_i))}{Z_t}$ \ENDFOR \ENDFOR \STATE $g \leftarrow \sum_{t=1}^{T} \alpha_t h_t$ \RETURN $h=sgn(g)$ \end{algorithmic} \end{algorithm} 整合學習方法中的Boosting技術是指通過整合多個基分類器來得到一個具有更高準確率的強分類器。演算法 \ref{alg:1} 給出了adaboost的虛擬碼,通過整合$T$個基分類器得到一個強分類器$h$。 首先假定每個樣本點的權重是相等的,即$D_1(i)=\frac{1}{m}$。每次通過弱學習演算法$H$得到一個弱分類器$h_t$,利用它在當前分佈下的訓練誤差來更新每個樣本的權重,具體來說,使分類正確的樣本點的分佈權重減小,而使分類錯誤的樣本點的分佈權重增大。這樣一來,演算法在下一次訓練時將著重利用上一次分類錯誤的樣本,從而彌補上一個分類器的不足。最後將這$T$個基分類器整合起來,也就是加權相加,其中錯誤率$\epsilon_t$越低的基分類器$h_t$在疊加時的權值越大。加權得到的分類器也可以看成是一種投票。 \section{訓練誤差的上界} Adaboost演算法的訓練誤差隨著boost次數(基分類器個數)指數下降到零,即有如下定理: \begin{theorm} 由Adaboost演算法返回的分類器$h$的訓練誤差滿足: \begin{equation} \hat{R}(h) \leq exp\big[-2\sum_{t=1}^{T}(\frac{1}{2}-\epsilon_t)^2\big]. \end{equation} 更進一步,如果 $\forall t \in [1,T]$,$\gamma \leq (\frac{1}{2}-\epsilon_t)$,則有 $$\hat{R}(h) \leq exp(-2\gamma^2T).$$ \end{theorm} \paragraph{證明} 利用不等式 $\mathbf{1}_{u \leq 0} \leq exp(-u), \forall u \in \mathbb{R}$, \begin{equation*} \hat{R}(h) = \frac{1}{m} \sum_{i=1}^{m} \mathbf{1}_{y_ig(x_i)\leq 0} \leq \frac{1}{m} \sum_{i=1}^{m} e^{-y_ig(x_i)} = \frac{1}{m} \sum_{i=1}^{m} \big[ m \prod_{t=i}^{T} Z_t \big] D_{T+1}(i) = \prod_{t=1}^{T}Z_i. \end{equation*} 因為 $\forall t \in [1,T]$,$Z_t$是一個歸一化因子,它又可以用 $\epsilon_t$ 來表示: \begin{eqnarray*} Z_t = \sum_{i=1}^{m} D_t(i)e^{-\alpha_t y_i h_t(x_i)} &=& \sum_{i:y_i h_i(x_i) = +1} D_t(i)e^{-\alpha_t}+\sum_{i:y_i h_i(x_i) = -1} D_t(i)e^{\alpha_t} \\ &=& (1-\epsilon_t)e^{-\alpha_t} + \epsilon_te^{\alpha_t}\\ &=& (1-\epsilon_t)\sqrt{\frac{\epsilon_t}{1-\epsilon_t}} + \epsilon_t\sqrt{\frac{1-\epsilon_t}{\epsilon_t}}\\ &=& 2\sqrt{\epsilon_t(1-\epsilon_t)}. \end{eqnarray*} 因此,歸一化因子的乘積具有如下上界: \begin{eqnarray*} \prod_{t=1}^{T}Z_i = \prod_{t=1}^{T}2\sqrt{\epsilon_t(1-\epsilon_t)} = \prod_{t=1}^{T}\sqrt{1-4(\frac{1}{2}-\epsilon_t)^2} &\leq& \prod_{t=1}^{T} exp\big[ -2(\frac{1}{2}-\epsilon_t)^2\big] \\ &=& exp\big[ -2\sum_{t=1}^{T}(\frac{1}{2}-\epsilon_t)^2\big] \end{eqnarray*} 證畢。 上述定理表明,只要弱分類器不是隨機猜測,即 $E(\epsilon_t) \neq \frac{1}{2}$,就能保證訓練誤差收斂到零。在實際訓練中,當訓練誤差已經減小到0,有時候繼續增加boost次數仍然可以觀察到測試誤差的減小。 \section{泛化界} 基於VC維理論可以得到以下泛化界: \begin{equation} R(H) \leq \hat{R}(H) + \mathcal{O} \big(\sqrt{ \frac{Td}{m} }\big). \end{equation} 其中$T$代表boost次數,d代表基分類器的VC維,m代表訓練樣本數。可以感覺到這個上界是很鬆的,因為隨著boost次數的增加,泛化誤差的上界也隨之增加,說明可能導致過擬合的發生。 基於邊界理論的泛化界如下: \begin{equation} R(H) \leq \Pr[margin_f(x,y) \leq \theta] + \mathcal{O} \big( \sqrt{ \frac{d}{m\theta^2} } \big) \end{equation} 上式對任意引數 $\theta \in [0,1]$ 成立,並且和boost次數沒有關係。 \end{document}