機器學習綜述

2021-03-02 人工智慧愛好者社區

作者:射命丸咲    Python 與 機器學習 愛好者

知乎專欄:https://zhuanlan.zhihu.com/carefree0910-pyml 

個人網站:http://www.carefree0910.com 

往期閱讀:

從零開始學人工智慧(16)--Python · 決策樹(四)· 樹

從零開始學人工智慧(15)--Python · 決策樹(三)· 節點

從零開始學人工智慧(14)--Python · 決策樹(二)· 節點

從零開始學人工智慧(13)--Python · 決策樹(一)· 準則

從零開始學人工智慧(12)--Python · 決策樹(零)· 簡介

「機器學習」在最近雖可能不至於到人盡皆知的程度、卻也是非常火熱的詞彙。機器學習是英文單詞「Machine Learning」(簡稱ML)的直譯,從字面上便說明了這門技術是讓機器進行「學習」的技術。然而我們知道機器終究是死的,所謂的「學習」歸根結底亦只是人類「賦予」機器的一系列運算。這個「賦予」的過程可以有很多種實現,而 Python 正是其中相對容易上手、同時性能又相當不錯的一門語言。作為綜述,我們只打算談談機器學習相關的一些比較寬泛的知識,介紹與說明為何要使用 Python 來作為機器學習的工具的工作則交給下一篇文章來做。而在最後,我們會提供一個簡短易懂的、具有實際意義的例子來給大家提供一個直觀的感受。

目錄:

人生苦短,我用 Python

第一個機器學習樣例

「緒論」小結

什麼是機器學習?

正如前面所說,由於近期的各種最新成果、使得「機器學習」成為了非常熱門的詞彙。機器學習在各種鄰域的優異表現(圍棋界的Master是其中最具代表性的存在),使得各行各業的人們都或多或少對機器學習產生了興趣與敬畏。然而與此同時,對機器學習有所誤解的群體也日益壯大;他們或將機器學習想得過於神秘、或將它想得過於萬能。然而事實上,清晨的一句「今天天氣真好」、朋友之間的寒暄「你剛剛是去吃飯了吧」、考試過後的感嘆「複習了那麼久終有收穫」……這些日常生活中隨處可見的話語,其背後卻已蘊含了「學習」的思想——它們都是利用以往的經驗、對未知的新情況做出的有效的決策。而把這個決策的過程交給計算機來做、可以說就是「機器學習」的一個最淺白的定義。

我們或許可以先說說機器學習與以往的計算機工作樣式有什麼不同。傳統的計算機如果想要得到某個結果、需要人類賦予它一串實打實的指令,然後計算機就根據這串指令一步步地執行下去。這個過程中的因果關係非常明確,只要人類的理解不出偏差、運行結果是可以準確預測的。但是在機器學習中,這一傳統樣式被打破了:計算機確實仍然需要人類賦予它一串指令,但這串指令往往不能直接得到結果;相反,它是一串賦予了機器「學習能力」的指令。在此基礎上,計算機需要進一步地接受「數據」並根據之前人類賦予它的「學習能力」從中「學習」出最終的結果,這個結果往往是無法僅僅通過直接編程得出的。是故這裡就導出了稍微深一點的機器學習的定義:它是一種讓計算機利用數據而非指令來進行各種工作的方法。在這背後,最關鍵的就是「統計」的思想,它所推崇的「相關而非因果」的概念是機器學習的理論根基。在此基礎上,機器學習可以說是計算機使用輸入給它的數據、利用人類賦予它的算法得到某種模型的過程,其最終的目的則是使用該模型、預測未來未知數據的信息。

既然提到了統計,那麼一定的數學理論就不可或缺。相關的、比較簡短的定義會在第四章給出(PAC框架),這裡我們就先只敘述一下機器學習在統計理論下的、比較深刻的本質:它追求的是合理的假設空間(Hypothesis Space)的選取和模型的泛化。(Generalization)能力。該句中出現了一些專用術語,詳細的定義會在介紹術語時提及,這裡我們提供一個直觀:

