機器學習和深度學習概念入門

GitChat的部落格發表於2018-04-12

作者:譚東

遵循:BY-SA(署名-相同方式共享4.0協議)  


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


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

        下面這張圖則更加細分。


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

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

      機器學習(Machine Learning, ML)是人工智慧的核心,屬於人工智慧的一個分支,是一個大的領域,是讓計算機擁有像人一樣的學習能力,模擬和實現人的學習行為和能力,可以像人一樣具有識別和判斷的能力,可以看作是仿生學。機器學習的核心就是資料,演算法(模型),算力(計算機運算能力)。以前也有人工智慧,機器學習。不過最近幾年網路發展和大資料的積累,使得人工智慧能夠在資料和高運算能力下發揮它的作用。機器學習應用領域十分廣泛,例如:資料探勘、資料分類、計算機視覺、自然語言處理(NLP)、生物特徵識別、搜尋引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰略遊戲和機器人運用等。



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


        機器學習就是設計一個演算法模型來處理資料,輸出我們想要的結果,我們可以針對演算法模型進行不斷的調優,形成更準確的資料處理能力。但這種學習不會讓機器產生意識。

機器學習的工作方式:

1)選擇資料:將你的資料分成三組:訓練資料、驗證資料和測試資料。

2)模型資料:使用訓練資料來構建使用相關特徵的模型。

3)驗證模型:使用你的驗證資料接入你的模型。

4)測試模型:使用你的測試資料檢查被驗證的模型的表現。

5)使用模型:使用完全訓練好的模型在新資料上做預測。

6)調優模型:使用更多資料、不同的特徵或調整過的引數來提升演算法的效能表現。


機器學習的分類:

基於學習策略的分類

1)機械學習 (Rote learning)

2)示教學習 (Learning from instruction或Learning by being told)

3)演繹學習 (Learning by deduction)

4)類比學習 (Learning by analogy)

5)基於解釋的學習 (Explanation-based learning, EBL)

6)歸納學習 (Learning from induction)

基於所獲取知識的表示形式分類 

1)代數表示式引數

2)決策樹

3)形式文法

4)產生式規則

5)形式邏輯表示式

6)圖和網路

7)框架和模式(schema)

8)計算機程式和其它的過程編碼

9)神經網路

10)多種表示形式的組合

綜合分類

1)經驗性歸納學習 (empirical inductive learning)

2)分析學習(analytic learning)

3)類比學習

4)遺傳演算法(genetic algorithm)

5)聯接學習

6)增強學習(reinforcement learning)

學習形式分類

1)監督學習(supervised learning)

2)非監督學習(unsupervised learning)

