深度學習與機器學習:瞭解差異

-------機器學習和深度學習都可以發現數據模式,但是它們涉及截然不同的技術

機器學習和深度學習都是人工智能的形式。準確地說,深度學習是機器學習的一種特定形式。機器學習和深度學習都從訓練和測試模型開始,並經過優化找到一個權重使模型效果更好。兩者都可以處理數字(迴歸)和非數字(分類)問題,儘管在對象識別和語言翻譯等多個應用領域中,深度學習模型往往比機器學習模型更適合。

機器學習說明

機器學習算法通常分爲有監督的(訓練數據有標記答案)和無監督的(可能存在的任何標籤均未顯示在訓練算法中)。有監督的機器學習問題又分爲分類(預測非數字答案,例如錯過抵押貸款的可能性)和迴歸(預測數字答案,例如下個月在曼哈頓商店出售的小部件的數量)。

無監督學習可進一步分爲聚類(查找類似對象的組,例如跑鞋,步行鞋和正裝鞋),關聯(查找對象的常見序列,例如咖啡和奶油)和降維(投影,特徵選擇) ,以及特徵提取。

分類算法

分類問題是有監督的學習,要求在兩個或多個類別之間進行選擇,通常爲每個類別提供概率。除了需要大量高級計算資源的神經網絡和深度學習之外,最常見的算法是樸素貝葉斯,決策樹,邏輯迴歸,K最近鄰和支持向量機(SVM)。也可以使用集成方法(模型的組合),例如“隨機森林”,其他“裝袋”方法以及增強方法(例如,AdaBoost和XGBoost)。

迴歸算法

迴歸問題是有監督的學習,要求模型預測數字。最簡單,最快的算法是線性(最小二乘)迴歸,但一般不應止步於此,因爲它通常會返回一箇中等的結果。其他常見的機器學習迴歸算法(缺少神經網絡)包括樸素貝葉斯,決策樹,K最近鄰,LVQ(學習矢量量化),LARS套索,彈性網,隨機森林,AdaBoost和XGBoost。值得注意的是,用於迴歸和分類的機器學習算法之間存在一些重疊。

聚類算法

聚類問題是一種無監督的學習問題,它要求模型查找相似數據點的組。最受歡迎的算法是K-Means聚類;其他包括均值漂移聚類,DBSCAN(基於噪聲的應用程序基於空間的聚類),GMM(高斯混合模型)和HAC(分層聚類)。

降維算法

降維是一個無監督的學習,它要求模型刪除或組合對結果影響很小或沒有影響的變量。這通常與分類或迴歸結合使用。降維算法包括刪除具有許多缺失值的變量,刪除具有低方差的變量,決策樹,隨機森林,刪除或組合具有高相關性的變量,後向特徵消除,前向特徵選擇,因子分析和PCA(主成分分析)。

優化方法

訓練和評估可以通過優化監督算法的參數權重,找到最適合數據真實性的一組值,從而將監督學習算法轉變爲模型。算法通常將最速下降的變量用於優化程序,例如隨機梯度下降,它是從隨機起始點多次執行的最速下降。

機器學習的數據清理

沒有乾淨的原始數據,爲了滿足機器學習懟數據的要求,必須過濾數據。例如,

  • 1、查看數據,並排除所有缺少大量數據的列。
  • 2、再次查看數據,然後選擇要用於預測的列(特徵選擇)。進行迭代時,可能需要更改此內容。
    在其餘列中排除仍缺少數據的任何行。
  • 3、糾正明顯的錯別字併合並等效答案。
  • 4、排除數據超出範圍的行。例如,如果您要分析紐約市內的出租車行程,則需要過濾出市區外邊界以外的上,下緯度和經度行。

還可以做更多的事情,但這取決於收集的數據。這可能很乏味,但是如果在機器學習過程中設置了數據清理步驟,則可以隨意修改並重復進行。

機器學習的數據編碼和規範化

要將分類數據用於機器分類,需要將文本標籤編碼爲另一種形式。有兩種常見的編碼。

一種是標籤編碼,這意味着每個文本標籤值都用數字代替。另一種是一鍵編碼,這意味着每個文本標籤值都將變成具有二進制值(1或0)的列。大多數機器學習框架都具有進行轉換的功能。通常,獨熱編碼是首選,因爲標籤編碼有時會使機器學習算法混淆,以爲編碼列應該是有序列表。

要將數字數據用於機器迴歸,通常需要將數據標準化。否則,具有較大範圍的數字可能傾向於主導特徵向量之間的歐幾里得距離,其影響可能會以其他場爲代價而被放大,並且最陡的下降優化可能會難以收斂。有多種方法可以對數據進行標準化和標準化以進行機器學習,包括最小-最大標準化,均值標準化,標準化以及按比例縮放到單位長度。此過程通常稱爲特徵縮放。