注意:上述本質嚴格來說應該是 PAC Learning 的本質;在其餘的理論框架下、機器學習是可以具有不同的內核的。

從上面的討論可以看出,機器學習和人類思考的過程有或多或少的類似。事實上,我們在第六、第七章講的神經網絡(Neural Network,簡稱 NN)和卷積神經網絡(Convolutional Neural Network,簡稱 CNN)背後確實有著相應的神經科學的理論背景。然而與此同時我們需要知道的是,機器學習並非是一個「會學習的機器人」和「具有學習的人造人」之類的,這一點從上面諸多討論也可以明晰(慚愧的是,我在第一次聽到「機器學習」四個字時,腦海中浮現的正是一個「聰明的機器人」的圖像,甚至還幻想過它和人類一起生活的場景)。相反的,它是被人類利用的、用於發掘數據背後信息的工具

當然,現在也不乏「危險的人工智慧」的說法,霍金大概是其中的「標杆」,這位偉大的英國理論物理學家甚至警告說「人工智慧的發展可能意味著人類的滅亡」。孰好孰壞果然還是見仁見智,但可以肯定的是:本書所介紹的內容絕不至於導致世界的毀滅,大家大可輕鬆愉快地進行接下來的閱讀 ( σ』ω』)σ。

機器學習常用術語

機器學習領域有著許多非常基本的術語,這些術語在外人聽來可能相當高深莫測、它們事實上也可能擁有非常複雜的數學背景,但我們需要知道:它們往往也擁有著相對淺顯平凡的直觀理解(上一節的假設空間和泛化能力就是兩個例子)。本節會對這些常用的基本術語進行說明與解釋,它們背後的數學理論會有所闡述、但不會涉及到過於本質的東西。

正如前文反覆強調的,數據在機器學習中發揮著不可或缺的作用;而用於描述數據的術語有好幾個,它們是需要被牢牢記住的:

「數據集」(Data Set):就是數據的集合的意思。其中,每一條單獨的數據被稱為「樣本」(Sample)。若沒有進行特殊說明,本書都會假設數據集中樣本之間在各種意義下相互獨立。事實上,除了某些特殊的模型(如隱馬爾可夫模型和條件隨機場),該假設在大多數場景下都是相當合理的。

對於每個樣本,它通常具有一些「屬性」(Attribute)或說「特徵」(Feature),特徵所具體取的值就被稱為「特徵值」(Feature Value)。

特徵和樣本所張成的空間被稱為「特徵空間」(Feature Space)和「樣本空間」(Sample Space),可以把它們簡單地理解為特徵和樣本「可能存在的空間」。

相對應的,我們有「標籤空間」(Label Space),它描述了模型的輸出「可能存在的空間」;當模型是分類器時、我們通常會稱之為「類別空間」。

其中、數據集又可以分為以下三類:

訓練集(Training Set);顧名思義、它是總的數據集中用來訓練我們模型的部分。雖說將所有數據集都拿來當做訓練集也無不可,不過為了提高及合理評估模型的泛化能力、我們通常只會取數據集中的一部分來當訓練集。

測試集(Test Set);顧名思義、它是用來測試、評估模型泛化能力的部分。測試集不會用在模型的訓練部分;換句話說,測試集相對於模型而言是「未知」的、所以拿它來評估模型的泛化能力是相當合理的。

交叉驗證集(Cross-Validation Set,簡稱 CV Set);這是比較特殊的一部分數據,它是用來調整模型具體參數的。

注意:需要指出的是,獲取數據集這個過程是不平凡的;尤其是當今「大數據」如日中天的情景下,諸如「得數據者得天下」的說法也不算誑語。在此我推薦一個非常著名的、含有大量真實數據集的網站——UCI,接下來的篇章中也常常會用到其中一些合適的數據集來評估我們自己實現的模型。

