官术网_书友最值得收藏!

1.1 機器學習簡介

1.1.1 機器學習

人工智能(Artificial Intelligence, AI)一直是科技的前沿,也是一門涉及多個領域的綜合科學。由于概念的廣泛性,各種權威的人工智能資料定義上都有很大的區別,換句話說,很多定義都有范圍和傾向性。在2009年,Russell和Norvig總結前人的研究實踐,提出一種相對全面的概念集合論述,這種論述通過對比的方式闡述了兩對核心概念。第一,通過推理判斷來獲得結果的能力與通過行為經驗獲得結果的能力相對比;第二,通過實踐來完善推理模型的過程與從原理建模來得到應用或產品的未來的不同。以這個對比討論為藍本,可以得到比較細致的關于人工智能的4點子定義論述。

1. 子定義論述一

人類能夠通過人工智能的發展過程得到進化發展所需要的算法概念,從而更新自我體系,通過類似機器學習的訓練技巧將人腦智能進一步優化開發,從而完成以智能進化為核心目標的人工智能過程。換句話說,計算機的進步會推動人腦的進步,但是最終的落實點還是人類自身。舉一個具體的例子,目前我們在互聯網產品中使用了很多智能問答機器人,其核心是計算機通過機器學習的過程獲得類似人類回答問題的過程和能力,我們接收外界提出的問題,通過思考得出結論,最終將結論以合適的形式表達出來。仔細分析這個過程,我們可以分別列出具體過程以及具體過程所依賴的算法能力。為了能夠流暢地完成問題接收的過程,需要使用當前飛速發展并取得驕人成績的機器視覺和機器聽覺方面的相關技術,針對不同語言的問題,自然語言處理技術(Natural Language Processing, NLP)是不可或缺的,通過建立相關的知識庫,機器學習能夠進一步模型化相關范圍的問題,最終得到相應的答案。不斷完善問答機器人的精確度和泛化性能的過程,就會給人類帶來技術的提升和思考模式的更新,這個過程有點像反向仿生學,通過更好的機器、更好的回答讓我們重新定義自身的問題回答機制。

2. 子定義論述二

這個論述是大家最為關注的方向,也是科幻電影中經常使用的題材,那就是計算機具有和人類一樣的智能能力,我們也可以稱這個概念為狹義的人工智能概念。在這里,我們回顧一下大名鼎鼎的圖靈測試。艾倫·圖靈(Alan Turing)提出了一種測試機器是否具備人類智能的方法。假設有一臺計算機,其運算速度非常快,記憶容量和邏輯單元的數目也超過了人腦,而且還為這臺計算機編寫了許多智能化的程序,并提供了合適種類的大量數據,是否就能說這臺機器具有思維能力?艾倫·圖靈因此對智能問題從行為主義的角度提出了一個著名假想:一個人在不接觸對方的情況下,通過一種特殊的方式和對方進行一系列的問答,如果在相當長時間內無法根據這些問題判斷對方是人還是計算機,就可以認為這個計算機具有同人相當的智力,即這臺計算機是能思維的。這就是著名的“圖靈測試”(Turing Testing)。這是一種“模仿游戲”,遠處的人類測試者在一段規定的時間內,根據兩個實體對他提出的各種問題的反應來判斷是人類還是計算機。通過一系列這樣的測試,從計算機被誤判斷為人的概率就可以測出計算機智能的成功程度。

3. 子定義論述三

通過對計算機本源化的研究來抽象模型用來升級解決智能模型獲得理性化的過程。這里包含通過計算機模型對人類精神行為的建模,以及通過建模完成對認知、推理和執行過程的模擬。這類研究在20世紀80、90年代一度盛行。

4. 子定義論述四

通過機器學習數學模型的使用來解決具體的產品推斷決策類問題。這其實是人工智能目前真正的階段,比如發展非常好的機器視覺,其實最簡單的模型就是通過圖像的像素矩陣來進行分類推斷,正是因為有了這些包含機器視覺的一系列人工智能算法,我們才可以完成本書中提及的自動駕駛的感知、路徑規劃和控制等功能。