機器學習的特徵工程

特徵是被觀察的現象的個體可測量特性或特徵。“特徵”的概念與解釋變量的概念有關,該解釋變量在諸如線性迴歸之類的統計技術中使用。特徵向量將單行的所有特徵組合爲數值向量。

選擇特徵的部分技術是選擇一組最少的解釋問題的自變量。如果兩個變量高度相關,則要麼需要將它們組合爲一個功能,要麼應將其刪除。有時人們進行主成分分析以將相關變量轉換爲一組線性不相關變量。

人們用來構造新特徵或降低特徵向量維數的一些轉換很簡單。例如,Year of Birth從中減去Year of Death並構造Age at Death,這是壽命和死亡率分析的主要獨立變量。在其他情況下,特徵構造可能不是那麼明顯。

拆分數據以進行機器學習

在有監督的機器學習中,通常的做法是將數據集劃分爲子集,以進行訓練,驗證和測試。一種工作方式是將80%的數據分配給訓練數據集,並將10%的數據分配給驗證和測試數據集。(確切的劃分是一個優先事項。)大部分訓練是針對訓練數據集進行的,而預測則是在每個時期結束時針對驗證數據集進行的。

驗證數據集中的錯誤可用於識別停止標準或驅動超參數調整。最重要的是,驗證數據集中的錯誤懟找出模型是否過擬合訓練數據有幫助。

通常在最終模型上對測試數據集進行預測。如果測試數據集從未用於訓練,則有時稱爲保持數據集。

還有其他幾種分割數據的方案。交叉驗證是一種常見的技術,涉及將完整數據集重複拆分爲訓練數據集和驗證數據集。在每個時期結束時,將對數據進行混洗並再次拆分。

機器學習庫

在Python中,Spark MLlib和Scikit-learn是機器學習庫的絕佳選擇。在R中,一些機器學習包選項是CARAT,randomForest,e1071和KernLab。在Java中,不錯的選擇包括Java-ML,RapidMiner和Weka。

深度學習解釋

深度學習是機器學習的一種形式,其中所訓練的模型在輸入和輸出之間具有多個隱藏層。在大多數討論中,深度學習意味着使用深度神經網絡。但是,除了神經網絡之外,還有一些算法可以使用其他類型的隱藏層來實現深度學習。

“人工”神經網絡的思想可以追溯到1940年代。基本概念是,由相互連接的閾值開關構建的人工神經元網絡可以像動物大腦和神經系統(包括視網膜)一樣學習識別模式。

反向傳播

基本上,通過在訓練過程中同時激活兩個神經元之間的連接來進行學習。在現代神經網絡軟件中,最常見的問題是使用稱爲誤差,反向傳播或BP的反向傳播的規則來增加神經元之間連接的權重值。

人工神經網絡中的神經元

神經元如何建模?每個都有一個傳播函數,該函數通常使用加權和來轉換連接的神經元的輸出。傳播函數的輸出傳遞到激活函數,當其輸入超過閾值時將激活。

神經網絡中的激活函數

在1940年代和50年代,人工神經元使用了逐步激活功能,被稱爲感知器。現代神經網絡可能會說他們正在使用感知器,但實際上具有平滑的激活函數,例如邏輯或乙狀函數,雙曲正切或整流線性單位(ReLU)。ReLU通常是快速收斂的最佳選擇,儘管如果將學習速率設置得太高,它在訓練過程中會出現神經元“死亡”的問題。

激活函數的輸出可以傳遞到輸出函數以進行其他整形。但是,輸出函數通常是身份函數,這意味着激活函數的輸出將傳遞到下游連接的神經元。

神經網絡拓撲

現在我們瞭解了神經元,我們需要了解常見的神經網絡拓撲。在前饋網絡中,神經元被組織爲不同的層:一個輸入層,n個隱藏處理層和一個輸出層。每層的輸出僅進入下一層。

在具有快捷連接的前饋網絡中,某些連接可以跳過一個或多箇中間層。在循環神經網絡中,神經元可以直接或間接地通過下一層來影響自己。

訓練神經網絡

就像任何其他機器學習一樣,可以進行神​​經網絡的監督學習:向網絡展示訓練數據組,將網絡輸出與所需輸出進行比較,生成誤差向量,並基於誤差向量對網絡進行校正。在應用校正之前一起運行的一批訓練數據稱爲時期。

對於那些對細節感興趣的人,反向傳播使用誤差(或成本)函數相對於模型的權重和偏差的梯度來發現正確的方向,以最大程度地減少誤差。兩件事控制着校正的應用:優化算法和學習率變量。學習速率變量通常需要較小,以確保收斂並避免引起死的ReLU神經元。

神經網絡優化器

神經網絡的優化程序通常使用某種形式的梯度下降算法來驅動反向傳播,通常採用一種機制來避免陷入局部最小值中,例如優化隨機選擇的微型批次(隨機梯度下降)並將動量校正應用於梯度。一些優化算法還通過查看梯度歷史記錄(AdaGrad,RMSProp和Adam)來調整模型參數的學習率。

與所有機器學習一樣,您需要對照單獨的驗證數據集檢查神經網絡的預測。否則,您可能會冒險創建僅記住其輸入而不學會學習廣義預測器的神經網絡。

深度學習算法

用於實際問題的深度神經網絡可能具有10層以上的隱藏層。它的拓撲可能很簡單,也可能很複雜。

網絡中的層越多,它可以識別的特徵就越多。不幸的是,網絡中的層越多,計算所需的時間就越長,並且訓練起來就越困難。

卷積神經網絡(CNN)通常用於機器視覺。卷積神經網絡通常使用卷積,池化,ReLU,完全連接和丟失層來模擬視覺皮層。卷積層基本上採用許多小的重疊區域的積分。池化層執行非線性下采樣的形式。ReLU層應用非飽和激活函數f(x)= max(0,x)。在完全連接的層中,神經元與上一層中的所有激活都具有連接。損失層使用Softmax或交叉熵損失函數進行分類,或使用歐幾里得損失函數進行迴歸,計算網絡訓練如何懲罰預測標籤與真實標籤之間的偏差。

遞歸神經網絡(RNN)通常用於自然語言處理(NLP)和其他序列處理,還有長短期記憶(LSTM)網絡和基於注意力的神經網絡。在前饋神經網絡中,信息從輸入經過隱藏層流到輸出。這將網絡限制爲一次只能處理一個狀態。

在遞歸神經網絡中,信息通過一個循環循環,這使網絡可以記住最近的先前輸出。這樣可以分析序列和時間序列。RNN有兩個常見的問題:爆炸梯度(通過固定梯度很容易固定)和消失梯度(不太容易固定)。

在LSTM中,在兩種情況下,網絡都可以通過更改權重來忘記(控制)先前的信息並記住這些信息。這有效地爲LSTM提供了長期和短期記憶,並解決了梯度消失的問題。LSTM可以處理數百個過去輸入的序列。

注意模塊是將權重應用於輸入向量的通用門。分層的神經注意編碼器使用多層注意模塊來處理成千上萬的過去輸入。

不是神經網絡的隨機決策森林(RDF)對於一系列分類和迴歸問題很有用。RDF由多層構成,但不是神經元,而是由決策樹構建,並輸出各個樹預測的統計平均值(分類模式或迴歸均值)。RDF的隨機方面是對單個樹使用引導聚合(也稱爲裝袋),併爲樹獲取特徵的隨機子集。

XGBoost(極限梯度增強)也不是一個深度神經網絡,它是一種可擴展的,端到端的樹增強系統,已針對許多機器學習挑戰產生了最先進的結果。經常提到裝袋和提振。區別在於,梯度樹增強不是生成隨機樹的集合,而是從單個決策樹或迴歸樹開始,對其進行優化,然後從第一棵樹的殘差構建下一棵樹。

一些最好的Python的深度學習框架是TensorFlow,Keras,PyTorch和MXNet。Deeplearning4j是最好的Java深度學習框架之一。ONNX和TensorRT是深度學習模型的運行時。

深度學習與機器學習

通常,經典(非深度)機器學習算法比深度學習算法訓練和預測速度快得多。一個或多個CPU通常足以訓練經典模型。深度學習模型通常需要諸如GPU,TPU或FPGA之類的硬件加速器進行培訓,並且還需要大規模部署。沒有它們,模型將需要幾個月的訓練時間。

對於許多問題,一些經典的機器學習算法將產生一個“足夠好”的模型。對於其他問題,過去經典的機器學習算法效果不佳。

深度學習通常會受到攻擊的一個領域是自然語言處理,其中包括語言翻譯,自動摘要,共指解析,語篇分析,形態分割,命名實體識別,自然語言生成,自然語言理解,詞性標記,情感分析和語音識別。

深度學習的另一個主要領域是圖像分類,其中包括具有定位,對象檢測,對象分割,圖像樣式轉換,圖像着色,圖像重建,圖像超分辨率和圖像合成的圖像分類。

此外,深度學習已成功用於預測分子將如何相互作用,以幫助製藥公司設計新藥,搜索亞原子顆粒並自動解析用於構建人腦三維地圖的顯微鏡圖像。

原文鏈接:https://www.infoworld.com/article/3512245/deep-learning-vs-machine-learning-understand-the-differences.html

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