乾貨丨機器學習和深度學習概念入門

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

對於很多初入學習人工智能的學習者來說,對人工智能、機器學習、深度學習的概念和區別還不是很瞭解,有可能你每天都能聽到這個概念,也經常提這個概念,但是你真的懂它們之間的關係嗎?那麼接下來就給大家從概念和特點上進行闡述。先看下三者的關係。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

人工智能包括了機器學習,機器學習包括了深度學習,他們是子類和父類的關係。

先看什麼是人工智能。人工智能(Artificial Intelligence),英文縮寫爲AI。是計算機科學的一個分支,二十世紀七十年代以來被稱爲世界三大尖端技術之一(空間技術、能源技術、人工智能)。也被認爲是二十一世紀三大尖端技術(基因工程、納米科學、人工智能)之一。1956年夏季,以麥卡賽、明斯基、羅切斯特和申農等爲首的一批有遠見卓識的年輕科學家在一起聚會,共同研究和探討用機器模擬智能的一系列有關問題,並首次提出了「人工智能」這一術語,它標誌着「人工智能」這門新興學科的正式誕生。人工智能是對人的意識、思維的信息過程的模擬。人工智能不是人的智能,但能像人那樣思考、也可能超過人的智能。數學常被認爲是多種學科的基礎科學,數學也進入語言、思維領域,人工智能學科也必須借用數學工具。

人工智能實際應用:機器視覺,指紋識別,人臉識別,視網膜識別,虹膜識別,掌紋識別,專家系統,自動規劃,智能搜索,定理證明,博弈,自動程序設計,智能控制,機器人學,語言和圖像理解,遺傳編程等。涉及到哲學和認知科學,數學,神經生理學,心理學,計算機科學,信息論,控制論,不定性論等學科。研究範疇包括自然語言處理,知識表現,智能搜索,推理,規劃,機器學習,知識獲取,組合調度問題,感知問題,模式識別,邏輯程序設計軟計算,不精確和不確定的管理,人工生命,神經網絡,複雜系統,遺傳算法等。人工智能目前也分爲:強人工智能(BOTTOM-UP AI)和弱人工智能(TOP-DOWN AI),有興趣大家可以自行查看下區別。

機器學習(Machine Learning, ML),是人工智能的核心,屬於人工智能的一個分支,是一個大的領域,是讓計算機擁有像人一樣的學習能力,模擬和實現人的學習行爲和能力,可以像人一樣具有識別和判斷的能力,可以看作是仿生學。機器學習應用領域十分廣泛,例如:數據挖掘、數據分類、計算機視覺、自然語言處理(NLP)、生物特徵識別、搜索引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰略遊戲和機器人運用等。

0?wx_fmt=jpeg

 李飛飛說,機器是又快又準確,但是人類聰明呀!機器學習其實是在總結數據,預測未知。它具有高速的計算能力,我們可以通過不斷的學習用它來識別各種植物、動物等,並提高準確率。

0?wx_fmt=png

機器學習的工作方式

選擇數據:將你的數據分成三組:訓練數據、驗證數據和測試數據。
模型數據:使用訓練數據來構建使用相關特徵的模型。
驗證模型:使用你的驗證數據接入你的模型。
測試模型:使用你的測試數據檢查被驗證的模型的表現。
使用模型:使用完全訓練好的模型在新數據上做預測。
調優模型:使用更多數據、不同的特徵或調整過的參數來提升算法的性能表現。
機器學習的分類

基於學習策略的分類

機械學習 (Rote learning)
示教學習 (Learning from instruction或Learning by being told)
演繹學習 (Learning by deduction)
類比學習 (Learning by analogy)
基於解釋的學習 (Explanation-based learning, EBL)
歸納學習 (Learning from induction)
基於所獲取知識的表示形式分類 

代數表達式參數

決策樹
形式文法
產生式規則
形式邏輯表達式
圖和網絡
框架和模式(schema)
計算機程序和其它的過程編碼
神經網絡
多種表示形式的組合

綜合分類

經驗性歸納學習 (empirical inductive learning)
分析學習(analytic learning)
類比學習
遺傳算法(genetic algorithm)
聯接學習
增強學習(reinforcement learning)

學習形式分類

監督學習(supervised learning)
非監督學習(unsupervised learning)

當然,後面的深度學習也有監督學習、半監督學習和非監督學習的區分。

