引言 部署機器學習的過程涉及多個步驟。首先選擇一個模型,針對特定任務加以訓練,用測試數據進行驗證,然后,將該模型部署到實際系統中并進行監控。在本文中,我們將討論這些步驟,將每個步驟拆分講解來介紹機器學習。 機器學習是指在沒有明確指令的情況下能夠學習和加以改進的系統。這些系統從數據中學習,用于執行特定的任務或功能。在某些情況下,學習,或者更具體地說,訓練,是在受監督的方式下進行,當輸出不正確時對模型加以調整,使其生成正確的輸出。在其他情況下,則實行無監督學習,由系統負責梳理數據來發現以前未知的模式。大多數機器學習模型都是遵循這兩種范式(監督學習與無監督學習)。 現在,讓我們深入研究“模型”的含義,然后探究數據如何成為機器學習的燃料。 機器學習模型 模型是機器學習解決方案的抽象化表述。模型定義架構,架構經過訓練變成產品實現。所以,我們不是部署模型,而是部署經過數據訓練的模型的實現(在下一節中有更加詳細的介紹)。模型 + 數據 + 訓練=機器學習解決方案的實例(圖1)。 圖1:從機器學習模型到解決方案。(圖源:作者) 機器學習解決方案代表一個系統。它們接受輸入,在網絡中執行不同類型的計算,然后提供輸出。輸入和輸出代表數值型數據,這意味著,在某些情況下,需要轉譯。例如,將文本數據輸入深度學習網絡需要將單詞編碼成數字形式,考慮到可以使用的單詞的多樣性,該數字形式通常是高維向量。同樣,輸出可能需要從數字形式轉譯回文本形式。 機器學習模型有多種類型,如神經網絡模型、貝葉斯 (Bayesian) 模型、回歸模型、聚類模型等。您選擇的模型是基于著手解決的問題。 對于神經網絡來說,模型從淺多層網絡到深度神經網絡,類型豐富,而深度神經網絡還包括多層特化神經元(處理單元)。深度神經網絡還有一系列基于目標應用的可用模型。例如: 如果您的應用側重于識別圖像中的對象,那么卷積神經網絡 (CNN) 就是理想的模型。CNN已被應用于皮膚癌檢測,效果優于皮膚科醫生的平均水平。 如果您的應用涉及預測或生成復雜序列(如人類語言句子),那么遞歸神經網絡 (RNN) 或長短期記憶網絡 (LSTM) 是理想模型。LSTM也已經應用到人類語言的機器翻譯中。 如果您的應用涉及用人類語言描述圖像內容,可以使用CNN和LSTM的組合(圖像輸入CNN,CNN的輸出代表LSTM的輸入,后者發出詞匯序列)。 如果您的應用涉及生成現實圖像(如風景或人臉),那么生成對抗網絡 (GAN) 是當前最先進的模型。 這些模型代表了當今常用的部分深層神經網絡架構。深度神經網絡深受歡迎,因為它們可以接受非結構化數據,如圖像、視頻或音頻信息。網絡中的各層構成一個特征層次結構,使它們能夠對非常復雜的信息進行分類。深度神經網絡已經在許多問題領域展示出先進的性能。但是像其他機器學習模型一樣,它們的準確性依賴于數據。接下來我們就探討一下這個方面。 數據和訓練 無論在運算中,還是在通過模型訓練構建機器學習解決方案的過程中,數據皆為驅動機器學習的燃料。對于深度神經網絡的訓練數據,探索數量和質量前提下的必要數據至關重要。 深度神經網絡需要大量數據進行訓練;按經驗來說,圖像分類中每類需要1,000張圖像。但具體答案顯然取決于模型的復雜度和容錯度。實際機器學習解決方案中的一些示例表明,數據集有各種大小。一個面部檢測和識別系統需要45萬張圖像,一個問答聊天機器人需要接受20萬個問題和200萬個匹配答案的訓練。根據要解決的問題,有時較小的數據集也足夠。一個情感分析解決方案(根據書面文本確定觀點的極性)只需要數萬個樣本。 數據的質量和數量同等重要。鑒于訓練需要大數據集,即使少量的錯誤訓練數據也會導致糟糕的解決方案。根據所需的數據類型,數據可能會經歷一個清洗過程。此過程確保數據集一致、沒有重復數據且準確、完整(沒有無效或不完整數據)。有可以支持此過程的工具。驗證數據的偏差也很重要,確保數據不會導致有偏差的機器學習解決方案。 機器學習訓練對數值型數據進行運算,因此,根據您的解決方案,可能需要預處理步驟。例如,如果數據是人類語言,其必須首先轉譯為數字形式才能處理?梢詫D像進行預處理以保持一致性。例如,除了其他運算外,輸入深度神經網絡的圖像還需要調整大小和平滑處理,以去除噪聲。 機器學習中最大的問題之一是獲取數據集來訓練機器學習解決方案。根據您的具體問題,這個工作量可能非常大,因為可能沒有現成的數據,需要您另外設法獲取。 最后,應該分割數據集,分別用作訓練數據和測試數據。訓練數據用于訓練模型,在訓練完成后,測試數據用于驗證解決方案的準確性(圖2)。 圖2:分割數據集分別用于訓練和驗證。(圖源:作者) 有工具來幫助完成這個過程,大多數框架都擁有“分割”功能,用于分割訓練和測試數據,F在我們來看一些簡化機器學習解決方案構造的框架。 框架 現在,不再需要從頭開始構建機器學習模型。您可以使用包含這些模型和其他工具的框架來準備數據和驗證您的解決方案。這些框架還提供用于部署解決方案的環境。選擇哪個框架通常取決于您的熟悉程度,但在剛開始的時候可以選擇一個適合您要使用的應用與模型的框架。 TensorFlow是最好的深度學習框架。它支持所有流行的模型(CNN、RNN、LSTM等),并允許您使用Python或C++進行開發。從高端服務器到移動設備,均可部署TensorFlow解決方案。如果您剛剛上手,TensorFlow是一個不錯的起點,它有教程和豐富的文檔。 CAFFE最初是一個學術項目,但在發布到開源后,已經發展成為一個流行的深度學習框架。CAFFE采用C++編寫,但也支持Python模型開發。同TensorFlow一樣,它也支持廣泛的深度學習模型。 PyTorch的框架中。PyTorch是另一個很好的選擇,它基于豐富的可用信息,包括構建不同類型解決方案的實踐教程。 R語言和環境是機器學習和數據科學的流行工具。其為交互式工具,可幫助您逐步構建解決方案的原型,同時分階段查看結果。有了Keras(一個開源的神經網絡庫),您可以用極少量的開發投入來構建CNN和RNN。 模型審核 一旦模型經過訓練并滿足了準確性要求,即可部署到生產系統中。但是到了這一步就需要審核解決方案,以確保其符合要求?紤]到決策是由模型來做以及對人們的影響,這一點尤為重要。 有些機器學習模型是透明的,可以理解(例如,決策樹)。但深度神經網絡等其他模型被認為是“黑箱”,決策是由數百萬個無法用模型本身解釋的計算做出的。因此,過去一度可以接受定期審核,但是,連續審核正在迅速成為這些暗箱情況下的標配,因為錯誤是不可避免的。一旦發現錯誤,這些信息可以用作調整模型的數據。 另一個考慮是解決方案的生命周期。模型會衰退,輸入數據會發生變化,從而導致模型性能的變化。因此,必須接受解決方案隨著時間的推移會變得羸弱,機器學習解決方案必須隨著周圍世界的變化而不斷做出改變。 總結 為了部署機器學習解決方案,我們從一個問題開始,然后考慮可能的解決模型。接下來是獲取數據,經過正確清理和分割,就可以使用機器學習框架訓練和驗證模型。并非所有的框架都是相同的,您可以根據您的模型和經驗來選擇和應用。然后,使用該框架部署機器學習解決方案,通過適當的審核,解決方案可以在真實世界中使用實時數據進行運算。 來源:貿澤電子 作者:M. Tim Jones |