由于人工智能是一門融合科學,我們通過列舉各個學科的具體相關問題來進一步說明上面4點子定義的細節。例如,偏哲學方面的問題,能否通過具體的規則得到現實中的實際事物的準確判斷?計算機的自我意識是如何實現的?人力的知識是如何在歷史中出現的?知識怎樣作用于人腦最終產生人的自主判斷及行動?例如,偏數學方面的問題,通過不完整或者非確定性的信息,我們是如何通過數學模型進行推斷的?如何對物質世界進行合理分類,哪些類別可以通過數學進行建模計算?例如,偏經濟學方面的思考,利潤最大化模型的研究,比如德州撲克AI實際就在這個研究范圍之內,在賓夕法尼亞州匹茲堡的Rivers賭場,卡耐基梅隆大學(Carnegie Mellon University, CMU)開發的人工智能系統Libratus戰勝4位德州撲克頂級選手,獲得最終勝利。當然不止這些領域,其他很多領域也與人工智能的思考緊密相連,包括神經學中對大腦認知思考過程的研究、通過人工智能算法改進計算機軟硬件設計以及語言學中想法與表達的關系和流程等。

AI的發展歷史是很悠久的,除去人類對認知的各種早期思考,單單考慮圖靈實驗提出之后的正式發展階段,也有接近一個世紀的歲月。在這個過程中,人工智能經歷了階段前期的概念研究到連接主義的興起,直到21世紀,隨著互聯網,特別是移動互聯網的規模增長,應用維度擴展,引發的數據量以及配套運算能力的幾何級增長造就了機器學習在人工智能各個領域中一枝獨秀的完美表現,首先在機器視覺領域,而后普及至人工智能的大多數問題領域。

簡單來說,機器學習就是根據數據推斷出模型,或者更新模型參數,進一步使用模型完成預測,得出我們需要的結論。通常機器學習可以分為3大類:監督學習、非監督學習和強化學習。在監督學習中,我們使用的數據集合是標注過的,類似X~Y的形式;在非監督學習中,數據集合的情況恰恰相反,是沒有標注的,類似X的形式。在監督學習中,標簽數據實際上存在連續(身高)或者非連續(性別)兩種形態,因此針對這兩種標簽數據,我們需要分別使用回歸算法分析或者分類算法分析來解決。非監督學習是一個從無標簽數據中進行模式分析并提取歸納相應模型的過程,例如,聚類分析和核密度估計。表示學習也是一種典型的非監督學習算法。但是深度學習可以劃歸為表示學習的范疇,原因是為了使得深度網絡結構變得更加容易訓練,并且強化深度網絡的特征提取和函數逼近能力,需要對深度學習網絡采用更高效的網絡表達方式。網絡的表達方式是指網絡采用何種結構上的連接方式來抽象表達輸入模式的內部結構,或表示輸入樣本之間的關系。

深度學習(或稱為深度神經網絡)是機器學習中自成體系的一類算法,通常在監督學習和非監督學習中使用,并且能夠結合強化學習,在強化學習中進行狀態表達或者用作函數優化器。監督學習和非監督學習的學習過程往往是單次的,忽視數據集合中不同數據條目之間的關聯關系。在這方面,強化學習有很大的不同,強化學習通過連續性的數據算法構造了一種長期積累的激勵關系,通過當次學習和積累的學習結果綜合分析得到合理的推斷結論,因此強化學習往往針對的是連續性的行為對結果影響的場景。不同于監督學習和非監督學習,在強化學習中,我們會使用一些持續的可評估的系統回饋來代替簡單的標簽結果。這更加增加了強化學習在學習過程中的過程復雜度和算法難度。強化學習和最優控制學緊密相連,和前面提及的人工智能及其衍生學科也有著很緊密的聯系,比如心理學、神經學等。

機器學習的基礎是數據,通過數據科學中的數據挖掘、數據處理等過程得到原始數據集合,這些數據可能是圖像信息、語言模型,也可能是任意相關聯的多組數據的高維組合,結合數學和統計學(最大似然估計)的基礎算法,我們可以完成圖像識別、自然語言處理、機器人控制等應用。當然,機器學習并不是人工智能領域的全部,但是針對近20年人工智能領域取得的核心成就,機器學習技術的重要性是其他學派鞭長莫及的。