一般根據我們的數據類型的不同,對相應問題的建模也有不同的方式。在機器學習或者人工智能領域,人們首先會考慮算法的學習方式。在機器學習領域,有幾種主要的學習方式。將算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據輸入數據來選擇最合適的算法來獲得最好的結果。

主要分爲:監督學習,非監督學習,半監督學習和強化學習。監督學習主要用於迴歸和分類;半監督學習主要用於分類,迴歸,半監督聚類;無監督學習主要用於聚類。

那我們先看下這幾種學習方式的特點和差別:

1)監督學習(Supervised learning)

監督學習是指利用一組已知類別的樣本調整分類器的參數,使其達到所要求性能的過程,也稱爲監督訓練或有教師學習。是從標記的訓練數據來推斷一個功能的機器學習任務,也就是樣本標籤打好了。訓練數據包括一套訓練示例。在監督學習中,每個實例都是由一個輸入對象(通常爲矢量)和一個期望的輸出值(也稱爲監督信號)組成。監督學習算法是分析該訓練數據,併產生一個推斷的功能,其可以用於映射出新的實例。一個最佳的方案將允許該算法來正確地決定那些看不見的實例的類標籤。這就要求學習算法是在一種「合理」的方式從一種從訓練數據到看不見的情況下形成。

舉個例子:監督學習就像我們在學習時候旁邊有老師指點一樣,老師知道你輸入的數據是正確還是錯誤,他可以利用他所知道的數據幫你進行正確和錯誤分類和指導。監督學習就是人們常說的分類,我們根據已有的訓練樣本,也就是數據進行了標記,輸入和輸出是對應的。那麼我們就可以根據這個已經訓練好的模型去判斷和映射其他輸入的數據的對應的輸出,也就實現了對未知數據的分類。類似仿生學,我們從小並不知道什麼是手機、電視、鳥、豬,那麼這些東西就是輸入數據,而家長會根據他的經驗指點告訴我們哪些是手機、電視、鳥、豬。這就是通過模型判斷分類。當我們掌握了這些數據分類模型,我們就可以對這些數據進行自己的判斷和分類了。

0?wx_fmt=jpeg

在監督式學習下,輸入數據被稱爲「訓練數據」,每組訓練數據有一個明確的標識或結果,如對防垃圾郵件系統中「垃圾郵件」「非垃圾郵件」,對手寫數字識別中的「1「,」2「,」3「,」4「等。在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與「訓練數據」的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。監督式學習的常見應用場景如分類問題和迴歸問題。常見監督式學習算法有決策樹(ID3,C4.5算法等),樸素貝葉斯分類器,最小二乘法,邏輯迴歸(Logistic Regression),支持向量機(SVM),K最近鄰算法(KNN,K-NearestNeighbor),線性迴歸(LR,Linear Regreesion),人工神經網絡(ANN,Artificial Neural Network),集成學習以及反向傳遞神經網絡(Back Propagation Neural Network)等等。下圖是幾種監督式學習算法的比較:

0?wx_fmt=png

2)非監督學習(Unsupervised learing)

非監督學習是另一種研究的比較多的學習方法,它與監督學習的不同之處,在於我們事先沒有任何訓練樣本,而需要直接對數據進行建模。是否有監督(Supervised),就看輸入數據是否有標籤(Label)。輸入數據有標籤(即數據有標識分類),則爲有監督學習,沒標籤則爲無監督學習。這聽起來似乎有點不可思議,但是在我們自身認識世界的過程中很多處都用到了無監督學習。比如我們去參觀一個畫展,我們完全對藝術一無所知,但是欣賞完多幅作品之後,我們也能把它們分成不同的派別(比如哪些更朦朧一點,哪些更寫實一些,即使我們不知道什麼叫做朦朧派,什麼叫做寫實派,但是至少我們能把他們分爲兩個類)。無監督學習裏典型的例子就是聚類了。聚類的目的在於把相似的東西聚在一起,而我們並不關心這一類是什麼。因此,一個聚類算法通常只需要知道如何計算相似度就可以開始工作了。 在非監督式學習中,數據並不被特別標識,學習模型是爲了推斷出數據的一些內在結構。

非監督學習在聚類上同監督學習分類效果相比無法做到同樣的完美,那麼我們爲什麼還要使用非監督學習聚類?因爲在很多實際應用中,並沒有大量的標識數據進行使用,並且標識數據需要大量的人工工作量,非常困難。那麼我們就需要非監督學習根據數據的相似度,特徵及相關聯繫進行模糊判斷分類。

常見的應用場景包括關聯規則的學習以及聚類等。常見非監督學習算法包括聚類算法、奇異值分解、主成分分析(PCA)、SVD矩陣分解、獨立成分分析(ICA)、Apriori算法以及K-均值算法(K-Means)、稀疏自編碼(sparse auto-encoder)等等。

0?wx_fmt=jpeg

3)半監督學習(Semi-supervised Learning)

半監督學習(Semi-Supervised Learning,SSL)是模式識別和機器學習領域研究的重點問題,是監督學習與無監督學習相結合的一種學習方法。半監督學習使用大量的未標記數據,以及同時使用標記數據,來進行模式識別工作。當使用半監督學習時,將會要求儘量少的人員來從事工作,同時,又能夠帶來比較高的準確性,因此,半監督學習目前正越來越受到人們的重視。

0?wx_fmt=jpeg

在此學習方式下,輸入數據部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習數據的內在結構以便合理的組織數據來進行預測。

半監督學習有兩個樣本集,一個有標記,一個沒有標記。分別記作Lable={(xi,yi)},Unlabled={(xi)},並且數量,L<<u。< p=""></u。<>

單獨使用有標記樣本,我們能夠生成有監督分類算法
單獨使用無標記樣本,我們能夠生成無監督聚類算法
兩者都使用,我們希望在1中加入無標記樣本,增強有監督分類的效果;同樣的,我們希望在2中加入有標記樣本,增強無監督聚類的效果

一般而言,半監督學習側重於在有監督的分類算法中加入無標記樣本來實現半監督分類,也就是在1中加入無標記樣本,增強分類效果[1]。應用場景包括分類和迴歸,算法包括一些對常用監督式學習算法的延伸,這些算法首先試圖對未標識數據進行建模,在此基礎上再對標識的數據進行預測。如自訓練算法(self-training)、多視角算法(Multi-View)、生成模型(Enerative Models)、圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(Laplacian SVM)等。

0?wx_fmt=jpeg

(圖片來自百度百科)

4)強化學習(Reinforcement learning)

又稱再勵學習、評價學習,是一種重要的機器學習方法,在智能控制機器人及分析預測等領域有許多應用。但在傳統的機器學習分類中沒有提到過強化學習,而在連接主義學習中,把學習算法分爲三種類型,即非監督學習(unsupervised learning)、監督學習(supervised leaning)和強化學習。

0?wx_fmt=jpeg

在這種學習模式下,輸入數據作爲對模型的反饋,不像監督模型那樣,輸入數據僅僅是作爲一個檢查模型對錯的方式,在強化學習下,輸入數據直接反饋到模型,模型必須對此立刻作出調整。常見的應用場景包括動態系統以及機器人控制等。常見算法包括Q-Learning以及時間差學習(Temporal difference learning)。在企業數據應用的場景下, 人們最常用的可能就是監督式學習和非監督式學習的模型。 在圖像識別等領域,由於存在大量的非標識的數據和少量的可標識數據, 目前半監督式學習是一個很熱的話題。 而強化學習更多的應用在機器人控制及其他需要進行系統控制的領域。

0?wx_fmt=jpeg

強化學習靈感來源於心理學中的行爲主義理論,即有機體如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行爲。這個方法具有普適性,因此在其他許多領域都有研究,例如博弈論、控制論、運籌學、信息論、模擬優化方法、多主體系統學習、羣體智能、統計學以及遺傳算法。 它的本質就是解決「決策(decision making)」問題,即學會自動進行決策。它在沒有任何label告訴算法應該怎麼做的情況下,通過先嚐試做出一些行爲——然後得到一個結果,通過判斷這個結果是對還是錯來對之前的行爲進行反饋。由這個反饋來調整之前的行爲,通過不斷的調整算法能夠學習到在什麼樣的情況下選擇什麼樣的行爲可以得到最好的結果。

0?wx_fmt=jpeg

重點:強化學習其實就是自動進行決策,並且可以做連續決策。強化學習有很多應用,比如自動直升機,機器人控制,手機網絡路由,市場決策,工業控制,高效網頁索引,無人駕駛,AlphaGo,玩遊戲,還在製造業、庫存處理、電商、廣告、推薦、金融、醫療等與我們生活息息相關的領域也有應用。像強化學習裏的Q-Learning可以很好的處理動態定價問題。在電商中,也可以用強化學習算法來學習和分析顧客行爲,定製產品和服務以滿足客戶的個性化需求。如雙 11 推薦場景中,阿里巴巴使用了深度強化學習與自適應在線學習,通過持續機器學習和模型優化建立決策引擎,對海量用戶行爲以及百億級商品特徵進行實時分析,幫助每一個用戶迅速發現寶貝,提高人和商品的配對效率。還有,利用強化學習將手機用戶點擊率提升了 10-20%。例如一家日本公司 Fanuc,工廠機器人在拿起一個物體時,會捕捉這個過程的視頻,記住它每次操作的行動,操作成功還是失敗了,積累經驗,下一次可以更快更準地採取行動。

