1-1 机器学习和深度学习综述-paddle
人工智能\機器學習和深度學習的概念及關系
人工智能、機器學習和深度學習的概念在近些年十分火熱,但很多從業者也難以說清它們之間的關系,外行人更是霧里看花。學習深度學習,需要先從三個概念的正本清源開始。
三者覆蓋的技術范疇是逐層遞減的,人工智能是最寬泛的概念,機器學習則是實現人工智能的一種方式,也是目前較有效的方式。深度學習是機器學習算法中最熱的一個分支,在近些年取得了顯著的進展,并代替了多數傳統機器學習算法。所以,三者的關系可用下圖表示,人工智能 > 機器學習 > 深度學習。
如字面含義,人工智能是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的科學。由于這個定義只闡述了目標,而沒限定方法。所以,實現人工智能存在的諸多方法和分支,導致其變成一個“大雜燴”式的學科。
與此不同,機器學習,尤其是監督學習則有更加明確的指代。機器學習是專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。這句話有點“云山霧罩”的感覺,讓人不知所云。
機器學習的實現步驟可以分成兩步,訓練和預測。這兩個專業名詞類似于歸納和演繹的含義。歸納是從具體案例中抽象一般規律,機器學習中的“訓練”亦是如此。從一定數量的樣本(已知模型輸入XXX和模型輸出YYY)中,學習出輸出YYY與輸入XXX的關系(可以想象成是某種表達式)。演繹則是從一般規律推導出具體案例的結果,機器學習中的預測亦是如此。基于訓練得到的YYY與XXX之間的關系,遇到新出現的輸入XXX,計算出輸出YYY。在多數時候,通過模型計算得到的輸出,如果和真實場景中的輸出一致,說明模型是有效的。
下面以“機器從牛頓第二定律實驗中學習知識”為案例,讓讀者深入理解下機器學習(監督學習)到底是怎樣的一種技術方法。機器學習的方法論和人類科研的過程有異曲同工之妙。下牛頓第二定律的常見表述:物體加速度的大小跟作用力成正比,跟物體的質量成反比,且與物體質量的倒數成正比。該定律是由艾薩克·牛頓在1687年于《自然哲學的數學原理》一書中提出的。牛頓第二運動定律和第一、第三定律共同組成了牛頓運動定律,闡述了經典力學中基本的運動規律。
在中學課本中,牛頓第二定律有兩種設計實驗的方法:傾斜滑動法和水平拉線法。
相信很多讀者均有擺弄滑輪和小木塊做實驗的青澀年代和美好回憶。基于多次實驗,統計到不同的作用力下木塊加速度如下表所示。
| 項目 | 作用力X | 加速度Y |
|---|---|---|
| 第1次 | 4 | 2 |
| 第2次 | 5 | 2.5 |
| ... | ... | ... |
| 第n次 | 6 | 3 |
觀察上述實驗數據,不難猜測物體的加速度aaa和作用力之間的關系應該是線性關系。所以,我們提出假設 a=w?Fa = w * Fa=w?F,aaa代表加速度,FFF代表作用力,www是待確定的參數。
通過大量實驗數據的訓練,確定參數www是物體質量的倒數(1/m)(1/m)(1/m),即得到完整的模型公式a=w?(1/m)a = w * (1/m)a=w?(1/m)。當已知作用到某個物體的力時,基于模型可以方便的預測物體的加速度。例如燃料對火箭的推力FFF=10,火箭的質量mmm=2,求得火箭的加速度aaa=5。
這個有趣的案例演示機器學習的基本過程,但其中有一個關鍵點的實現尚不清晰,即怎樣確定模型的參數(w=1/m)(w=1/m)(w=1/m)?
學習確定參數的過程與科學家提出假說的方式類似,合理的假說至少能夠解釋所有已有觀測。如果在未來觀測到不符合理論假說的新數據,人們會嘗試提出新的假說。如天文史上,使用大圓和小圓組合的方式計算天體運行在中世紀是可以擬合觀測數據的。但隨著歐洲機械工業的進步,天文觀測設備逐漸強大,越來越多的觀測數據無法套用已有的理論。這促進了使用橢圓計算天體運行的理論假說出現。所以,模型有效的基本條件是能夠擬合已知的樣本,這給我們提供了學習有效模型的實現方案。以HHH為模型的假設,它是一個關于參數θ\thetaθ和輸入XXX的函數,用H(θ,X)H(\theta, X)H(θ,X) 表示。模型的優化目標是使得H(θ,X)H(\theta, X)H(θ,X)的輸出與真實輸入YYY盡量一致,即兩者相差程度即是模型效果的評價函數(相差越小越好)。那么,學習參數的過程就是在已知的樣本上,不斷減小該評價函數(H(θ,X)H(\theta, X)H(θ,X) 和YYY相差)的過程,直到學習到一個參數θ\thetaθ使得評價函數的取值最小。這個衡量模型預測值和真實值差距的評價函數也被稱為損失函數(損失 Loss)。上述優化參數的過程如下圖公式所示。
舉例類比,機器如一個機械的學生一樣,只能通過嘗試答對(最小化損失)大量的習題(已知樣本)來學習知識(模型參數w),期望用學習到的知識w組成完整的模型H(θ,X)H(\theta, X)H(θ,X),能回答不知道答案的考試題(未知樣本)。最小化損失是模型的優化目標,實現損失最小化的方法稱為優化算法,也稱為尋解算法(找到使得損失函數最小的參數解)。參數θ\thetaθ和輸入XXX組成公式的基本結構稱為假設。在牛頓第二定律的案例中,基于對數據的觀測,我們提出的是線性假設,即作用力和加速度是線性關系,用線性方程表示。由此可見,模型假設,評價函數(損失/優化目標)和優化算法是構成一個模型的三個部分。
機器學習算法理論在上個世紀90年代發展成熟,在諸多領域也取得了應用效果。但平靜的日子過到2010年左右,深度學習模型的異軍突起,極大改變了機器學習的應用格局。在今天,多數機器學習任務均可以使用深度學習模型解決。在語音,計算機視覺和自然語言處理等領域,深度學習模型的效果比傳統機器學習算法有顯著提升。
那么,深度學習又怎樣對機器學習的算法結構提出了改進呢?其實兩者的理論結構是一致的,也存在模型假設,評價函數和優化算法,最根本的差別在于假設的復雜度上。
如上圖所示,不是所有的任務均如牛頓第二定律那樣簡單直觀。對于一張圖片,人腦接收到五顏六色的光學信號,計算機則接收到一個數字矩陣。人腦以極快的速度反應出這張圖片是一位美女,而且是程序員喜歡的類型。這個結果是一個非常高級的語義概念,從像素到高級語義概念中間要經歷怎樣復雜的信息變換是難以想象的!這種變換已經復雜到無法用數學公式表達,所以研究者們借鑒了人腦神經元的結構,設計出神經網絡的模型。
人工神經網絡包括多個神經網絡層(卷積層、全連接層、LSTM等),每一層又包括很多神經元,超過三層的非線性神經網絡都可以被成為深度神經網絡。通俗的講,深度學習的模型可以視為是輸入到輸出的映射函數,比如中文到英文的映射,足夠深的神經網絡理論上可以擬合任何復雜的函數,因此,神經網絡非常適合學習樣本數據的內在規律和表示層次,對文字\圖像和聲音任務有很好的適用性,因為這幾個領域的任務是人工智能的基礎模塊,所以深度學習被稱為實現人工智能的基礎也就不足為奇了
深度學習的歷史和發展
究竟神經網絡是怎樣的設計?先不用著急,在下一章會以一個“房價預測”的案例,演示使用Python實現神經網絡模型的細節。在進入實現細節之前,讓我們回顧下深度學習的悠久的歷史和今日的蓬勃發展。
神經網絡思想的提出已經是75年前的事情了,現今的神經網絡和深度學習的設計理論是一步步的完善的。在這漫長的發展歲月中,有一些取得關鍵突破的閃光時刻。其中有1960年代,基本網絡結構設計完善后的黃金時代,也有在1969年異或問題被提出后(人們驚奇的發現神經網絡模型連簡單的異或問題也無法解決),神經網絡模型被束之高閣的黑暗時代。雖然在1986年,新提出的多層的神經網絡解決了異或問題,但隨著90年代后理論更完備并且實踐效果更好的SVM等機器學習模型的興起,神經網絡并未得到重視。真正的興起是在2010年左右,基于神經網絡模型改進的技術在語音和計算機視覺任務上大放異彩,也逐漸被證明在更多的任務(自然語言處理以及海量數據的任務)上有效。至此,神經網絡模型重新煥發生機,并有了一個更加響亮的名字:深度學習。
為何神經網絡到2010年后才煥發生機,這與深度學習成功所依賴的先決條件有關。
- 大數據是它有效的前提。神經網絡和深度學習是非常強大的模型,但也需要足夠量級的訓練數據。時至今日,很多傳統機器學習算法和人工特征依然是足夠有效的方案,原因在于很多場景下沒有足夠的標記數據來支撐深度學習這樣強大的模型。深度學習的能力特別像科學家托羅密的豪言壯語:“給我一根足夠長的杠桿,我能撬動地球!”,它也可以發出類似的豪言:“給我足夠多的數據,我能夠學習任何復雜的關系”。但在現實中,足夠長的杠桿與足夠多的數據一樣,往往只能是一種美好的愿景。直到近些年,各行業IT化程度提高,累積的數據量爆發式的增長,才使得應用深度學習模型成為可能。
- 依靠硬件的發展和算法的優化。現階段依靠更強大的計算機,GPU,Autoencoder預訓練和并行計算等技術,深度網絡在訓練上的困難已經被逐漸克服。其中,數據量和硬件是更主要的原因。沒有前兩者,科學家們想優化算法都無從進行。
早在1998年,一些科學家就已經使用神經網絡模型識別手寫字母圖像了。但深度學習在計算機視覺應用上的興起,還是在2012年ImageNet比賽上,使用AlexNet做圖像分類。如果比較下98年和12年的模型,會發現兩者在網絡結構上非常類似,僅在一些細節上有所優化。在這十四年間計算性能的大幅提升和數據量的爆發式增長,促使模型完成了從“簡單的字母識別”到“復雜的圖像分類”的跨越。
雖然歷史悠久,但深度學習在今天依然在蓬勃發展,一方面基礎研究快速進展,另一方面工業實踐層出不窮。
如下圖所示,基于深度學習的頂級會議ICLR(international conference on learning representations)統計,深度學習相關的論文數量呈逐年遞增的狀態。同時,不僅僅是深度學習會議,與數據和模型技術相關的會議ICML和KDD,專注視覺的CVPR和專注自然語言處理的EMNLP等國際會議的大量論文均涉及著深度學習技術。該領域和相關領域的研究方興未艾,技術仍在不斷創新突破中。
另一方面,以深度學習為基礎的人工智能技術在升級改造眾多的傳統行業,存在極其廣闊的應用場景。下圖選自艾瑞咨詢的研究報告,人工智能技術不僅可在眾多行業中落地應用(廣度),在部分行業(如安防)已經實現了市場化變現和高速增長(深度)。
除了應用廣泛的特點外,深度學習還推動人工智能進入工業大生產階段,算法的通用性導致標準化、自動化和模塊化的框架產生。此前,不同流派的機器學習算法理論和實現均不同,導致每個算法均要獨立實現,例如隨機森林和支撐向量機(SVM)。但在深度學習框架下的諸多算法結構有較大的通用性,例如常用與計算機視覺的卷積神經網絡模型(CNN)和常用于自然語言處理的長期短期記憶模型(LSTM),均可以分為組網模塊,梯度下降的優化模塊,預測模塊等。這使得抽象出統一的框架成為了可能,并大大降低了編寫建模代碼的成本。一些相對通用的模塊,如網絡基礎算子的實現,各種優化算法等均可以由框架實現。建模者只需要關注數據處理,配置組網的方式,以及用少量代碼串起訓練和預測的流程即可。
在深度學習框架出現之前,機器學習工程師處于手工業作坊生產的時代。為了完成建模,工程師需要儲備大量數學知識,并為特征工程工作積累大量行業知識。每個模型是極其個性化的,建模者如同手工業者一樣,將自己的積累形成模型的“個性化簽名”。而今,“深度學習工程師”進入了工業化大生產時代。只要掌握深度學習必要但少量的理論知識,掌握Python編程即可以在深度學習框架實現極其有效的模型,甚至與該領域最領先的實現模型不相上下。建模這個被“老科學家”們長期把持的建模領域面臨著顛覆,也是新入行者的機遇。
每個人的生命都是寶貴的,我們經常說要將有限的時間浪費在有價值的事情上。為何要學習深度學習技術,以及通過這本書來學習呢?一方面,深度學習的應用前景廣闊,是極好的發展方向和職業選擇。另一方面,本書會使用國產的深度學習框架飛槳(PaddlePaddle)來編寫實踐案例,基于框架的編程讓深度學習變得易學易用。
下面讓我們盡快開始第一個實踐案例:基于Python編寫完成房價預測任務的神經網絡模型,并在這個過程中親身設計一個神經網絡模型。
思考題
- 類比牛頓第二定律的案例,在你的工作和生活中還有哪些問題可以用監督學習的框架來解決?模型假設和參數是什么?評價函數(損失)是什么?
- 為什么說深度學習工程師有發展前景?怎樣從經濟學(市場供需)的角度做出解讀?
總結
以上是生活随笔為你收集整理的1-1 机器学习和深度学习综述-paddle的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1-2 用Python编写【房价预测】模
- 下一篇: 百度paddle学习笔记