機器學習 - 」沒有免費的午飯「定理的理解

最近在看周志華的《機器學習》西瓜書,第一章緒論部分最值得討論的恐怕就是」沒有免費的午飯「定理(No Free Lunch Theorem),這個定理的完整證實很複雜,書裏儘量地將問題簡化,可是彷佛仍是有一些晦澀難懂,尤爲是數學公式部分。因此對這一段的內容,本文闡述一下我我的的理解,或許能幫助到你們,或許有不周全的地方也歡迎留言討論。算法

直觀理解

首先咱們避開復雜的理論分析過程,直接跳到結論部分,來看一下這個定理本質上是要告訴咱們什麼,這一點相信不少讀者應該也很清楚。書中使用了以下的例子:框架

image.png

訓練數據集是圖中的黑點,若是採用兩種不一樣的算法,他們有着不一樣的概括偏好,或者說訓練策略,可能會訓練出 A 和 B 兩個模型(即假設),那麼對於第一張圖中的測試數據集(白點),顯然 A 比 B 擬合得更好,即 A 的泛化能力更強;而對於第二張圖則相反,B 在測試數據集上表現更出色。機器學習

即使左邊的圖中的數據點的平滑分佈彷佛是一個更」常見「,更」合理「的現實問題,但很遺憾這只是你的一廂情願。從數學上講左右兩張圖所描述的問題,它們的地位是同樣的,出現的可能也是同樣,並不存在誰比誰更常見更符合現實。函數

」沒有免費的午飯「定理正是要告訴咱們,沒有什麼算法是適用於全部的現實問題的,任何兩個算法,以及它們訓練出來的模型,在全部的現實問題的集合面前是無優劣的,它們的性能的數學指望值是同樣的。對於不一樣的現實問題,要選擇相應的算法來解決。性能

概念闡述

在進入理論分析前,咱們先將書中提到的幾個重要的概念闡述清楚,這些概念咋一看你可能都沒在乎,或者沒仔細思考過它的含義到底是什麼,因此這裏把它們都釐清:學習

問題

這實際上是最核心的一個概念,但書中並無給出一個明確的闡述,到底什麼是所謂的問題。這裏的問題,其實就是指一個函數,從輸入能夠計算獲得輸出的函數,或者說從輸入到輸出的映射。咱們獲取了一堆樣例數據,想要求解這個目標函數,通俗來講就是要解決這個問題測試

因此能夠這樣簡單地等價,一個問題就是一個目標函數,問題的集合,就是目標函數的集合,就是書中所說的函數空間,其實也等價於假設空間 $\cal{H}$,由於咱們求解出來的假設 $h$ 必然是屬於上述函數空間中的某一個函數,只是它並不必定剛好是目標函數(或者說幾乎不多是),因此在測試樣本集上 $h$ 必然會產生偏差。spa

樣本與樣例

有了問題,或者說目標函數,就有了樣本數據,全部樣本的集合就是樣本空間。不一樣的目標函數,在樣本上會求出不一樣的標籤,這些帶了標籤的樣本就是樣例。咱們的任務,就是從有限的樣例數據中儘量地能還原出目標函數,使之能很好地描述(擬合)真實問題。3d

假設

就是咱們根據訓練數據集,訓練出來的函數,這個函數可能並非這個問題真正的目標函數,但值得注意的是,不論是真正的目標函數,仍是咱們訓練出來的假設函數,它們都來自同一個函數空間對象

數學建模

在「免費的午飯」問題中,咱們評定一個假設,或者說模型的性能,並非測試它在某一個單獨問題上的表現,是將其放在全部問題的集合上,計算它的偏差的理論指望值,這也正是書中的公式所要計算的。

看完書中這一段理論推導,個人第一感受是:彷佛能理解了,但又總以爲無法從數學上徹底說服本身。不知道多少人和個人感受是同樣的,因此這裏咱們仔細來分析這段理論推導,來把它的含義真正理解清楚。

問題集合

書中爲了簡化,將所討論的問題侷限於二分類問題,全部問題出現的可能性是平均分佈的,而且樣本空間 X 的大小也是有限的。這種簡化是爲了方便咱們理解, 也是合理的。因此咱們首先要弄清楚,在這種簡化的前提之下,咱們所面對的問題集合,或者說函數空間 到底是什麼:

假設咱們正處於一個問題之下,樣本空間 $\cal{X}$ 的大小是 |$\cal{X}$|,每一個樣本點的標籤是 0 或 1。雖然咱們並不知道這個問題真正是什麼,也就是說並不知道真正的目標函數是什麼,可是咱們能夠知道目標函數來自的集合。對於二分類問題,咱們樣本空間總共有 |$\cal{X}$| 個樣本,映射到 |$\cal{X}$| 個標籤上,每一個標籤都有 0 或 1 兩中可能性,那麼 $\cal{X}$ 個點就有 $2^{|\cal{X}|}$ 種映射的可能。也就是說對於樣本空間 $\cal{X}$,咱們的函數空間無非就是這 $2^{|\cal{X}|}$ 個函數(映射)。真正的目標函數一定是這 $2^{|\cal{X}|}$ 個函數中的一個;一樣,訓練出來的假設也只能來自於這 $2^{|\cal{X}|}$ 個函數的集合,這就是問題集合