0?wx_fmt=png

舉個例子:以小孩學習走路爲例,走路時候小孩需要知道先進行決定先邁那條腿,如果第一步作對了,那麼就會得到獎勵,錯了,那麼記錄下來,再進行第二次走路時候進行學習更正。例如在向用戶推薦新聞文章的任務中,非監督式會找到用戶先前已經閱讀過類似的文章並向他們推薦其一,而強化學習將通過向用戶先推薦少量的新聞,並不斷獲得來自用戶的反饋,最後構建用戶可能會喜歡的文章的「知識圖」。

強化學習常用算法:TD算法(時間差分學習,Temporal Difference)、SARSA算法、Q-Learning算法等。我們當然也需要了解馬爾可夫決策過程(MDP,Markov Decision Processes),這樣更利於我們對強化學習的理解。

接下來看下深度學習。深度學習(Deep Learning)是機器學習的一種,是它的一個大的分支,深度學習的概念由Hinton等人於2006年提出,深度學習的概念源於人工神經網絡的研究。既然叫做學習,那麼自然與我們人類的學習過程有相似之處,其實就是仿生學,仿照我們人類大腦的思維方式以及神經網絡的接收和反饋方式進行計算機模擬深度學習的。我們的大腦就是一個深度學習的超級計算機。深度學習實際上指的的深度神經網絡學習,普通神經網絡由於訓練代價較高,一般只有3-4層,而深度神經網絡由於採用了特殊的訓練方法加上一些技術算法,可以達到8-10層。深度神經網絡能夠捕捉到數據中的深層聯繫,從而能夠得到更精準的模型,而這些聯繫不容易被普通的機器學習方法所發覺。

用官方的含義就是:含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現數據的分佈式特徵表示。同機器學習方法一樣,深度機器學習方法也有監督學習與無監督學習之分.不同的學習框架下建立的學習模型很是不同.例如,卷積神經網絡(Convolutional neural networks,簡稱CNNs)就是一種深度的監督學習下的機器學習模型,而深度置信網(Deep Belief Nets,簡稱DBNs)就是一種無監督學習下的機器學習模型。

深度學習整個過程就是數據收集、數據清洗處理、傳入數據進行訓練模型和學習優化、經過不斷優化調節後形成高準確率的識別分類模型,供相應的領域進行傳入相關數據進行應用分類。舉個例子,我們人類在剛出生時看到一個手機,那麼他是不知道這個是什麼的,並且有各種各樣形狀和樣式的手機,此時我們的深度學習系統初始狀態就是這樣的。但是經過父母和周圍的分類和指導,我們漸漸的知道了這種樣子和形狀、功能的物體是手機,那麼我們通過大量的數據就具有了學習和分辨手機的能力模型,那麼這就是我們的深度學習系統在經過數據和算法訓練後所具備的功能和學習能力。就是這麼簡單,可以說就是仿生學。

2017年CCF青年精英大會,香港中文大學教授湯曉鷗指出,深度學習的三大核心要素,就是算法設計、高性能的計算能力、大數據。我覺得應該按照這個順序排序:大數據、算法設計、高性能的計算能力。

例如深度學習在語音識別和自然語言領域,微軟研究人員通過與hinton合作,首先將RBM和DBN引入到語音識別聲學模型訓練中,並且在大詞彙量語音識別系統中獲得巨大成功,使得語音識別的錯誤率相對減低30%。但是,DNN還沒有有效的並行快速算法,很多研究機構都是在利用大規模數據語料通過GPU平臺提高DNN聲學模型的訓練效率。在國際上,IBM、google等公司都快速進行了DNN語音識別的研究,並且速度飛快。國內方面,阿里巴巴,科大訊飛、百度、中科院自動化所等公司或研究單位,也在進行深度學習在語音識別上的研究。

最後,給大家附帶一個深度學習部分常用的神經網絡算法的圖形展示。

0?wx_fmt=png

0?wx_fmt=jpeg