我們可以通過具體的例子來理解上述概念。比如、我們假設小明是一個在北京讀了一年書的學生,某天他想通過宿舍窗外的風景(能見度、溫度、溼度、路人戴口罩的情況等)來判斷當天的霧霾情況並據此決定是否戴口罩。此時,他過去一年的經驗就是他擁有的數據集,過去一年中每一天的情況就是一個樣本。「能見度」、「溫度」、「溼度」、「路人戴口罩的情況」就是四個特徵,而(能見度)「低」、(溫度)「低」、(溼度)「高」、(路人戴口罩的)「多」就是相對應的特徵值。現在小明想了想、決定在腦中建立一個模型來幫自己做決策,該模型將利用過去一年的數據集來對如今的情況作出「是否戴口罩」的決策。此時小明可以用過去一年中 8 個月的數據量來做訓練集、2 個月的量來做測試集、2 個月的量來做交叉驗證集,那麼小明就需要不斷地思考(訓練模型):

用訓練集訓練出的模型是怎樣的?

該模型在交叉驗證集上的表現怎麼樣?

最後,小明可能會在測試集上評估一下自己剛剛思考後得到的模型的性能、然後根據這個性能和模型作出的「是否戴口罩」的決策來綜合考慮自己到底戴不戴口罩。
        接下來說明一下上一節中提到過的重要概念:假設空間與泛化能力。泛化能力的含義在上文也有說明,為強調、這裡再敘述一遍:

這一點當然是十分重要的,因為我們拿來訓練我們模型的數據終究只是樣本空間的一個很小的採樣,如果只是過分專注於它們的話、就會出現所謂的「過擬合」(Over Fitting)的情況。當然,如果過分罔顧訓練數據,又會出現「欠擬合」(Under Fitting)。我們可以用一張圖來直觀感受過擬合和欠擬合(如下圖所示,左為欠擬合、右為過擬合):

欠擬合與過擬合

所以我們需要「張弛有度」、找到最好的那個平衡點。統計學習中的結構風險最小化(Structural Risk Minimization、簡稱 SRM)就是研究這個的,它和傳統的經驗風險最小化(Empirical Risk Minimization、簡稱 ERM)相比,注重於對風險上界的最小化、而不是單純使經驗風險最小化。它有一個原則:在使得風險上界最小的函數子集中、挑選出使得經驗風險最小的函數。而這個函數子集,正是我們之前提到過的假設空間

注意:所謂經驗風險,可以理解為訓練數據集上的風險。相對應的,ERM 則可以理解為只注重訓練數據集的學習方法,它的理論基礎是經驗風險在某種足夠合理的數學意義上一致收斂於期望風險、亦即所謂的「真正的」風險。

關於 SRM 和 ERM 的詳細討論會涉及到諸如 VC 維和正則化的概念,這裡不進行詳細展開、但我們需要有這麼一個直觀:為了使我們學習方法訓練出的模型泛化能力足夠好,我們需要對我們的模型做出一定的「限制」、而這個「限制」就表現在假設空間的選取上。一個非常普遍的做法是對模型的複雜度做出一定的懲罰、從而使模型趨於精簡。這與所謂的「奧卡姆剃刀原理」(奧卡姆:我的剃刀還能再戰 500 年)不謀而合:「如無必要,勿增實體」「切勿浪費較多的東西去做,用較少的東西、同樣可以做好事情」

相比起通過選取合適的假設空間來規避過擬合,進行交叉驗證(Cross Validation)則可以讓我們知道過擬合的程度、從而幫助我們選擇合適的模型。常見的交叉驗證有三種:

S-fold Cross Validation:中文可翻譯成S折交叉驗證,它是應用最多的一種方法。其方法大致如下:

將數據分成 S 份:D={D1,D2,...,DS}、一共作 S 次試驗

在第 i 次試驗中,使用作為(D−Di)訓練集、Di作為測試集對模型進行訓練、評測

最終選擇平均測試誤差最小的模型

