Boosting,黃荊棍下出好人

2021-06-20 22:57:55 字數 1644 閱讀 7524

作為這個年代成長起來的中國青年,相信不少人都有被父母練習「男子單打,女子單打,男女混合雙打」的經歷。中國有句老話,「黃荊棍下出好人」。每當我們犯了錯事,說了錯話,往往會遭遇父母的批評,甚至棍棒,乃至引申出「打是親,罵是愛」等等奇談怪論。一頓言語棍棒下來,孩子往往記憶深刻,下次遇事自然會想起以前的批評教育,行為有所改變。

這種做法是否真的能出好人,我們暫且不論。今天要講的故事與學習有關,因為在機器學習領域,有乙個非常著名的演算法,與中國父母親教育孩子有著異曲同工之妙。

在計算視覺以及機器學習領域中,有乙個重要的演算法,叫做boosting,或者adaboosting(adaptive boosting的縮寫)。這個詞的中文意思有很多,但是我覺得最貼切的應該是「強化」。其實稱它為一種演算法有些牽強,我覺得更準確的應該是一種思想。

在機器學習領域,最重要的玩意應該算分類器了(classifier)。這是乙個函式,它能根據輸入樣本的特性決定其屬於某個類別。為了解釋分類器的定義,以及說明boosting演算法,我們假設有這樣一位小朋友,名叫小明,他正在讀小學二年級,現在他面臨乙個問題:是否應該用石塊砸碎隔壁家的玻璃。當然小明不是乙個小壞蛋,這只是因為隔壁家的同學王二丫昨天值日的時候批評了小明的桌面不整潔。

我們假設小明已經,這時,小明有兩個選擇:1.砸,2.不砸。這就相當於小明的腦海中設計了乙個分類器,根據當下的情況——」王二丫昨天批評了我」,來判斷「砸壞王二丫家的玻璃」是否是正確的。

接著,我們假設小明同學有一點是非觀念不強的毛病。他覺得王二丫批評他是非常嚴重的挑釁行為,砸了她家玻璃也沒什麼大不了的。這也就是說小明同學的分類器分類正確率不高,只具有比丟硬幣(random guess)更高一些的正確率(比如小明不會把王二丫家的房子一把火燒了)。於是小明就扔出了石頭,砸壞了二丫家的玻璃。

當然,這事情被小明的父母知道了。他們非常生氣,決定對小明的錯誤做出懲罰,此處略去二百字……小明痛苦流涕,對自己的錯誤進行了深刻反省,一場風波就此過去。

但是福無雙至,禍不單行,兩天後王二丫又一次在帶隊做早操時批評了小明。放學後,倔強的小明怒火中燒,又一次手持石塊來到了二丫家的窗前(玻璃君躺槍)。小明再次面臨抉擇。但是考慮到上次砸了玻璃之後慘遭痛打,小明退縮了。屁股的痛苦回憶戰勝了報復的快樂,小明老老實實的回到了家。

在這個故事裡,小明的思想歷程展示了boosting演算法的基本思路。它的核心就是通過順序地訓練一些分類器,通過這些分類器的組合,來得到最終的高正確率的分類器。對於分類器的訓練,主要的方式是對於錯誤分類的懲罰進行估計,然後得到懲罰期望最小的分類標準。在第乙個分類器時,小明得到了錯誤的分類結果(砸了玻璃),然後被痛打(錯誤分類的懲罰)。在訓練第二個分類器時,小明調整了對「砸玻璃是正確的」這個分類結果對應的錯誤分類懲罰的估計值。這樣訓練得到的分類器終於得出了正確結果。

這就是boosting演算法的簡單例子。當然,實際中的boosting演算法比這個例子要複雜得多,但是其基本思想是一樣的,那就是:對於上乙個分類器分錯的了樣本,提高其權重,使得對其錯誤分類的代價估計提高,從而使得下乙個分類器傾向於將這些樣本進行正確分類。從這個角度來看,乙個複雜的演算法,和小明父母的「棍棒教育」,頗有些相似之處。

也許看起來的挺無聊的,但是這個演算法確實應用廣泛。在近幾年,正是基於這個演算法,viola等人第一次開發出了可以實時工作的人臉檢測系統,基本解決了困擾工業界多年的人臉檢測問題,其實用的例子,就是我們在iphone以及其他照相系統中看到的人臉檢測技術。如此看來,黃荊棍下雖然不一定出好人,但還是可能出好事的:)

**:

Boosting演算法總結

adaboosting 通過前向分步法,優化損失函式,為指數損失函式,然後梯度上公升樹。可以 任意分類器作為弱分類器。優化步長,與迭代次數。gbdt 回歸問題 1 擬合殘差 2 cart樹 3 擬合負梯度 分類問題 1 改變擬合loss,比如 邏輯回歸,對數損失,adaboost 指數損失。2 訓練...

整合學習之Boosting

boosting是整合演算法之一,通過整合多個弱分類器,從而形成乙個強分類器。任一弱學習演算法可以通過加強提公升到乙個任意正確率的強學習演算法,並通過構造一種多項式級的演算法來實現這一加強過程,這就是最初的boosting演算法的原型。boosting是一種將弱分類器通過某種方式結合起來得到乙個分類...

Boosting演算法學習

1 提公升演算法 boosting 是常用的有效的統計學習演算法,屬於迭代演算法,它通過不斷地使用乙個弱學習器彌補前乙個弱學習器的 不足 的過程,來序列地構造乙個較強的學習器,這個強學習器能夠使目標函式值足夠小。2 bagging也是一種常用的統計學習方法,兩者經常放在一起對比,它們不同的是,bag...