深度學習與機器學習——如何區分?
已發表: 2020-03-10近年來,機器學習、深度學習和人工智能已成為流行語。 因此,您可以在越來越多的公司的營銷材料和廣告中找到它們。
但是什麼是機器學習和深度學習? 另外,它們之間有什麼區別? 在本文中,我將嘗試回答這些問題,並向您展示深度學習和機器學習應用的一些案例。
什麼是機器學習?
機器學習是計算機科學的一部分,它基於數據處理用數學模型表示現實世界的事件或對象。 這些模型是使用特殊算法構建的,這些算法適應模型的一般結構,使其適合訓練數據。 根據所解決問題的類型,我們定義了有監督和無監督機器學習和機器學習算法。
監督與無監督機器學習
監督機器學習專注於創建能夠將我們已有的關於手頭數據的知識轉移到新數據的模型。 在訓練階段,模型構建(訓練)算法看不到新數據。 我們提供了一種算法,其中包含特徵數據以及算法應該學習從中推斷出的相應值(所謂的目標變量)。
在無監督機器學習中,我們只為算法提供特徵。 這允許它自己弄清楚它們的結構和/或依賴關係。 沒有指定明確的目標變量。 無監督學習的概念一開始可能很難掌握,但看看下面四個圖表中提供的示例應該可以清楚地了解這個概念。