留一交叉驗證(Leave-one-out Cross Validation):這是S折交叉驗證的特殊情況,此時 S=N

簡易交叉驗證:這種實現起來最簡單、也是本博客(在進行交叉驗證時)所採用的方法。它簡單地將數據進行隨機分組、最後達到訓練集約佔原數據的 70% 的程度(這個比率可以視情況改變),選擇模型時使用測試誤差作為標準。

機器學習的重要性

道理說了不少,但到底為什麼要學機器學習、機器學習的重要性又在哪裡呢?事實上,回顧歷史我們可以發現,人類的發展通常伴隨著簡單體力勞動向複雜腦力勞動的過渡。過去的工作基本都有著明確的定義,告訴你這一步怎麼做、下一步再怎麼做。而如今這一類的工作已是越來越少,取而代之的是更為寬泛模糊的、概念性的東西,比如說「將本季度的產品推向最合適的市場,在最大化期望利潤的同時、儘量做到風險最小化」這種需求。想要做好這樣的任務,我們需要獲取相應的數據;雖說網絡的存在讓我們能夠得到數之不盡的數據,然而從這些數據中獲得信息與知識卻不是一項平凡的工作。我們當然可以人工地、仔細地逐項甄選,但這樣顯然就又回到了最初的原點。機器學習這門技術,可以說正因此應運而生

單單抽象地說一大堆空話可能會讓人頭暈腦脹,我們就舉一舉機器學習具體的應用範圍吧,從中大概能夠比較直觀地看出機器學習的強大與重要。
發展到如今,機器學習的「爪牙」可謂已經伸展到了各個角落、包括但不限於:

機器視覺、也就是最近機器學習裡很火熱的深度學習的一種應用

語音識別、也就是微軟 Cortana 背後的核心技術

數據挖掘、也就是耳熟能詳的大數據相關的領域

統計學習、也就是本書講解的主要範圍之一,有許許多多著名的算法(比如支持向量機 SVM)都源於統計學習(但是統計學習還是和機器學習有著區別;簡單地說,統計學習偏數學而機器學習偏實踐)

機器學習還能夠進行模式識別、自然語言處理等等,之前提過的圍棋界的 Master 和最新人工智慧在德州撲克上的表現亦無不呈現著機器學習強大的潛力。一言以蔽之,機器學習是當今的熱點,雖說不能保證它的熱度能 100% 地一直延續下去,至少本人認為、它能在相當長的一段時間內保持強大的生命力。

回復 人工智慧          揭開人工智慧的神秘面紗

回復 貝葉斯算法      貝葉斯算法與新聞分類

回復 機器學習          R&Python機器學習

回復 阿里數據          阿里數據系列課程

回復 Python             Python機器學習案例實戰

回復 Spark               徵服Spark第一季

回復 kaggle             機器學習kaggle案例

回復 大數據             大數據系列視頻

回復 數據分析          數據分析人員的轉型

回復 數據挖掘          數據挖掘與人工智慧

回復 機器學習          R&Python機器學習

回復 阿里數據          阿里數據系列課程

回復 R                      R&Python機器學習入門

相關焦點

  • 【科學綜述】機器學習在熱電材料領域的應用
    機器學習作為一種具有強大數據分析能力的方法,近年來已越來越多地應用於熱電材料的研究。這篇綜述總結了熱電材料研究領域常用的機器學習方法,系統地介紹了它們在材料結構、電子輸運和熱電輸運等性質上的應用案例和相關研究進展,並對該領域的發展前景進行了展望。
  • 一份NLP&ML領域中文綜述總結~
    對初學者而言,綜述類文章可以便於讀者在研究初期儘快掌握該方向的發展趨勢。對綜述類文章的搜索與閱讀也因此成為了初學者進入相關研究領域前面臨的第一個問題。針對這一需要,東北大學自然語言處理實驗室對自然語言處理領域與機器學習領域的中文綜述類文章進行了收集和分類整理。將其按照不同研究領域進行分類,並提供了論文的獲取網址,方便初學者獲取相應領域的綜述文章。
  • ACS編輯|機器學習和深度學習在化學化工健康與安全領域的應用
    機器學習和深度學習算法可以基於訓練數據構建數學模型以進行預測或決策,從而極大地節省人力,物力和財力,也是目前化學化工健康與安全領域的研究熱點。機器學習和深度學習在化學化工健康與安全研究中的應用可以追溯到上世紀九十年代中期,一些研究在毒性預測研究中應用了機器學習算法。儘管化學化工健康與安全是一個重要的研究領域,但機器學習和深度學習在這一領域中的應用卻始終處於落後狀態。
  • 清華汪玉等電子設計自動化ML論文綜述:180篇文獻、ACM TODAES接收
    機器學習技術在 EDA 領域的應用可以追溯至上世紀 90 年代,而 ML 技術的近期突破性發展和 EDA 任務不斷增加的複雜度使得研究者對利用 ML 解決 EDA 任務產生了愈發濃厚的興趣。最近,清華大學電子工程系教授汪玉團隊聯合香港中文大學 Bei Yu 老師組同學就該主題撰寫了一篇 44 頁的綜述文章。該論文被 ACM TODAES 期刊錄用。
  • GitHub | 機器學習&深度學習&nlp&cv從入門到深入全套資源分享
    深度學習之目標檢測的前世今生(Mask R-CNN)深度學習目標檢測模型全面綜述:Faster R-CNN、R-FCN和SSD從RCNN到SSD,這應該是最全的一份目標檢測算法盤點目標檢測算法綜述三部曲基於深度學習的目標檢測算法綜述(一)基於深度學習的目標檢測算法綜述(二)基於深度學習的目標檢測算法綜述
  • 機器學習在生命科學中的應用
    歐洲分子生物學實驗室於4月11日在Nature Reviews Drug Discovery發表了一篇關於機器學習在drug-develop開發中應用的綜述文章,該文章概述了當前機器學習中使用的工具和技術,並概述了迄今為止機器學習在關鍵drug-develop領域中取得的進展。
  • 這篇綜述文章用166篇參考文獻告訴你答案
    來自港科大和第四範式的這篇綜述論文提供了解答。數據是機器學習領域的重要資源,在數據缺少的情況下如何訓練模型呢?小樣本學習是其中一個解決方案。來自香港科技大學和第四範式的研究人員綜述了該領域的研究發展,並提出了未來的研究方向。
  • 乾貨分享 | 機器學習、深度學習、nlp、cv從入門到深入全套資源分享
    深度學習之目標檢測的前世今生(Mask R-CNN)深度學習目標檢測模型全面綜述:Faster R-CNN、R-FCN和SSD從RCNN到SSD,這應該是最全的一份目標檢測算法盤點目標檢測算法綜述三部曲基於深度學習的目標檢測算法綜述(一)基於深度學習的目標檢測算法綜述(二)基於深度學習的目標檢測算法綜述
  • 《機器學習數學基礎》最新版,Mathematics for Machine Learning
    然而,這帶來了一些風險,即實踐者不知道設計決策,因此不知道機器學習算法的局限性。  有興趣了解機器學習算法背後機制的實踐者需要具備如下的先驗知識:    在大學裡,關於機器學習的入門課程往往會在課程的早期部分涉及到以上這些先驗知識。由於歷史原因,機器學習的課程傾向於在計算機科學系進行授課。
  • 2018年的一篇NER綜述筆記
    總評這篇綜述讓我感受到比較完整的NER世界觀是啥樣的,問題定義、問題拆解、常用方法及其評價、模型評估、拓展等,由於是綜述,全面性滿滿,具體的方法可以在參考文獻裡面找,212篇文獻可謂是誠意滿滿。文章關鍵點筆記1 introduction命名實體識別的中的核心,命名實體(Named Entity)概念的出現其實並不久遠,1996年。
  • 《中國科學》創刊70周年特邀綜述——現代優化理論與應用
    最近的十年裡, 隨著大數據和人工智慧時代的到來, 數學優化在機器學習中的應用越發廣泛而深入, 而機器學習也為數學優化帶來了更大的挑戰與機遇。首先, 隨著相關軟硬體的發展, 可用數據量級不斷提高, 使得經典算法不再適用, 新的算法不斷產生。
  • 清華大學張長水等最新《少樣本學習FSL》2020綜述論文,30頁pdf414篇參考文獻
    儘管該研究已有近20年的歷史,在理論和應用層面上都具有重要意義,但到目前為止,相關的調查和綜述還很少。在本文中,我們廣泛調查了從21世紀頭十年到2019年幾乎所有與FSL相關的科學論文,以詳細闡述一個系統的FSL調研。我們必須強調,這裡討論的FSL與zero-shot learning (ZSL)正交[346],這是機器學習的另一個熱門話題。
  • 近200篇機器學習&深度學習資料分享
    《Deep Learning in Neural Networks: An Overview》介紹:這是瑞士人工智慧實驗室 Jurgen Schmidhuber 寫的最新版本《神經網絡與深度學習綜述》本綜述的特點是以時間排序,從 1940 年開始講起,到 60-80 年代,80-90 年代,一直講到 2000 年後及最近幾年的進展。
  • Plant Phenomics專刊 | 智慧農業系統的圖像分析與機器學習
    SPECIAL ISSUE:Image Analysis and Machine Learning for Cyber-Agricultural Systems智慧農業系統的圖像分析與機器學習因此,將先進的圖像處理和機器學習方法應用於這一重要的社會需求可被視為農業產業的變革性延伸。這些文章介紹了圖像分析和機器學習算法、實驗技術、軟體、管道模型以及智慧農業應用的新成果。
  • Multi-Task Learning的幾篇綜述文章
    來自 | 知乎地址 | https://zhuanlan.zhihu.com/p/145706170作者 | 黃浴編輯 | 機器學習算法與自然語言處理公眾號
  • 深度學習的光環背後,都有哪些機器學習的新進展被忽視了?
    reddit 上近期就出現了一個帖子,把網友們聚起來聊聊除了神經網絡之外的機器學習方法的新發展,以及可以和各種模型配合、不僅限於改善神經網絡的概念和模型。也許這些現在並不熱門的研究裡就埋下了下一次機器學習革命的種子,就像十年前研究神經網絡的學者們在冷落中迎來了革命的黎明一樣。下面雷鋒網 AI 科技評論整理了一些言之有物的網友回答。
  • 7 papers|3篇綜述論文,全面了解機器閱讀理解、圖表徵學習等
    機器之心整理機器之心編輯部本周 7 Papers 重點推薦三篇綜述論文,包括機器學習測試綜述、圖數據表徵學習方法最新進展綜述以及機器閱讀理解綜述。這些 survey 論文能夠很好的幫助我們全面了解特定技術主題。
  • 基於TensorFlow的機器學習速成課程25講視頻全集(16-18講)
    【導讀】前些日子,大家都知道,Google 上線了基於 TensorFlow 的機器學習速成課程,它包含 40 多項練習、25 節課程以及 15
  • 機器學習工具包PRoNTo入門操作指南
    近年來,隨著機器學習、深度學習和大數據計算等領域的飛速發展,越來越多的神經影像學問題有望在與人工智慧(AI)結合的方法中得到新的發現與突破
  • 機器學習的5種「兵法"
    作者:Jason Brownlee譯者:Claire 於麗君 璐璐暢校對:孫強 羅雙英在研究機器學習中,理論在其整個自上而下方法中試用於哪裡呢?在傳統的機器學習教學中,豐富的數學理論知識對於理解機器學習是至關重要的,我的機器學習教學方法通常是教你如何端對端解決問題以及傳輸結構。