當我們深入機器學習算法實踐過程本身,就會發現有些算法組件是具有通用性的,包括數據集合、代價函數、學習優化器和這些模塊圍繞的核心模塊—算法模型。我們一般會將數據集合分為訓練子集合、交叉驗證子集合和測試子集合,它們一般是由同一份數據集合按照合適的比例分割而成。代價函數的目的是對模型能力進行有效評估,比如使用均方差作為代價函數來描述線性回歸模型的誤差率。學習過程中的核心是通過優化器使用訓練數據集最小化訓練誤差。訓練誤差描述的是模型在訓練數據集上的泛化效果,而測試誤差(或者稱為泛化誤差)是模型在當前問題的新輸入數據上的泛化效果,也可以理解為模型對應問題真正的預測能力。機器學習算法不但試圖最小化訓練誤差,而且希望能夠達成訓練誤差和測試誤差的一致性,綜合這兩點,才能保證模型在實際生產中有很好的泛化效果。當模型訓練誤差很大時,在機器學習中被稱為擬合不足(Under-Fitting),而更加常見的是過擬合(Over-Fitting),在過擬合的情況下,雖然在訓練數據集上得到了足夠小的訓練誤差,但是在測試數據集合上的誤差會非常大。擬合能力的強弱會使用模型容量這一指標來表征。人工智能科學家對模型的判斷和我們的直觀判斷是一致的,同樣能力的模型中最簡單的最好。誤差(包括訓練誤差和測試誤差)和模型容量的關系往往是U型的。在機器學習的過程中,我們也可以根據這個關系來確定能夠達到產品需求的模型的容量,保證最終的訓練誤差以及測試誤差都在合理化范圍之內。為了說明模型容量這一模型核心指標,我們需要介紹偏差(Bias)和方差(Variance)。偏差反映的是模型在樣本上的輸出與真實值之間的誤差,即模型本身的精準度。方差反映的是模型每一次輸出結果與模型輸出期望值之間的誤差,即模型的穩定性。當模型容量增加的時候,偏差會相應地有所降低,而方差則會隨之增加。在這樣的過程中,我們最終會選擇合適的模型容量,在泛化誤差和模型容量的關系圖上表現選擇的容量數據點的左側模型容量大小會導致擬合不足,右側模型容量大小會產生過擬合問題。

正則化成本函數通過添加懲罰項能夠有效減少泛化誤差,但是訓練誤差不會減小。沒有免費的午餐定理指出,沒有具有普遍的最佳模型或者適用于所有模型的正則項。因此,我們在深度學習獲得巨大成功的同時,必須清楚地認識到針對某些問題深度神經網絡可能不是最好的模型。正則項的參數矩陣稱為超參數(Hyper-Parameters)。為了調優超參數從而使偏差和方差之間取得平衡,因此得到最優模型,我們需要使用交叉驗證技術。

最大似然估計(Maximum Likelihood Estimation, MLE)是一種常用的參數估計方法。最大似然估計是一種統計方法,用來求一個樣本集的相關概率密度函數的參數。這個方法最早是遺傳學家以及統計學家羅納德·費雪爵士在1912—1922年間開始使用的。“似然”是對Likelihood的一種較為貼近文言文的翻譯,“似然”用現代漢語說即“可能性”,故而,稱之為“最大可能性估計”更加通俗易懂。

在實際數據訓練環節,特別是針對深度神經網絡模型,梯度下降法(Gradient Descent)是求解優化問題的一種常用方法。隨機梯度下降法(Stochastic Gradient Descent)擴展了梯度下降法,每次處理一個樣本。當然我們也可以擴大學習樣本的規模,每次處理一批樣本而不是全部,這種方式稱為批量梯度下降法。

當然,也有針對機器學習算法設計的數學分析框架。Kolmogorov復雜度(或稱為算法的復雜性)具體可以使用奧卡姆剃刀原理的算法表達,可能近似正確(Probably Approximate Correct, PAC)學習算法的目的是選擇一個實現低泛化誤差有高概率的泛化函數,VC維度法能夠很好地測量二元分類器的容量。

