10.01.2016

大演算:機器學習的終極演算法將如何改變我們的未來,創造新紀元的文明 notes

大演算:機器學習的終極演算法將如何改變我們的未來,創造新紀元的文明?


這本《大演算》,500頁的書,完整筆記就做了兩萬五千字,讓我受益匪淺的一本書,絕對是我2016 Top 10選書。

★亞馬遜AI與機器學習類暢銷榜 第1名
★亞馬遜數學與統計類暢銷榜 第1名
★亞馬遜資訊理論類暢銷榜 第1名
★CNN、《新科學人》、《經濟學人》、《柯克斯書評》等多家媒體推薦報導
★比爾.蓋茲年度選書!

如果你已瞭解了一些 machine learning的演算法原理,像是SVM / bayes / tree ...,就更能瞭解作者多明戈斯的天才,也更能享受本書帶來的知識及想法。

多明戈斯認為,如果有人可以成功整合這些演算法的優點,就能發展出「終極演算法」,便可以從大數據與人工智慧中,獲得世界上過去、現在與未來的所有知識,將創造新紀元的文明。


本書主要的思想學派共分成五個,將為每個學派開闢一個章節專門介紹。

  • 符號理論學派( Symbolists )將學習視為是一種逆向演繹法,是從哲學、心理學和邏輯思路方面取得概念。
  • 類神經網路學派( Connectionists )會進行大腦的反向工程( reverse engineer ),主要是受到神經科學和物理學的啟發,模擬人腦思考行為。
  • 演化論學派( Evolutionaries )會在電腦上模擬演化演變,澈底運用遺傳學( genetics )和演化生物學(evolutionary biology )理論。
  • 貝氏定理學派( Bayesians )相信學習是機率推理的一種形式,是根據統計學做為理論的依據。
  • 而類比推理學派( Analogizers )則是透過從相似度判斷進行推論學習,並且受到心理學和數學的最佳化影響。


當我們在認識每一種思想學派時,我們的目標是蒐集完整的機器學習拼圖,並詳加解讀每一類型演算法適合應用的地方。要注意的是,沒有一位盲人可以正確摸熟整隻大象身軀。

並非所有機器學習演算法的運作都一樣,其差異也會產生不同的影響。以亞馬遜和Netflix 的推薦系統( recommenders )為例,每家公司都試圖經由網站流程介面引導「適合你」的採購行為,試圖確認什麼是你「需要」的商品,亞馬遜系統會推薦你瀏覽以前經常光顧的貨架﹔ Netflix 系統則會帶你瀏覽商店中你尚未瀏覽、陌生且看似新奇特異的部分,協助你找到最終會喜歡的影片。

有些學習器是學習知識,有的學習器是學習技能。

電腦科學歷來都是關於確定性( deterministically )的思維,但機器學習則是需要統計的思維。

事實上所有主要的學習器,包括最近鄰居演算法、決策樹、貝氏網路,一種概括的簡單貝氏演算法等,都具有以下普遍的意義:如果你給予學習器足夠數量的適當資料,學習器就可提供密切近似的任何函數(function),這是學習任何事物的一種數學說詞。唯一美中不足的,所謂「足夠的資料」可能是極為龐大。因為從有限的數據資料中學習,必然需要做出假設,因此我們可以看到,不同的學習器會做出不同的假設,這使得它們只能做好某些事情,而不適用於各種情況

這本書的核心假設:
透過一個單一、通用的機器學習演算法,可以從數據資中,推論出過去、現在和未來的所有知識。

有些事情是可以預測的,有些則無法預測,機器學習專家的首要責任,就是區分這兩類。
在一般的情況下,大多數銀行的模型都無法做出精準的預測,然而這是由於這些模型本身所具有的局限,並不是機器學習的限制。

為了使用一種技術,我們不需要精通它的內部運作原理,但我們的確需要針對這項技術,擁有一個好的概念模型。例如:我們不需要了解收音機的內部構造,只需要知道如何在收音機上找到一個廣播電臺,或是改變音量。
也許最重要的是,一旦我們也了解,一個特定的學習器是如何成其推論,那麼我們才會知道如何去看待這些資訊,要相信什麼、要反饋給製造商什麼修正意見,以及如何在下一次得到更好的結果。