圖表 1a 展示了一些數據,這些數據在軸x和y上具有 2 個特徵。 標記為 1b 的數據顯示相同的彩色數據。 我們使用K-means聚類算法將這些點分為 3 個聚類,並相應地對它們進行著色。 這是無監督機器學習算法的一個例子。 該算法只給出了特徵,並且要計算出標籤(簇號)。
第二張圖片顯示了圖表 2a,它顯示了一組不同的標記(並相應地著色)數據。 我們先驗地知道每個數據點所屬的組。 我們使用SVM算法找到 2 條直線,這些直線將向我們展示如何分割數據點以最適合這些組。 這種分割並不完美,但這是可以用直線完成的最好的。 如果我們想將一個組分配給一個新的、未標記的數據點,我們只需要檢查它在平面上的位置。 這是一個監督機器學習應用的例子。
機器學習模型的應用
創建標準機器學習算法用於以表格形式處理數據。 這意味著為了使用它們,我們需要某種表格。 在這樣的表中,行可以被認為是建模對象的實例(例如,貸款)。 同時,列應被視為該特定實例的特徵(特徵)(例如,貸款的每月還款額、借款人的每月收入)。
對機器學習開發感到好奇?
學到更多表 1. 是此類數據的一個非常簡短的示例。 當然,這並不意味著純數據本身必須是表格和結構化的。 但是,如果我們想在某個數據集上應用標準的機器學習算法,我們通常必須對其進行清理、混合併將其轉換為表格。 在監督學習中,還有一個特殊的列包含目標值(例如,如果貸款違約的信息)。
訓練算法試圖將模型的一般結構擬合到這些數據中。 所述算法通過調整模型的參數來做到這一點。 這會產生一個盡可能準確地描述給定數據和目標變量之間關係的模型。
重要的是,該模型不僅能夠很好地擬合給定的訓練數據,而且還能夠進行泛化。 泛化意味著我們可以使用模型來推斷訓練期間未使用的實例的目標。 這也是有用模型的一個關鍵特徵。 建立一個泛化良好的模型並不是一件容易的事。 它通常需要復雜的驗證技術和徹底的模型測試。
貸款編號 | 借款人年齡 | 每月收入 | 貸款額度 | 每月支付 | 默認 |
1 | 34 | 10,000 | 100,000 | 1,200 | 0 |
2 | 43 | 5,700 | 25,000 | 800 | 0 |
3 | 25 | 2,500 | 24,000 | 400 | 0 |
4 | 67 | 4,600 | 40,000 | 2,000 | 1 |
5 | 38 | 35,000 | 2,500,000 | 10,000 | 0 |
表 1. 表格形式的貸款數據
人們在各種應用中使用機器學習算法。 表 2. 展示了一些允許非深度機器學習算法和模型應用的業務用例。 還有對潛在數據、目標變量和選定的適用算法的簡短描述。
用例 | 數據示例 | 目標(建模)值 | 使用的算法/模型 |
博客網站上的文章推薦 | 用戶閱讀文章的 ID,每篇文章花費的時間 | 用戶對文章的偏好 | 使用交替最小二乘法的協同過濾 |
抵押貸款的信用評分 | 交易和信用記錄,潛在藉款人的收入數據 | 顯示貸款是否會全額償還或違約的二進制值 | 光GBM |
預測移動遊戲高級用戶的流失 | 每天玩遊戲所花費的時間,自首次發布以來的時間,遊戲進度 | 顯示用戶是否要在下個月取消訂閱的二進制值 | XGBoost |
信用卡欺詐檢測 | 歷史信用卡交易數據——金額、地點、日期和時間 | 顯示信用卡交易是否欺詐的二進制值 | 隨機森林 |
網店客戶細分 | 忠誠度計劃會員的購買歷史 | 分配給每個客戶的段號 | K-均值 |
機器園區的預測性維護 | 來自性能、溫度、濕度等傳感器的數據 | 以下類別之一——“良好”、“觀察”、“需要維護” | 決策樹 |
表 2. 機器學習用例示例
深度學習和深度神經網絡
深度學習是機器學習的一部分,我們在其中使用特定類型的模型,稱為深度人工神經網絡 (ANN)。 自引入以來,人工神經網絡經歷了廣泛的進化過程。 這導致了許多亞型,其中一些非常複雜。 但為了介紹它們,最好解釋一下它們的一種基本形式——多層感知器(MPL)。
多層感知器
簡單地說,MLP 具有頂點(也稱為神經元)和邊(由稱為權重的數字表示)的圖(網絡)形式。 神經元分層排列,連續層的神經元相互連接。 數據通過網絡從輸入層流向輸出層。 然後在神經元和它們之間的邊緣處轉換數據。 一旦數據點通過整個網絡,輸出層將包含其神經元中的預測值。
每次訓練數據塊通過網絡時,我們都會將預測與相應的真實值進行比較。 這讓我們可以調整模型的參數(權重)以更好地進行預測。 我們可以使用一種稱為反向傳播的算法來做到這一點。 經過一些迭代後,如果模型的結構經過精心設計,專門用於解決手頭的機器學習問題。
獲得高精度模型
一旦足夠的數據多次通過網絡,我們就獲得了一個高精度的模型。 在實踐中,有很多轉換可以應用於神經元。 這使得人工神經網絡非常靈活和強大。 然而,人工神經網絡的力量是有代價的。 通常,模型的結構越複雜,訓練到高精度所需的數據和時間就越多。

圖 1. (draw.io) 4 層人工神經網絡的結構,基於三個簡單的特徵預測新聞應用的用戶是否會在下個月流失。
為清楚起見,僅對選定(粗體)邊緣標記了權重,但每條邊緣都有自己的權重。 數據從輸入層流向輸出層,經過中間的 2 個隱藏層。 在每條邊上,輸入值乘以邊的權重,所得乘積將到達邊結束的節點。 然後,在隱藏層的每個節點中,對來自邊緣的輸入信號求和,然後用一些函數進行轉換。 然後將這些轉換的結果視為下一層的輸入。
在輸出層,輸入的數據再次進行匯總和轉換,產生兩個數字形式的結果——用戶在下個月從應用程序流失的概率,以及他們不會流失的概率。
高級類型的神經網絡
在更高級類型的神經網絡中,層具有更複雜的結構。 它們不僅包括簡單的密集層和 MLP 中已知的單操作神經元,還包括更複雜的多操作層,如卷積層和循環層。
卷積層和循環層
卷積層主要用於計算機視覺應用。 它們由在圖像的像素表示上滑動的小數字數組組成。 像素值乘以這些數字,然後聚合,產生新的、濃縮的圖像表示。
循環層用於建模有序的順序數據,如時間序列或文本。 他們對傳入的數據應用非常複雜的多參數轉換,試圖找出序列項之間的依賴關係。 然而,無論網絡的類型和結構如何,總有一些(一個或多個)輸入和輸出層,以及數據流經網絡的嚴格定義的路徑和方向。

