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