貝氏定理(Bayes' theorem),就是告訴我們當你觀察到新的事證時,如何依此更新你的信念。貝氏定理學習器(Bayesian learner)是從提出一系列關於這個世界的假設開始。當學習器觀察到新的數據資料時,原本已推導出的假設就會變得更具可能性,而且這些假設不會變得不太可能,甚至是不可能的。當學習器觀察到足夠的數據資料後,一個單一假設或是少數假設就會占有重要的地位。

大演算使採用一種歸納法(induction),而圖靈機(Turing Machine,指的是寫程式的方法)採用的是演繹法(deduction)。

理論的力量在於它能簡化多少我們對世界的描述

一個相關、經常聽到的反對意見是「數據資料不能取代人類的直覺」。事實上卻是相反,因為人類的直覺不能取代數據資料。通常當你不知道事情的真相時,你會使用直覺去判斷,而且因為你往往並不知道,所以直覺是很寶貴的。但當證據都擺放在你面前時,你為什麼會否認它呢?

對於符號理論學派來說,所有的智慧可以被簡化成操縱符號,就像數學家求解方程式的過程,是透過用其他表達式來替換表達式的方法。符號理論學派明白,你不能從頭學起,你需要一些初步的知識,與數據資料相配合。符號理論學派們已經找到了如何將先前存在的知識納入學習,以及如何快速地將不同的知識進行結合,以解決新的問題。他們的主要演算法是逆向的演繹法,透過這種演算法可以找出哪些知識是欠缺的,以便能做出邏輯的演繹推論,然後使其盡可能地被通則應用。

對於類神經網路學派來說,學習就是人類大腦所做的事情,所以我們需要做的,就是對大腦進行反向工程。大腦的學習是透過調整神經元之間的連結強度,而關鍵的問題是找出哪些神經元的連接,必須對哪些錯誤負責,並依此對應地改變它們。類神經網路學派的主要演算法是倒傳遞理論演算法(Back propagation),它會比較系統的輸出與期望的輸出,然後依次改變一層又一層的神經元連結,以便使得輸出結果可以更接近於它應該呈現的。

演化論學派則認為,所有學習之母就是物競天擇。如果物競天擇可以造就我們,那麼它就可以造就任何事情,而我們所需要做的,就是在電腦上模擬它。演化論學派所解決的關鍵性問題就是學習的結構,不只是調整參數而已,就像倒傳遞理論演算法所做的,可以創建一種能夠讓這些調整進行微調的大腦。演化論學派的主要演算法是一種遺傳程式規劃(genetic programming), 就像人自然會交配與演化生物一樣;同樣地,遺傳程式規劃也會以相同的方式,繁衍與演化電腦程式系統。

貝氏定理學派最關注的課題就是不確定性。這門學派主張所有學到的知識都是不確定的,而且學習本身就是一種不確定的推理形式。那麼這個問題就變成如何處理雜訊、不完整,以及相互矛盾的資訊,而不會造成分崩離析。解決的辦法就是機率推理,而主要的演算法是貝氏定理與其衍生物。貝氏定理告訴我們如何把新證據轉化為信念,而機率推理演算法則盡可能有效地做到這一點。

對於類比推理學派而言,學習的關鍵是認識各種情況之間的相似之處,從而推斷其他情境的相似地方。如果兩位患者都有相似的症狀,也許他們患有相同的疾病,問題的關鍵是要判斷兩件事情之間是如何相似。類比推理學派的主要演算法就是支持向量機(Support Vector Machine,簡稱SVM),它可以找出哪些經驗是需要記住的,以及如何結合這些經驗,做出新的預測。

日星鑄字行 04

在機器學習領域,先入為主的觀念影響甚巨,只有排除偏見才可能進行學習。

如何從原始資料中探勘出規則定律。標準的解決方式,是假設我們知道真相的形式,而學習器的工作就是不斷地充實它。

資料探勘的意思是指「拷問數據資料,直到它供認為止。」
雜訊( noise )嚴重加劇了過度擬合的問題。雜訊在機器學習中,只是意謂著在數據資料裡的錯誤,或是你無法預測的隨機事件。
當你有太多的假設,而且沒有足夠的數據資料可以區分它們時,便會發生過度擬合。壞消息是,即使是簡單的合取學習器,假設數會隨著屬性數呈指數倍增。
學習器嘗試越多的定義,就越有可能在偶然機會下,從它們之中找到一個可以符合所有案例的定義。

科學不只是關於預測而已,它也是關於解釋和理解。但如果你的模型,最終無法對新的數據資料進行準確的預測,你便不能確定自己是否已經能真正了解或解釋這個潛在現象。對於機器學習來說,利用未曾見過的數據資料進行測試,是不可少的驗證過程,因為這是唯一可以告訴我們學習器是否產生過度擬合的現象。

在貝氏定理的核心觀念中,它只是一個簡單的規則,用於當你取得新事證時,更新你對已有假設的信念程度( degree of belief) ,如果證據與假設一致,這些假設的機率就會上升﹔如果沒有,機率就會下降。

機率並不是一個頻率,但卻是一個主觀的信念程度。因此它取決於你決定要把它設定成多少,而且所有的貝氏定理的推理,就是要讓你可以利用新的證據來更新你的先驗信念,以便獲得你的後驗信念,這也被稱為「激起對貝氏定理的興趣」( turning the Bayesian crank )。

對於最近鄰居演算法來說,分類邊界就是暗指資料點的位置與測量的距離,而唯一的成本便是查詢的時間
形成一個局部模型,而不是一個整體模型的相同概念,也適用在許多分類以外的問題上。科學家們經常使用線性迴歸預測連續變數,但大多數的現象都不是線性的問題。幸運的是,它們是局部線性的問題,因為平滑的曲線可以說是局部近似於直線。因此如果不能嘗試運用一條直線來對應分類所有的數據資料,那麼我們只能把它修正為用查詢點附近的點來進行對應分類,如此一來,你便可以擁有一個非常強大的非線性迴歸演算法。

k-means 演算法的缺點是我們需要提前確認集群的數目,但在現實世界中,總是會意外的遇到新類型的物件。一種選擇是假如這個新的物件與現有的集群差異太大,那麼就讓這個新的物件重新產生一個新的集群﹔另一種選擇是當我們繼續往下執行時,中途允許集群拆分和合併。無論哪種方式,我們可能希望演算法要包含產生較少集群的偏好,免得最後造成每一個物件都產生其自己的集群。

每一個機器學習演算法的三個組成部分:表示法、評估和最佳化。學習器的表示法會限制它可以學習的東西。如果我們想讓學習器成為一個功能非常強大的機器學習演算法,就像馬可夫邏輯網路一樣,那麼原則上學習器便可以學習任何東西。然後最佳化程式會竭盡一切力量,來最大化評估函數,不能多也不能少,而評估函數則是由我們決定的。

機器將會給予我們所要求的事情,而不是我們想要的事情。

......


這本書的內容真的很精彩,學習 Machine learning的朋友千萬不要錯過。

所有的筆記就不 po上來了,有興趣的可以一起來討論。


沒有留言: