深度學習入門筆記(一):機器學習基礎

專欄——深度學習入門筆記

本章內容

  • 人工智能的發展及其面臨的挑戰
  • 機器學習的基礎知識和基本概念
  • 特徵工程的方法和流程
  • 深度學習的發展及應用

1956年8月,約翰.麥卡錫在美國達特茅斯學院(Dartmouth College)發起的一次研討會 上首次提出了“人工智能”這個概念。這次會議因此被公認爲是人工智能誕生的標誌。在之後60多年的時間裏,人工智能的發展起起伏伏、忽“冷”忽“熱”。2016年,AlphaGo與李世石的那場“世紀大戰”徹底點燃了大衆的熱情。當前,人工智能成了一個“香餑餑”,很多國家都在積極爭奪人工智能領域的話語權,各大公司也都不斷加大在人工智能領域的投入。人工智能成爲繼個人電腦、互聯網、移動互聯網之後的又一 次浪潮,對於想要轉行人工智能領域的人或者人工智能領域的從業者來說,當下就是一個不折不扣的黃金時代。作爲解決人工智能領域中問題的工具,機器學習和深度學習目前正被廣泛地學習和使用。

在這裏插入圖片描述

一.人工智能的機遇與挑戰

從谷歌推出無人駕駛汽車到AlphaGo戰勝人類頂級圍棋高手李世石,再到阿里巴巴成立人工智能研究院一一達摩院,關於人工智能的話題近幾年時常霸佔各大媒體的頭條。隨着國務院於2017年7月8日印發並實施《新一代人工智能發展規劃》,人工智能也被提到國家發展的戰略高度。

人工智能(Artificial Intelligence) 目前還沒有一個統- - 和明確的定義。我們可以簡單地認爲:人工智能旨在研究如何讓計算機擁有(或部分擁有)人類的智力,從而解決現實中只有依靠人的智力才能解決的問題。

目前,人工智能的應用已經非常廣泛,涵蓋金融、電商、醫療、製造業、教育等多個領域,諸如語音識別、翻譯系統、推薦系統、圖片處理功能,以及個性化新聞推薦等,這些具體的應用場景和我們的生活息息相關。而在未來,人工智能將覆蓋更多的領域,這不僅是一場科技的革命,更是時代的大勢所趨。人工智能應用必然會全方位地滲入我們日常生活中的點點滴滴。

二.機器學習

2.1 什麼是機器學習

機器學習(Machine Learning) 是讓計算機能夠自動地從某些數據中總結出規律,並得出某種預測模型,進而利用該模型對未知數據進行預測的方法。它是一種實現人工智能的方式,是一門交叉學科,綜合了統計學、概率論、逼近論、凸分析、計算複雜性理論等。

目前機器學習的研究和應用大概集中在如圖1-1所示的領域。

在這裏插入圖片描述
其中,機器學習讓統計學習得到延伸;模式識別側重於“感知”特徵,而機器學習則會“學習”特徵;數據挖掘領域中用到的算法也經常可在模式識別和機器學習中應用。計算機視覺語音識別自然語言處理目前是機器學習領域最熱門的三大方向。

        ● 計算機視覺是一門研究如何讓機器替代人的眼睛,對“看到”的圖片進行分析、處理的科學,在圖像分類、人臉識別、車牌識別、目標檢測及自動駕駛等均有十分廣泛的應用。

        ●目前基於深度學習的語音識別和語音合成技術已經非常成熟,應用隨處可見,如智能音箱、實物機器人(例如早教機器人)及虛擬人物等。

        ●自然語言處理旨在使用自然語言處理技術讓計算機“讀懂”人類的語言,相關應用有機器翻譯、智能客服、垃圾信息識別等。

目前,機器學習大致可以分爲以下幾類:

(1) 有監督學習(Supervised Learning) :當我們已經擁有–些數據及數據對應的類標時,就可以通過這些數據訓練出一個模型,再利用這個模型去預測新數據的類標,這種情況稱爲有監督學習。有監督學習可分爲迴歸問題和分類問題兩大類。在迴歸問題中,我們預測的結果是連續值;而在分類問題中,我們預測的結果是離散值。常見的有監督學習算法包括線性迴歸、邏輯迴歸、K-近鄰、樸素貝葉斯、決策樹、隨機森林、支持向量機等。

(2) 無監督學習(Unsupervised Learning):在無監督學習中是沒有給定類標訓練樣本的,這就需要我們對給定的數據直接建模。常見的無監督學習算法包括K-means、EM算法等。

(3) 半監督學習(Semi-supervised Learn-ing):半監督學習介於有監督學習和無監督學習之間,給定的數據集既包括有類標的數據,也包括沒有類標的數據,需要在工作量(例如數據的打標)和模型的準確率之間取一個平衡點。

(4)強化學習( Reinforcement Learning):從不懂到通過不斷學習、總結規律,最終學會的過程便是強化學習。強化學習很依賴於學習的“周圍環境”,強調如何基於“周圍環境”而做出相應的動作。

具體分類如圖1-2所示。
在這裏插入圖片描述

2.2 用機器學習解決問題的一般流程

用機器學習解決問題的一-般流程如圖1-3所示。
在這裏插入圖片描述

(1)收集數據

業界有一句非常流行的話:“數據和特徵決定了機器學習的上界,而模型和算法只是去逼近這個上界”,由此可見,數據對於整個機器學習項目來說至關重要。當我們面臨一個實際的問題時,如果既有想法,又有一些相關數據,有可能是有用的,也有可能是無用的,則這裏的數據收集是指根據需求從已有數據中找出我們真正需要的數據;而如果只有想法,沒有數據,則這裏的數據收集是指對數據的搜尋和整理等,如利用網絡爬蟲技術從互聯網爬取數據,或因學習和研究的便利而使用公開數據集。

輸入數據較簡單,此處略寫。

(2)數據預處理

無論是我們自己收集的數據還是公開數據集,通常都會存在各種各樣的問題,例如數據不完整、格式不一致、存在異常數據,以及正負樣本數量不均衡等。因此,需要對數據進行一系列的處理,如清洗、轉換、規範等之後才能拿來使用,這個過程即爲數據預處理。

(3)特徵工程

目前在機器學習或深度學習相關的書籍中,很少會有專門把特徵工程拿出來單獨介紹的(在一些與數據分析或數據挖掘相關的書籍中可能會介紹得相對多一些)。的確,對於整個機器學習的項目來說,特徵工程只是其中很小的一部分工作,但是千萬不能忽略這“很小的一部分工作”的重要性。一個機器學習任務的成功與否往往在很大程度上取決於特徵工程。簡單來說,特徵工程的任務是從原始數據中抽出最具代表性的特徵,從而讓模型能夠更有效地學習這些數據。通常我們可以使用scikit-learn這個庫來處理數據和提取特徵,scikit-learn是機器學習中使用非常廣泛的第三方模塊,本身封裝了很多常用的機器學習算法,同時還有很多數據處理和特徵提取相關的方法。

(4)訓練和測試模型

處理好數據之後,就可以選擇合適的機器學習算法進行模型訓練了。可供選擇的機器學習算法有很多,每個算法都有自己的適用場景,那麼如何選擇合適的算法呢?

首先,要對處理好的數據進行分析,判斷數據是否有類標,若有類標,則應該考慮使用有監督學習的相關算法,否則可以作爲無監督學習問題處理;其次,判斷問題類型,屬於分類問題還是迴歸問題;最後根據問題的類型選擇具體的算法訓練模型。實際工作.上會使用多種算法,或者相同算法的不同參數進行評估。

此外,還要考慮數據集的大小,若數據集小,訓練的時間較短,則通常考慮採用樸素貝葉斯等輕量級算法,否則就要考慮採用SVM等重量級算法,甚至考慮使用深度學習的算法。

(5)模型的評估

常用的模型評估方法及相關的評估指標可參見2.5節介紹。到此已經介紹了機器學習的大致流程和相關方法,接下來將進一步介紹其中重要環節一一數據預處理、 特徵工程,以及模型的選擇與評估。

2.3 數據預處理

根據數據類型的不同,數據預處理的方式和內容也不盡相同,這裏簡單介紹幾種較常用的方式。

(1)歸一化

歸一化指將不同變化範圍內的值映射到一個固定的範圍裏,例如,常使用min-max等方法將數值歸一化到[0,1]的區間內(有些時候也會歸一化到[-1,1]的區間內)。歸一化的作用包括無量綱化一、加快模型的收斂速度,以及避免小數值的特徵被忽略等。

(2)標準化

標準化指在不改變數據原分佈的前提下,將數據按比例縮放,使之落入一個限定的區間,讓數據之間具有可比性。需要注意的是,歸一化和標準化各有其適用的情況,例如在涉及距離度量或者數據符合正態分佈的時候,應該使用標準化而不是歸一化。常用的標準化方法有z- score等。

(3)離散化

離散化指把連續的數值型數據進行分段,可採用相等步長或相等頻率等方法對落在每一一個分段內的數值型數據賦予-一個新的統一的符號或數值。離散化是爲了適應模型的需要,有助於消除異常數據,提高算法的效率。

(4)二值化

二值化指將數值型數據轉換爲0和1兩個值,例如通過設定一個閾值,當特徵的值大於該閾值時轉換爲1,當特徵的值小於或等於該閾值時轉換爲0。二值化的目的在於簡化數據,有些時候還可以消除數據(例如圖像數據)中的“雜音”。

(5)啞編碼

啞編碼,又稱爲獨熱編碼(One-Hot Encoding),作用是對特徵進行量化。例如某個特徵有三個類別:“大”“中”和“小”,要將這一特徵用於模型中,必須將其數值化,很容易想到直接給它們編號爲“1”“2”和“3”,但這種方式引入了額外的關係(例如數值間的大小關係),“誤導”模型的優化方向。一個更好的方式就是使用啞編碼,例如“大”對應編碼“100”,“中”對應編碼“010”,小”對應編碼“001”。

2.4 特徵工程

特徵工程的目的是把原始的數據轉換爲模型可用的數據,主要包括三個子問題:特徵構造、特徵提取和特徵選擇

        ● 特徵構造一般是在原有特徵的基礎上做“組合”操作,例如,對原有特徵進行四則運算,從而得到新的特徵。

        ●特徵提取指使用映射或變換的方法將維數較高的原始特徵轉換爲維數較低的新的特徵。

        ●特徵選擇即從原始的特徵中挑選出一些具有代表性、使模型效果更好的特徵。

其中,特徵提取和特徵選擇最爲常用。

(1)特徵提取

特徵提取又叫作“降維”,目前線性特徵的常用提取方法有 主成分分析(Principle C omponent Analysis,PCA)、線性判別分析(Linear Discriminant Analysis,LDA)獨立成分分析(Independent Component Analysis, ICA)

① 主成分分析

主成分分析是一種經典的無監督降維方法,主要思想是用“減少噪聲”和“去冗餘”來降維。具體來說:

        ● “減少噪聲” 指在將維數較高的原始特徵轉換爲維數較低的新特徵的過程中保留維度間相關性儘可能小的特徵維度,這一操作實際上是藉助協方差矩陣實現的;

        ●**“去冗餘”**指把“減少噪聲”操作之後保留下來的維度進行進一一步篩選,去掉含有“特徵值”較小的維度,使得留下來的特徵維度含有的“特徵值”儘可能大,特徵值越大,方差就會越大,進而所包含的信息量就會越大。

主成分分析完全無參數限制,也就是說,結果只與數據有關,而用戶是無法進行干預的。這是它的優點,同時也是缺點。針對這一特點,Kernel-PCA 被提出,使得用戶可以根據先驗知識預先對數據進行非線性轉換,因而成爲當下流行的方法之一。

②線性判別分析

**線性判別分析是一種經典的 有監督降維算法,主要思想是藉助協方差矩陣、廣義瑞利熵等實現數據類別間距離的最大化和類別內距離的最小化。二分類線性判別分析中,二維特徵是通過一系列矩陣運算實現從二維平面到一條直線的投影的,同時藉助協方差矩陣、廣義瑞利熵等實現類間數據的最大化與類內數據的最小化。從二分類推廣到多分類,是通過在二分類的基礎上增加“全局散度矩陣”來實現最終目標優化函數設定的,從而實現類間距離的最大化和類內距離的最小化。顯然,由於它是針對各個類別做的降維,所以數據經過線性判別分析降維後,最多隻能降到原來的類別數減1的維度。

因此,線性判別分析除實現降維外,還可以實現分類。另外,對比主成分分析可以看出,線性判別分析在降維過程中着重考慮分類性能,而主成分分析着重考慮特徵維度之間的差異性與方差的大小,即信息量的大小。

③獨立成分分析

獨立成分分析的主要思想是 在降維的過程中保留相互獨立的特徵維度。這比主成分分析更進-一步,在保證特徵維度之間不相關的同時保證相互獨立。不相關只是保證了特徵維度之間沒有線性關係,而並不能保證它們之間是獨立的。

獨立成分分析正因爲以保證特徵維度之間的相互獨立爲目標,往往會有比主成分分析更好的降維效果,目前已經被廣泛應用於數據挖掘、圖像處理等多個領域。

(2)特徵選擇

不同的特徵對模型的影響程度不同,我們要選擇出對模型影響大的特徵,移除不太相關的特徵,這個過程就是特徵選擇。特徵選擇的最終目的是 通過減少冗餘特徵來減少過擬合、提高模型準確度、減少訓練時間。特徵選擇是對原始特徵取特徵子集的操作,而特徵提取則是對原始特徵進行映射或者變換操作,以得到低維的新特徵。

特徵選擇在特徵工程中十分重要,往往可以在很大程度上決定模型訓練結果的好壞。常用的特徵選擇方法包括過濾式(Fil-ter)、包裹式(Wrapper) 及嵌入式(Embedding)

①過濾式

過濾式特徵選擇一般通過統計度量的方法來評估每個特徵和結果的相關性,以對特徵進行篩選,留下相關性較強的特徵。其核心思想是:先對數據集進行特徵選擇,再進行模型的訓練。過濾式特徵選擇是獨立於算法的。正因此,過濾式特徵選擇擁有較高的通用性,可適用於大規模數據集;也正因此,過濾式特徵選擇在分類準確率.上的表現欠佳。常用的過濾式特徵選擇方法有Pearson相關係數法、方差選擇法、假設檢驗、互信息法等,這些方法通常是單變量的。

(2)包裹式

包裹式特徵選擇通常 把最終機器學習模型的表現作爲特徵選擇的重要依據,一步步篩選特徵。這一步步篩選特徵的過程可以被看作目標特徵組合的搜索過程,而這一搜索過程可應用最佳優先搜索、隨機爬山算法等。目前比較常用的一-種包裹式特徵選擇法是遞歸特徵消除法,其原理是使用一個基模型(如隨機森林、邏輯迴歸等)進行多輪訓練,每輪訓練結束後,消除若干權值係數較低的特徵,再基於新的特徵集進行新的一輪訓練。

由於包裹式特徵選擇是根據最終的模型表現來選擇特徵的,所以它通常比過濾式特徵選擇有更好的模型訓練表現。但是,由於訓練過程時間久,系統的開銷也更大,一般來說, 包裹式特徵選擇不太適用於大規模數據集

③嵌入式

嵌入式特徵選擇同樣 根據機器學習的算法、模型來分析特徵的重要性,從而選擇比較重要的N個特徵。與包裹式特徵選擇最大的不同是,嵌入式特徵選擇將特徵選擇過程與模型的訓練過程結合爲一體,這樣就可以更高效且快速地找到最佳的特徵集合。簡而言之,嵌入式特徵選擇將全部的數據一起輸入模型中進行訓練和評測,而包裹式特徵選擇一般一步步地篩選和減少特徵進而得到所需要的特徵維度。常用的嵌入式特徵選擇方法有基於正則化項(如Lasso)和基於樹模型的特徵選擇( 如GBDT).

2.5 模型性能的評估與選擇

該節內容可以去看下面這篇博客:

三.深度學習的發展歷程和應用

作爲機器學習的一個重要分支,深度學習近年來在全球範圍內都引起了廣泛的關注。然而深度學習在火熱之前已經經歷了一段漫長的發展歷程,接下來我們簡單瞭解一下。

3.1 深度學習的發展歷程

1.起源

1943年,心理學家麥卡.洛克和數學邏輯學家皮茲發表論文《神經活動中內在思想的邏輯演算》,在此論文中提出了 MP模型。MP模型是模仿神經元的結構和工作原理,構造出的一個基於神經網絡的數學模型,本質上是一種“模擬人類大腦”的神經元模型(這裏有必要說明的是,我們說的“模擬”,更準確的說法其實應該是“參考”,計算機領域的“人工神經網絡”的確受到了生物學上的“神經網絡”的啓發,但是兩者相差萬里,沒有直接的可比性)。MP模型作爲人工神經網絡的起源,開創了人工神經網絡的新時代,也奠定了神經網絡模型的基礎。

1949年,加拿大著名心理學家唐納德.赫布在《行爲的組織》中提出了一種基於無監督學習的規則一一海布學習規則(HebbRule)。海布學習規則模仿人類認知世界的過程建立一種“網絡模型”,該網絡模型針對訓練集進行大量的訓練並提取訓練集的統計特徵,然後按照樣本的相似程度進行分類,把相互之間聯繫密切的樣本分爲一類,這樣就把樣本分成了若干類。海布學習規則與“條件反射”機理一致,爲以後的神經網絡學習算法奠定了基礎,具有重大的歷史意義。

20世紀50年代末,在MP模型和海布學習規則的研究基礎上,美國科學家羅森.布拉特發現了一種類似於人類學習過程的學習算法一感知器學習,並於1957年正式提出了由兩層神經元組成的神經網絡,即 “感知器” 。感知器本質上是一種線性模型,可以對輸入的訓練集數據進行二分類,且能夠在訓練集中自動更新權值。感知器的提出吸引了大量科學家研究人工神經網絡,對神經網絡的發展具有里程碑式的意義。

但隨着研究的深入,人們發現了感知器模型甚至無法解決最簡單的線性不可分問題(例如異或問題)。由於這一不足,再加上沒有及時推進多層神經網絡,20世紀70年代,人工神經網絡進入第一個寒冬期,人工神經網絡的發展也受到了很大的阻礙甚至質疑。

2.發展

1982年,著名物理學家約翰.霍普菲爾德發明了 Hopfield神經網絡。Hopfield神經網絡是一種結 合存儲系統和二元系統的循環神經網絡。Hopfield網絡也可以模擬人類的記憶,根據選取的激活函數不同,有連續型和離散型兩種類型,分別用於優化計算和聯想記憶。但該算法由於容易陷入局部最小值的缺陷而並未在當時引起很大的轟動。

直到1986年,深度學習之父傑弗裏,辛頓提出了一種適用於多層感知器的反向傳播算法,即 BP算法。BP算法在傳統神經網絡正向傳播的基礎上,增加了誤差的反向傳播過程,在反向傳播過程中不斷地調整神經元之間的權值和閾值,直到輸出的誤差減小到允許範圍之內,或達到預先設定的訓練次數爲止。BP算法解決了非線性分類問題,讓人工神經網絡再次引起了人們廣泛的關注。

但是20世紀80年代 計算機的硬件水平有限,運算能力跟不上,以及當神經網絡的層數增加時,BP算法會出現“梯度消失“等問題,使得BP算法的發展受到了很大的限制。再加上20世紀90年代中期,以SVM爲代表的淺層機器學習算法被提出,並在分類問題、迴歸問題上均取得了很好的效果,其原理相較於神經網絡模型具有更好的可解釋性,所以人工神經網絡的發展再次進入了瓶頸期。

3.爆發

2006年,傑弗裏辛頓及其學生魯斯蘭.薩拉赫丁諾夫 正式提出了深度學習的概念。他們在世界頂級學術期刊Science發表的一篇文章中詳細地給出了“梯度消失”問題的解決方案過無監督學習逐層訓練算法,再使用有監督的反向傳播算法進行調優。該方法的提出,立即在學術圈引起了巨大的反響,以斯坦福大學、多倫多大學爲代表的衆多世界知名高校紛紛投入巨大的人力、財力進行深度學習領域的相關研究,而後又迅速蔓延到工業界。

2012年,在著名的ImageNet圖像識別大賽中,傑弗裏.辛頓領導的小組以深度學習模型AlexNet一舉奪冠。AlexNet採用ReLU激活函數,極大程度地解決了梯度消失問題,並採用GPU極大提高模型的運算速度。同年,由斯坦福大學著名的吳恩達教授和世界頂尖計算機專家JeffDean共同主導的深度神經網絡DNN技術在圖像識別領域取得了驚人的成績,在ImageNet評測中成功地把錯誤率從26%降低到了1 5%。深度學習技術在世界大賽的脫穎而出,再次進一步吸引了學術界和工業界對深度學習的關注。

隨着深度學習技術的不斷進步及計算機硬件算力的不斷提升,2014年,Facebook基於深度學習技術的DeepFace項目,在人臉識別方面的準確率已經能達到97%以上,跟人類識別的準確率幾乎沒有差別。這樣的結果也再一次證明了深度學習技術在圖像識別方面的一騎絕塵。

2016年,谷歌公司基於深度強化學習開發的AlphaGo以4 : 1的比分戰勝了國際頂尖圍棋高手李世石,深度學習的熱度一時無兩。後來,AlphaGo 又接連和衆多世界級圍棋高手過招,均取得了完勝。這也證明了在圍棋界,基於深度學習技術的機器人幾乎已經超越了人類。

2017年,基於 深度強化學習技術的AlphaGo升級版Al-phaGo Zero橫空出世,採用“從零開始”“無師自通”的學習模式,以100:0的比分輕而易舉地打敗了之前的AlphaGo。除了圍棋,它還精通國際象棋等其他棋類遊戲,可以說是真正的棋類“天才”此外在這一年,深度學習的相關技術也在醫療、金融、藝術、無人駕駛等多個領域均取得了顯著的成果。所以,也有專家把2017年看成深度學習甚至是人工智能發展最爲突飛猛進的一年。

深度學習發展到當前已經越來越趨於成熟,因此,無論是科研還是應用,大家也越來越理性,而不是像早些時候,把深度學習視爲“萬能”,去盲目跟風。當然,深度學習領域也還有許多問題需要解決,還有很多有趣、有挑戰性的方向可以研究。

3.2 深度學習的應用

深度學習技術不光在學術界,在工業界也有重大突破和廣泛應用,其中 自然語言處理、語音識別和圖像處理應用最廣泛。接下來,我們分別來看一下這三個領域的發展現狀。

1.自然語言處理

自然語言處理(NLP)是一門交叉科學,旨在讓計算機能夠“讀懂”人類的語言。自然語言處理的基礎研究包括分詞、詞性標註、實體識別、句法分析、語義分析以及文本向量化表示等,其應用領域有文檔分類、信息檢索、對話機器人、機器翻譯、語音識別和合成等。傳統的自然語言處理主要利用語言學領域本身的知識結合統計學的方法來獲取語言知識。後來伴隨着機器學習淺層模型的發展(如SVM、邏輯迴歸等),自然語言處理領域的研究取得了一定的突破,但在語義消歧、語言的理解等方面仍然得力不從心。近年來,深度學習相關技術(DNN、CNN、RNN等)取得了顯著的進展,在自然語言處理方面的應用也展現出了明顯的優勢。

2.語音識別與合成

語音相關的處理其實也屬於自然語言處理的範疇,目前主要是語音合成(Text to Speech, TTS)和語音識別(AutomatedSpeech Recognition, ASR)。語音識別應該是大家最爲熟知的、也是應用最爲廣泛的。同自然語言處理類似,語音識別也是人工智能和其他學科的交叉領域,其所涉及的領域有模式識別、信號處理、概率論、信息論、發聲原理等。近年來,隨着深度學習技術的興起,語音識別取得顯著的進步,基於深度學習的語音技術不僅從實驗室走向了市場,更得到了谷歌、微軟、百度及科大訊飛等衆多科技公司的青睞。語音輸入法、家用聊天機器人、醫療語音救助機、智能語音穿戴設備等具體的應用場景層出不窮。

3.圖像領域

事實上,圖像領域目前算是深度學習應用最爲成熟的領域。也正是由於深度學習算法在ImageNet圖像識別大賽中遠超其他機器學習算法,以巨大優勢奪魁,才推動了深度學習發展的第三次浪潮。目前,通過卷積神經網絡(CNN)構建的圖像處理系統能夠有效地減小過擬合、很好地識別大像素數圖像。融合GPU加速技術後,神經網絡在實際中能夠更好地擬合訓練數據,更快、更準確地識別大部分的圖片。總而言之,深度學習模型和圖像處理技術的完美結合,不僅能夠提高圖像識別的準確率,同時還可以在一-定程度上提高運行效率,減少一定的人力成本。

參考文章

  • 《TensorFlow從零開始學》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章