1.1.2 深度學習

為了能夠清晰地理解深度學習這個概念的提出過程,我們需要首先研究一些回歸深度學習以外的機器學習算法,可以不太嚴謹地將它們統一命名為淺度學習,比如在書中將詳細介紹的線性回歸算法、邏輯回歸算法以及沒有詳細介紹的支持向量機(Support Vector Machine, SVM)算法、決策樹算法等。淺度學習算法都設計了輸入層和輸出層,并且輸入層經常需要進行手動特征向量提取,換句話說,機器學習開發者需要在開發進行之前完全了解問題,能夠在很大程度上定性地預測問題,而機器學習算法只是量化我們的定性預測經驗。而深度學習算法最顯著的結構特征就是在輸入層和輸出層直接添加了多層隱藏層。除了輸入層外的每一層的運算邏輯都是類似的,一般來說,每個運算單元接收上一層的所有運算單元的輸入,首先計算輸入的加權和,然后使用非線性轉換函數來處理這個加權和,處理結果作為輸入進入下一層運算單元中。非線性轉換函數在深度學習中一般被稱為激活函數,ReLU函數目前是使用最為廣泛的激活函數,另外深度學習神經元也可以使用Logistic、Tanh等函數。這樣的模型構造使權重矩陣保持了層與層之間的連續傳遞性。神經網絡向前傳播(從輸入層開始到第一個隱藏層,再到第二個隱藏層,以此類推,直到最后的輸出層),計算各個層的每個節點的輸出值,得到所有的輸出值,我們就可以從后向前計算誤差,通過梯度下降完成反向傳播算法,從而達到更新整個神經網絡的權重矩陣鏈的目的。我們可以根據神經元內部算法設計上的區別對深度神經網絡進行分類表述,最簡單的稱為全連接神經網絡或者前饋神經網絡,當然它還有一個更加形象的名字—多層感知機(Multi-Layer Perceptron, MLP)。在這種最簡單的神經網絡中,每個神經元都是統一標準的個體,層與層之間只有輸入和輸出規模不同,計算的流動途徑是從輸入層到輸出層,中間不存在逆向流程。卷積神經網絡(Convolutional Neural Networks, CNN)其實是一種特殊的前饋神經網絡,包括卷積層、池化層和全連接層。卷積神經網絡設計主要是用來處理具有多層數組的數據結構,比如圖像、文本、音頻以及視頻,通過多次卷積和池化操作能夠將輸入的特征分類提取出來,這種結構在很大程度上參考了視神經的工作方式。殘差神經網絡(Residual Networks, ResNets)是針對特別深的神經網絡設計出來的,因為隨著網絡越來越深,訓練變得越來越難,網絡的優化也變得越來越難,殘差神經網絡設計了直接向后傳遞輸出結果而不經過激活環節的捷徑,這種捷徑能夠保證殘差神經網絡在訓練集上訓練的效率不會有明顯的減弱。循環神經網絡(Recursive Neural Network, RNN)通常用來處理時序數據,比如語音或者語句,在時序數據中的數據是按照先后順序組織在一起的,因此循環神經網絡中的隱藏單元可以存儲部分過往數據以維持數據集合的結構關系。換句話說,循環神經網絡可以簡單理解為在正演運算過程中模型的所有計算層都使用相同的權重配置。標準循環神經網絡的問題在于很難存儲很長時間的歷史數據,如果模型簡單儲存和利用了更多的歷史數據,就會導致模型梯度消失。為了應對這一關鍵問題,長短期記憶網絡(Long Short Term Memory network, LSTM)和門控循環單元(Gated Recurrent Unit, GRU)應運而生。在這兩種神經網絡中增加了專門從事對過往數據的處理單元。雖然深度神經網絡的網絡設計有很多變化,但是對于深度神經網絡的訓練方法卻是殊途同歸的,這種處理技巧就是梯度下降算法。

深度神經網絡訓練過程的優化技巧對于學習結果十分重要。最重要的優化方法是Dropout,Dropout的原理是在學習過程中隨機移除一部分節點,使用部分網絡進行數據訓練。當然,優化技巧還有很多,它們針對優化的方面也有些許不同,例如為了提升訓練效率所使用的批正則化方法和層正則化方法。

最后,我們從直觀上分析深度神經網絡結構的意義。深度神經網絡的層模型能夠自然地提取原始數據輸入的特征,而且隨著網絡結構的特異化,深度神經網絡能首先提取低價的特征向量,這些特征向量隨著運算的進行組合成高階的特征向量,最好的例子就是深度神經網絡最成功的實踐圖像識別。在圖像識別中,離輸入層比較近的隱藏層能夠提取出顏色、線條等低級特征,而在后面的層中,這些低階特征進行組合,輸出形狀、物體的部分圖像等高階特征。這種深度學習的特性稱為分布式表示(Distributed Representation),這種特性意味著特性和輸入數據集合之前是多對多的邏輯關系,某種抽象特征可能存在于多個輸入當中,另外每個輸入中也含有海量的抽象特征。因此,最近的深度學習模型會使用或部分使用端對端訓練技術,端對端技術會使用完整的原始數據集合,比如圖像識別中使用整張圖片(AlexNet)、語音識別中使用完整的對話(Seq2Seq)以及強化學習中使用整個游戲界面數據(Deep Q-Learning, DQN)。

1.1.3 強化學習

在機器學習中的一個重要業務場景和核心課題是連續決策。連續決策是指通過經驗數據在不確定的環境中實現某些目標而采取的有順序的任務執行過程。連續決策任務應用非常廣泛,涵蓋當前眾多熱門領域,比如機器人、醫療、智能電網和金融,特別是后面將介紹的自動駕駛汽車會有很多實際場景的應用。

針對連續決策問題目前最有進展的算法是強化學習(Reinforcement Learning, RL)。通過借鑒行為心理學的思想,強化學習設計了一個完整的學習框架來解決連續決策問題。在強化學習框架中,首先需要建立一個類似生物體的計算機代理終端,它能夠接收相關的環境信息的輸入,通過輸入數據集的運算能夠得到一個決策結果,接下來程序會將結果輸出到環境中并收集環境的變化狀況,根據業務要求定義變化的程度,這種程度一般在強化學習中稱為獎勵,通過對獎勵變化的跟蹤來動態調整終端的運算方式,最終達到解決當前連續決策問題的要求。這種方法原則上適用于依賴于過去的經驗的連續決策問題。針對不同的環境,強化學習的策略也可以有細微的不同:一種環境是完全開放的,在這種環境下,代理終端只能觀察部分當前狀態的信息;另一種是受限環境,在這種環境下,數據特征規模可能較少,但是相對的每次的信息輸入能夠保證一定的完整性。

在過去的幾年中,強化學習已經成為人工智能算法領域非常熱門的算法之一。而強化學習與深度神經網絡技術的結合成為熱點中的熱點,這種技術稱為深度強化學習。深度學習具有較強的感知能力,但是缺乏一定的決策能力;而強化學習具有決策能力,對感知問題束手無策。因此,將兩者結合起來,優勢互補,為復雜系統的感知決策問題提供了解決思路。其中的典型算法DQN算法融合了神經網絡和Q-Learning的方法。DQN不用Q表記錄Q值,而是用神經網絡來預測Q值,并通過不斷更新神經網絡從而學習最優的行動路徑。DeepMind公司就是用DQN從玩各種電子游戲開始,直到訓練出打敗人類圍棋選手的阿爾法狗。

主站蜘蛛池模板: 天柱县| 望谟县| 广德县| 泗洪县| 仪陇县| 藁城市| 江阴市| 义乌市| 峨眉山市| 伊金霍洛旗| 广州市| 道真| 新巴尔虎右旗| 金堂县| 禄丰县| 丘北县| 益阳市| 无为县| 饶阳县| 苗栗县| 甘泉县| 遵义县| 新龙县| 鹤峰县| 固镇县| 新巴尔虎右旗| 河北区| 新津县| 台安县| 三亚市| 马鞍山市| 鄯善县| 广州市| 桃园县| 双鸭山市| 南投市| 双鸭山市| 天长市| 岳普湖县| 荔浦县| 本溪|