細分的話還有半監督學習和強化學習。

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

        監督學習(Supervised Learning)是指利用一組已知類別的樣本調整分類器的引數,使其達到所要求效能的過程,也稱為監督訓練或有教師學習。也就是我們輸入的資料是有標籤的樣本資料(有一個明確的標識或結果、分類)。例如我們輸入了 50000 套房子的資料,這些資料都具有房價這個屬性標籤。監督學習就是人們常說的分類,通過已有的訓練樣本(即已知資料以及其對應的輸出)去訓練得到一個最優模型(這個模型屬於某個函式的集合,最優則表示在某個評價準則下是最佳的)。再利用這個模型將所有的輸入對映為相應的輸出,對輸出進行簡單的判斷從而實現分類的目的。就像我輸入了一個人的資訊,他是有性別屬性的。我們輸入我們的模型後,我們就明確的知道了輸出的結果,也可以驗證模型的對錯。

        舉個例子,我們從小並不知道什麼是手機、電視、鳥、豬,那麼這些東西就是輸入資料,而家長會根據他的經驗指點告訴我們哪些是手機、電視、鳥、豬。這就是通過模型判斷分類。當我們掌握了這些資料分類模型,我們就可以對這些資料進行自己的判斷和分類了。




        在監督式學習下,輸入資料被稱為“訓練資料”,每組訓練資料有一個明確的標識或結果,如對防垃圾郵件系統中“垃圾郵件”“非垃圾郵件”,對手寫數字識別中的“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)等等。下圖是幾種監督式學習演算法的比較:



        非監督學習(Unsupervised Learing)是另一種研究的比較多的學習方法,它與監督學習的不同之處,在於我們事先沒有任何訓練樣本,而需要直接對資料進行建模。是否有監督(Supervised),就看輸入資料是否有標籤(Label)。輸入資料有標籤(即資料有標識分類),則為有監督學習,沒標籤則為無監督學習(非監督學習)。在很多實際應用中,並沒有大量的標識資料進行使用,並且標識資料需要大量的人工工作量,非常困難。我們就需要非監督學習根據資料的相似度,特徵及相關聯絡進行模糊判斷分類。




        半監督學習(Semi-supervised Learning)是有標籤資料的標籤不是確定的,類似於:肯定不是某某某,很可能是某某某。是監督學習與無監督學習相結合的一種學習方法。半監督學習使用大量的未標記資料,以及同時使用標記資料,來進行模式識別工作。當使用半監督學習時,將會要求儘量少的人員來從事工作,同時,又能夠帶來比較高的準確性。




        在此學習方式下,輸入資料部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習資料的內在結構以便合理的組織資料來進行預測。半監督學習有兩個樣本集,一個有標記,一個沒有標記。分別記作Lable={(xi,yi)},Unlabled={(xi)},並且數量,L<<U。
        1、單獨使用有標記樣本,我們能夠生成有監督分類演算法
        2、單獨使用無標記樣本,我們能夠生成無監督聚類演算法
        3、兩者都使用,我們希望在1中加入無標記樣本,增強有監督分類的效果;同樣的,我們希望在2中加入有標記樣本,增強無監督聚類的效果
        一般而言,半監督學習側重於在有監督的分類演算法中加入無標記樣本來實現半監督分類,也就是在1中加入無標記樣本,增強分類效果[1]。應用場景包括分類和迴歸,演算法包括一些對常用監督式學習演算法的延伸,這些演算法首先試圖對未標識資料進行建模,在此基礎上再對標識的資料進行預測。如自訓練演算法(self-training)、多視角演算法(Multi-View)、生成模型(Enerative Models)、圖論推理演算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM)等。


        強化學習(Reinforcement Learning)也叫再勵學習、評價學習,在智慧控制和機器人領域有許多應用。輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式。在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻作出調整。常見演算法包括 Q-Learning、TD 演算法(時間差分學習,Temporal Difference)、SARSA 演算法。




        在企業資料應用的場景下, 人們最常用的可能就是監督式學習和非監督式學習的模型。 在影象識別等領域,由於存在大量的非標識的資料和少量的可標識資料, 目前半監督式學習是一個很熱的話題。 而強化學習更多的應用在機器人控制及其他需要進行系統控制的領域。




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




        重點:強化學習其實就是自動進行決策,並且可以做連續決策。強化學習有很多應用,比如自動直升機,機器人控制,市場決策,工業控制,無人駕駛,AlphaGo,玩遊戲,還在製造業、庫存處理、電商、廣告、推薦、金融、醫療等與我們生活息息相關的領域也有應用。例如一家日本公司 Fanuc,工廠機器人在拿起一個物體時,會捕捉這個過程的視訊,記住它每次操作的行動,操作成功還是失敗了,積累經驗,下一次可以更快更準地採取行動。




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


        總結下:

        機器學習和深度學習的核心就是資料、演算法(模型函式)、算力(計算機運算能力)。我們研究的核心就是演算法,也就是針對某一應用需求場景,選擇各種合適的函式公式進行構建和疊加形成一個處理資料的模型(也就是常說的訓練資料模型)。

        這個模型的作用是什麼?就是能夠將我們的普通資料輸入進去,經過這個模型處理後,輸出資料或者一個結果,這個輸出的就是供我們參考或者使用的。那我們怎麼評判這個模型的好壞?例如每年 ImageNet 都會進行比賽,那麼評判的結果就是你這個模型演算法進行資料分析和處理的準確度。例如人臉識別,有的演算法識別率 80%,有的達到 98%。那麼這個高識別率的模型演算法就要好一些。我們需要改進的也就是這個模型演算法(也就是調優),其中就會涉及到權重(Weight)和損失函式(Loss)。當然損失函式越低說明我們的演算法處理資料越接近最佳結果。


        整個流程就是:選擇訓練資料(用於訓練模型)->模型設計和調優(通過訓練資料進行反覆調優)->形成比較準確的模型->輸入真實資料(用於模型進行資料處理)->模型處理資料->輸出處理結果。

        舉個例子:我們進行預測某天天氣的狀況,這是一個需求。某天天氣的狀況,會受到很多因素的影響,例如季節、地理位置、時間、人為因素等等,這些因素可能會有幾十個。在深度學習模型裡,這些影響結果的因素我們稱之為特徵。我們可以通過一些有標籤的天氣資料去輸入到我們的模型裡,不斷的給各個特徵設定權重、損失函式,不斷的進行調優。最後形成能夠很好的準確預測天氣的一個模型

       我們在進行機器學習和深度學習的核心,就是在演算法這塊,也就是設計處理問題(資料)的模型。模型需要針對不同的問題和需求進行合理的選擇或者搭配。會涉及到很多數學公式和函式。其實這些數學函式在一些框架裡已經囊括了,如tensorflow,python 的 numpy 庫。我們需要的就是通過訓練資料進行模型測試訓練,調優,再應用。先有需求和目的:這個模型是幹嘛的,處理什麼問題的。輸入的資料什麼樣的,想要有什麼輸出結果才是最好的,能夠達到我們想要的目的的。是資料和需求驅動我們選擇什麼樣的模型和函式演算法。確定了大概的方案模型和演算法函式,我們就要給模型不斷的喂資料進行調整優化,使他能夠輸出更加準確的資料處理結果,也就是常說的訓練模型。當模型通過資料訓練好了後,我們就可以進行應用了,餵給它真實的資料進行處理。


        接下來看下深度學習。深度學習(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語音識別的研究,並且速度飛快。國內方面,阿里巴巴,科大訊飛、百度、中科院自動化所等公司或研究單位,也在進行深度學習在語音識別上的研究。

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


參考文獻:

[1]http://openclassroom.stanford.edu/

[2]史丹佛CS231n—深度學習與計算機視覺

[3]http://www.asimovinstitute.org/neural-network-zoo/

相關文章