《機器學習理論導引》閱讀攻略

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 最近在讀《機器學習理論導引》。這本書是西瓜書的作者周志華老師領銜、南大LAMDA四位教授共同撰寫的新書,權威就自不必說。封面畫了一隻充滿了阿里巴巴和四十大盜風格的木箱子,一看就是童話故事官方指定用來裝寶貝的那一種,大家就按慣例起了個綽號,叫“寶箱書”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 剛接觸機器學習應該都有一個共同的感覺,就是機器學習不太好學習。主要的難題有兩個,第一個自然是數學,機器學習需要大量的數學基礎知識,一個個張牙舞爪的數學公式很容易讓人望而卻步。可是,當我們好不容易鼓起勇氣,爲了學好機器學習,決心和數學死磕到底,我們很快又會遇到第二個難題,知識面太過寬泛,就算願意硬啃,也讓人無從下嘴。我在以前的文章反覆說過,機器學習是算法,不是一種算法,是一羣算法的總稱。機器學習雖然要求解的問題來來去去就那幾個大類,但解題思路是一個賽一個精奇,不同思想下設計出來的算法自然也就猶如八仙過海。精彩是挺精彩的,但是自然涉及的數學基礎自然五花八門,從學習的角度來看,總感覺要學的東西東一塊西一塊的不成體系,缺乏一條循序漸進的主軸,甚至連起點在哪裏都不太好找。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 《機器學習理論導引》就是要解決這個問題。這本書的定位是“給學習和研究機器學習理論提供一個入門引導”,這話是我從書裏抄的,寫得相當官方,如果沒看完這本書,光看這句話確實不太容易明白究竟是什麼意思。其實很簡單,我們學習一門知識,習慣上總是從基礎學習,畢竟從小就說要夯實基礎再往上學嘛。可是,上面已經說了,機器學習的理論知識客觀上確實存在並非同根同源的問題,真的能找到所謂的“機器學習基礎理論知識”嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 答案是可以的。機器學習算法腦洞頻閃,但既然都叫機器學習,那自然都能抽象出一些共同的特點來,能夠被歸入同一套學習框架之中。這套從機器學習中通過高度抽象而來理論框架,就叫學習理論,顧名思義,是專門研究機器學習如何學習的理論體系,是機器學習算法理論的理論,這也是《機器學習理論導引》的主要內容。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 如果你對這個詞很陌生,不要緊,它是本篇的主角,接下來我們會用很長的篇幅介紹學習理論到底都研究哪些問題。總而言之,和機器學習算法散漫的知識點相比,學習理論顯然更爲系統,看上去更符合我們平時印象當中的“基礎理論體系”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 那難道其它教材都不知道有學習理論的存在嗎?當然不是,實際上很多的機器學習教材都有涉及。不過,市面上機器學習的教材主要還是着眼於算法,對學習理論的介紹通常分散在不同的章節當中,仍然無法避免知識點割裂的問題。另一些教材爲了強調邏輯的關聯,選擇了另一個極端,即只選擇學習理論中具體的某一種深入介紹,有一點研究專著的意思,這種選擇確實能夠避免了割裂問題,但同時也只好犧牲了知識的全面性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 教材市場的這種現狀其實並不奇怪,癥結在於機器學習的基礎理論一點也不“基礎”。我們說過,學習理論是機器學習理論的理論,是高度抽象的學習理論框架。看到“高度抽象”幾個字,你也許會突然明白點什麼。初次翻《機器學習理論引導》,特別是以前已經看過一些機器學習相關教材的同學,可能會有種用頭霧水的感覺。我們習慣看到機器學習的書裏面用不同的章節介紹線性模型、決策樹、神經網絡之類的知識,但《機器學習理論導引》這本書卻不是這麼回事,翻開目錄,除了第一章預備知識裏提了一嘴支持向量機,正片裏全是可學性、複雜度、遺憾界之類搞不清從哪冒出來的怪詞,搞不清和我們過往熟悉的那一套機器學習知識都有什麼關聯,自然就不太容易搞清楚應該怎樣閱讀。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 這也正是本文的重點,這本書書名叫《機器學習理論導引》,定位是“導引”,不過正如上面所說,學習理論高度抽象,連《導引》翻開都是陌生艱澀的名詞,容易讓人摸不着頭腦。我想,如果再有一篇《導引》的導引,介紹一下這本書都寫了些什麼內容,都有什麼作用,又是按什麼邏輯串在一起的,讀起來也許就友好多了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 那麼接下來我們就專聊怎麼讀的問題。我覺得有必要從書的封面說起。拿到書後我第一個問題就是,封面是不是畫錯了?機器學習總要自帶一點科幻光環,機器學習的書也一般會選擇在封面放個機器人或者機器腦之類的科幻符號,爲啥這本書的封面非要放一隻古裏古氣的箱子?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 答案恰恰和書的組織結構密切相關。《機器學習理論導引》這本書介紹的是機器學習中的學習理論,本書一共八個章節,除了第一章預備知識外,每章介紹一種學習理論的問題,一共介紹了七種重要概念和理論工具。“七”這個數字在周老師看來有着非凡意義,周老師在前言裏自曝是武俠迷,“七”讓他一下想起了古龍先生的代表作《七種武器》,而第七種武器正好是“什麼都能往裏裝”的神奇箱子。周老師說,他忍不住要致敬《七種武器》,這就有了封面的寶箱,“寶箱書”也因此而得名。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 學習理論的研究對象是機器學習是怎樣學習的,很多的課題,哪怕此前已經對機器學習有所瞭解,可能剛接觸時仍會感到陌生。要比較流暢地閱讀本書,首先需要了解《機器學習理論導引》是根據怎樣的組織邏輯、按照怎樣的主線介紹學習理論。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 首先講的是可學性,這是學習理論的基礎。先說說“可學性”這個詞,是不是給人一種每一個字我都認識,但合在一起就不知道是什麼意思的感覺?這個詞和機器學習中的“學習”密切相關,英文叫Learnable,直譯過來就是可學(習)性。聽起來很複雜,其實意思很簡單,機器學習的能力是有上限的,這裏不是指某一款模型,而是在座的各位,也就是有些任務是無法通過機器學習來完成的。如果把機器學習要完成的任務看作是一道數學題,那可學性指的就是這道題是否有解,也就是能否通過機器學習來達到目標,反之亦然。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 這一章有一個非常重要的學習理論,需要重點學習,叫概率近似正確理論,一般採用它的英文縮寫,寫作PAC理論。PAC理論是學習理論中最基本的理論,不難想見,“學習能力”是一個高度抽象的概念,我們可以用直白的語言解釋它的含義,那要給出形式化的定義並不容易。PAC學習正是給出了一個抽象刻畫機器學習能力的框架。這是一項開創性的工作,由圖靈獎得主Valiant創立,並籍此開創了“計算學習理論”這個新的研究領域。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 接下來講的是複雜度。這一章承接上一章,可學性關注的是問題是否有解,而複雜度關注的是有多難解。在PAC理論中,可學性與假設空間的複雜程度密切相關,假設空間越複雜,搜索解的難度越大。當假設空間是有限的時候,可以通過層層篩選搜索解,但這就有了一個限制條件:假設空間必須有限。數學不喜歡侷限,同時,很多模型的假設空間並非是有限的,那這時應該怎樣刻畫複雜度呢?這就是本章的主要內容。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 本章同樣有一個非常重要的概念,VC維。一般機器學習的教材如果選擇放入一點學習理論的內容,通常至少會包括兩個知識點,一個是前一章的PAC理論,另二個就着本章的VC維。VC維是一種刻畫假設空間複雜度常用的方法,當然這不是唯一一種,本章同時也介紹了另一種,名爲Rademacher複雜度。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 也許大家第一次看,會覺得PAC理論、VC維這些知識太過抽象,也不知道學來能有什麼用。這些知識確實不太容易學懂,但都是學習理論的基礎,也是最常用的研究工具,絕不是爲學而學,學完就扔了的,後續的章節會反覆使用這些基礎和工具來研究更具體的問題。書裏接下來安排的三章,包括第4章的泛化界、第5章的穩定性和第6章的一致性,可以看作是同一個大問題的三個大塊,這個大問題就是模型效果評價。在機器學習中,模型效果毫無疑問是最需要關注的問題之一。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 機器學習模型效果好不好,一般業內會用泛化能力強不強來評價。什麼叫“泛化”呢?泛化指的是模型在不同數據集中的預測效果。爲什麼要考慮這個問題呢?如果看過我寫的那本面向初學者的《機器學習算法的數學解析和Python實現》知道,所謂機器學習,就是擬合數據。要使用機器學習模型,首先是需要經過訓練的,模型訓練需要數據,這部分數據稱爲訓練數據,或者叫訓練集。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 這裏有一個隱含的知識點,每個數據集都有自己的分佈特徵,使用訓練集訓練模型,模型擬合的其實是訓練集的特徵,這就可能導致一個問題,過擬合問題。過擬合直白來說,就是模型學得太好了,這是初學者很費解的一個詞,學得太好怎麼能叫問題呢?這個問題我在《機器學習算法的數學解析和Python實現》也專門進行了介紹,學得太好當然不是問題,問題是不同的數據集可能會有不同的分佈特徵,模型在訓練集上學得太好,在其它數據集上,具體來說,是在其它分佈特徵上,模型的預測性能反而可能下降,也就是過擬合使得模型的泛化能力下降了。這可能就會產生一個現象,泛化能力差的模型在訓練時看起來效果不錯,可是一部署到生產環境就變成了笑話,完全不可用了。這就是爲什麼無論是學術界還是工業界,都非常關心模型的泛化能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 爲了具體研究這個問題,《機器學習理論導引》首先介紹了泛化界,包括泛化誤差上界和泛化誤差下界。泛化界主要是基於不同的假設空間複雜度度量,這裏就用到了前面譬如VC維等的知識,與具體的學習算法無關,但有一個侷限,這些泛化誤差界只能用於有限VC維學習算法的泛化性,而對無限VC維的學習算法無能爲力。要解決這個問題,書裏接着介紹了穩定性,用來刻畫訓練集的擾動對算法效果產生的影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 接下來書裏介紹了一致性理論,同樣是聚焦訓練集,但這一次開了一個很大的腦洞。工業界有個說法,如果模型效果不行,首先要做的是多收集數據。多收集數據在實踐上效果確實好,所以口口相傳廣爲人知,但大家在用的時候肯定都很關心,到底什麼樣的模型才能和數據規模保持這種線性增長關係,裏面會不會也有個“看臉”的問題。一致性理論就是假設訓練數據不斷增加,最後趨向於無窮的過程中,學習算法通過訓練是否趨向於貝葉斯最優分類器。簡單來說,一致性研究的就是哪些模型適合通過無腦堆數據來提升預測效果。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 接下來的第7章的收斂率,研究的是模型訓練階段的優化問題,這是個實踐中非常重要的問題。我在《機器學習算法的數學解析和Python實現》中介紹,模型訓練很像馬戲團訓練動物,是通過反饋獎勵來進行,具體的目標就是使得損失函數最小化。那怎麼達到最小化呢?這就是個優化問題,最常見的就是選擇梯度下降法。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 但是,紙上得來終覺淺,一到實踐你就會發現,是不是選擇了梯度下降法就萬事大吉呢?不是,還有一個收斂問題。首先梯度並不是一定就肯乖乖下降,還有可能上升,這就是非常叫人討厭的梯度爆炸,更常見的問題是另一種,就是梯度雖然下降,但下降得非常慢,兩百年過去了才降一點點,使得訓練時間非常長。這些就是收斂問題,包括兩個方面內容,一是什麼條件才能夠收斂,也就是收斂條件,另一個則是本書第7章要介紹的收斂率,也就是收斂的速度如何。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 最後一章第8章,介紹的是遺憾界。遺憾英文regret,是一項性能評價指標,大家也許聽到的不多,覺得有點陌生,這也不奇怪,因爲這一章已經跨出了機器學習的傳統範疇,進入到在線學習的領域。遺憾(regret)主要是用來評價在線學習。在線學習的訓練方法和我們熟悉的不太一樣,所謂在線學習,就是用於訓練的數據集一直在不斷動態更新,這和我們熟悉的用一塊靜態數據作爲訓練集來訓練模型的方式不太一樣,訓練目標也從最小化損失函數,變成了最小化累計損失。因此,評價模型效果的指標也有所區別,使用的是比較結果,具體來說,是在線損失與離線算法的最小損失的差值,這就是遺憾。研究遺憾的取值邊界,這就是本章重點關注的遺憾界問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下回再聊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"莫凡 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"網名木羊同學。娛樂向機器學習解說選手,《機器學習算法的數學解析與Python實現》作者,前沿技術發展觀潮者,擅長高冷技術的“白菜化”解說,微信公衆號“睡前機器學習”,個人知乎號“木羊”。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章