一般來說,深度神經網絡是具有多層的人工神經網絡。 下面的圖像 1、2 和 3 顯示了選定的深度人工神經網絡的架構。 它們都是在谷歌開發和培訓的,並提供給公眾。 他們對當今使用的高精度深度人工網絡的複雜程度給出了一個想法。
這些網絡具有巨大的規模。 例如,圖 3 中部分顯示的 InceptionResNetV2 有 572 層,總共超過 5500 萬個參數! 它們都被開發為圖像分類模型(它們為給定圖像分配標籤,例如“汽車”),並且已經在 ImageNet 集中的圖像上進行了訓練,該圖像集包含超過 1400 萬張帶標籤的圖像。

圖 2. NASNetMobile 的結構(keras 包)

圖 3. XCeption 的結構(keras 包)

圖 4. InceptionResNetV2(keras 包)的一部分(約 25%)的結構
近年來,我們觀察到深度學習及其應用的巨大發展。 我們的智能手機和應用程序的許多“智能”功能都是這一進步的成果。 儘管人工神經網絡的想法並不新鮮,但最近的繁榮是滿足一些條件的結果。 首先,我們發現了 GPU 計算的潛力。 圖形處理單元的架構非常適合併行計算,非常有助於高效的深度學習。
此外,雲計算服務的興起使得高效硬件的訪問變得更容易、更便宜,並且可能在更大範圍內實現。 最後,最新移動設備的計算能力足以應用深度學習模型,從而為 DNN 驅動功能的潛在用戶創造了巨大的市場。
深度學習模型的應用
深度學習模型通常應用於處理不具有簡單行列結構的數據的問題,例如圖像分類或語言翻譯,因為它們擅長處理這些任務處理的非結構化和復雜結構的數據——圖像、文本, 和聲音。 經典機器學習算法在處理這些類型和大小的數據時存在問題,而針對這些問題創建和應用一些深度神經網絡已經在圖像識別、語音識別、文本分類和語言翻譯領域引起了巨大的發展。最近幾年。
由於 DNN 接受稱為張量的多維數字表作為輸入和輸出,並且可以跟踪其元素之間的空間和時間關係,因此可以將深度學習應用於這些問題。 例如,我們可以將圖像表示為 3 維張量,其中第 1 維和第 2 維表示數字圖像的分辨率(因此分別具有圖像寬度和高度的大小),第 3 維表示 RGB 顏色每個像素的編碼(因此第三維的大小為 3)。
這使我們不僅可以在張量中表示有關圖像的所有信息,還可以保持像素之間的空間關係,這對於所謂的捲積層的應用至關重要,對於成功的圖像分類和識別網絡至關重要。
輸入和輸出結構中的神經網絡靈活性也有助於其他任務,例如語言翻譯。 在處理文本數據時,我們向深度神經網絡提供單詞的數字表示,根據它們在文本中的出現進行排序。 每個單詞由一個包含一百或幾百個數字的向量表示,經過計算(通常使用不同的神經網絡),以便對應於不同單詞的向量之間的關係模仿單詞本身的關係。 這些稱為嵌入的向量語言表示,一旦經過訓練,就可以在許多架構中重複使用,並且是神經網絡語言模型的核心構建塊。
深度學習模型使用示例
表 3. 包含將深度學習模型應用於現實問題的示例。 如您所見,深度學習算法處理和解決的問題比標準機器學習技術解決的任務複雜得多,如表 1 所示。
儘管如此,重要的是要記住,機器學習可以幫助當今企業的許多用例不需要如此復雜的方法,並且可以通過標準模型更有效地(並且精度更高)解決。 表 3 還給出了關於有多少不同類型的人工神經網絡層,以及可以用它們構建多少不同的有用架構的想法。
用例 | 數據 | 模型的目標/結果 | 使用的算法/模型 |
圖像分類 | 圖片 | 分配給圖像的標籤 | 卷積神經網絡 (CNN) |
自動駕駛汽車的圖像檢測 | 圖片 | 圖像上識別的對象周圍的標籤和邊界框 | 快速 R-CNN |
情緒 分析 在線商店中的評論 | 網上評論的文字 | 分配給每個評論的情緒標籤(例如,正面、中性、負面) | 雙向長短期記憶 (LSTM) 網絡 |
旋律的協調 | 帶有旋律的 MIDI 文件 | 與此旋律和諧的 MIDI 文件 | 生成對抗網絡 |
下一個詞預測 在一個 在線的 電子郵件 編輯 | 非常大的文本塊(例如,所有 Wikipedia 英文文章的轉儲) | 一個適合作為下一個單詞的單詞 | 帶有嵌入層的循環神經網絡 (RNN) |
文本翻譯成另一種語言 | 波蘭語文本 | 相同的文本翻譯成英文 | 編碼器 – 使用循環神經網絡 (RNN) 層構建的解碼器網絡 |
將莫奈的風格轉移到任何圖像 | 一組莫奈畫作的圖像,以及一組其他圖像 | 修改後的圖像看起來像莫奈畫的那樣 | 生成對抗網絡 |
表 3. 深度學習用例示例
深度學習模型的優勢
生成對抗網絡
深度神經網絡最令人印象深刻的應用之一是生成對抗網絡 (GAN) 的興起。 它們由 Ian Goodfellow 於 2014 年推出,此後他的想法已被納入許多工具中,其中一些工具取得了驚人的成果。
GAN 負責存在使我們在照片中看起來更老的應用程序,轉換圖像以使它們看起來好像是梵高畫的,甚至為多個樂器樂隊協調旋律。 在 GAN 的訓練過程中,兩個神經網絡相互競爭。 生成器網絡從隨機輸入生成輸出,而鑑別器試圖將生成的實例與真實實例區分開來。 在訓練期間,生成器學習如何成功地“欺騙”鑑別器,並最終能夠創建看起來像是真實的輸出。
移動應用程序中強大的深度神經網絡
重要的是要注意,即使訓練深度神經網絡是一項計算量非常大的任務並且可能需要很長時間,但應用訓練好的網絡來完成特定任務並不是必須的,特別是如果它應用於一個或一個幾例一次。 實際上,今天我們能夠在智能手機上的移動應用程序中運行強大的深度神經網絡。
甚至有一些專門設計用於在移動設備上應用時高效的網絡架構(例如,圖 1 中的 NASNetMobile)。 儘管與最先進的網絡相比,它們的規模要小得多,但它們仍然能夠獲得高精度的預測性能。
遷移學習
人工神經網絡的另一個非常強大的特性是遷移學習,可以廣泛使用深度學習模型。 一旦我們對一些數據(由我們自己創建或從公共存儲庫下載)訓練了一個模型,我們就可以在其全部或部分的基礎上構建一個模型來解決我們的特定用例。 例如,我們可以使用預訓練的 NASNetLarge 模型,在龐大的 ImageNet 數據集上進行訓練,為圖像分配標籤,對其結構進行一些小的修改,使用一組新的標記圖像進一步訓練它,以及用它來標記某些特定類型的對象(例如,基於葉子圖像的樹的種類)。
遷移學習的好處
遷移學習非常有用,因為通常訓練一個將執行一些實用、有用的任務的深度神經網絡需要大量數據和巨大的計算能力。 這通常意味著數百萬個標記數據實例和數百個圖形處理單元 (GPU) 運行數週。
並非每個人都能負擔得起或有權使用此類資產,這使得從頭開始構建高精度自定義解決方案(例如圖像分類)變得非常困難。 幸運的是,一些預訓練模型(尤其是用於圖像分類的網絡和用於語言模型的預訓練嵌入矩陣)已經開源,並且以易於應用的形式免費提供(例如,作為 Keras 中的模型實例、神經網絡 API)。
如何為您的應用程序選擇和構建正確的機器學習模型
當您想應用機器學習來解決業務問題時,您可能不需要立即決定模型的類型。 通常有幾種方法可以測試。 一開始通常很容易從最複雜的模型開始,但值得從簡單的開始,然後逐漸增加所應用模型的複雜性。 就設置、計算時間和資源而言,更簡單的模型通常更便宜。 此外,他們的結果是評估更先進方法的重要基準。
擁有這樣的基準可以幫助數據科學家評估他們開發模型的方向是否正確。 另一個優點是可以重用一些以前構建的模型,並將它們與新的模型合併,創建一個所謂的集成模型。 混合不同類型的模型通常會產生比單獨的組合模型更高的性能指標。 此外,檢查是否有一些預先訓練的模型可以通過遷移學習用於並適應您的業務案例。
更多實用技巧
首先,無論您使用什麼模型,請確保正確處理數據。 請記住“垃圾進,垃圾出”的規則。 如果提供給模型的訓練數據質量低下或沒有正確標記和清理,那么生成的模型很可能也會表現不佳。 還要確保模型——無論其複雜性如何——在建模階段都得到了廣泛的驗證,並最終測試了它是否可以很好地推廣到看不見的數據。
在更實際的情況下,確保創建的解決方案可以在可用基礎架構上的生產中實施。 而且,如果您的企業可以收集更多可用於將來改進模型的數據,則應準備再培訓管道以確保其易於更新。 這樣的管道甚至可以設置為以預定義的時間頻率自動重新訓練模型。
最後的想法
在部署到生產環境後不要忘記跟踪模型的性能和可用性,因為業務環境非常動態。 數據中的某些關係可能會隨著時間而改變,並且可能會出現新的現象。 因此,它們可以改變模型的效率,應該得到適當的處理。 此外,可以發明新的、強大的模型類型。 一方面,它們可以使您的解決方案相對較弱,但另一方面,讓您有機會進一步改善您的業務並利用最新技術。
更重要的是,機器和深度學習模型可以幫助您為您的業務和應用程序構建強大的工具,並為您的客戶提供卓越的體驗。 儘管創建這些“智能”功能需要付出巨大的努力,但潛在的好處是值得的。 只要確保您和您的數據科學團隊嘗試適當的模型並遵循良好實踐,您就會走在正確的軌道上,通過尖端的機器學習解決方案為您的業務和應用程序賦能。
資料來源:
- https://en.wikipedia.org/wiki/Unsupervised_learning
- https://keras.io/
- https://developer.nvidia.com/deep-learning
- https://keras.io/applications/
- https://arxiv.org/abs/1707.07012
- http://yifanhu.net/PUB/cf.pdf
- https://towardsdatascience.com/detecting-financial-fraud-using-machine-learning-three-ways-of-winning-the-war-against-imbalanced-a03f8815cce9
- https://scikit-learn.org/stable/modules/tree.html
- https://aws.amazon.com/deepcomposer/
- https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html
- https://keras.io/examples/nlp/bidirectional_lstm_imdb/
- https://towardsdatascience.com/how-do-self-driving-cars-see-13054aee2503
- https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e
- https://towardsdatascience.com/building-a-next-word-predictor-in-tensorflow-e7e681d4f03f
- https://keras.io/applications/
- https://arxiv.org/pdf/1707.07012.pdf