算法與假設的關係

書中的第一條公式 1.1,如圖所示:

image.png

已經在討論某一個算法的偏差指望值了,這其實在思惟上已經有了一個跳躍。咱們這裏先給它降維,首先討論某一個假設的偏差。注意這裏算法假設的區別,按照書中的表述,在同一個問題之下,基於訓練數據集 $X$,一個算法 $\cal {L_a}$ 可能會訓練出不一樣的假設 $h$,它們符合必定的機率分佈 $P(h|X,\cal{L_a})$。

你可能會問,一個特定算法,在特定的訓練集上,訓練出的假設不該該是固定的嗎,爲啥會有一個機率分佈?關於這一點我也是存在困惑,可是咱們能夠先認可這一前提。個人我的解釋是,算法是任意的,它的策略中可能也包含了某些隨機因子,即使是同一份訓練數據集,也可能產出不一樣的假設。固然你也能夠說通常的算法不包含隨機因子,基於同一份數據訓練出的結果是必定是肯定的,那麼這個機率分佈就只有一個樣本,機率爲 100%,可是這仍然能夠囊括在上述的機率分佈理論中,也就是說咱們能夠認爲這個關於 $h$ 的機率分佈理論是通用的。

計算偏差的指望值

假設在單樣本上的偏差總和

然而在討論算法的性能以前,咱們首先跳過算法,只關注最後訓練出來的假設自己:即對於某一個假設 $h$,它的「訓練集外偏差」是多少?

在二分類問題的框架之下,咱們的函數空間裏一共有 $2^{|\cal{X}|}$ 個函數,即 $2^{|\cal{X}|}$ 個問題。咱們如今訓練出一個假設 $h$,這個 $h$ 固然是這 $2^{|\cal{X}|}$ 個函數中的某一個,那麼咱們須要計算的就是 $h$ 在這全部 $2^{|\cal{X}|}$ 問題上的總偏差是多少。考慮任意單同樣本點 $x$,經過 $h$ 可以計算出它的預測標籤 $y$,是 0 或 1;而 $x$ 在全部 $2^{|\cal{X}|}$ 個問題上的真正標籤,顯然其中有一半即 $2^{|\cal{X}|-1}$ 個是 0, 另一半是 1,所以假設 $h$ 對於樣本點 $x$ 的預測標籤,在一半的問題上能預測正確,在一半的問題上預測錯誤,因此偏差的指望值綜合總和即爲 $2^{|\cal{X}|-1}$。

以上討論,須要理解的是:

  • 上面計算的是單個假設 $h$,預測單個樣本點 $x$,在全部問題上的偏差之和;須要注意,這個單點樣本 $x$ 是任意的,但並不影響最後的計算結果,也就說對任意一個樣本 $x$,假設 $h$ 在全部問題集合上的預測偏差總和是同樣的,都是 $2^{|\cal{X}|-1}$;
  • $h$ 來自於函數空間中 $2^{|\cal{X}|}$ 個函數中的某一個,而函數空間即等價於問題集合。$h$ 與函數空間中的全部其它函數的偏差之和,就是它在全部問題全集上偏差總和;
  • 樣本 $x$ 同樣, 假設 $h$ 也是任意的,可是不論是哪個 $h$,一樣不影響最後的計算結果,也就是說在全部問題集合面前,任意一個 $h$ 的預測偏差總和是同樣的,即全部 $h$ 的性能都是同樣的;

綜上所述咱們得出一個基本結論:

  • 對於任意一個假設 $h$,預測任意一個樣本 $x$,在全部問題的集合面前,它的預測偏差總和是同樣的。

這個偏差之和,咱們能夠這樣表示:

$\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $2^{|\cal{X}|-1}$

其中 ${\Bbb {I}}$ 爲書中的偏差函數,爲真則取值 1,假則取值 0;$f$ 爲真實的目標函數,對全體 $f$ 求和,即表示這個假設 $h$ 在全部問題集合上的偏差總和。

咱們須要理解的一個核心結論就是:這個結果是一個常數 $2^{|\cal{X}|-1}$,與咱們所使用的假設 $h$ 和 樣本 $x$ 都無關。

假設在數據集上的偏差總和指望值

上述表達式針對的是單個樣本 $x$ 的,若是將求和擴展到全部「訓練集外數據」 ${{\cal{X}}-X}$ 上,假設樣本 $x$ 在 ${{\cal{X}}-X}$ 上符合分佈 $P(x)$ ,則偏差總和指望值爲:

$\sum_{{\cal{X}}-X}\sum_fP(x){\cdot}{\Bbb {I}}(h(x){\neq}f(x))$
= $\sum_{{\cal{X}}-X}P(x){\cdot}\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$

對於上述結論,咱們能夠理解爲,因爲 $h$ 對於任意一個樣本 $x$ 作預測的偏差總和都是 $2^{|\cal{X}|-1}$,這個結果與咱們採用哪個樣本 $x$ 是無關的。也就是說,無論 $x$ 在 ${{\cal{X}}-X}$ 上符合怎樣的分佈,$\Bbb {I}$ 與 $x$ 無關,所以上述計算公式,能夠將關於 $x$ 和 $\Bbb {I}$ 的部分提取出來分別求和,最終獲得 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$。

所以對 $x$ 求 $\sum$ 後,咱們的結論進一步變成:對於任意一個假設 $h$,在全部問題集合面前,對訓練集外數據的預測偏差總和的指望值是同樣的,都是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$,這個結果與假設 $h$ 無關。

算法的偏差指望值

最後咱們終於能夠回到「沒有免費午飯」理論所討論的真正對象,即一個算法的性能。前面已經提到過,在同一個問題之下,一個算法 $\cal{L_a}$​,可能會訓練出不一樣的假設 $h$,這一點書中的描述方式是,一個算法 ,基於訓練數據集 $X$,它訓練出的假設 $\cal{h}$ 是符合分佈 $P(h|X,\cal{L_a})$ 的。

前面的結論已經告訴咱們,對於任意一個假設 $h$,在全部問題集合面前,預測偏差總和的指望值是同樣的,與 $h$ 無關。既然如此,那麼無論一個算法根據什麼樣例數據,最終訓練出的假設 $h$ 是什麼,在全部問題的集合面前,這些假設的最終性能都是同樣的,偏差總和的指望值都是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$。所以對於一個算法而言,它的偏差指望值也是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$,由於偏差與它訓練出來的假設 $h$ 無關。

從數學公式的角度看,一個算法的偏差指望值,就是對它所能訓練出來的全部 $h$ 的偏差求指望值,因而能夠用下面的公式表示:

$\sum_h\sum_{{\cal{X}}-X}\sum_fP(h|X,{\cal{L_a}}){\cdot}P(x){\cdot}{\Bbb {I}}(h(x){\neq}f(x))$
= $\sum_h(h|X,{\cal{L_a}}){\cdot}\sum_{{\cal{X}}-X}P(x){\cdot}\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $1{\cdot}\sum_{{\cal{X}}-X}P(x){\cdot}\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$

這個結論就是書中的最終結論,即對於一個算法 $\cal {L_a}$,它所訓練出來的全部可能的假設 $h$,在全部問題集合上的偏差指望值是同樣的,爲 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$

總結

上面這個複雜公式,即爲書中給出的數學表達式,只是我把三個求和符號 $\sum$ 按照我我的的理解方式調換了一下順序。其中我認爲最重要的就是最內層求和,即一個假設 $h$,在單同樣本 $x$ 上作預測,在全部問題集合上的偏差總和:

$\sum_f{\Bbb {I}}(h(x){\neq}f(x)) = 2^{|\cal{X}|-1}$

該結果與所使用的假設 $h$ 和樣本 $x$ 都無關。所以咱們再對全體 $h$ 和 $x$ 求指望值,那三個 $\sum$ 能夠分別單獨求和, 感性的認知就是,無論 $h$ 在某一算法 $\cal {L_a}$ 訓練下的分佈如何,也無論 $x$ 在樣本空間 ${{\cal{X}}-X}$ 下的分佈如何,最終的指望值都是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$,是一個常數。事實上,若是咱們把 $x$ 的求和範圍擴展到全體樣本空間 ${\cal {X}}$,則最終的指望值爲 $2^{|\cal{X}|-1}\sum_{\cal{X}}P(x)$ = $2^{|\cal{X}|-1}$,這是一個更簡潔的結果。

這也就是「沒有免費午飯」定理所要最終闡述的結論,即無論任何算法,它們會訓練出怎樣的假設(模型),若是假設全體問題集合的分佈是均勻的,那麼假設與假設之間就不存在任何優劣之分,算法與算法之間也不存在任何優劣之分,它們的性能指望值都是相等的。固然,必須注意這個結論的前提,就是全體問題,以及它們的分佈是均勻的,地位均等,才能推出全部假設和算法的的地位也均等。

可是在現實應用中,咱們評估一個算法或者假設的性能,不會把它應用在全部問題上作測試,這顯然是不合理的。任何算法和假設都有其特定的適用場景,咱們關心的是它們在本身適配的場景上,即在某些問題上,可否表現出最優異的性能。

相關文章
相關標籤/搜索